From e3e8007564ad066153829613425491cf9b1ed94f Mon Sep 17 00:00:00 2001 From: Christophe Siraut Date: Wed, 4 Dec 2024 15:32:13 +0100 Subject: [PATCH] static: remove obsolete files --- .../static/aircox/assets/admin-BkECowH5.css | 1 - .../static/aircox/assets/admin-BoR3j_Hw.css | 1 - aircox/static/aircox/assets/index-BHp9xxGn.js | 46 ------------------- .../aircox/assets/index-BHp9xxGn.js.map | 1 - aircox/static/aircox/assets/index-BZUnmcIM.js | 30 ------------ .../aircox/assets/index-BZUnmcIM.js.map | 1 - aircox/static/aircox/assets/index-BlOTjzEl.js | 18 -------- .../aircox/assets/index-BlOTjzEl.js.map | 1 - aircox/static/aircox/assets/index-CKSgqJ6k.js | 46 ------------------- .../aircox/assets/index-CKSgqJ6k.js.map | 1 - .../static/aircox/assets/index-CQSUXIlM.css | 1 - aircox/static/aircox/assets/index-DYrJKfQw.js | 46 ------------------- .../aircox/assets/index-DYrJKfQw.js.map | 1 - .../static/aircox/assets/index-QB2VsSsQ.css | 1 - .../static/aircox/assets/public-D1AeeZhP.css | 1 - 15 files changed, 196 deletions(-) delete mode 100644 aircox/static/aircox/assets/admin-BkECowH5.css delete mode 100644 aircox/static/aircox/assets/admin-BoR3j_Hw.css delete mode 100644 aircox/static/aircox/assets/index-BHp9xxGn.js delete mode 100644 aircox/static/aircox/assets/index-BHp9xxGn.js.map delete mode 100644 aircox/static/aircox/assets/index-BZUnmcIM.js delete mode 100644 aircox/static/aircox/assets/index-BZUnmcIM.js.map delete mode 100644 aircox/static/aircox/assets/index-BlOTjzEl.js delete mode 100644 aircox/static/aircox/assets/index-BlOTjzEl.js.map delete mode 100644 aircox/static/aircox/assets/index-CKSgqJ6k.js delete mode 100644 aircox/static/aircox/assets/index-CKSgqJ6k.js.map delete mode 100644 aircox/static/aircox/assets/index-CQSUXIlM.css delete mode 100644 aircox/static/aircox/assets/index-DYrJKfQw.js delete mode 100644 aircox/static/aircox/assets/index-DYrJKfQw.js.map delete mode 100644 aircox/static/aircox/assets/index-QB2VsSsQ.css delete mode 100644 aircox/static/aircox/assets/public-D1AeeZhP.css diff --git a/aircox/static/aircox/assets/admin-BkECowH5.css b/aircox/static/aircox/assets/admin-BkECowH5.css deleted file mode 100644 index 94aa196..0000000 --- a/aircox/static/aircox/assets/admin-BkECowH5.css +++ /dev/null @@ -1 +0,0 @@ -:root{--title-1-sz: 1.6rem;--title-2-sz: 1.4rem;--title-3-sz: 1.2rem;--subtitle-1-sz: 1.6rem;--subtitle-2-sz: 1.4rem;--subtitle-3-sz: 1.2rem;--heading-font-family: default;--heading-bg: var(--main-color);--heading-fg: var(--text-color);--heading-hg-fg: var(--text-color);--heading-hg-bg: var(--secondary-color);--heading-link-hv-fg: var(--link-fg);--cover-w: 14rem;--cover-h: 14rem;--cover-small-w: 10rem;--cover-small-h: 10rem;--cover-tiny-w: 10rem;--cover-tiny-h: 10rem;--card-w: var(--cover-w);--preview-bg: var(--body-bg);--preview-title-sz: var(--title-3-sz);--preview-subtitle-sz: var(--title-3-sz);--preview-cover-size: 14rem;--preview-cover-small-size: 10rem;--preview-cover-tiny-size: 4rem;--preview-wide-content-sz: 1.2rem;--preview-heading-bg-color: var(--main-color);--header-height: var(--cover-h);--a-carousel-p: 1.4rem;--a-carousel-ml: .7rem ;--a-carousel-gap: 1.2rem;--a-carousel-nav-x: -.6em;--a-carousel-bg: none;--a-progress-bg: transparent;--a-progress-bar-bg: var(--secondary-color);--a-progress-bar-color: var(--text-color);--a-progress-bar-pd: .4rem;--a-playlist-header-bg: var(--secondary-color);--a-playlist-header-fg: var(--text-color);--a-playlist-title-sz: 1rem;--a-playlist-title-pd: .6rem;--a-playlist-item-border: 1px var(--secondary-color) solid;--a-sound-bg: var(--main-color);--a-sound-hv-bg: var(--main-color);--a-sound-hv-fg: var(--secondary-color);--a-sound-playing-fg: var(--secondary-color-dark);--a-sound-text-sz: 1rem;--a-player-url-fg: var(--text-color);--a-player-panel-bg: var(--main-color);--a-player-bar-height: var(--nav-primary-height);--a-player-bar-bg: var(--main-color);--a-player-bar-title-alone-sz: 1.4rem;--a-player-bar-button-fg: var(--button-fg);--a-player-bar-button-fg: var(--button-bg);--a-player-bar-button-hv-fg: var(--button-hv-fg);--a-player-bar-button-hv-bg: var(--button-hv-bg);--button-fg: var(--text-color);--button-bg: var(--main-color);--button-sec-bg: var(--main-color-light);--button-hv-fg: var(--text-color);--button-hv-bg: var(--secondary-color-light);--button-active-fg: var(--text-color);--button-active-bg: var(--secondary-color)}@media screen and (max-width: 1380px){:root{--cover-w: 10rem;--cover-h: 10rem;--cover-small-w: 6rem;--cover-small-h: 6rem;--cover-tiny-w: 4rem;--cover-tiny-h: 4rem;--section-content-sz: 1rem}}.title.is-1,.header.preview .title.is-1{font-size:var(--title-1-sz)}.title.is-2,.header.preview .title.is-2{font-size:var(--title-2-sz)}.title.is-3,.header.preview .title.is-3{font-size:var(--title-3-sz)}.subtitle,.header.preview .subtitle{color:var(--text-color-light)}.subtitle.is-1,.header.preview .subtitle.is-1{font-size:var(--subtitle-1-sz)}.subtitle.is-2,.header.preview .subtitle.is-2{font-size:var(--subtitle-2-sz)}.subtitle.is-3,.header.preview .subtitle.is-3{font-size:var(--subtitle-3-sz)}.title+.subtitle{padding-top:0!important}.headings a,a.heading,a.subtitle{text-decoration:none!important}.heading{display:inline-block}.heading:not(:empty){padding:.4rem;margin-top:0!important;vertical-align:top}.heading:not(:empty).highlight,.heading:not(:empty).active,.preview.active .heading:not(:empty){color:var(--heading-hg-fg)}.modal-card{max-width:1380px}.modal-card{max-height:calc(100% - 10rem)}.preview{position:relative;background-size:cover;background-color:var(--preview-bg)!important}.preview.preview-item{width:100%}.preview.columns,.preview .headings.columns{margin-left:0;margin-right:0}.preview.columns .column,.preview .headings.columns .column{padding:0}.preview .title,.preview .title:not(:last-child){font-weight:700;font-size:var(--preview-title-sz);margin-bottom:unset}.preview .subtitle{font-weight:500;font-size:var(--preview-subtitle-sz);margin-bottom:unset}.preview .headings{background-size:cover}.preview .headings>*{margin:0}.preview .headings .column{padding:0}.preview .headings a{color:var(--text-color)}.preview .headings a:hover{color:var(--heading-link-hv-fg)!important}.preview.tiny .title{font-size:calc(var(--preview-title-sz) * .8)}.preview.tiny .subtitle{font-size:calc(var(--preview-subtitle-sz) * .8)}.preview.tiny .content{font-size:1rem;max-height:3rem;overflow:hidden}.preview-cover{background:var(--preview-bg);background-size:cover;background-repeat:no-repeat;height:var(--cover-h);max-width:calc(var(--cover-w) * 1.5);min-width:var(--cover-w);overflow:hidden;border:1px #c4c4c4 solid}.preview-cover img{height:var(--cover-h);max-width:calc(var(--cover-w) * 1.5);min-width:var(--cover-w)}.preview-cover img.hide{visibility:hidden}.preview-cover.small,.preview.small .preview-cover{min-width:unset;height:var(--preview-cover-small-size);width:var(--preview-cover-small-size)!important;min-width:var(--preview-cover-small-size)}.preview-cover.tiny,.preview.tiny .preview-cover{min-width:unset;height:var(--preview-cover-tiny-size);width:var(--preview-cover-tiny-size)!important;min-width:var(--preview-cover-tiny-size)}.preview-header{width:100%}.preview-header:not(.no-cover){min-height:var(--header-height)}.preview-header.no-cover{height:unset}.preview-header .headings{padding-top:2rem}.preview-header .headings,.preview-header>.container{width:100%}.preview-header>.container{height:100%}.list-item{display:flex;flex-direction:column;width:100%}.list-item .headings{display:flex;flex-direction:row;padding:0;margin-bottom:.4rem!important}.list-item .headings .heading{padding:0rem}.list-item .title{flex-grow:1}.list-item .subtitle{font-size:var(--preview-title-sz);text-align:right}.list-item .subtitle:not(:empty){min-width:9rem}.list-item .media-content{height:100%;margin-bottom:unset}.list-item:not(.no-cover) .list-item .media-content{min-height:var(--preview-cover-small-size)}.list-item .actions{text-align:right;align-items:center}.list-item:not(.wide) .media{padding:.6rem;border:1px solid var(--break-color)!important}@media screen and (max-width: 400px){.list-item .headings{flex-direction:column}.list-item .headings .heading{display:inline;text-align:left}.list-item .headings .subtitle{color:unset!important;background:none!important}}.list-item.wide .preview-cover{box-shadow:0 0 1em #0003}.list-item.wide .content{font-size:var(--preview-wide-content-sz);flex-grow:1}.preview-card{display:flex;flex-direction:column;width:var(--card-w);padding:0rem!important;margin-bottom:auto;background-color:var(--preview-bg)!important;transition:box-shadow .2s}.preview-card:hover figure{box-shadow:0 0 1em #0003}.preview-card:hover a{color:var(--heading-link-hv-fg)}.preview-card .headings{margin-top:.4rem}.preview-card .headings .heading{display:block!important}.preview-card .headings .subtitle{font-size:1.2rem}.preview-card .card-content{flex-grow:1;position:relative}.preview-card .card-content figure{height:var(--cover-h);width:var(--cover-w)}.preview-card .card-content .actions{position:absolute;padding:.4rem;bottom:0rem;right:0rem}.a-carousel .a-carousel-viewport{box-shadow:inset 0 0 20rem var(--a-carousel-bg);padding:0rem;padding-top:var(--a-carousel-p);margin-top:calc(0rem - var(--a-carousel-p))}.a-carousel-container{width:100%;gap:var(--a-carousel-gap);transition:margin-left 1s}.a-carousel-container>*{flex-shrink:0}.a-carousel-bullets-container{padding-left:var(--a-carousel-ml)}.a-carousel-bullets-container .bullet{margin:.2rem;cursor:pointer}.a-carousel-bullets-container .bullet:hover{color:var(--link-fg)}.a-progress{display:flex;flex-direction:row;margin:0;padding:0}.a-progress:hover{background-color:var(--a-progress-bg)}.a-progress .a-progress-bar-container{flex-grow:1;margin:0}.a-progress>time,.a-progress .a-progress-bar{height:100%;padding:var(--a-progress-bar-pd)}.a-progress .a-progress-bar{background-color:var(--a-progress-bar-bg);color:var(--a-progress-bar-color)}.playlist .header,.a-playlist .header{display:flex;flex-direction:row}.playlist .header .title,.playlist .header .button,.a-playlist .header .title,.a-playlist .header .button{background-color:var(--a-playlist-header-bg);color:var(--a-playlist-header-fg)}.playlist .header .title,.a-playlist .header .title{font-size:var(--a-playlist-title-sz);margin:0;padding:var(--a-playlist-title-pd)}.playlist li,.a-playlist li{list-style:none;border-bottom:var(--a-playlist-item-border)}.playlist li:last-child,.a-playlist li:last-child{border-bottom:0px}.a-sound-item{display:flex;align-items:center;flex-direction:row;height:3rem;background-color:var(--a-sound-bg)}.a-sound-item.playing .label{color:var(--a-sound-playing-fg)!important}.a-sound-item:hover{background-color:var(--a-sound-hv-bg)}.a-sound-item:hover .label{color:var(--a-sound-hv-fg)!important}.a-sound-item .label:hover:before,.a-sound-item.playing .label:before{content:"";font-family:"Font Awesome 6 Free";margin-right:.6em}.a-sound-item.playing .label:hover:before{content:"";margin:0}.a-sound-item .label{cursor:pointer;margin:0!important;padding:.6em;font-size:var(--a-sound-text-sz);font-family:var(--heading-font-family)}.a-sound-item .label .icon{padding:0em .6rem}.a-sound-item .button{width:3em;font-size:var(--a-sound-text-sz)}.a-sound-item .button:hover{color:var(--a-sound-hv-fg)!important;background-color:unset}.player-container{z-index:1000000}.a-player{box-shadow:0 -.5em .5em #0000000d}.a-player a{color:var(--a-player-url-fg)}.a-player .button{color:var(--text-black)}.a-player .button:hover{color:var(--button-fg)}.a-player-panels{background:var(--a-player-panel-bg);height:0%;transition:height 1s}.a-player-panels.is-open{height:auto}.a-player-panel{padding-bottom:.6rem;max-height:80%;overflow-y:auto}.a-player-panel .a-sound-item:not(:hover){background-color:transparent}.a-player-progress{height:.4em;overflow:hidden}.a-player-progress time{display:none}.a-player-progress:hover,.a-player-panels.is-open+.a-player-progress{background:var(--a-player-bar-bg);height:2em}.a-player-progress:hover time,.a-player-panels.is-open+.a-player-progress time{display:unset}.a-player-bar{display:flex;flex-direction:row;justify-content:center;height:var(--a-player-bar-height);border-top:1px #ddd solid;background:var(--a-player-bar-bg)}.a-player-bar>*{height:100%}.a-player-bar .cover{height:100%}.a-player-bar .title{font-size:1rem;margin:0}.a-player-bar .title:last-child{font-size:var(--a-player-bar-title-alone-sz)}.a-player-bar .button{font-size:1.4rem;height:100%;padding:.4rem!important;min-width:calc(var(--a-player-bar-height) + .8rem);border-radius:0}.a-player-bar .button.open{background-color:var(--button-active-bg);color:var(--button-active-fg)}.a-player-bar-content{display:flex;flex-direction:vertical;align-items:center;flex-grow:1;padding:0 .6rem;border-right:1px black solid}.a-player-bar-content .title{max-height:calc(var(--a-player-bar-height) - .6rem);overflow:hidden}.a-tracklist-editor .dropdown{display:unset!important}.a-select-file>*:not(:last-child){margin-bottom:.6rem}.a-select-file .upload-preview{max-width:100%}.a-select-file .a-select-file-list{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:.6rem}.a-select-file .file-preview{width:100%;overflow:hidden}.a-select-file .file-preview:hover{box-shadow:0 0 1em #0003}.a-select-file .file-preview.active{box-shadow:0 0 1em #0006}.a-select-file .file-preview img{width:100%;max-height:10rem}.button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:4px;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(.5em - 1px);padding-left:calc(.75em - 1px);padding-right:calc(.75em - 1px);padding-top:calc(.5em - 1px);position:relative;vertical-align:top}.button:focus,.is-focused.button,.button:active,.is-active.button{outline:none}[disabled].button,fieldset[disabled] .button{cursor:not-allowed}.button{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.navbar-link:not(.is-arrowless):after{border:3px solid transparent;border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:.625em;margin-top:-.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:.625em}.button.is-loading:after{animation:spinAround .5s infinite linear;border:2px solid hsl(0,0%,86%);border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}.navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}.button{background-color:#fff;border-color:#dbdbdb;border-width:1px;color:#363636;cursor:pointer;justify-content:center;padding-bottom:calc(.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(.5em - 1px);text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-small,.button .icon.is-medium,.button .icon.is-large{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-.5em - 1px);margin-right:.25em}.button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-.5em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-.5em - 1px);margin-right:calc(-.5em - 1px)}.button:hover,.button.is-hovered{border-color:#b5b5b5;color:#363636}.button:focus,.button.is-focused{border-color:#485fc7;color:#363636}.button:focus:not(:active),.button.is-focused:not(:active){box-shadow:0 0 0 .125em #485fc740}.button:active,.button.is-active{border-color:#4a4a4a;color:#363636}.button.is-text{background-color:transparent;border-color:transparent;color:#4a4a4a;text-decoration:underline}.button.is-text:hover,.button.is-text.is-hovered,.button.is-text:focus,.button.is-text.is-focused{background-color:#f5f5f5;color:#363636}.button.is-text:active,.button.is-text.is-active{background-color:#e8e8e8;color:#363636}.button.is-text[disabled],fieldset[disabled] .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}.button.is-ghost{background:none;border-color:transparent;color:#485fc7;text-decoration:none}.button.is-ghost:hover,.button.is-ghost.is-hovered{color:#485fc7;text-decoration:underline}.button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}.button.is-white:hover,.button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.button.is-white:focus,.button.is-white.is-focused{border-color:transparent;color:#0a0a0a}.button.is-white:focus:not(:active),.button.is-white.is-focused:not(:active){box-shadow:0 0 0 .125em #ffffff40}.button.is-white:active,.button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.button.is-white[disabled],fieldset[disabled] .button.is-white{background-color:#fff;border-color:#fff;box-shadow:none}.button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted:hover,.button.is-white.is-inverted.is-hovered{background-color:#000}.button.is-white.is-inverted[disabled],fieldset[disabled] .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}.button.is-white.is-loading:after{border-color:transparent transparent hsl(0,0%,4%) hsl(0,0%,4%)!important}.button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-white.is-outlined:hover,.button.is-white.is-outlined.is-hovered,.button.is-white.is-outlined:focus,.button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}.button.is-white.is-outlined.is-loading:after{border-color:transparent transparent hsl(0,0%,100%) hsl(0,0%,100%)!important}.button.is-white.is-outlined.is-loading:hover:after,.button.is-white.is-outlined.is-loading.is-hovered:after,.button.is-white.is-outlined.is-loading:focus:after,.button.is-white.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(0,0%,4%) hsl(0,0%,4%)!important}.button.is-white.is-outlined[disabled],fieldset[disabled] .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-white.is-inverted.is-outlined:hover,.button.is-white.is-inverted.is-outlined.is-hovered,.button.is-white.is-inverted.is-outlined:focus,.button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted.is-outlined.is-loading:hover:after,.button.is-white.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-white.is-inverted.is-outlined.is-loading:focus:after,.button.is-white.is-inverted.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(0,0%,100%) hsl(0,0%,100%)!important}.button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}.button.is-black:hover,.button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}.button.is-black:focus,.button.is-black.is-focused{border-color:transparent;color:#fff}.button.is-black:focus:not(:active),.button.is-black.is-focused:not(:active){box-shadow:0 0 0 .125em #0a0a0a40}.button.is-black:active,.button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}.button.is-black[disabled],fieldset[disabled] .button.is-black{background-color:#0a0a0a;border-color:#0a0a0a;box-shadow:none}.button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted:hover,.button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-black.is-inverted[disabled],fieldset[disabled] .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}.button.is-black.is-loading:after{border-color:transparent transparent hsl(0,0%,100%) hsl(0,0%,100%)!important}.button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-black.is-outlined:hover,.button.is-black.is-outlined.is-hovered,.button.is-black.is-outlined:focus,.button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.button.is-black.is-outlined.is-loading:after{border-color:transparent transparent hsl(0,0%,4%) hsl(0,0%,4%)!important}.button.is-black.is-outlined.is-loading:hover:after,.button.is-black.is-outlined.is-loading.is-hovered:after,.button.is-black.is-outlined.is-loading:focus:after,.button.is-black.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(0,0%,100%) hsl(0,0%,100%)!important}.button.is-black.is-outlined[disabled],fieldset[disabled] .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-black.is-inverted.is-outlined:hover,.button.is-black.is-inverted.is-outlined.is-hovered,.button.is-black.is-inverted.is-outlined:focus,.button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted.is-outlined.is-loading:hover:after,.button.is-black.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-black.is-inverted.is-outlined.is-loading:focus:after,.button.is-black.is-inverted.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(0,0%,4%) hsl(0,0%,4%)!important}.button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-light{background-color:#f5f5f5;border-color:transparent;color:#000000b3}.button.is-light:hover,.button.is-light.is-hovered{background-color:#eee;border-color:transparent;color:#000000b3}.button.is-light:focus,.button.is-light.is-focused{border-color:transparent;color:#000000b3}.button.is-light:focus:not(:active),.button.is-light.is-focused:not(:active){box-shadow:0 0 0 .125em #f5f5f540}.button.is-light:active,.button.is-light.is-active{background-color:#e8e8e8;border-color:transparent;color:#000000b3}.button.is-light[disabled],fieldset[disabled] .button.is-light{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none}.button.is-light.is-inverted{background-color:#000000b3;color:#f5f5f5}.button.is-light.is-inverted:hover,.button.is-light.is-inverted.is-hovered{background-color:#000000b3}.button.is-light.is-inverted[disabled],fieldset[disabled] .button.is-light.is-inverted{background-color:#000000b3;border-color:transparent;box-shadow:none;color:#f5f5f5}.button.is-light.is-loading:after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.button.is-light.is-outlined:hover,.button.is-light.is-outlined.is-hovered,.button.is-light.is-outlined:focus,.button.is-light.is-outlined.is-focused{background-color:#f5f5f5;border-color:#f5f5f5;color:#000000b3}.button.is-light.is-outlined.is-loading:after{border-color:transparent transparent hsl(0,0%,96%) hsl(0,0%,96%)!important}.button.is-light.is-outlined.is-loading:hover:after,.button.is-light.is-outlined.is-loading.is-hovered:after,.button.is-light.is-outlined.is-loading:focus:after,.button.is-light.is-outlined.is-loading.is-focused:after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-light.is-outlined[disabled],fieldset[disabled] .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}.button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:#000000b3;color:#000000b3}.button.is-light.is-inverted.is-outlined:hover,.button.is-light.is-inverted.is-outlined.is-hovered,.button.is-light.is-inverted.is-outlined:focus,.button.is-light.is-inverted.is-outlined.is-focused{background-color:#000000b3;color:#f5f5f5}.button.is-light.is-inverted.is-outlined.is-loading:hover:after,.button.is-light.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-light.is-inverted.is-outlined.is-loading:focus:after,.button.is-light.is-inverted.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(0,0%,96%) hsl(0,0%,96%)!important}.button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:#000000b3;box-shadow:none;color:#000000b3}.button.is-dark{background-color:#363636;border-color:transparent;color:#fff}.button.is-dark:hover,.button.is-dark.is-hovered{background-color:#2f2f2f;border-color:transparent;color:#fff}.button.is-dark:focus,.button.is-dark.is-focused{border-color:transparent;color:#fff}.button.is-dark:focus:not(:active),.button.is-dark.is-focused:not(:active){box-shadow:0 0 0 .125em #36363640}.button.is-dark:active,.button.is-dark.is-active{background-color:#292929;border-color:transparent;color:#fff}.button.is-dark[disabled],fieldset[disabled] .button.is-dark{background-color:#363636;border-color:#363636;box-shadow:none}.button.is-dark.is-inverted{background-color:#fff;color:#363636}.button.is-dark.is-inverted:hover,.button.is-dark.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-dark.is-inverted[disabled],fieldset[disabled] .button.is-dark.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#363636}.button.is-dark.is-loading:after{border-color:transparent transparent #fff #fff!important}.button.is-dark.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-dark.is-outlined:hover,.button.is-dark.is-outlined.is-hovered,.button.is-dark.is-outlined:focus,.button.is-dark.is-outlined.is-focused{background-color:#363636;border-color:#363636;color:#fff}.button.is-dark.is-outlined.is-loading:after{border-color:transparent transparent hsl(0,0%,21%) hsl(0,0%,21%)!important}.button.is-dark.is-outlined.is-loading:hover:after,.button.is-dark.is-outlined.is-loading.is-hovered:after,.button.is-dark.is-outlined.is-loading:focus:after,.button.is-dark.is-outlined.is-loading.is-focused:after{border-color:transparent transparent #fff #fff!important}.button.is-dark.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-outlined{background-color:transparent;border-color:#363636;box-shadow:none;color:#363636}.button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-dark.is-inverted.is-outlined:hover,.button.is-dark.is-inverted.is-outlined.is-hovered,.button.is-dark.is-inverted.is-outlined:focus,.button.is-dark.is-inverted.is-outlined.is-focused{background-color:#fff;color:#363636}.button.is-dark.is-inverted.is-outlined.is-loading:hover:after,.button.is-dark.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-dark.is-inverted.is-outlined.is-loading:focus:after,.button.is-dark.is-inverted.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(0,0%,21%) hsl(0,0%,21%)!important}.button.is-dark.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary{background-color:#00d1b2;border-color:transparent;color:#fff}.button.is-primary:hover,.button.is-primary.is-hovered{background-color:#00c4a7;border-color:transparent;color:#fff}.button.is-primary:focus,.button.is-primary.is-focused{border-color:transparent;color:#fff}.button.is-primary:focus:not(:active),.button.is-primary.is-focused:not(:active){box-shadow:0 0 0 .125em #00d1b240}.button.is-primary:active,.button.is-primary.is-active{background-color:#00b89c;border-color:transparent;color:#fff}.button.is-primary[disabled],fieldset[disabled] .button.is-primary{background-color:#00d1b2;border-color:#00d1b2;box-shadow:none}.button.is-primary.is-inverted{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted:hover,.button.is-primary.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-primary.is-inverted[disabled],fieldset[disabled] .button.is-primary.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#00d1b2}.button.is-primary.is-loading:after{border-color:transparent transparent #fff #fff!important}.button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;color:#00d1b2}.button.is-primary.is-outlined:hover,.button.is-primary.is-outlined.is-hovered,.button.is-primary.is-outlined:focus,.button.is-primary.is-outlined.is-focused{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.button.is-primary.is-outlined.is-loading:after{border-color:transparent transparent hsl(171,100%,41%) hsl(171,100%,41%)!important}.button.is-primary.is-outlined.is-loading:hover:after,.button.is-primary.is-outlined.is-loading.is-hovered:after,.button.is-primary.is-outlined.is-loading:focus:after,.button.is-primary.is-outlined.is-loading.is-focused:after{border-color:transparent transparent #fff #fff!important}.button.is-primary.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;box-shadow:none;color:#00d1b2}.button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-primary.is-inverted.is-outlined:hover,.button.is-primary.is-inverted.is-outlined.is-hovered,.button.is-primary.is-inverted.is-outlined:focus,.button.is-primary.is-inverted.is-outlined.is-focused{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted.is-outlined.is-loading:hover:after,.button.is-primary.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-primary.is-inverted.is-outlined.is-loading:focus:after,.button.is-primary.is-inverted.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(171,100%,41%) hsl(171,100%,41%)!important}.button.is-primary.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary.is-light{background-color:#ebfffc;color:#00947e}.button.is-primary.is-light:hover,.button.is-primary.is-light.is-hovered{background-color:#defffa;border-color:transparent;color:#00947e}.button.is-primary.is-light:active,.button.is-primary.is-light.is-active{background-color:#d1fff8;border-color:transparent;color:#00947e}.button.is-link{background-color:#485fc7;border-color:transparent;color:#fff}.button.is-link:hover,.button.is-link.is-hovered{background-color:#3e56c4;border-color:transparent;color:#fff}.button.is-link:focus,.button.is-link.is-focused{border-color:transparent;color:#fff}.button.is-link:focus:not(:active),.button.is-link.is-focused:not(:active){box-shadow:0 0 0 .125em #485fc740}.button.is-link:active,.button.is-link.is-active{background-color:#3a51bb;border-color:transparent;color:#fff}.button.is-link[disabled],fieldset[disabled] .button.is-link{background-color:#485fc7;border-color:#485fc7;box-shadow:none}.button.is-link.is-inverted{background-color:#fff;color:#485fc7}.button.is-link.is-inverted:hover,.button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-link.is-inverted[disabled],fieldset[disabled] .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#485fc7}.button.is-link.is-loading:after{border-color:transparent transparent #fff #fff!important}.button.is-link.is-outlined{background-color:transparent;border-color:#485fc7;color:#485fc7}.button.is-link.is-outlined:hover,.button.is-link.is-outlined.is-hovered,.button.is-link.is-outlined:focus,.button.is-link.is-outlined.is-focused{background-color:#485fc7;border-color:#485fc7;color:#fff}.button.is-link.is-outlined.is-loading:after{border-color:transparent transparent hsl(229,53%,53%) hsl(229,53%,53%)!important}.button.is-link.is-outlined.is-loading:hover:after,.button.is-link.is-outlined.is-loading.is-hovered:after,.button.is-link.is-outlined.is-loading:focus:after,.button.is-link.is-outlined.is-loading.is-focused:after{border-color:transparent transparent #fff #fff!important}.button.is-link.is-outlined[disabled],fieldset[disabled] .button.is-link.is-outlined{background-color:transparent;border-color:#485fc7;box-shadow:none;color:#485fc7}.button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-link.is-inverted.is-outlined:hover,.button.is-link.is-inverted.is-outlined.is-hovered,.button.is-link.is-inverted.is-outlined:focus,.button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#485fc7}.button.is-link.is-inverted.is-outlined.is-loading:hover:after,.button.is-link.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-link.is-inverted.is-outlined.is-loading:focus:after,.button.is-link.is-inverted.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(229,53%,53%) hsl(229,53%,53%)!important}.button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-link.is-light{background-color:#eff1fa;color:#3850b7}.button.is-link.is-light:hover,.button.is-link.is-light.is-hovered{background-color:#e6e9f7;border-color:transparent;color:#3850b7}.button.is-link.is-light:active,.button.is-link.is-light.is-active{background-color:#dce0f4;border-color:transparent;color:#3850b7}.button.is-info{background-color:#3e8ed0;border-color:transparent;color:#fff}.button.is-info:hover,.button.is-info.is-hovered{background-color:#3488ce;border-color:transparent;color:#fff}.button.is-info:focus,.button.is-info.is-focused{border-color:transparent;color:#fff}.button.is-info:focus:not(:active),.button.is-info.is-focused:not(:active){box-shadow:0 0 0 .125em #3e8ed040}.button.is-info:active,.button.is-info.is-active{background-color:#3082c5;border-color:transparent;color:#fff}.button.is-info[disabled],fieldset[disabled] .button.is-info{background-color:#3e8ed0;border-color:#3e8ed0;box-shadow:none}.button.is-info.is-inverted{background-color:#fff;color:#3e8ed0}.button.is-info.is-inverted:hover,.button.is-info.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-info.is-inverted[disabled],fieldset[disabled] .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#3e8ed0}.button.is-info.is-loading:after{border-color:transparent transparent #fff #fff!important}.button.is-info.is-outlined{background-color:transparent;border-color:#3e8ed0;color:#3e8ed0}.button.is-info.is-outlined:hover,.button.is-info.is-outlined.is-hovered,.button.is-info.is-outlined:focus,.button.is-info.is-outlined.is-focused{background-color:#3e8ed0;border-color:#3e8ed0;color:#fff}.button.is-info.is-outlined.is-loading:after{border-color:transparent transparent hsl(207,61%,53%) hsl(207,61%,53%)!important}.button.is-info.is-outlined.is-loading:hover:after,.button.is-info.is-outlined.is-loading.is-hovered:after,.button.is-info.is-outlined.is-loading:focus:after,.button.is-info.is-outlined.is-loading.is-focused:after{border-color:transparent transparent #fff #fff!important}.button.is-info.is-outlined[disabled],fieldset[disabled] .button.is-info.is-outlined{background-color:transparent;border-color:#3e8ed0;box-shadow:none;color:#3e8ed0}.button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-info.is-inverted.is-outlined:hover,.button.is-info.is-inverted.is-outlined.is-hovered,.button.is-info.is-inverted.is-outlined:focus,.button.is-info.is-inverted.is-outlined.is-focused{background-color:#fff;color:#3e8ed0}.button.is-info.is-inverted.is-outlined.is-loading:hover:after,.button.is-info.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-info.is-inverted.is-outlined.is-loading:focus:after,.button.is-info.is-inverted.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(207,61%,53%) hsl(207,61%,53%)!important}.button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-info.is-light{background-color:#eff5fb;color:#296fa8}.button.is-info.is-light:hover,.button.is-info.is-light.is-hovered{background-color:#e4eff9;border-color:transparent;color:#296fa8}.button.is-info.is-light:active,.button.is-info.is-light.is-active{background-color:#dae9f6;border-color:transparent;color:#296fa8}.button.is-success{background-color:#48c78e;border-color:transparent;color:#fff}.button.is-success:hover,.button.is-success.is-hovered{background-color:#3ec487;border-color:transparent;color:#fff}.button.is-success:focus,.button.is-success.is-focused{border-color:transparent;color:#fff}.button.is-success:focus:not(:active),.button.is-success.is-focused:not(:active){box-shadow:0 0 0 .125em #48c78e40}.button.is-success:active,.button.is-success.is-active{background-color:#3abb81;border-color:transparent;color:#fff}.button.is-success[disabled],fieldset[disabled] .button.is-success{background-color:#48c78e;border-color:#48c78e;box-shadow:none}.button.is-success.is-inverted{background-color:#fff;color:#48c78e}.button.is-success.is-inverted:hover,.button.is-success.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-success.is-inverted[disabled],fieldset[disabled] .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#48c78e}.button.is-success.is-loading:after{border-color:transparent transparent #fff #fff!important}.button.is-success.is-outlined{background-color:transparent;border-color:#48c78e;color:#48c78e}.button.is-success.is-outlined:hover,.button.is-success.is-outlined.is-hovered,.button.is-success.is-outlined:focus,.button.is-success.is-outlined.is-focused{background-color:#48c78e;border-color:#48c78e;color:#fff}.button.is-success.is-outlined.is-loading:after{border-color:transparent transparent hsl(153,53%,53%) hsl(153,53%,53%)!important}.button.is-success.is-outlined.is-loading:hover:after,.button.is-success.is-outlined.is-loading.is-hovered:after,.button.is-success.is-outlined.is-loading:focus:after,.button.is-success.is-outlined.is-loading.is-focused:after{border-color:transparent transparent #fff #fff!important}.button.is-success.is-outlined[disabled],fieldset[disabled] .button.is-success.is-outlined{background-color:transparent;border-color:#48c78e;box-shadow:none;color:#48c78e}.button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-success.is-inverted.is-outlined:hover,.button.is-success.is-inverted.is-outlined.is-hovered,.button.is-success.is-inverted.is-outlined:focus,.button.is-success.is-inverted.is-outlined.is-focused{background-color:#fff;color:#48c78e}.button.is-success.is-inverted.is-outlined.is-loading:hover:after,.button.is-success.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-success.is-inverted.is-outlined.is-loading:focus:after,.button.is-success.is-inverted.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(153,53%,53%) hsl(153,53%,53%)!important}.button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-success.is-light{background-color:#effaf5;color:#257953}.button.is-success.is-light:hover,.button.is-success.is-light.is-hovered{background-color:#e6f7ef;border-color:transparent;color:#257953}.button.is-success.is-light:active,.button.is-success.is-light.is-active{background-color:#dcf4e9;border-color:transparent;color:#257953}.button.is-warning{background-color:#ffe08a;border-color:transparent;color:#000000b3}.button.is-warning:hover,.button.is-warning.is-hovered{background-color:#ffdc7d;border-color:transparent;color:#000000b3}.button.is-warning:focus,.button.is-warning.is-focused{border-color:transparent;color:#000000b3}.button.is-warning:focus:not(:active),.button.is-warning.is-focused:not(:active){box-shadow:0 0 0 .125em #ffe08a40}.button.is-warning:active,.button.is-warning.is-active{background-color:#ffd970;border-color:transparent;color:#000000b3}.button.is-warning[disabled],fieldset[disabled] .button.is-warning{background-color:#ffe08a;border-color:#ffe08a;box-shadow:none}.button.is-warning.is-inverted{background-color:#000000b3;color:#ffe08a}.button.is-warning.is-inverted:hover,.button.is-warning.is-inverted.is-hovered{background-color:#000000b3}.button.is-warning.is-inverted[disabled],fieldset[disabled] .button.is-warning.is-inverted{background-color:#000000b3;border-color:transparent;box-shadow:none;color:#ffe08a}.button.is-warning.is-loading:after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-warning.is-outlined{background-color:transparent;border-color:#ffe08a;color:#ffe08a}.button.is-warning.is-outlined:hover,.button.is-warning.is-outlined.is-hovered,.button.is-warning.is-outlined:focus,.button.is-warning.is-outlined.is-focused{background-color:#ffe08a;border-color:#ffe08a;color:#000000b3}.button.is-warning.is-outlined.is-loading:after{border-color:transparent transparent hsl(44,100%,77%) hsl(44,100%,77%)!important}.button.is-warning.is-outlined.is-loading:hover:after,.button.is-warning.is-outlined.is-loading.is-hovered:after,.button.is-warning.is-outlined.is-loading:focus:after,.button.is-warning.is-outlined.is-loading.is-focused:after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-warning.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-outlined{background-color:transparent;border-color:#ffe08a;box-shadow:none;color:#ffe08a}.button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#000000b3;color:#000000b3}.button.is-warning.is-inverted.is-outlined:hover,.button.is-warning.is-inverted.is-outlined.is-hovered,.button.is-warning.is-inverted.is-outlined:focus,.button.is-warning.is-inverted.is-outlined.is-focused{background-color:#000000b3;color:#ffe08a}.button.is-warning.is-inverted.is-outlined.is-loading:hover:after,.button.is-warning.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-warning.is-inverted.is-outlined.is-loading:focus:after,.button.is-warning.is-inverted.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(44,100%,77%) hsl(44,100%,77%)!important}.button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#000000b3;box-shadow:none;color:#000000b3}.button.is-warning.is-light{background-color:#fffaeb;color:#946c00}.button.is-warning.is-light:hover,.button.is-warning.is-light.is-hovered{background-color:#fff6de;border-color:transparent;color:#946c00}.button.is-warning.is-light:active,.button.is-warning.is-light.is-active{background-color:#fff3d1;border-color:transparent;color:#946c00}.button.is-danger{background-color:#f14668;border-color:transparent;color:#fff}.button.is-danger:hover,.button.is-danger.is-hovered{background-color:#f03a5f;border-color:transparent;color:#fff}.button.is-danger:focus,.button.is-danger.is-focused{border-color:transparent;color:#fff}.button.is-danger:focus:not(:active),.button.is-danger.is-focused:not(:active){box-shadow:0 0 0 .125em #f1466840}.button.is-danger:active,.button.is-danger.is-active{background-color:#ef2e55;border-color:transparent;color:#fff}.button.is-danger[disabled],fieldset[disabled] .button.is-danger{background-color:#f14668;border-color:#f14668;box-shadow:none}.button.is-danger.is-inverted{background-color:#fff;color:#f14668}.button.is-danger.is-inverted:hover,.button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-danger.is-inverted[disabled],fieldset[disabled] .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#f14668}.button.is-danger.is-loading:after{border-color:transparent transparent #fff #fff!important}.button.is-danger.is-outlined{background-color:transparent;border-color:#f14668;color:#f14668}.button.is-danger.is-outlined:hover,.button.is-danger.is-outlined.is-hovered,.button.is-danger.is-outlined:focus,.button.is-danger.is-outlined.is-focused{background-color:#f14668;border-color:#f14668;color:#fff}.button.is-danger.is-outlined.is-loading:after{border-color:transparent transparent hsl(348,86%,61%) hsl(348,86%,61%)!important}.button.is-danger.is-outlined.is-loading:hover:after,.button.is-danger.is-outlined.is-loading.is-hovered:after,.button.is-danger.is-outlined.is-loading:focus:after,.button.is-danger.is-outlined.is-loading.is-focused:after{border-color:transparent transparent #fff #fff!important}.button.is-danger.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-outlined{background-color:transparent;border-color:#f14668;box-shadow:none;color:#f14668}.button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-danger.is-inverted.is-outlined:hover,.button.is-danger.is-inverted.is-outlined.is-hovered,.button.is-danger.is-inverted.is-outlined:focus,.button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#f14668}.button.is-danger.is-inverted.is-outlined.is-loading:hover:after,.button.is-danger.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-danger.is-inverted.is-outlined.is-loading:focus:after,.button.is-danger.is-inverted.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(348,86%,61%) hsl(348,86%,61%)!important}.button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.button.is-danger.is-light:hover,.button.is-danger.is-light.is-hovered{background-color:#fde0e6;border-color:transparent;color:#cc0f35}.button.is-danger.is-light:active,.button.is-danger.is-light.is-active{background-color:#fcd4dc;border-color:transparent;color:#cc0f35}.button.is-small{font-size:.75rem}.button.is-small:not(.is-rounded){border-radius:2px}.button.is-normal{font-size:1rem}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled],fieldset[disabled] .button{background-color:#fff;border-color:#dbdbdb;box-shadow:none;opacity:.5}.button.is-fullwidth{display:flex;width:100%}.button.is-loading{color:transparent!important;pointer-events:none}.button.is-loading:after{position:absolute;left:calc(50% - .5em);top:calc(50% - .5em);position:absolute!important}.button.is-static{background-color:#f5f5f5;border-color:#dbdbdb;color:#7a7a7a;box-shadow:none;pointer-events:none}.button.is-rounded{border-radius:9999px;padding-left:1.25em;padding-right:1.25em}.buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.buttons .button{margin-bottom:.5rem}.buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}.buttons:last-child{margin-bottom:-.5rem}.buttons:not(:last-child){margin-bottom:1rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:2px}.buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}.buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}.buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.buttons.has-addons .button:last-child{margin-right:0}.buttons.has-addons .button:hover,.buttons.has-addons .button.is-hovered{z-index:2}.buttons.has-addons .button:focus,.buttons.has-addons .button.is-focused,.buttons.has-addons .button:active,.buttons.has-addons .button.is-active,.buttons.has-addons .button.is-selected{z-index:3}.buttons.has-addons .button:focus:hover,.buttons.has-addons .button.is-focused:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button.is-selected:hover{z-index:4}.buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}.buttons.is-centered{justify-content:center}.buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}.buttons.is-right{justify-content:flex-end}.buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}@media screen and (max-width: 768px){.button.is-responsive.is-small{font-size:.5625rem}.button.is-responsive,.button.is-responsive.is-normal{font-size:.65625rem}.button.is-responsive.is-medium{font-size:.75rem}.button.is-responsive.is-large{font-size:1rem}}@media screen and (min-width: 769px) and (max-width: 1023px){.button.is-responsive.is-small{font-size:.65625rem}.button.is-responsive,.button.is-responsive.is-normal{font-size:.75rem}.button.is-responsive.is-medium{font-size:1rem}.button.is-responsive.is-large{font-size:1.25rem}}.navbar{background-color:#fff;min-height:3.25rem;position:relative;z-index:30}.navbar.is-white{background-color:#fff;color:#0a0a0a}.navbar.is-white .navbar-brand>.navbar-item,.navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-brand>a.navbar-item:focus,.navbar.is-white .navbar-brand>a.navbar-item:hover,.navbar.is-white .navbar-brand>a.navbar-item.is-active,.navbar.is-white .navbar-brand .navbar-link:focus,.navbar.is-white .navbar-brand .navbar-link:hover,.navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link:after{border-color:#0a0a0a}.navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1024px){.navbar.is-white .navbar-start>.navbar-item,.navbar.is-white .navbar-start .navbar-link,.navbar.is-white .navbar-end>.navbar-item,.navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-start>a.navbar-item:focus,.navbar.is-white .navbar-start>a.navbar-item:hover,.navbar.is-white .navbar-start>a.navbar-item.is-active,.navbar.is-white .navbar-start .navbar-link:focus,.navbar.is-white .navbar-start .navbar-link:hover,.navbar.is-white .navbar-start .navbar-link.is-active,.navbar.is-white .navbar-end>a.navbar-item:focus,.navbar.is-white .navbar-end>a.navbar-item:hover,.navbar.is-white .navbar-end>a.navbar-item.is-active,.navbar.is-white .navbar-end .navbar-link:focus,.navbar.is-white .navbar-end .navbar-link:hover,.navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-start .navbar-link:after,.navbar.is-white .navbar-end .navbar-link:after{border-color:#0a0a0a}.navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}.navbar.is-black{background-color:#0a0a0a;color:#fff}.navbar.is-black .navbar-brand>.navbar-item,.navbar.is-black .navbar-brand .navbar-link{color:#fff}.navbar.is-black .navbar-brand>a.navbar-item:focus,.navbar.is-black .navbar-brand>a.navbar-item:hover,.navbar.is-black .navbar-brand>a.navbar-item.is-active,.navbar.is-black .navbar-brand .navbar-link:focus,.navbar.is-black .navbar-brand .navbar-link:hover,.navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1024px){.navbar.is-black .navbar-start>.navbar-item,.navbar.is-black .navbar-start .navbar-link,.navbar.is-black .navbar-end>.navbar-item,.navbar.is-black .navbar-end .navbar-link{color:#fff}.navbar.is-black .navbar-start>a.navbar-item:focus,.navbar.is-black .navbar-start>a.navbar-item:hover,.navbar.is-black .navbar-start>a.navbar-item.is-active,.navbar.is-black .navbar-start .navbar-link:focus,.navbar.is-black .navbar-start .navbar-link:hover,.navbar.is-black .navbar-start .navbar-link.is-active,.navbar.is-black .navbar-end>a.navbar-item:focus,.navbar.is-black .navbar-end>a.navbar-item:hover,.navbar.is-black .navbar-end>a.navbar-item.is-active,.navbar.is-black .navbar-end .navbar-link:focus,.navbar.is-black .navbar-end .navbar-link:hover,.navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-start .navbar-link:after,.navbar.is-black .navbar-end .navbar-link:after{border-color:#fff}.navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}.navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}.navbar.is-light{background-color:#f5f5f5;color:#000000b3}.navbar.is-light .navbar-brand>.navbar-item,.navbar.is-light .navbar-brand .navbar-link{color:#000000b3}.navbar.is-light .navbar-brand>a.navbar-item:focus,.navbar.is-light .navbar-brand>a.navbar-item:hover,.navbar.is-light .navbar-brand>a.navbar-item.is-active,.navbar.is-light .navbar-brand .navbar-link:focus,.navbar.is-light .navbar-brand .navbar-link:hover,.navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#e8e8e8;color:#000000b3}.navbar.is-light .navbar-brand .navbar-link:after{border-color:#000000b3}.navbar.is-light .navbar-burger{color:#000000b3}@media screen and (min-width: 1024px){.navbar.is-light .navbar-start>.navbar-item,.navbar.is-light .navbar-start .navbar-link,.navbar.is-light .navbar-end>.navbar-item,.navbar.is-light .navbar-end .navbar-link{color:#000000b3}.navbar.is-light .navbar-start>a.navbar-item:focus,.navbar.is-light .navbar-start>a.navbar-item:hover,.navbar.is-light .navbar-start>a.navbar-item.is-active,.navbar.is-light .navbar-start .navbar-link:focus,.navbar.is-light .navbar-start .navbar-link:hover,.navbar.is-light .navbar-start .navbar-link.is-active,.navbar.is-light .navbar-end>a.navbar-item:focus,.navbar.is-light .navbar-end>a.navbar-item:hover,.navbar.is-light .navbar-end>a.navbar-item.is-active,.navbar.is-light .navbar-end .navbar-link:focus,.navbar.is-light .navbar-end .navbar-link:hover,.navbar.is-light .navbar-end .navbar-link.is-active{background-color:#e8e8e8;color:#000000b3}.navbar.is-light .navbar-start .navbar-link:after,.navbar.is-light .navbar-end .navbar-link:after{border-color:#000000b3}.navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e8e8e8;color:#000000b3}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#000000b3}}.navbar.is-dark{background-color:#363636;color:#fff}.navbar.is-dark .navbar-brand>.navbar-item,.navbar.is-dark .navbar-brand .navbar-link{color:#fff}.navbar.is-dark .navbar-brand>a.navbar-item:focus,.navbar.is-dark .navbar-brand>a.navbar-item:hover,.navbar.is-dark .navbar-brand>a.navbar-item.is-active,.navbar.is-dark .navbar-brand .navbar-link:focus,.navbar.is-dark .navbar-brand .navbar-link:hover,.navbar.is-dark .navbar-brand .navbar-link.is-active{background-color:#292929;color:#fff}.navbar.is-dark .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-dark .navbar-burger{color:#fff}@media screen and (min-width: 1024px){.navbar.is-dark .navbar-start>.navbar-item,.navbar.is-dark .navbar-start .navbar-link,.navbar.is-dark .navbar-end>.navbar-item,.navbar.is-dark .navbar-end .navbar-link{color:#fff}.navbar.is-dark .navbar-start>a.navbar-item:focus,.navbar.is-dark .navbar-start>a.navbar-item:hover,.navbar.is-dark .navbar-start>a.navbar-item.is-active,.navbar.is-dark .navbar-start .navbar-link:focus,.navbar.is-dark .navbar-start .navbar-link:hover,.navbar.is-dark .navbar-start .navbar-link.is-active,.navbar.is-dark .navbar-end>a.navbar-item:focus,.navbar.is-dark .navbar-end>a.navbar-item:hover,.navbar.is-dark .navbar-end>a.navbar-item.is-active,.navbar.is-dark .navbar-end .navbar-link:focus,.navbar.is-dark .navbar-end .navbar-link:hover,.navbar.is-dark .navbar-end .navbar-link.is-active{background-color:#292929;color:#fff}.navbar.is-dark .navbar-start .navbar-link:after,.navbar.is-dark .navbar-end .navbar-link:after{border-color:#fff}.navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link{background-color:#292929;color:#fff}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active{background-color:#363636;color:#fff}}.navbar.is-primary{background-color:#00d1b2;color:#fff}.navbar.is-primary .navbar-brand>.navbar-item,.navbar.is-primary .navbar-brand .navbar-link{color:#fff}.navbar.is-primary .navbar-brand>a.navbar-item:focus,.navbar.is-primary .navbar-brand>a.navbar-item:hover,.navbar.is-primary .navbar-brand>a.navbar-item.is-active,.navbar.is-primary .navbar-brand .navbar-link:focus,.navbar.is-primary .navbar-brand .navbar-link:hover,.navbar.is-primary .navbar-brand .navbar-link.is-active{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-primary .navbar-burger{color:#fff}@media screen and (min-width: 1024px){.navbar.is-primary .navbar-start>.navbar-item,.navbar.is-primary .navbar-start .navbar-link,.navbar.is-primary .navbar-end>.navbar-item,.navbar.is-primary .navbar-end .navbar-link{color:#fff}.navbar.is-primary .navbar-start>a.navbar-item:focus,.navbar.is-primary .navbar-start>a.navbar-item:hover,.navbar.is-primary .navbar-start>a.navbar-item.is-active,.navbar.is-primary .navbar-start .navbar-link:focus,.navbar.is-primary .navbar-start .navbar-link:hover,.navbar.is-primary .navbar-start .navbar-link.is-active,.navbar.is-primary .navbar-end>a.navbar-item:focus,.navbar.is-primary .navbar-end>a.navbar-item:hover,.navbar.is-primary .navbar-end>a.navbar-item.is-active,.navbar.is-primary .navbar-end .navbar-link:focus,.navbar.is-primary .navbar-end .navbar-link:hover,.navbar.is-primary .navbar-end .navbar-link.is-active{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-start .navbar-link:after,.navbar.is-primary .navbar-end .navbar-link:after{border-color:#fff}.navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active{background-color:#00d1b2;color:#fff}}.navbar.is-link{background-color:#485fc7;color:#fff}.navbar.is-link .navbar-brand>.navbar-item,.navbar.is-link .navbar-brand .navbar-link{color:#fff}.navbar.is-link .navbar-brand>a.navbar-item:focus,.navbar.is-link .navbar-brand>a.navbar-item:hover,.navbar.is-link .navbar-brand>a.navbar-item.is-active,.navbar.is-link .navbar-brand .navbar-link:focus,.navbar.is-link .navbar-brand .navbar-link:hover,.navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1024px){.navbar.is-link .navbar-start>.navbar-item,.navbar.is-link .navbar-start .navbar-link,.navbar.is-link .navbar-end>.navbar-item,.navbar.is-link .navbar-end .navbar-link{color:#fff}.navbar.is-link .navbar-start>a.navbar-item:focus,.navbar.is-link .navbar-start>a.navbar-item:hover,.navbar.is-link .navbar-start>a.navbar-item.is-active,.navbar.is-link .navbar-start .navbar-link:focus,.navbar.is-link .navbar-start .navbar-link:hover,.navbar.is-link .navbar-start .navbar-link.is-active,.navbar.is-link .navbar-end>a.navbar-item:focus,.navbar.is-link .navbar-end>a.navbar-item:hover,.navbar.is-link .navbar-end>a.navbar-item.is-active,.navbar.is-link .navbar-end .navbar-link:focus,.navbar.is-link .navbar-end .navbar-link:hover,.navbar.is-link .navbar-end .navbar-link.is-active{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-start .navbar-link:after,.navbar.is-link .navbar-end .navbar-link:after{border-color:#fff}.navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#485fc7;color:#fff}}.navbar.is-info{background-color:#3e8ed0;color:#fff}.navbar.is-info .navbar-brand>.navbar-item,.navbar.is-info .navbar-brand .navbar-link{color:#fff}.navbar.is-info .navbar-brand>a.navbar-item:focus,.navbar.is-info .navbar-brand>a.navbar-item:hover,.navbar.is-info .navbar-brand>a.navbar-item.is-active,.navbar.is-info .navbar-brand .navbar-link:focus,.navbar.is-info .navbar-brand .navbar-link:hover,.navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width: 1024px){.navbar.is-info .navbar-start>.navbar-item,.navbar.is-info .navbar-start .navbar-link,.navbar.is-info .navbar-end>.navbar-item,.navbar.is-info .navbar-end .navbar-link{color:#fff}.navbar.is-info .navbar-start>a.navbar-item:focus,.navbar.is-info .navbar-start>a.navbar-item:hover,.navbar.is-info .navbar-start>a.navbar-item.is-active,.navbar.is-info .navbar-start .navbar-link:focus,.navbar.is-info .navbar-start .navbar-link:hover,.navbar.is-info .navbar-start .navbar-link.is-active,.navbar.is-info .navbar-end>a.navbar-item:focus,.navbar.is-info .navbar-end>a.navbar-item:hover,.navbar.is-info .navbar-end>a.navbar-item.is-active,.navbar.is-info .navbar-end .navbar-link:focus,.navbar.is-info .navbar-end .navbar-link:hover,.navbar.is-info .navbar-end .navbar-link.is-active{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-start .navbar-link:after,.navbar.is-info .navbar-end .navbar-link:after{border-color:#fff}.navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#3e8ed0;color:#fff}}.navbar.is-success{background-color:#48c78e;color:#fff}.navbar.is-success .navbar-brand>.navbar-item,.navbar.is-success .navbar-brand .navbar-link{color:#fff}.navbar.is-success .navbar-brand>a.navbar-item:focus,.navbar.is-success .navbar-brand>a.navbar-item:hover,.navbar.is-success .navbar-brand>a.navbar-item.is-active,.navbar.is-success .navbar-brand .navbar-link:focus,.navbar.is-success .navbar-brand .navbar-link:hover,.navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width: 1024px){.navbar.is-success .navbar-start>.navbar-item,.navbar.is-success .navbar-start .navbar-link,.navbar.is-success .navbar-end>.navbar-item,.navbar.is-success .navbar-end .navbar-link{color:#fff}.navbar.is-success .navbar-start>a.navbar-item:focus,.navbar.is-success .navbar-start>a.navbar-item:hover,.navbar.is-success .navbar-start>a.navbar-item.is-active,.navbar.is-success .navbar-start .navbar-link:focus,.navbar.is-success .navbar-start .navbar-link:hover,.navbar.is-success .navbar-start .navbar-link.is-active,.navbar.is-success .navbar-end>a.navbar-item:focus,.navbar.is-success .navbar-end>a.navbar-item:hover,.navbar.is-success .navbar-end>a.navbar-item.is-active,.navbar.is-success .navbar-end .navbar-link:focus,.navbar.is-success .navbar-end .navbar-link:hover,.navbar.is-success .navbar-end .navbar-link.is-active{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-start .navbar-link:after,.navbar.is-success .navbar-end .navbar-link:after{border-color:#fff}.navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#48c78e;color:#fff}}.navbar.is-warning{background-color:#ffe08a;color:#000000b3}.navbar.is-warning .navbar-brand>.navbar-item,.navbar.is-warning .navbar-brand .navbar-link{color:#000000b3}.navbar.is-warning .navbar-brand>a.navbar-item:focus,.navbar.is-warning .navbar-brand>a.navbar-item:hover,.navbar.is-warning .navbar-brand>a.navbar-item.is-active,.navbar.is-warning .navbar-brand .navbar-link:focus,.navbar.is-warning .navbar-brand .navbar-link:hover,.navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#ffd970;color:#000000b3}.navbar.is-warning .navbar-brand .navbar-link:after{border-color:#000000b3}.navbar.is-warning .navbar-burger{color:#000000b3}@media screen and (min-width: 1024px){.navbar.is-warning .navbar-start>.navbar-item,.navbar.is-warning .navbar-start .navbar-link,.navbar.is-warning .navbar-end>.navbar-item,.navbar.is-warning .navbar-end .navbar-link{color:#000000b3}.navbar.is-warning .navbar-start>a.navbar-item:focus,.navbar.is-warning .navbar-start>a.navbar-item:hover,.navbar.is-warning .navbar-start>a.navbar-item.is-active,.navbar.is-warning .navbar-start .navbar-link:focus,.navbar.is-warning .navbar-start .navbar-link:hover,.navbar.is-warning .navbar-start .navbar-link.is-active,.navbar.is-warning .navbar-end>a.navbar-item:focus,.navbar.is-warning .navbar-end>a.navbar-item:hover,.navbar.is-warning .navbar-end>a.navbar-item.is-active,.navbar.is-warning .navbar-end .navbar-link:focus,.navbar.is-warning .navbar-end .navbar-link:hover,.navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#ffd970;color:#000000b3}.navbar.is-warning .navbar-start .navbar-link:after,.navbar.is-warning .navbar-end .navbar-link:after{border-color:#000000b3}.navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#ffd970;color:#000000b3}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ffe08a;color:#000000b3}}.navbar.is-danger{background-color:#f14668;color:#fff}.navbar.is-danger .navbar-brand>.navbar-item,.navbar.is-danger .navbar-brand .navbar-link{color:#fff}.navbar.is-danger .navbar-brand>a.navbar-item:focus,.navbar.is-danger .navbar-brand>a.navbar-item:hover,.navbar.is-danger .navbar-brand>a.navbar-item.is-active,.navbar.is-danger .navbar-brand .navbar-link:focus,.navbar.is-danger .navbar-brand .navbar-link:hover,.navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1024px){.navbar.is-danger .navbar-start>.navbar-item,.navbar.is-danger .navbar-start .navbar-link,.navbar.is-danger .navbar-end>.navbar-item,.navbar.is-danger .navbar-end .navbar-link{color:#fff}.navbar.is-danger .navbar-start>a.navbar-item:focus,.navbar.is-danger .navbar-start>a.navbar-item:hover,.navbar.is-danger .navbar-start>a.navbar-item.is-active,.navbar.is-danger .navbar-start .navbar-link:focus,.navbar.is-danger .navbar-start .navbar-link:hover,.navbar.is-danger .navbar-start .navbar-link.is-active,.navbar.is-danger .navbar-end>a.navbar-item:focus,.navbar.is-danger .navbar-end>a.navbar-item:hover,.navbar.is-danger .navbar-end>a.navbar-item.is-active,.navbar.is-danger .navbar-end .navbar-link:focus,.navbar.is-danger .navbar-end .navbar-link:hover,.navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-start .navbar-link:after,.navbar.is-danger .navbar-end .navbar-link:after{border-color:#fff}.navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#f14668;color:#fff}}.navbar>.container{align-items:stretch;display:flex;min-height:3.25rem;width:100%}.navbar.has-shadow{box-shadow:0 2px #f5f5f5}.navbar.is-fixed-bottom,.navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom{bottom:0}.navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px #f5f5f5}.navbar.is-fixed-top{top:0}html.has-navbar-fixed-top,body.has-navbar-fixed-top{padding-top:3.25rem}html.has-navbar-fixed-bottom,body.has-navbar-fixed-bottom{padding-bottom:3.25rem}.navbar-brand,.navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:3.25rem}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:transparent}.navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}.navbar-burger{color:#4a4a4a;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem;margin-left:auto}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color,opacity,transform;transition-timing-function:ease-out;width:16px}.navbar-burger span:nth-child(1){top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:#0000000d}.navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item,.navbar-link{color:#4a4a4a;display:block;line-height:1.5;padding:.5rem .75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-.25rem;margin-right:-.25rem}a.navbar-item,.navbar-link{cursor:pointer}a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover,a.navbar-item.is-active,.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,.navbar-link.is-active{background-color:#fafafa;color:#485fc7}.navbar-item{flex-grow:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{flex-grow:1;flex-shrink:1}.navbar-item.is-tab{border-bottom:1px solid transparent;min-height:3.25rem;padding-bottom:calc(.5rem - 1px)}.navbar-item.is-tab:focus,.navbar-item.is-tab:hover{background-color:transparent;border-bottom-color:#485fc7}.navbar-item.is-tab.is-active{background-color:transparent;border-bottom-color:#485fc7;border-bottom-style:solid;border-bottom-width:3px;color:#485fc7;padding-bottom:calc(.5rem - 3px)}.navbar-content{flex-grow:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-right:2.5em}.navbar-link:not(.is-arrowless):after{border-color:#485fc7;margin-top:-.375em;right:1.125em}.navbar-dropdown{font-size:.875rem;padding-bottom:.5rem;padding-top:.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-divider{background-color:#f5f5f5;border:none;display:none;height:2px;margin:.5rem 0}@media screen and (max-width: 1023px){.navbar>.container{display:block}.navbar-brand .navbar-item,.navbar-tabs .navbar-item{align-items:center;display:flex}.navbar-link:after{display:none}.navbar-menu{background-color:#fff;box-shadow:0 8px 16px #0a0a0a1a;padding:.5rem 0}.navbar-menu.is-active{display:block}.navbar.is-fixed-bottom-touch,.navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-touch{bottom:0}.navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px #0a0a0a1a}.navbar.is-fixed-top-touch{top:0}.navbar.is-fixed-top .navbar-menu,.navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 3.25rem);overflow:auto}html.has-navbar-fixed-top-touch,body.has-navbar-fixed-top-touch{padding-top:3.25rem}html.has-navbar-fixed-bottom-touch,body.has-navbar-fixed-bottom-touch{padding-bottom:3.25rem}}@media screen and (min-width: 1024px){.navbar,.navbar-menu,.navbar-start,.navbar-end{align-items:stretch;display:flex}.navbar{min-height:3.25rem}.navbar.is-spaced{padding:1rem 2rem}.navbar.is-spaced .navbar-start,.navbar.is-spaced .navbar-end{align-items:center}.navbar.is-spaced a.navbar-item,.navbar.is-spaced .navbar-link{border-radius:4px}.navbar.is-transparent a.navbar-item:focus,.navbar.is-transparent a.navbar-item:hover,.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent .navbar-link:focus,.navbar.is-transparent .navbar-link:hover,.navbar.is-transparent .navbar-link.is-active{background-color:transparent!important}.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent!important}.navbar.is-transparent .navbar-dropdown a.navbar-item:focus,.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#485fc7}.navbar-burger{display:none}.navbar-item,.navbar-link{align-items:center;display:flex}.navbar-item.has-dropdown{align-items:stretch}.navbar-item.has-dropdown-up .navbar-link:after{transform:rotate(135deg) translate(.25em,-.25em)}.navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:2px solid hsl(0,0%,86%);border-radius:6px 6px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px #0a0a0a1a;top:auto}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced .navbar-item.is-active .navbar-dropdown,.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-right:auto}.navbar-end{justify-content:flex-end;margin-left:auto}.navbar-dropdown{background-color:#fff;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:2px solid hsl(0,0%,86%);box-shadow:0 8px 8px #0a0a0a1a;display:none;font-size:.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}.navbar-dropdown .navbar-item{padding:.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-right:3rem}.navbar-dropdown a.navbar-item:focus,.navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#485fc7}.navbar.is-spaced .navbar-dropdown,.navbar-dropdown.is-boxed{border-radius:6px;border-top:none;box-shadow:0 8px 8px #0a0a0a1a,0 0 0 1px #0a0a0a1a;display:block;opacity:0;pointer-events:none;top:calc(100% - 4px);transform:translateY(-5px);transition-duration:86ms;transition-property:opacity,transform}.navbar-dropdown.is-right{left:auto;right:0}.navbar-divider{display:block}.navbar>.container .navbar-brand,.container>.navbar .navbar-brand{margin-left:-.75rem}.navbar>.container .navbar-menu,.container>.navbar .navbar-menu{margin-right:-.75rem}.navbar.is-fixed-bottom-desktop,.navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-desktop{bottom:0}.navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px #0a0a0a1a}.navbar.is-fixed-top-desktop{top:0}html.has-navbar-fixed-top-desktop,body.has-navbar-fixed-top-desktop{padding-top:3.25rem}html.has-navbar-fixed-bottom-desktop,body.has-navbar-fixed-bottom-desktop{padding-bottom:3.25rem}html.has-spaced-navbar-fixed-top,body.has-spaced-navbar-fixed-top{padding-top:5.25rem}html.has-spaced-navbar-fixed-bottom,body.has-spaced-navbar-fixed-bottom{padding-bottom:5.25rem}a.navbar-item.is-active,.navbar-link.is-active{color:#0a0a0a}a.navbar-item.is-active:not(:focus):not(:hover),.navbar-link.is-active:not(:focus):not(:hover){background-color:transparent}.navbar-item.has-dropdown:focus .navbar-link,.navbar-item.has-dropdown:hover .navbar-link,.navbar-item.has-dropdown.is-active .navbar-link{background-color:#fafafa}}.hero.is-fullheight-with-navbar{min-height:calc(100vh - 3.25rem)}#player .button,#player a.button,#player button.button,.ax .button,.ax a.button,.ax button.button{font-size:1rem;display:inline-block;padding:.4em;border:none;justify-content:center;text-align:center;cursor:pointer;text-decoration:none;color:var(--button-fg);background-color:var(--button-bg)}#player .button.square,#player a.button.square,#player button.button.square,.ax .button.square,.ax a.button.square,.ax button.button.square{min-width:2.5em}#player .button.secondary,#player a.button.secondary,#player button.button.secondary,.ax .button.secondary,.ax a.button.secondary,.ax button.button.secondary{background-color:var(--button-sec-bg)}#player .button .label,#player .button label,#player a.button .label,#player a.button label,#player button.button .label,#player button.button label,.ax .button .label,.ax .button label,.ax a.button .label,.ax a.button label,.ax button.button .label,.ax button.button label{cursor:pointer}#player .button .icon,#player a.button .icon,#player button.button .icon,.ax .button .icon,.ax a.button .icon,.ax button.button .icon{vertical-align:middle}#player .button .icon:not(:only-child):first-child,#player a.button .icon:not(:only-child):first-child,#player button.button .icon:not(:only-child):first-child,.ax .button .icon:not(:only-child):first-child,.ax a.button .icon:not(:only-child):first-child,.ax button.button .icon:not(:only-child):first-child{margin:0 .6em 0 .2em}#player .button .icon:not(:only-child):last-child,#player a.button .icon:not(:only-child):last-child,#player button.button .icon:not(:only-child):last-child,.ax .button .icon:not(:only-child):last-child,.ax a.button .icon:not(:only-child):last-child,.ax button.button .icon:not(:only-child):last-child{margin:0 .6em 0 .2em}#player .button:hover,#player a.button:hover,#player button.button:hover,.ax .button:hover,.ax a.button:hover,.ax button.button:hover{color:var(--button-hv-fg);background-color:var(--button-hv-bg);opacity:1!important}#player .button.active:not(:hover),#player a.button.active:not(:hover),#player button.button.active:not(:hover),.ax .button.active:not(:hover),.ax a.button.active:not(:hover),.ax button.button.active:not(:hover){color:var(--button-active-fg);background-color:var(--button-active-bg)}#player .button:not([disabled]),#player .button:not(.disabled),#player a.button:not([disabled]),#player a.button:not(.disabled),#player button.button:not([disabled]),#player button.button:not(.disabled),.ax .button:not([disabled]),.ax .button:not(.disabled),.ax a.button:not([disabled]),.ax a.button:not(.disabled),.ax button.button:not([disabled]),.ax button.button:not(.disabled){cursor:pointer}#player .button[disabled],#player .button.disabled,#player a.button[disabled],#player a.button.disabled,#player button.button[disabled],#player button.button.disabled,.ax .button[disabled],.ax .button.disabled,.ax a.button[disabled],.ax a.button.disabled,.ax button.button[disabled],.ax button.button.disabled{background-color:var(--text-color-light);color:var(--secondary-color);border-color:var(--secondary-color-light)}#player .button .dropdown-trigger,#player a.button .dropdown-trigger,#player button.button .dropdown-trigger,.ax .button .dropdown-trigger,.ax a.button .dropdown-trigger,.ax button.button .dropdown-trigger{border-radius:1.5em}#player .button-group .button,#player .nav .button,.ax .button-group .button,.ax .nav .button{border-radius:0;background-color:transparent;border-top:0px;border-bottom:0px;height:100%}#player .button-group .button:not(:first-child),#player .nav .button:not(:first-child),.ax .button-group .button:not(:first-child),.ax .nav .button:not(:first-child){border-left:0px}#player .button-group .button:last-child,#player .nav .button:last-child,.ax .button-group .button:last-child,.ax .nav .button:last-child{border-right:0px}.admin .navbar.has-shadow,.admin .navbar.is-fixed-bottom.has-shadow{box-shadow:0 0 1em #0000001a}.admin a.navbar-item.is-active{border-bottom:1px grey solid}.admin .navbar+.container{margin-top:1em}.admin .navbar .navbar-dropdown{z-index:2000}.admin .navbar .navbar-split{margin:.2em 1em .2em 0;padding-right:1em;border-right:1px #ddd solid;display:inline-block}.admin .navbar form{margin:0;padding:0}.admin .navbar.toolbar{margin:1em 0;background-color:transparent}.admin .navbar.toolbar .title{padding-right:2em;margin-right:1em;border-right:1px #ddd solid;font-size:1rem;font-weight:100}.admin .navbar .navbar-dropdown{max-height:40rem;overflow-y:auto}.admin .navbar .navbar-dropdown input{z-index:10000;position:sticky;top:0}.admin .navbar .navbar-brand{padding-right:1em}.admin .navbar .navbar-brand img{margin:.3em .4em 0;max-height:3em}.admin .breadcrumbs{margin-bottom:1em}.admin .results>#result_list{width:100%;margin:1em 0}.admin ul.menu-list li{list-style-type:none}.admin .submit-row a.deletelink{height:35px}.a-carousel[data-v-e8953967]{width:100%;position:relative}.a-carousel-viewport[data-v-e8953967]{width:100%;overflow-x:hidden}.a-carousel-container[data-v-e8953967]{display:flex;flex-direction:row;align-items:left}.a-carousel-container[data-v-e8953967]>*{flex-shrink:0}.a-carousel-bullets-container[data-v-e8953967]{flex-grow:1}.a-carousel-bullets-container .bullet[data-v-e8953967]{cursor:pointer}.a-carousel-bullets-container .left[data-v-e8953967]{min-width:2rem;margin-right:auto}.a-carousel-bullets-container .right[data-v-e8953967]{min-width:2rem;margin-left:auto}.a-carousel-bullets-container[data-v-e8953967]{display:flex;flex-direction:row} diff --git a/aircox/static/aircox/assets/admin-BoR3j_Hw.css b/aircox/static/aircox/assets/admin-BoR3j_Hw.css deleted file mode 100644 index b80eb29..0000000 --- a/aircox/static/aircox/assets/admin-BoR3j_Hw.css +++ /dev/null @@ -1 +0,0 @@ -:root{--title-1-sz: 1.6rem;--title-2-sz: 1.4rem;--title-3-sz: 1.2rem;--subtitle-1-sz: 1.6rem;--subtitle-2-sz: 1.4rem;--subtitle-3-sz: 1.2rem;--heading-font-family: default;--heading-bg: var(--main-color);--heading-fg: var(--text-color);--heading-hg-fg: var(--text-color);--heading-hg-bg: var(--secondary-color);--heading-link-hv-fg: var(--link-fg);--cover-w: 14rem;--cover-h: 14rem;--cover-small-w: 10rem;--cover-small-h: 10rem;--cover-tiny-w: 10rem;--cover-tiny-h: 10rem;--card-w: var(--cover-w);--preview-bg: var(--body-bg);--preview-title-sz: var(--title-3-sz);--preview-subtitle-sz: var(--title-3-sz);--preview-cover-size: 14rem;--preview-cover-small-size: 10rem;--preview-cover-tiny-size: 4rem;--preview-wide-content-sz: 1.2rem;--preview-heading-bg-color: var(--main-color);--header-height: var(--cover-h);--a-carousel-p: 1.4rem;--a-carousel-ml: .7rem ;--a-carousel-gap: 1.2rem;--a-carousel-nav-x: -.6em;--a-carousel-bg: none;--a-progress-bg: transparent;--a-progress-bar-bg: var(--secondary-color);--a-progress-bar-color: var(--text-color);--a-progress-bar-pd: .4rem;--a-playlist-header-bg: var(--secondary-color);--a-playlist-header-fg: var(--text-color);--a-playlist-title-sz: 1rem;--a-playlist-title-pd: .6rem;--a-playlist-item-border: 1px var(--secondary-color) solid;--a-sound-bg: var(--main-color);--a-sound-hv-bg: var(--main-color);--a-sound-hv-fg: var(--secondary-color);--a-sound-playing-fg: var(--secondary-color-dark);--a-sound-text-sz: 1rem;--a-player-url-fg: var(--text-color);--a-player-panel-bg: var(--main-color);--a-player-bar-height: var(--nav-primary-height);--a-player-bar-bg: var(--main-color);--a-player-bar-title-alone-sz: 1.4rem;--a-player-bar-button-fg: var(--button-fg);--a-player-bar-button-fg: var(--button-bg);--a-player-bar-button-hv-fg: var(--button-hv-fg);--a-player-bar-button-hv-bg: var(--button-hv-bg);--button-fg: var(--text-color);--button-bg: var(--main-color);--button-sec-bg: var(--main-color-light);--button-hv-fg: var(--text-color);--button-hv-bg: var(--secondary-color-light);--button-active-fg: var(--text-color);--button-active-bg: var(--secondary-color)}@media screen and (max-width: 1380px){:root{--cover-w: 10rem;--cover-h: 10rem;--cover-small-w: 6rem;--cover-small-h: 6rem;--cover-tiny-w: 4rem;--cover-tiny-h: 4rem;--section-content-sz: 1rem}}.title.is-1,.header.preview .title.is-1{font-size:var(--title-1-sz)}.title.is-2,.header.preview .title.is-2{font-size:var(--title-2-sz)}.title.is-3,.header.preview .title.is-3{font-size:var(--title-3-sz)}.subtitle,.header.preview .subtitle{color:var(--text-color-light)}.subtitle.is-1,.header.preview .subtitle.is-1{font-size:var(--subtitle-1-sz)}.subtitle.is-2,.header.preview .subtitle.is-2{font-size:var(--subtitle-2-sz)}.subtitle.is-3,.header.preview .subtitle.is-3{font-size:var(--subtitle-3-sz)}.title+.subtitle{padding-top:0!important}.headings a,a.heading,a.subtitle{text-decoration:none!important}.heading{display:inline-block}.heading:not(:empty){padding:.4rem;margin-top:0!important;vertical-align:top}.heading:not(:empty).highlight,.heading:not(:empty).active,.preview.active .heading:not(:empty){color:var(--heading-hg-fg)}.modal-card{max-width:1380px}.modal-card{max-height:calc(100% - 10rem)}.preview{position:relative;background-size:cover;background-color:var(--preview-bg)!important}.preview.preview-item{width:100%}.preview.columns,.preview .headings.columns{margin-left:0;margin-right:0}.preview.columns .column,.preview .headings.columns .column{padding:0}.preview .title,.preview .title:not(:last-child){font-weight:700;font-size:var(--preview-title-sz);margin-bottom:unset}.preview .subtitle{font-weight:500;font-size:var(--preview-subtitle-sz);margin-bottom:unset}.preview .headings{background-size:cover}.preview .headings>*{margin:0}.preview .headings .column{padding:0}.preview .headings a{color:var(--text-color)}.preview .headings a:hover{color:var(--heading-link-hv-fg)!important}.preview.tiny .title{font-size:calc(var(--preview-title-sz) * .8)}.preview.tiny .subtitle{font-size:calc(var(--preview-subtitle-sz) * .8)}.preview.tiny .content{font-size:1rem;max-height:3rem;overflow:hidden}.preview-cover{background:var(--preview-bg);background-size:cover;background-repeat:no-repeat;height:var(--cover-h);max-width:calc(var(--cover-w) * 1.5);min-width:var(--cover-w);overflow:hidden;border:1px #c4c4c4 solid}.preview-cover img{height:var(--cover-h);max-width:calc(var(--cover-w) * 1.5);min-width:var(--cover-w)}.preview-cover img.hide{visibility:hidden}.preview-cover.small,.preview.small .preview-cover{min-width:unset;height:var(--preview-cover-small-size);width:var(--preview-cover-small-size)!important;min-width:var(--preview-cover-small-size)}.preview-cover.tiny,.preview.tiny .preview-cover{min-width:unset;height:var(--preview-cover-tiny-size);width:var(--preview-cover-tiny-size)!important;min-width:var(--preview-cover-tiny-size)}.preview-header{width:100%}.preview-header:not(.no-cover){min-height:var(--header-height)}.preview-header.no-cover{height:unset}.preview-header .headings{padding-top:2rem}.preview-header .headings,.preview-header>.container{width:100%}.preview-header>.container{height:100%}.list-item{display:flex;flex-direction:column;width:100%}.list-item .headings{display:flex;flex-direction:row;padding:0;margin-bottom:.4rem!important}.list-item .headings .heading{padding:0rem}.list-item .title{flex-grow:1}.list-item .subtitle{font-size:var(--preview-title-sz);text-align:right}.list-item .subtitle:not(:empty){min-width:9rem}.list-item .media-content{height:100%;margin-bottom:unset}.list-item:not(.no-cover) .list-item .media-content{min-height:var(--preview-cover-small-size)}.list-item .actions{text-align:right;align-items:center}.list-item:not(.wide) .media{padding:.6rem;border:1px solid var(--break-color)!important}@media screen and (max-width: 400px){.list-item .headings{flex-direction:column}.list-item .headings .heading{display:inline;text-align:left}.list-item .headings .subtitle{color:unset!important;background:none!important}}.list-item.wide .preview-cover{box-shadow:0 0 1em #0003}.list-item.wide .content{font-size:var(--preview-wide-content-sz);flex-grow:1}.preview-card{display:flex;flex-direction:column;width:var(--card-w);padding:0rem!important;margin-bottom:auto;background-color:var(--preview-bg)!important;transition:box-shadow .2s}.preview-card:hover figure{box-shadow:0 0 1em #0003}.preview-card:hover a{color:var(--heading-link-hv-fg)}.preview-card .headings{margin-top:.4rem}.preview-card .headings .heading{display:block!important}.preview-card .headings .subtitle{font-size:1.2rem}.preview-card .card-content{flex-grow:1;position:relative}.preview-card .card-content figure{height:var(--cover-h);width:var(--cover-w)}.preview-card .card-content .actions{position:absolute;padding:.4rem;bottom:0rem;right:0rem}.a-carousel .a-carousel-viewport{box-shadow:inset 0 0 20rem var(--a-carousel-bg);padding:0rem;padding-top:var(--a-carousel-p);margin-top:calc(0rem - var(--a-carousel-p))}.a-carousel-container{width:100%;gap:var(--a-carousel-gap);transition:margin-left 1s}.a-carousel-container>*{flex-shrink:0}.a-carousel-bullets-container{padding-left:var(--a-carousel-ml)}.a-carousel-bullets-container .bullet{margin:.2rem;cursor:pointer}.a-carousel-bullets-container .bullet:hover{color:var(--link-fg)}.a-progress{display:flex;flex-direction:row;margin:0;padding:0}.a-progress:hover{background-color:var(--a-progress-bg)}.a-progress .a-progress-bar-container{flex-grow:1;margin:0}.a-progress>time,.a-progress .a-progress-bar{height:100%;padding:var(--a-progress-bar-pd)}.a-progress .a-progress-bar{background-color:var(--a-progress-bar-bg);color:var(--a-progress-bar-color)}.playlist .header,.a-playlist .header{display:flex;flex-direction:row}.playlist .header .title,.playlist .header .button,.a-playlist .header .title,.a-playlist .header .button{background-color:var(--a-playlist-header-bg);color:var(--a-playlist-header-fg)}.playlist .header .title,.a-playlist .header .title{font-size:var(--a-playlist-title-sz);margin:0;padding:var(--a-playlist-title-pd)}.playlist li,.a-playlist li{list-style:none;border-bottom:var(--a-playlist-item-border)}.playlist li:last-child,.a-playlist li:last-child{border-bottom:0px}.a-sound-item{display:flex;align-items:center;flex-direction:row;height:3rem;background-color:var(--a-sound-bg)}.a-sound-item.playing .label{color:var(--a-sound-playing-fg)!important}.a-sound-item:hover{background-color:var(--a-sound-hv-bg)}.a-sound-item:hover .label{color:var(--a-sound-hv-fg)!important}.a-sound-item .label:hover:before,.a-sound-item.playing .label:before{content:"";font-family:"Font Awesome 6 Free";margin-right:.6em}.a-sound-item.playing .label:hover:before{content:"";margin:0}.a-sound-item .label{cursor:pointer;margin:0!important;padding:.6em;font-size:var(--a-sound-text-sz);font-family:var(--heading-font-family)}.a-sound-item .label .icon{padding:0em .6rem}.a-sound-item .button{width:3em;font-size:var(--a-sound-text-sz)}.a-sound-item .button:hover{color:var(--a-sound-hv-fg)!important;background-color:unset}.player-container{z-index:1000000}.a-player{box-shadow:0 -.5em .5em #0000000d}.a-player a{color:var(--a-player-url-fg)}.a-player .button{color:var(--text-black)}.a-player .button:hover{color:var(--button-fg)}.a-player-panels{background:var(--a-player-panel-bg);height:0%;transition:height 1s}.a-player-panels.is-open{height:auto}.a-player-panel{padding-bottom:.6rem;max-height:80%;overflow-y:auto}.a-player-panel .a-sound-item:not(:hover){background-color:transparent}.a-player-progress{height:.4em;overflow:hidden}.a-player-progress time{display:none}.a-player-progress:hover,.a-player-panels.is-open+.a-player-progress{background:var(--a-player-bar-bg);height:2em}.a-player-progress:hover time,.a-player-panels.is-open+.a-player-progress time{display:unset}.a-player-bar{display:flex;flex-direction:row;justify-content:center;height:var(--a-player-bar-height);border-top:1px #ddd solid;background:var(--a-player-bar-bg)}.a-player-bar>*{height:100%}.a-player-bar .cover{height:100%}.a-player-bar .title{font-size:1rem;margin:0}.a-player-bar .title:last-child{font-size:var(--a-player-bar-title-alone-sz)}.a-player-bar .button{font-size:1.4rem;height:100%;padding:.4rem!important;min-width:calc(var(--a-player-bar-height) + .8rem);border-radius:0}.a-player-bar .button.open{background-color:var(--button-active-bg);color:var(--button-active-fg)}.a-player-bar-content{display:flex;flex-direction:vertical;align-items:center;flex-grow:1;padding:0 .6rem;border-right:1px black solid}.a-player-bar-content .title{max-height:calc(var(--a-player-bar-height) - .6rem);overflow:hidden}.a-tracklist-editor .dropdown{display:unset!important}.a-select-file>*:not(:last-child){margin-bottom:.6rem}.a-select-file .upload-preview{max-width:100%}.a-select-file .a-select-file-list{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:.6rem}.a-select-file .file-preview{width:100%;overflow:hidden}.a-select-file .file-preview:hover{box-shadow:0 0 1em #0003}.a-select-file .file-preview.active{box-shadow:0 0 1em #0006}.a-select-file .file-preview img{width:100%;max-height:10rem}.button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:4px;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(.5em - 1px);padding-left:calc(.75em - 1px);padding-right:calc(.75em - 1px);padding-top:calc(.5em - 1px);position:relative;vertical-align:top}.button:focus,.is-focused.button,.button:active,.is-active.button{outline:none}[disabled].button,fieldset[disabled] .button{cursor:not-allowed}.button{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.navbar-link:not(.is-arrowless):after{border:3px solid transparent;border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:.625em;margin-top:-.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:.625em}.button.is-loading:after{animation:spinAround .5s infinite linear;border:2px solid hsl(0,0%,86%);border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}.navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}.button{background-color:#fff;border-color:#dbdbdb;border-width:1px;color:#363636;cursor:pointer;justify-content:center;padding-bottom:calc(.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(.5em - 1px);text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-small,.button .icon.is-medium,.button .icon.is-large{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-.5em - 1px);margin-right:.25em}.button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-.5em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-.5em - 1px);margin-right:calc(-.5em - 1px)}.button:hover,.button.is-hovered{border-color:#b5b5b5;color:#363636}.button:focus,.button.is-focused{border-color:#485fc7;color:#363636}.button:focus:not(:active),.button.is-focused:not(:active){box-shadow:0 0 0 .125em #485fc740}.button:active,.button.is-active{border-color:#4a4a4a;color:#363636}.button.is-text{background-color:transparent;border-color:transparent;color:#4a4a4a;text-decoration:underline}.button.is-text:hover,.button.is-text.is-hovered,.button.is-text:focus,.button.is-text.is-focused{background-color:#f5f5f5;color:#363636}.button.is-text:active,.button.is-text.is-active{background-color:#e8e8e8;color:#363636}.button.is-text[disabled],fieldset[disabled] .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}.button.is-ghost{background:none;border-color:transparent;color:#485fc7;text-decoration:none}.button.is-ghost:hover,.button.is-ghost.is-hovered{color:#485fc7;text-decoration:underline}.button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}.button.is-white:hover,.button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.button.is-white:focus,.button.is-white.is-focused{border-color:transparent;color:#0a0a0a}.button.is-white:focus:not(:active),.button.is-white.is-focused:not(:active){box-shadow:0 0 0 .125em #ffffff40}.button.is-white:active,.button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.button.is-white[disabled],fieldset[disabled] .button.is-white{background-color:#fff;border-color:#fff;box-shadow:none}.button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted:hover,.button.is-white.is-inverted.is-hovered{background-color:#000}.button.is-white.is-inverted[disabled],fieldset[disabled] .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}.button.is-white.is-loading:after{border-color:transparent transparent hsl(0,0%,4%) hsl(0,0%,4%)!important}.button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-white.is-outlined:hover,.button.is-white.is-outlined.is-hovered,.button.is-white.is-outlined:focus,.button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}.button.is-white.is-outlined.is-loading:after{border-color:transparent transparent hsl(0,0%,100%) hsl(0,0%,100%)!important}.button.is-white.is-outlined.is-loading:hover:after,.button.is-white.is-outlined.is-loading.is-hovered:after,.button.is-white.is-outlined.is-loading:focus:after,.button.is-white.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(0,0%,4%) hsl(0,0%,4%)!important}.button.is-white.is-outlined[disabled],fieldset[disabled] .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-white.is-inverted.is-outlined:hover,.button.is-white.is-inverted.is-outlined.is-hovered,.button.is-white.is-inverted.is-outlined:focus,.button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted.is-outlined.is-loading:hover:after,.button.is-white.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-white.is-inverted.is-outlined.is-loading:focus:after,.button.is-white.is-inverted.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(0,0%,100%) hsl(0,0%,100%)!important}.button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}.button.is-black:hover,.button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}.button.is-black:focus,.button.is-black.is-focused{border-color:transparent;color:#fff}.button.is-black:focus:not(:active),.button.is-black.is-focused:not(:active){box-shadow:0 0 0 .125em #0a0a0a40}.button.is-black:active,.button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}.button.is-black[disabled],fieldset[disabled] .button.is-black{background-color:#0a0a0a;border-color:#0a0a0a;box-shadow:none}.button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted:hover,.button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-black.is-inverted[disabled],fieldset[disabled] .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}.button.is-black.is-loading:after{border-color:transparent transparent hsl(0,0%,100%) hsl(0,0%,100%)!important}.button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-black.is-outlined:hover,.button.is-black.is-outlined.is-hovered,.button.is-black.is-outlined:focus,.button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.button.is-black.is-outlined.is-loading:after{border-color:transparent transparent hsl(0,0%,4%) hsl(0,0%,4%)!important}.button.is-black.is-outlined.is-loading:hover:after,.button.is-black.is-outlined.is-loading.is-hovered:after,.button.is-black.is-outlined.is-loading:focus:after,.button.is-black.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(0,0%,100%) hsl(0,0%,100%)!important}.button.is-black.is-outlined[disabled],fieldset[disabled] .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-black.is-inverted.is-outlined:hover,.button.is-black.is-inverted.is-outlined.is-hovered,.button.is-black.is-inverted.is-outlined:focus,.button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted.is-outlined.is-loading:hover:after,.button.is-black.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-black.is-inverted.is-outlined.is-loading:focus:after,.button.is-black.is-inverted.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(0,0%,4%) hsl(0,0%,4%)!important}.button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-light{background-color:#f5f5f5;border-color:transparent;color:#000000b3}.button.is-light:hover,.button.is-light.is-hovered{background-color:#eee;border-color:transparent;color:#000000b3}.button.is-light:focus,.button.is-light.is-focused{border-color:transparent;color:#000000b3}.button.is-light:focus:not(:active),.button.is-light.is-focused:not(:active){box-shadow:0 0 0 .125em #f5f5f540}.button.is-light:active,.button.is-light.is-active{background-color:#e8e8e8;border-color:transparent;color:#000000b3}.button.is-light[disabled],fieldset[disabled] .button.is-light{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none}.button.is-light.is-inverted{background-color:#000000b3;color:#f5f5f5}.button.is-light.is-inverted:hover,.button.is-light.is-inverted.is-hovered{background-color:#000000b3}.button.is-light.is-inverted[disabled],fieldset[disabled] .button.is-light.is-inverted{background-color:#000000b3;border-color:transparent;box-shadow:none;color:#f5f5f5}.button.is-light.is-loading:after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.button.is-light.is-outlined:hover,.button.is-light.is-outlined.is-hovered,.button.is-light.is-outlined:focus,.button.is-light.is-outlined.is-focused{background-color:#f5f5f5;border-color:#f5f5f5;color:#000000b3}.button.is-light.is-outlined.is-loading:after{border-color:transparent transparent hsl(0,0%,96%) hsl(0,0%,96%)!important}.button.is-light.is-outlined.is-loading:hover:after,.button.is-light.is-outlined.is-loading.is-hovered:after,.button.is-light.is-outlined.is-loading:focus:after,.button.is-light.is-outlined.is-loading.is-focused:after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-light.is-outlined[disabled],fieldset[disabled] .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}.button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:#000000b3;color:#000000b3}.button.is-light.is-inverted.is-outlined:hover,.button.is-light.is-inverted.is-outlined.is-hovered,.button.is-light.is-inverted.is-outlined:focus,.button.is-light.is-inverted.is-outlined.is-focused{background-color:#000000b3;color:#f5f5f5}.button.is-light.is-inverted.is-outlined.is-loading:hover:after,.button.is-light.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-light.is-inverted.is-outlined.is-loading:focus:after,.button.is-light.is-inverted.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(0,0%,96%) hsl(0,0%,96%)!important}.button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:#000000b3;box-shadow:none;color:#000000b3}.button.is-dark{background-color:#363636;border-color:transparent;color:#fff}.button.is-dark:hover,.button.is-dark.is-hovered{background-color:#2f2f2f;border-color:transparent;color:#fff}.button.is-dark:focus,.button.is-dark.is-focused{border-color:transparent;color:#fff}.button.is-dark:focus:not(:active),.button.is-dark.is-focused:not(:active){box-shadow:0 0 0 .125em #36363640}.button.is-dark:active,.button.is-dark.is-active{background-color:#292929;border-color:transparent;color:#fff}.button.is-dark[disabled],fieldset[disabled] .button.is-dark{background-color:#363636;border-color:#363636;box-shadow:none}.button.is-dark.is-inverted{background-color:#fff;color:#363636}.button.is-dark.is-inverted:hover,.button.is-dark.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-dark.is-inverted[disabled],fieldset[disabled] .button.is-dark.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#363636}.button.is-dark.is-loading:after{border-color:transparent transparent #fff #fff!important}.button.is-dark.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-dark.is-outlined:hover,.button.is-dark.is-outlined.is-hovered,.button.is-dark.is-outlined:focus,.button.is-dark.is-outlined.is-focused{background-color:#363636;border-color:#363636;color:#fff}.button.is-dark.is-outlined.is-loading:after{border-color:transparent transparent hsl(0,0%,21%) hsl(0,0%,21%)!important}.button.is-dark.is-outlined.is-loading:hover:after,.button.is-dark.is-outlined.is-loading.is-hovered:after,.button.is-dark.is-outlined.is-loading:focus:after,.button.is-dark.is-outlined.is-loading.is-focused:after{border-color:transparent transparent #fff #fff!important}.button.is-dark.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-outlined{background-color:transparent;border-color:#363636;box-shadow:none;color:#363636}.button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-dark.is-inverted.is-outlined:hover,.button.is-dark.is-inverted.is-outlined.is-hovered,.button.is-dark.is-inverted.is-outlined:focus,.button.is-dark.is-inverted.is-outlined.is-focused{background-color:#fff;color:#363636}.button.is-dark.is-inverted.is-outlined.is-loading:hover:after,.button.is-dark.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-dark.is-inverted.is-outlined.is-loading:focus:after,.button.is-dark.is-inverted.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(0,0%,21%) hsl(0,0%,21%)!important}.button.is-dark.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary{background-color:#00d1b2;border-color:transparent;color:#fff}.button.is-primary:hover,.button.is-primary.is-hovered{background-color:#00c4a7;border-color:transparent;color:#fff}.button.is-primary:focus,.button.is-primary.is-focused{border-color:transparent;color:#fff}.button.is-primary:focus:not(:active),.button.is-primary.is-focused:not(:active){box-shadow:0 0 0 .125em #00d1b240}.button.is-primary:active,.button.is-primary.is-active{background-color:#00b89c;border-color:transparent;color:#fff}.button.is-primary[disabled],fieldset[disabled] .button.is-primary{background-color:#00d1b2;border-color:#00d1b2;box-shadow:none}.button.is-primary.is-inverted{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted:hover,.button.is-primary.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-primary.is-inverted[disabled],fieldset[disabled] .button.is-primary.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#00d1b2}.button.is-primary.is-loading:after{border-color:transparent transparent #fff #fff!important}.button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;color:#00d1b2}.button.is-primary.is-outlined:hover,.button.is-primary.is-outlined.is-hovered,.button.is-primary.is-outlined:focus,.button.is-primary.is-outlined.is-focused{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.button.is-primary.is-outlined.is-loading:after{border-color:transparent transparent hsl(171,100%,41%) hsl(171,100%,41%)!important}.button.is-primary.is-outlined.is-loading:hover:after,.button.is-primary.is-outlined.is-loading.is-hovered:after,.button.is-primary.is-outlined.is-loading:focus:after,.button.is-primary.is-outlined.is-loading.is-focused:after{border-color:transparent transparent #fff #fff!important}.button.is-primary.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;box-shadow:none;color:#00d1b2}.button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-primary.is-inverted.is-outlined:hover,.button.is-primary.is-inverted.is-outlined.is-hovered,.button.is-primary.is-inverted.is-outlined:focus,.button.is-primary.is-inverted.is-outlined.is-focused{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted.is-outlined.is-loading:hover:after,.button.is-primary.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-primary.is-inverted.is-outlined.is-loading:focus:after,.button.is-primary.is-inverted.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(171,100%,41%) hsl(171,100%,41%)!important}.button.is-primary.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary.is-light{background-color:#ebfffc;color:#00947e}.button.is-primary.is-light:hover,.button.is-primary.is-light.is-hovered{background-color:#defffa;border-color:transparent;color:#00947e}.button.is-primary.is-light:active,.button.is-primary.is-light.is-active{background-color:#d1fff8;border-color:transparent;color:#00947e}.button.is-link{background-color:#485fc7;border-color:transparent;color:#fff}.button.is-link:hover,.button.is-link.is-hovered{background-color:#3e56c4;border-color:transparent;color:#fff}.button.is-link:focus,.button.is-link.is-focused{border-color:transparent;color:#fff}.button.is-link:focus:not(:active),.button.is-link.is-focused:not(:active){box-shadow:0 0 0 .125em #485fc740}.button.is-link:active,.button.is-link.is-active{background-color:#3a51bb;border-color:transparent;color:#fff}.button.is-link[disabled],fieldset[disabled] .button.is-link{background-color:#485fc7;border-color:#485fc7;box-shadow:none}.button.is-link.is-inverted{background-color:#fff;color:#485fc7}.button.is-link.is-inverted:hover,.button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-link.is-inverted[disabled],fieldset[disabled] .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#485fc7}.button.is-link.is-loading:after{border-color:transparent transparent #fff #fff!important}.button.is-link.is-outlined{background-color:transparent;border-color:#485fc7;color:#485fc7}.button.is-link.is-outlined:hover,.button.is-link.is-outlined.is-hovered,.button.is-link.is-outlined:focus,.button.is-link.is-outlined.is-focused{background-color:#485fc7;border-color:#485fc7;color:#fff}.button.is-link.is-outlined.is-loading:after{border-color:transparent transparent hsl(229,53%,53%) hsl(229,53%,53%)!important}.button.is-link.is-outlined.is-loading:hover:after,.button.is-link.is-outlined.is-loading.is-hovered:after,.button.is-link.is-outlined.is-loading:focus:after,.button.is-link.is-outlined.is-loading.is-focused:after{border-color:transparent transparent #fff #fff!important}.button.is-link.is-outlined[disabled],fieldset[disabled] .button.is-link.is-outlined{background-color:transparent;border-color:#485fc7;box-shadow:none;color:#485fc7}.button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-link.is-inverted.is-outlined:hover,.button.is-link.is-inverted.is-outlined.is-hovered,.button.is-link.is-inverted.is-outlined:focus,.button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#485fc7}.button.is-link.is-inverted.is-outlined.is-loading:hover:after,.button.is-link.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-link.is-inverted.is-outlined.is-loading:focus:after,.button.is-link.is-inverted.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(229,53%,53%) hsl(229,53%,53%)!important}.button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-link.is-light{background-color:#eff1fa;color:#3850b7}.button.is-link.is-light:hover,.button.is-link.is-light.is-hovered{background-color:#e6e9f7;border-color:transparent;color:#3850b7}.button.is-link.is-light:active,.button.is-link.is-light.is-active{background-color:#dce0f4;border-color:transparent;color:#3850b7}.button.is-info{background-color:#3e8ed0;border-color:transparent;color:#fff}.button.is-info:hover,.button.is-info.is-hovered{background-color:#3488ce;border-color:transparent;color:#fff}.button.is-info:focus,.button.is-info.is-focused{border-color:transparent;color:#fff}.button.is-info:focus:not(:active),.button.is-info.is-focused:not(:active){box-shadow:0 0 0 .125em #3e8ed040}.button.is-info:active,.button.is-info.is-active{background-color:#3082c5;border-color:transparent;color:#fff}.button.is-info[disabled],fieldset[disabled] .button.is-info{background-color:#3e8ed0;border-color:#3e8ed0;box-shadow:none}.button.is-info.is-inverted{background-color:#fff;color:#3e8ed0}.button.is-info.is-inverted:hover,.button.is-info.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-info.is-inverted[disabled],fieldset[disabled] .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#3e8ed0}.button.is-info.is-loading:after{border-color:transparent transparent #fff #fff!important}.button.is-info.is-outlined{background-color:transparent;border-color:#3e8ed0;color:#3e8ed0}.button.is-info.is-outlined:hover,.button.is-info.is-outlined.is-hovered,.button.is-info.is-outlined:focus,.button.is-info.is-outlined.is-focused{background-color:#3e8ed0;border-color:#3e8ed0;color:#fff}.button.is-info.is-outlined.is-loading:after{border-color:transparent transparent hsl(207,61%,53%) hsl(207,61%,53%)!important}.button.is-info.is-outlined.is-loading:hover:after,.button.is-info.is-outlined.is-loading.is-hovered:after,.button.is-info.is-outlined.is-loading:focus:after,.button.is-info.is-outlined.is-loading.is-focused:after{border-color:transparent transparent #fff #fff!important}.button.is-info.is-outlined[disabled],fieldset[disabled] .button.is-info.is-outlined{background-color:transparent;border-color:#3e8ed0;box-shadow:none;color:#3e8ed0}.button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-info.is-inverted.is-outlined:hover,.button.is-info.is-inverted.is-outlined.is-hovered,.button.is-info.is-inverted.is-outlined:focus,.button.is-info.is-inverted.is-outlined.is-focused{background-color:#fff;color:#3e8ed0}.button.is-info.is-inverted.is-outlined.is-loading:hover:after,.button.is-info.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-info.is-inverted.is-outlined.is-loading:focus:after,.button.is-info.is-inverted.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(207,61%,53%) hsl(207,61%,53%)!important}.button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-info.is-light{background-color:#eff5fb;color:#296fa8}.button.is-info.is-light:hover,.button.is-info.is-light.is-hovered{background-color:#e4eff9;border-color:transparent;color:#296fa8}.button.is-info.is-light:active,.button.is-info.is-light.is-active{background-color:#dae9f6;border-color:transparent;color:#296fa8}.button.is-success{background-color:#48c78e;border-color:transparent;color:#fff}.button.is-success:hover,.button.is-success.is-hovered{background-color:#3ec487;border-color:transparent;color:#fff}.button.is-success:focus,.button.is-success.is-focused{border-color:transparent;color:#fff}.button.is-success:focus:not(:active),.button.is-success.is-focused:not(:active){box-shadow:0 0 0 .125em #48c78e40}.button.is-success:active,.button.is-success.is-active{background-color:#3abb81;border-color:transparent;color:#fff}.button.is-success[disabled],fieldset[disabled] .button.is-success{background-color:#48c78e;border-color:#48c78e;box-shadow:none}.button.is-success.is-inverted{background-color:#fff;color:#48c78e}.button.is-success.is-inverted:hover,.button.is-success.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-success.is-inverted[disabled],fieldset[disabled] .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#48c78e}.button.is-success.is-loading:after{border-color:transparent transparent #fff #fff!important}.button.is-success.is-outlined{background-color:transparent;border-color:#48c78e;color:#48c78e}.button.is-success.is-outlined:hover,.button.is-success.is-outlined.is-hovered,.button.is-success.is-outlined:focus,.button.is-success.is-outlined.is-focused{background-color:#48c78e;border-color:#48c78e;color:#fff}.button.is-success.is-outlined.is-loading:after{border-color:transparent transparent hsl(153,53%,53%) hsl(153,53%,53%)!important}.button.is-success.is-outlined.is-loading:hover:after,.button.is-success.is-outlined.is-loading.is-hovered:after,.button.is-success.is-outlined.is-loading:focus:after,.button.is-success.is-outlined.is-loading.is-focused:after{border-color:transparent transparent #fff #fff!important}.button.is-success.is-outlined[disabled],fieldset[disabled] .button.is-success.is-outlined{background-color:transparent;border-color:#48c78e;box-shadow:none;color:#48c78e}.button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-success.is-inverted.is-outlined:hover,.button.is-success.is-inverted.is-outlined.is-hovered,.button.is-success.is-inverted.is-outlined:focus,.button.is-success.is-inverted.is-outlined.is-focused{background-color:#fff;color:#48c78e}.button.is-success.is-inverted.is-outlined.is-loading:hover:after,.button.is-success.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-success.is-inverted.is-outlined.is-loading:focus:after,.button.is-success.is-inverted.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(153,53%,53%) hsl(153,53%,53%)!important}.button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-success.is-light{background-color:#effaf5;color:#257953}.button.is-success.is-light:hover,.button.is-success.is-light.is-hovered{background-color:#e6f7ef;border-color:transparent;color:#257953}.button.is-success.is-light:active,.button.is-success.is-light.is-active{background-color:#dcf4e9;border-color:transparent;color:#257953}.button.is-warning{background-color:#ffe08a;border-color:transparent;color:#000000b3}.button.is-warning:hover,.button.is-warning.is-hovered{background-color:#ffdc7d;border-color:transparent;color:#000000b3}.button.is-warning:focus,.button.is-warning.is-focused{border-color:transparent;color:#000000b3}.button.is-warning:focus:not(:active),.button.is-warning.is-focused:not(:active){box-shadow:0 0 0 .125em #ffe08a40}.button.is-warning:active,.button.is-warning.is-active{background-color:#ffd970;border-color:transparent;color:#000000b3}.button.is-warning[disabled],fieldset[disabled] .button.is-warning{background-color:#ffe08a;border-color:#ffe08a;box-shadow:none}.button.is-warning.is-inverted{background-color:#000000b3;color:#ffe08a}.button.is-warning.is-inverted:hover,.button.is-warning.is-inverted.is-hovered{background-color:#000000b3}.button.is-warning.is-inverted[disabled],fieldset[disabled] .button.is-warning.is-inverted{background-color:#000000b3;border-color:transparent;box-shadow:none;color:#ffe08a}.button.is-warning.is-loading:after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-warning.is-outlined{background-color:transparent;border-color:#ffe08a;color:#ffe08a}.button.is-warning.is-outlined:hover,.button.is-warning.is-outlined.is-hovered,.button.is-warning.is-outlined:focus,.button.is-warning.is-outlined.is-focused{background-color:#ffe08a;border-color:#ffe08a;color:#000000b3}.button.is-warning.is-outlined.is-loading:after{border-color:transparent transparent hsl(44,100%,77%) hsl(44,100%,77%)!important}.button.is-warning.is-outlined.is-loading:hover:after,.button.is-warning.is-outlined.is-loading.is-hovered:after,.button.is-warning.is-outlined.is-loading:focus:after,.button.is-warning.is-outlined.is-loading.is-focused:after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-warning.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-outlined{background-color:transparent;border-color:#ffe08a;box-shadow:none;color:#ffe08a}.button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#000000b3;color:#000000b3}.button.is-warning.is-inverted.is-outlined:hover,.button.is-warning.is-inverted.is-outlined.is-hovered,.button.is-warning.is-inverted.is-outlined:focus,.button.is-warning.is-inverted.is-outlined.is-focused{background-color:#000000b3;color:#ffe08a}.button.is-warning.is-inverted.is-outlined.is-loading:hover:after,.button.is-warning.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-warning.is-inverted.is-outlined.is-loading:focus:after,.button.is-warning.is-inverted.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(44,100%,77%) hsl(44,100%,77%)!important}.button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#000000b3;box-shadow:none;color:#000000b3}.button.is-warning.is-light{background-color:#fffaeb;color:#946c00}.button.is-warning.is-light:hover,.button.is-warning.is-light.is-hovered{background-color:#fff6de;border-color:transparent;color:#946c00}.button.is-warning.is-light:active,.button.is-warning.is-light.is-active{background-color:#fff3d1;border-color:transparent;color:#946c00}.button.is-danger{background-color:#f14668;border-color:transparent;color:#fff}.button.is-danger:hover,.button.is-danger.is-hovered{background-color:#f03a5f;border-color:transparent;color:#fff}.button.is-danger:focus,.button.is-danger.is-focused{border-color:transparent;color:#fff}.button.is-danger:focus:not(:active),.button.is-danger.is-focused:not(:active){box-shadow:0 0 0 .125em #f1466840}.button.is-danger:active,.button.is-danger.is-active{background-color:#ef2e55;border-color:transparent;color:#fff}.button.is-danger[disabled],fieldset[disabled] .button.is-danger{background-color:#f14668;border-color:#f14668;box-shadow:none}.button.is-danger.is-inverted{background-color:#fff;color:#f14668}.button.is-danger.is-inverted:hover,.button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-danger.is-inverted[disabled],fieldset[disabled] .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#f14668}.button.is-danger.is-loading:after{border-color:transparent transparent #fff #fff!important}.button.is-danger.is-outlined{background-color:transparent;border-color:#f14668;color:#f14668}.button.is-danger.is-outlined:hover,.button.is-danger.is-outlined.is-hovered,.button.is-danger.is-outlined:focus,.button.is-danger.is-outlined.is-focused{background-color:#f14668;border-color:#f14668;color:#fff}.button.is-danger.is-outlined.is-loading:after{border-color:transparent transparent hsl(348,86%,61%) hsl(348,86%,61%)!important}.button.is-danger.is-outlined.is-loading:hover:after,.button.is-danger.is-outlined.is-loading.is-hovered:after,.button.is-danger.is-outlined.is-loading:focus:after,.button.is-danger.is-outlined.is-loading.is-focused:after{border-color:transparent transparent #fff #fff!important}.button.is-danger.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-outlined{background-color:transparent;border-color:#f14668;box-shadow:none;color:#f14668}.button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-danger.is-inverted.is-outlined:hover,.button.is-danger.is-inverted.is-outlined.is-hovered,.button.is-danger.is-inverted.is-outlined:focus,.button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#f14668}.button.is-danger.is-inverted.is-outlined.is-loading:hover:after,.button.is-danger.is-inverted.is-outlined.is-loading.is-hovered:after,.button.is-danger.is-inverted.is-outlined.is-loading:focus:after,.button.is-danger.is-inverted.is-outlined.is-loading.is-focused:after{border-color:transparent transparent hsl(348,86%,61%) hsl(348,86%,61%)!important}.button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.button.is-danger.is-light:hover,.button.is-danger.is-light.is-hovered{background-color:#fde0e6;border-color:transparent;color:#cc0f35}.button.is-danger.is-light:active,.button.is-danger.is-light.is-active{background-color:#fcd4dc;border-color:transparent;color:#cc0f35}.button.is-small{font-size:.75rem}.button.is-small:not(.is-rounded){border-radius:2px}.button.is-normal{font-size:1rem}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled],fieldset[disabled] .button{background-color:#fff;border-color:#dbdbdb;box-shadow:none;opacity:.5}.button.is-fullwidth{display:flex;width:100%}.button.is-loading{color:transparent!important;pointer-events:none}.button.is-loading:after{position:absolute;left:calc(50% - .5em);top:calc(50% - .5em);position:absolute!important}.button.is-static{background-color:#f5f5f5;border-color:#dbdbdb;color:#7a7a7a;box-shadow:none;pointer-events:none}.button.is-rounded{border-radius:9999px;padding-left:1.25em;padding-right:1.25em}.buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.buttons .button{margin-bottom:.5rem}.buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}.buttons:last-child{margin-bottom:-.5rem}.buttons:not(:last-child){margin-bottom:1rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:2px}.buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}.buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}.buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.buttons.has-addons .button:last-child{margin-right:0}.buttons.has-addons .button:hover,.buttons.has-addons .button.is-hovered{z-index:2}.buttons.has-addons .button:focus,.buttons.has-addons .button.is-focused,.buttons.has-addons .button:active,.buttons.has-addons .button.is-active,.buttons.has-addons .button.is-selected{z-index:3}.buttons.has-addons .button:focus:hover,.buttons.has-addons .button.is-focused:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button.is-selected:hover{z-index:4}.buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}.buttons.is-centered{justify-content:center}.buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}.buttons.is-right{justify-content:flex-end}.buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}@media screen and (max-width: 768px){.button.is-responsive.is-small{font-size:.5625rem}.button.is-responsive,.button.is-responsive.is-normal{font-size:.65625rem}.button.is-responsive.is-medium{font-size:.75rem}.button.is-responsive.is-large{font-size:1rem}}@media screen and (min-width: 769px) and (max-width: 1023px){.button.is-responsive.is-small{font-size:.65625rem}.button.is-responsive,.button.is-responsive.is-normal{font-size:.75rem}.button.is-responsive.is-medium{font-size:1rem}.button.is-responsive.is-large{font-size:1.25rem}}.navbar{background-color:#fff;min-height:3.25rem;position:relative;z-index:30}.navbar.is-white{background-color:#fff;color:#0a0a0a}.navbar.is-white .navbar-brand>.navbar-item,.navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-brand>a.navbar-item:focus,.navbar.is-white .navbar-brand>a.navbar-item:hover,.navbar.is-white .navbar-brand>a.navbar-item.is-active,.navbar.is-white .navbar-brand .navbar-link:focus,.navbar.is-white .navbar-brand .navbar-link:hover,.navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link:after{border-color:#0a0a0a}.navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1024px){.navbar.is-white .navbar-start>.navbar-item,.navbar.is-white .navbar-start .navbar-link,.navbar.is-white .navbar-end>.navbar-item,.navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-start>a.navbar-item:focus,.navbar.is-white .navbar-start>a.navbar-item:hover,.navbar.is-white .navbar-start>a.navbar-item.is-active,.navbar.is-white .navbar-start .navbar-link:focus,.navbar.is-white .navbar-start .navbar-link:hover,.navbar.is-white .navbar-start .navbar-link.is-active,.navbar.is-white .navbar-end>a.navbar-item:focus,.navbar.is-white .navbar-end>a.navbar-item:hover,.navbar.is-white .navbar-end>a.navbar-item.is-active,.navbar.is-white .navbar-end .navbar-link:focus,.navbar.is-white .navbar-end .navbar-link:hover,.navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-start .navbar-link:after,.navbar.is-white .navbar-end .navbar-link:after{border-color:#0a0a0a}.navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}.navbar.is-black{background-color:#0a0a0a;color:#fff}.navbar.is-black .navbar-brand>.navbar-item,.navbar.is-black .navbar-brand .navbar-link{color:#fff}.navbar.is-black .navbar-brand>a.navbar-item:focus,.navbar.is-black .navbar-brand>a.navbar-item:hover,.navbar.is-black .navbar-brand>a.navbar-item.is-active,.navbar.is-black .navbar-brand .navbar-link:focus,.navbar.is-black .navbar-brand .navbar-link:hover,.navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1024px){.navbar.is-black .navbar-start>.navbar-item,.navbar.is-black .navbar-start .navbar-link,.navbar.is-black .navbar-end>.navbar-item,.navbar.is-black .navbar-end .navbar-link{color:#fff}.navbar.is-black .navbar-start>a.navbar-item:focus,.navbar.is-black .navbar-start>a.navbar-item:hover,.navbar.is-black .navbar-start>a.navbar-item.is-active,.navbar.is-black .navbar-start .navbar-link:focus,.navbar.is-black .navbar-start .navbar-link:hover,.navbar.is-black .navbar-start .navbar-link.is-active,.navbar.is-black .navbar-end>a.navbar-item:focus,.navbar.is-black .navbar-end>a.navbar-item:hover,.navbar.is-black .navbar-end>a.navbar-item.is-active,.navbar.is-black .navbar-end .navbar-link:focus,.navbar.is-black .navbar-end .navbar-link:hover,.navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-start .navbar-link:after,.navbar.is-black .navbar-end .navbar-link:after{border-color:#fff}.navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}.navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}.navbar.is-light{background-color:#f5f5f5;color:#000000b3}.navbar.is-light .navbar-brand>.navbar-item,.navbar.is-light .navbar-brand .navbar-link{color:#000000b3}.navbar.is-light .navbar-brand>a.navbar-item:focus,.navbar.is-light .navbar-brand>a.navbar-item:hover,.navbar.is-light .navbar-brand>a.navbar-item.is-active,.navbar.is-light .navbar-brand .navbar-link:focus,.navbar.is-light .navbar-brand .navbar-link:hover,.navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#e8e8e8;color:#000000b3}.navbar.is-light .navbar-brand .navbar-link:after{border-color:#000000b3}.navbar.is-light .navbar-burger{color:#000000b3}@media screen and (min-width: 1024px){.navbar.is-light .navbar-start>.navbar-item,.navbar.is-light .navbar-start .navbar-link,.navbar.is-light .navbar-end>.navbar-item,.navbar.is-light .navbar-end .navbar-link{color:#000000b3}.navbar.is-light .navbar-start>a.navbar-item:focus,.navbar.is-light .navbar-start>a.navbar-item:hover,.navbar.is-light .navbar-start>a.navbar-item.is-active,.navbar.is-light .navbar-start .navbar-link:focus,.navbar.is-light .navbar-start .navbar-link:hover,.navbar.is-light .navbar-start .navbar-link.is-active,.navbar.is-light .navbar-end>a.navbar-item:focus,.navbar.is-light .navbar-end>a.navbar-item:hover,.navbar.is-light .navbar-end>a.navbar-item.is-active,.navbar.is-light .navbar-end .navbar-link:focus,.navbar.is-light .navbar-end .navbar-link:hover,.navbar.is-light .navbar-end .navbar-link.is-active{background-color:#e8e8e8;color:#000000b3}.navbar.is-light .navbar-start .navbar-link:after,.navbar.is-light .navbar-end .navbar-link:after{border-color:#000000b3}.navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e8e8e8;color:#000000b3}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#000000b3}}.navbar.is-dark{background-color:#363636;color:#fff}.navbar.is-dark .navbar-brand>.navbar-item,.navbar.is-dark .navbar-brand .navbar-link{color:#fff}.navbar.is-dark .navbar-brand>a.navbar-item:focus,.navbar.is-dark .navbar-brand>a.navbar-item:hover,.navbar.is-dark .navbar-brand>a.navbar-item.is-active,.navbar.is-dark .navbar-brand .navbar-link:focus,.navbar.is-dark .navbar-brand .navbar-link:hover,.navbar.is-dark .navbar-brand .navbar-link.is-active{background-color:#292929;color:#fff}.navbar.is-dark .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-dark .navbar-burger{color:#fff}@media screen and (min-width: 1024px){.navbar.is-dark .navbar-start>.navbar-item,.navbar.is-dark .navbar-start .navbar-link,.navbar.is-dark .navbar-end>.navbar-item,.navbar.is-dark .navbar-end .navbar-link{color:#fff}.navbar.is-dark .navbar-start>a.navbar-item:focus,.navbar.is-dark .navbar-start>a.navbar-item:hover,.navbar.is-dark .navbar-start>a.navbar-item.is-active,.navbar.is-dark .navbar-start .navbar-link:focus,.navbar.is-dark .navbar-start .navbar-link:hover,.navbar.is-dark .navbar-start .navbar-link.is-active,.navbar.is-dark .navbar-end>a.navbar-item:focus,.navbar.is-dark .navbar-end>a.navbar-item:hover,.navbar.is-dark .navbar-end>a.navbar-item.is-active,.navbar.is-dark .navbar-end .navbar-link:focus,.navbar.is-dark .navbar-end .navbar-link:hover,.navbar.is-dark .navbar-end .navbar-link.is-active{background-color:#292929;color:#fff}.navbar.is-dark .navbar-start .navbar-link:after,.navbar.is-dark .navbar-end .navbar-link:after{border-color:#fff}.navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link{background-color:#292929;color:#fff}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active{background-color:#363636;color:#fff}}.navbar.is-primary{background-color:#00d1b2;color:#fff}.navbar.is-primary .navbar-brand>.navbar-item,.navbar.is-primary .navbar-brand .navbar-link{color:#fff}.navbar.is-primary .navbar-brand>a.navbar-item:focus,.navbar.is-primary .navbar-brand>a.navbar-item:hover,.navbar.is-primary .navbar-brand>a.navbar-item.is-active,.navbar.is-primary .navbar-brand .navbar-link:focus,.navbar.is-primary .navbar-brand .navbar-link:hover,.navbar.is-primary .navbar-brand .navbar-link.is-active{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-primary .navbar-burger{color:#fff}@media screen and (min-width: 1024px){.navbar.is-primary .navbar-start>.navbar-item,.navbar.is-primary .navbar-start .navbar-link,.navbar.is-primary .navbar-end>.navbar-item,.navbar.is-primary .navbar-end .navbar-link{color:#fff}.navbar.is-primary .navbar-start>a.navbar-item:focus,.navbar.is-primary .navbar-start>a.navbar-item:hover,.navbar.is-primary .navbar-start>a.navbar-item.is-active,.navbar.is-primary .navbar-start .navbar-link:focus,.navbar.is-primary .navbar-start .navbar-link:hover,.navbar.is-primary .navbar-start .navbar-link.is-active,.navbar.is-primary .navbar-end>a.navbar-item:focus,.navbar.is-primary .navbar-end>a.navbar-item:hover,.navbar.is-primary .navbar-end>a.navbar-item.is-active,.navbar.is-primary .navbar-end .navbar-link:focus,.navbar.is-primary .navbar-end .navbar-link:hover,.navbar.is-primary .navbar-end .navbar-link.is-active{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-start .navbar-link:after,.navbar.is-primary .navbar-end .navbar-link:after{border-color:#fff}.navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active{background-color:#00d1b2;color:#fff}}.navbar.is-link{background-color:#485fc7;color:#fff}.navbar.is-link .navbar-brand>.navbar-item,.navbar.is-link .navbar-brand .navbar-link{color:#fff}.navbar.is-link .navbar-brand>a.navbar-item:focus,.navbar.is-link .navbar-brand>a.navbar-item:hover,.navbar.is-link .navbar-brand>a.navbar-item.is-active,.navbar.is-link .navbar-brand .navbar-link:focus,.navbar.is-link .navbar-brand .navbar-link:hover,.navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1024px){.navbar.is-link .navbar-start>.navbar-item,.navbar.is-link .navbar-start .navbar-link,.navbar.is-link .navbar-end>.navbar-item,.navbar.is-link .navbar-end .navbar-link{color:#fff}.navbar.is-link .navbar-start>a.navbar-item:focus,.navbar.is-link .navbar-start>a.navbar-item:hover,.navbar.is-link .navbar-start>a.navbar-item.is-active,.navbar.is-link .navbar-start .navbar-link:focus,.navbar.is-link .navbar-start .navbar-link:hover,.navbar.is-link .navbar-start .navbar-link.is-active,.navbar.is-link .navbar-end>a.navbar-item:focus,.navbar.is-link .navbar-end>a.navbar-item:hover,.navbar.is-link .navbar-end>a.navbar-item.is-active,.navbar.is-link .navbar-end .navbar-link:focus,.navbar.is-link .navbar-end .navbar-link:hover,.navbar.is-link .navbar-end .navbar-link.is-active{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-start .navbar-link:after,.navbar.is-link .navbar-end .navbar-link:after{border-color:#fff}.navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#485fc7;color:#fff}}.navbar.is-info{background-color:#3e8ed0;color:#fff}.navbar.is-info .navbar-brand>.navbar-item,.navbar.is-info .navbar-brand .navbar-link{color:#fff}.navbar.is-info .navbar-brand>a.navbar-item:focus,.navbar.is-info .navbar-brand>a.navbar-item:hover,.navbar.is-info .navbar-brand>a.navbar-item.is-active,.navbar.is-info .navbar-brand .navbar-link:focus,.navbar.is-info .navbar-brand .navbar-link:hover,.navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width: 1024px){.navbar.is-info .navbar-start>.navbar-item,.navbar.is-info .navbar-start .navbar-link,.navbar.is-info .navbar-end>.navbar-item,.navbar.is-info .navbar-end .navbar-link{color:#fff}.navbar.is-info .navbar-start>a.navbar-item:focus,.navbar.is-info .navbar-start>a.navbar-item:hover,.navbar.is-info .navbar-start>a.navbar-item.is-active,.navbar.is-info .navbar-start .navbar-link:focus,.navbar.is-info .navbar-start .navbar-link:hover,.navbar.is-info .navbar-start .navbar-link.is-active,.navbar.is-info .navbar-end>a.navbar-item:focus,.navbar.is-info .navbar-end>a.navbar-item:hover,.navbar.is-info .navbar-end>a.navbar-item.is-active,.navbar.is-info .navbar-end .navbar-link:focus,.navbar.is-info .navbar-end .navbar-link:hover,.navbar.is-info .navbar-end .navbar-link.is-active{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-start .navbar-link:after,.navbar.is-info .navbar-end .navbar-link:after{border-color:#fff}.navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#3e8ed0;color:#fff}}.navbar.is-success{background-color:#48c78e;color:#fff}.navbar.is-success .navbar-brand>.navbar-item,.navbar.is-success .navbar-brand .navbar-link{color:#fff}.navbar.is-success .navbar-brand>a.navbar-item:focus,.navbar.is-success .navbar-brand>a.navbar-item:hover,.navbar.is-success .navbar-brand>a.navbar-item.is-active,.navbar.is-success .navbar-brand .navbar-link:focus,.navbar.is-success .navbar-brand .navbar-link:hover,.navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width: 1024px){.navbar.is-success .navbar-start>.navbar-item,.navbar.is-success .navbar-start .navbar-link,.navbar.is-success .navbar-end>.navbar-item,.navbar.is-success .navbar-end .navbar-link{color:#fff}.navbar.is-success .navbar-start>a.navbar-item:focus,.navbar.is-success .navbar-start>a.navbar-item:hover,.navbar.is-success .navbar-start>a.navbar-item.is-active,.navbar.is-success .navbar-start .navbar-link:focus,.navbar.is-success .navbar-start .navbar-link:hover,.navbar.is-success .navbar-start .navbar-link.is-active,.navbar.is-success .navbar-end>a.navbar-item:focus,.navbar.is-success .navbar-end>a.navbar-item:hover,.navbar.is-success .navbar-end>a.navbar-item.is-active,.navbar.is-success .navbar-end .navbar-link:focus,.navbar.is-success .navbar-end .navbar-link:hover,.navbar.is-success .navbar-end .navbar-link.is-active{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-start .navbar-link:after,.navbar.is-success .navbar-end .navbar-link:after{border-color:#fff}.navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#48c78e;color:#fff}}.navbar.is-warning{background-color:#ffe08a;color:#000000b3}.navbar.is-warning .navbar-brand>.navbar-item,.navbar.is-warning .navbar-brand .navbar-link{color:#000000b3}.navbar.is-warning .navbar-brand>a.navbar-item:focus,.navbar.is-warning .navbar-brand>a.navbar-item:hover,.navbar.is-warning .navbar-brand>a.navbar-item.is-active,.navbar.is-warning .navbar-brand .navbar-link:focus,.navbar.is-warning .navbar-brand .navbar-link:hover,.navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#ffd970;color:#000000b3}.navbar.is-warning .navbar-brand .navbar-link:after{border-color:#000000b3}.navbar.is-warning .navbar-burger{color:#000000b3}@media screen and (min-width: 1024px){.navbar.is-warning .navbar-start>.navbar-item,.navbar.is-warning .navbar-start .navbar-link,.navbar.is-warning .navbar-end>.navbar-item,.navbar.is-warning .navbar-end .navbar-link{color:#000000b3}.navbar.is-warning .navbar-start>a.navbar-item:focus,.navbar.is-warning .navbar-start>a.navbar-item:hover,.navbar.is-warning .navbar-start>a.navbar-item.is-active,.navbar.is-warning .navbar-start .navbar-link:focus,.navbar.is-warning .navbar-start .navbar-link:hover,.navbar.is-warning .navbar-start .navbar-link.is-active,.navbar.is-warning .navbar-end>a.navbar-item:focus,.navbar.is-warning .navbar-end>a.navbar-item:hover,.navbar.is-warning .navbar-end>a.navbar-item.is-active,.navbar.is-warning .navbar-end .navbar-link:focus,.navbar.is-warning .navbar-end .navbar-link:hover,.navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#ffd970;color:#000000b3}.navbar.is-warning .navbar-start .navbar-link:after,.navbar.is-warning .navbar-end .navbar-link:after{border-color:#000000b3}.navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#ffd970;color:#000000b3}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ffe08a;color:#000000b3}}.navbar.is-danger{background-color:#f14668;color:#fff}.navbar.is-danger .navbar-brand>.navbar-item,.navbar.is-danger .navbar-brand .navbar-link{color:#fff}.navbar.is-danger .navbar-brand>a.navbar-item:focus,.navbar.is-danger .navbar-brand>a.navbar-item:hover,.navbar.is-danger .navbar-brand>a.navbar-item.is-active,.navbar.is-danger .navbar-brand .navbar-link:focus,.navbar.is-danger .navbar-brand .navbar-link:hover,.navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-brand .navbar-link:after{border-color:#fff}.navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1024px){.navbar.is-danger .navbar-start>.navbar-item,.navbar.is-danger .navbar-start .navbar-link,.navbar.is-danger .navbar-end>.navbar-item,.navbar.is-danger .navbar-end .navbar-link{color:#fff}.navbar.is-danger .navbar-start>a.navbar-item:focus,.navbar.is-danger .navbar-start>a.navbar-item:hover,.navbar.is-danger .navbar-start>a.navbar-item.is-active,.navbar.is-danger .navbar-start .navbar-link:focus,.navbar.is-danger .navbar-start .navbar-link:hover,.navbar.is-danger .navbar-start .navbar-link.is-active,.navbar.is-danger .navbar-end>a.navbar-item:focus,.navbar.is-danger .navbar-end>a.navbar-item:hover,.navbar.is-danger .navbar-end>a.navbar-item.is-active,.navbar.is-danger .navbar-end .navbar-link:focus,.navbar.is-danger .navbar-end .navbar-link:hover,.navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-start .navbar-link:after,.navbar.is-danger .navbar-end .navbar-link:after{border-color:#fff}.navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#f14668;color:#fff}}.navbar>.container{align-items:stretch;display:flex;min-height:3.25rem;width:100%}.navbar.has-shadow{box-shadow:0 2px #f5f5f5}.navbar.is-fixed-bottom,.navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom{bottom:0}.navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px #f5f5f5}.navbar.is-fixed-top{top:0}html.has-navbar-fixed-top,body.has-navbar-fixed-top{padding-top:3.25rem}html.has-navbar-fixed-bottom,body.has-navbar-fixed-bottom{padding-bottom:3.25rem}.navbar-brand,.navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:3.25rem}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:transparent}.navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}.navbar-burger{color:#4a4a4a;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem;margin-left:auto}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color,opacity,transform;transition-timing-function:ease-out;width:16px}.navbar-burger span:nth-child(1){top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:#0000000d}.navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item,.navbar-link{color:#4a4a4a;display:block;line-height:1.5;padding:.5rem .75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-.25rem;margin-right:-.25rem}a.navbar-item,.navbar-link{cursor:pointer}a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover,a.navbar-item.is-active,.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,.navbar-link.is-active{background-color:#fafafa;color:#485fc7}.navbar-item{flex-grow:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{flex-grow:1;flex-shrink:1}.navbar-item.is-tab{border-bottom:1px solid transparent;min-height:3.25rem;padding-bottom:calc(.5rem - 1px)}.navbar-item.is-tab:focus,.navbar-item.is-tab:hover{background-color:transparent;border-bottom-color:#485fc7}.navbar-item.is-tab.is-active{background-color:transparent;border-bottom-color:#485fc7;border-bottom-style:solid;border-bottom-width:3px;color:#485fc7;padding-bottom:calc(.5rem - 3px)}.navbar-content{flex-grow:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-right:2.5em}.navbar-link:not(.is-arrowless):after{border-color:#485fc7;margin-top:-.375em;right:1.125em}.navbar-dropdown{font-size:.875rem;padding-bottom:.5rem;padding-top:.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-divider{background-color:#f5f5f5;border:none;display:none;height:2px;margin:.5rem 0}@media screen and (max-width: 1023px){.navbar>.container{display:block}.navbar-brand .navbar-item,.navbar-tabs .navbar-item{align-items:center;display:flex}.navbar-link:after{display:none}.navbar-menu{background-color:#fff;box-shadow:0 8px 16px #0a0a0a1a;padding:.5rem 0}.navbar-menu.is-active{display:block}.navbar.is-fixed-bottom-touch,.navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-touch{bottom:0}.navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px #0a0a0a1a}.navbar.is-fixed-top-touch{top:0}.navbar.is-fixed-top .navbar-menu,.navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 3.25rem);overflow:auto}html.has-navbar-fixed-top-touch,body.has-navbar-fixed-top-touch{padding-top:3.25rem}html.has-navbar-fixed-bottom-touch,body.has-navbar-fixed-bottom-touch{padding-bottom:3.25rem}}@media screen and (min-width: 1024px){.navbar,.navbar-menu,.navbar-start,.navbar-end{align-items:stretch;display:flex}.navbar{min-height:3.25rem}.navbar.is-spaced{padding:1rem 2rem}.navbar.is-spaced .navbar-start,.navbar.is-spaced .navbar-end{align-items:center}.navbar.is-spaced a.navbar-item,.navbar.is-spaced .navbar-link{border-radius:4px}.navbar.is-transparent a.navbar-item:focus,.navbar.is-transparent a.navbar-item:hover,.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent .navbar-link:focus,.navbar.is-transparent .navbar-link:hover,.navbar.is-transparent .navbar-link.is-active{background-color:transparent!important}.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent!important}.navbar.is-transparent .navbar-dropdown a.navbar-item:focus,.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#485fc7}.navbar-burger{display:none}.navbar-item,.navbar-link{align-items:center;display:flex}.navbar-item.has-dropdown{align-items:stretch}.navbar-item.has-dropdown-up .navbar-link:after{transform:rotate(135deg) translate(.25em,-.25em)}.navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:2px solid hsl(0,0%,86%);border-radius:6px 6px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px #0a0a0a1a;top:auto}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced .navbar-item.is-active .navbar-dropdown,.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-right:auto}.navbar-end{justify-content:flex-end;margin-left:auto}.navbar-dropdown{background-color:#fff;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:2px solid hsl(0,0%,86%);box-shadow:0 8px 8px #0a0a0a1a;display:none;font-size:.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}.navbar-dropdown .navbar-item{padding:.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-right:3rem}.navbar-dropdown a.navbar-item:focus,.navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#485fc7}.navbar.is-spaced .navbar-dropdown,.navbar-dropdown.is-boxed{border-radius:6px;border-top:none;box-shadow:0 8px 8px #0a0a0a1a,0 0 0 1px #0a0a0a1a;display:block;opacity:0;pointer-events:none;top:calc(100% - 4px);transform:translateY(-5px);transition-duration:86ms;transition-property:opacity,transform}.navbar-dropdown.is-right{left:auto;right:0}.navbar-divider{display:block}.navbar>.container .navbar-brand,.container>.navbar .navbar-brand{margin-left:-.75rem}.navbar>.container .navbar-menu,.container>.navbar .navbar-menu{margin-right:-.75rem}.navbar.is-fixed-bottom-desktop,.navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-desktop{bottom:0}.navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px #0a0a0a1a}.navbar.is-fixed-top-desktop{top:0}html.has-navbar-fixed-top-desktop,body.has-navbar-fixed-top-desktop{padding-top:3.25rem}html.has-navbar-fixed-bottom-desktop,body.has-navbar-fixed-bottom-desktop{padding-bottom:3.25rem}html.has-spaced-navbar-fixed-top,body.has-spaced-navbar-fixed-top{padding-top:5.25rem}html.has-spaced-navbar-fixed-bottom,body.has-spaced-navbar-fixed-bottom{padding-bottom:5.25rem}a.navbar-item.is-active,.navbar-link.is-active{color:#0a0a0a}a.navbar-item.is-active:not(:focus):not(:hover),.navbar-link.is-active:not(:focus):not(:hover){background-color:transparent}.navbar-item.has-dropdown:focus .navbar-link,.navbar-item.has-dropdown:hover .navbar-link,.navbar-item.has-dropdown.is-active .navbar-link{background-color:#fafafa}}.hero.is-fullheight-with-navbar{min-height:calc(100vh - 3.25rem)}#player .button,#player a.button,#player button.button,.ax .button,.ax a.button,.ax button.button{font-size:1rem;display:inline-block;padding:.4em;border:none;justify-content:center;text-align:center;cursor:pointer;text-decoration:none;color:var(--button-fg);background-color:var(--button-bg)}#player .button.square,#player a.button.square,#player button.button.square,.ax .button.square,.ax a.button.square,.ax button.button.square{min-width:2.5em}#player .button.secondary,#player a.button.secondary,#player button.button.secondary,.ax .button.secondary,.ax a.button.secondary,.ax button.button.secondary{background-color:var(--button-sec-bg)}#player .button .label,#player .button label,#player a.button .label,#player a.button label,#player button.button .label,#player button.button label,.ax .button .label,.ax .button label,.ax a.button .label,.ax a.button label,.ax button.button .label,.ax button.button label{cursor:pointer}#player .button .icon,#player a.button .icon,#player button.button .icon,.ax .button .icon,.ax a.button .icon,.ax button.button .icon{vertical-align:middle}#player .button .icon:not(:only-child):first-child,#player a.button .icon:not(:only-child):first-child,#player button.button .icon:not(:only-child):first-child,.ax .button .icon:not(:only-child):first-child,.ax a.button .icon:not(:only-child):first-child,.ax button.button .icon:not(:only-child):first-child{margin:0 .6em 0 .2em}#player .button .icon:not(:only-child):last-child,#player a.button .icon:not(:only-child):last-child,#player button.button .icon:not(:only-child):last-child,.ax .button .icon:not(:only-child):last-child,.ax a.button .icon:not(:only-child):last-child,.ax button.button .icon:not(:only-child):last-child{margin:0 .6em 0 .2em}#player .button:hover,#player a.button:hover,#player button.button:hover,.ax .button:hover,.ax a.button:hover,.ax button.button:hover{color:var(--button-hv-fg);background-color:var(--button-hv-bg);opacity:1!important}#player .button.active:not(:hover),#player a.button.active:not(:hover),#player button.button.active:not(:hover),.ax .button.active:not(:hover),.ax a.button.active:not(:hover),.ax button.button.active:not(:hover){color:var(--button-active-fg);background-color:var(--button-active-bg)}#player .button:not([disabled]),#player .button:not(.disabled),#player a.button:not([disabled]),#player a.button:not(.disabled),#player button.button:not([disabled]),#player button.button:not(.disabled),.ax .button:not([disabled]),.ax .button:not(.disabled),.ax a.button:not([disabled]),.ax a.button:not(.disabled),.ax button.button:not([disabled]),.ax button.button:not(.disabled){cursor:pointer}#player .button[disabled],#player .button.disabled,#player a.button[disabled],#player a.button.disabled,#player button.button[disabled],#player button.button.disabled,.ax .button[disabled],.ax .button.disabled,.ax a.button[disabled],.ax a.button.disabled,.ax button.button[disabled],.ax button.button.disabled{background-color:var(--text-color-light);color:var(--secondary-color);border-color:var(--secondary-color-light)}#player .button .dropdown-trigger,#player a.button .dropdown-trigger,#player button.button .dropdown-trigger,.ax .button .dropdown-trigger,.ax a.button .dropdown-trigger,.ax button.button .dropdown-trigger{border-radius:1.5em}#player .button-group .button,#player .nav .button,.ax .button-group .button,.ax .nav .button{border-radius:0;background-color:transparent;border-top:0px;border-bottom:0px;height:100%}#player .button-group .button:not(:first-child),#player .nav .button:not(:first-child),.ax .button-group .button:not(:first-child),.ax .nav .button:not(:first-child){border-left:0px}#player .button-group .button:last-child,#player .nav .button:last-child,.ax .button-group .button:last-child,.ax .nav .button:last-child{border-right:0px}.admin .navbar.has-shadow,.admin .navbar.is-fixed-bottom.has-shadow{box-shadow:0 0 1em #0000001a}.admin a.navbar-item.is-active{border-bottom:1px grey solid}.admin .navbar+.container{margin-top:1em}.admin .navbar .navbar-dropdown{z-index:2000}.admin .navbar .navbar-split{margin:.2em 1em .2em 0;padding-right:1em;border-right:1px #ddd solid;display:inline-block}.admin .navbar form{margin:0;padding:0}.admin .navbar.toolbar{margin:1em 0;background-color:transparent}.admin .navbar.toolbar .title{padding-right:2em;margin-right:1em;border-right:1px #ddd solid;font-size:1rem;font-weight:100}.admin .navbar .navbar-dropdown{max-height:40rem;overflow-y:auto}.admin .navbar .navbar-dropdown input{z-index:10000;position:sticky;top:0}.admin .navbar .navbar-brand{padding-right:1em}.admin .navbar .navbar-brand img{margin:.3em .4em 0;max-height:3em}.admin .breadcrumbs{margin-bottom:1em}.admin .results>#result_list{width:100%;margin:1em 0}.admin ul.menu-list li{list-style-type:none}.admin .submit-row a.deletelink{height:35px} diff --git a/aircox/static/aircox/assets/index-BHp9xxGn.js b/aircox/static/aircox/assets/index-BHp9xxGn.js deleted file mode 100644 index e559e5b..0000000 --- a/aircox/static/aircox/assets/index-BHp9xxGn.js +++ /dev/null @@ -1,46 +0,0 @@ -/** -* @vue/shared v3.4.23 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**//*! #__NO_SIDE_EFFECTS__ */function Rc(e,t){const n=new Set(e.split(","));return t?i=>n.has(i.toLowerCase()):i=>n.has(i)}const bt={},di=[],Rn=()=>{},$C=()=>!1,dl=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Yc=e=>e.startsWith("onUpdate:"),Nt=Object.assign,Nc=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},CC=Object.prototype.hasOwnProperty,Je=(e,t)=>CC.call(e,t),Ae=Array.isArray,hi=e=>hl(e)==="[object Map]",gg=e=>hl(e)==="[object Set]",We=e=>typeof e=="function",Ot=e=>typeof e=="string",Fs=e=>typeof e=="symbol",gt=e=>e!==null&&typeof e=="object",mg=e=>(gt(e)||We(e))&&We(e.then)&&We(e.catch),yg=Object.prototype.toString,hl=e=>yg.call(e),xC=e=>hl(e).slice(8,-1),_g=e=>hl(e)==="[object Object]",Fc=e=>Ot(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,co=Rc(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),vl=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},SC=/-(\w)/g,pr=vl(e=>e.replace(SC,(t,n)=>n?n.toUpperCase():"")),TC=/\B([A-Z])/g,Ws=vl(e=>e.replace(TC,"-$1").toLowerCase()),pl=vl(e=>e.charAt(0).toUpperCase()+e.slice(1)),La=vl(e=>e?`on${pl(e)}`:""),as=(e,t)=>!Object.is(e,t),ka=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},cc=e=>{const t=parseFloat(e);return isNaN(t)?e:t},OC=e=>{const t=Ot(e)?Number(e):NaN;return isNaN(t)?e:t};let cv;const wg=()=>cv||(cv=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function dr(e){if(Ae(e)){const t={};for(let n=0;n{if(n){const i=n.split(MC);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function Le(e){let t="";if(Ot(e))t=e;else if(Ae(e))for(let n=0;nOt(e)?e:e==null?"":Ae(e)||gt(e)&&(e.toString===yg||!We(e.toString))?JSON.stringify(e,$g,2):String(e),$g=(e,t)=>t&&t.__v_isRef?$g(e,t.value):hi(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[i,o],a)=>(n[Vu(i,a)+" =>"]=o,n),{})}:gg(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Vu(n))}:Fs(t)?Vu(t):gt(t)&&!Ae(t)&&!_g(t)?String(t):t,Vu=(e,t="")=>{var n;return Fs(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.4.23 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let Qn;class kC{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Qn,!t&&Qn&&(this.index=(Qn.scopes||(Qn.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=Qn;try{return Qn=this,t()}finally{Qn=n}}}on(){Qn=this}off(){Qn=this.parent}stop(t){if(this._active){let n,i;for(n=0,i=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),fs()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=is,n=Es;try{return is=!0,Es=this,this._runnings++,fv(this),this.fn()}finally{dv(this),this._runnings--,Es=n,is=t}}stop(){var t;this.active&&(fv(this),dv(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function NC(e){return e.value}function fv(e){e._trackId++,e._depsLength=0}function dv(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},Va=new WeakMap,Ls=Symbol(""),hc=Symbol("");function mn(e,t,n){if(is&&Es){let i=Va.get(e);i||Va.set(e,i=new Map);let o=i.get(n);o||i.set(n,o=Og(()=>i.delete(n))),Sg(Es,o)}}function Mr(e,t,n,i,o,a){const u=Va.get(e);if(!u)return;let c=[];if(t==="clear")c=[...u.values()];else if(n==="length"&&Ae(e)){const d=Number(i);u.forEach((h,p)=>{(p==="length"||!Fs(p)&&p>=d)&&c.push(h)})}else switch(n!==void 0&&c.push(u.get(n)),t){case"add":Ae(e)?Fc(n)&&c.push(u.get("length")):(c.push(u.get(Ls)),hi(e)&&c.push(u.get(hc)));break;case"delete":Ae(e)||(c.push(u.get(Ls)),hi(e)&&c.push(u.get(hc)));break;case"set":hi(e)&&c.push(u.get(Ls));break}Bc();for(const d of c)d&&Tg(d,4);Uc()}function FC(e,t){var n;return(n=Va.get(e))==null?void 0:n.get(t)}const WC=Rc("__proto__,__v_isRef,__isVue"),Ag=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Fs)),hv=BC();function BC(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const i=Qe(this);for(let a=0,u=this.length;a{e[t]=function(...n){cs(),Bc();const i=Qe(this)[t].apply(this,n);return Uc(),fs(),i}}),e}function UC(e){Fs(e)||(e=String(e));const t=Qe(this);return mn(t,"has",e),t.hasOwnProperty(e)}class Mg{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,i){const o=this._isReadonly,a=this._isShallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return a;if(n==="__v_raw")return i===(o?a?tx:Lg:a?Eg:Ig).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(i)?t:void 0;const u=Ae(t);if(!o){if(u&&Je(hv,n))return Reflect.get(hv,n,i);if(n==="hasOwnProperty")return UC}const c=Reflect.get(t,n,i);return(Fs(n)?Ag.has(n):WC(n))||(o||mn(t,"get",n),a)?c:It(c)?u&&Fc(n)?c:c.value:gt(c)?o?kg(c):Bs(c):c}}class Pg extends Mg{constructor(t=!1){super(!1,t)}set(t,n,i,o){let a=t[n];if(!this._isShallow){const d=yo(a);if(!za(i)&&!yo(i)&&(a=Qe(a),i=Qe(i)),!Ae(t)&&It(a)&&!It(i))return d?!1:(a.value=i,!0)}const u=Ae(t)&&Fc(n)?Number(n)e,gl=e=>Reflect.getPrototypeOf(e);function $a(e,t,n=!1,i=!1){e=e.__v_raw;const o=Qe(e),a=Qe(t);n||(as(t,a)&&mn(o,"get",t),mn(o,"get",a));const{has:u}=gl(o),c=i?Hc:n?zc:_o;if(u.call(o,t))return c(e.get(t));if(u.call(o,a))return c(e.get(a));e!==o&&e.get(t)}function Ca(e,t=!1){const n=this.__v_raw,i=Qe(n),o=Qe(e);return t||(as(e,o)&&mn(i,"has",e),mn(i,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function xa(e,t=!1){return e=e.__v_raw,!t&&mn(Qe(e),"iterate",Ls),Reflect.get(e,"size",e)}function vv(e){e=Qe(e);const t=Qe(this);return gl(t).has.call(t,e)||(t.add(e),Mr(t,"add",e,e)),this}function pv(e,t){t=Qe(t);const n=Qe(this),{has:i,get:o}=gl(n);let a=i.call(n,e);a||(e=Qe(e),a=i.call(n,e));const u=o.call(n,e);return n.set(e,t),a?as(t,u)&&Mr(n,"set",e,t):Mr(n,"add",e,t),this}function gv(e){const t=Qe(this),{has:n,get:i}=gl(t);let o=n.call(t,e);o||(e=Qe(e),o=n.call(t,e)),i&&i.call(t,e);const a=t.delete(e);return o&&Mr(t,"delete",e,void 0),a}function mv(){const e=Qe(this),t=e.size!==0,n=e.clear();return t&&Mr(e,"clear",void 0,void 0),n}function Sa(e,t){return function(i,o){const a=this,u=a.__v_raw,c=Qe(u),d=t?Hc:e?zc:_o;return!e&&mn(c,"iterate",Ls),u.forEach((h,p)=>i.call(o,d(h),d(p),a))}}function Ta(e,t,n){return function(...i){const o=this.__v_raw,a=Qe(o),u=hi(a),c=e==="entries"||e===Symbol.iterator&&u,d=e==="keys"&&u,h=o[e](...i),p=n?Hc:t?zc:_o;return!t&&mn(a,"iterate",d?hc:Ls),{next(){const{value:y,done:b}=h.next();return b?{value:y,done:b}:{value:c?[p(y[0]),p(y[1])]:p(y),done:b}},[Symbol.iterator](){return this}}}}function Gr(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function jC(){const e={get(a){return $a(this,a)},get size(){return xa(this)},has:Ca,add:vv,set:pv,delete:gv,clear:mv,forEach:Sa(!1,!1)},t={get(a){return $a(this,a,!1,!0)},get size(){return xa(this)},has:Ca,add:vv,set:pv,delete:gv,clear:mv,forEach:Sa(!1,!0)},n={get(a){return $a(this,a,!0)},get size(){return xa(this,!0)},has(a){return Ca.call(this,a,!0)},add:Gr("add"),set:Gr("set"),delete:Gr("delete"),clear:Gr("clear"),forEach:Sa(!0,!1)},i={get(a){return $a(this,a,!0,!0)},get size(){return xa(this,!0)},has(a){return Ca.call(this,a,!0)},add:Gr("add"),set:Gr("set"),delete:Gr("delete"),clear:Gr("clear"),forEach:Sa(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(a=>{e[a]=Ta(a,!1,!1),n[a]=Ta(a,!0,!1),t[a]=Ta(a,!1,!0),i[a]=Ta(a,!0,!0)}),[e,n,t,i]}const[qC,GC,ZC,XC]=jC();function Kc(e,t){const n=t?e?XC:ZC:e?GC:qC;return(i,o,a)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?i:Reflect.get(Je(n,o)&&o in i?n:i,o,a)}const JC={get:Kc(!1,!1)},QC={get:Kc(!1,!0)},ex={get:Kc(!0,!1)},Ig=new WeakMap,Eg=new WeakMap,Lg=new WeakMap,tx=new WeakMap;function nx(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function rx(e){return e.__v_skip||!Object.isExtensible(e)?0:nx(xC(e))}function Bs(e){return yo(e)?e:Vc(e,!1,KC,JC,Ig)}function sx(e){return Vc(e,!1,zC,QC,Eg)}function kg(e){return Vc(e,!0,VC,ex,Lg)}function Vc(e,t,n,i,o){if(!gt(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const a=o.get(e);if(a)return a;const u=rx(e);if(u===0)return e;const c=new Proxy(e,u===2?i:n);return o.set(e,c),c}function vi(e){return yo(e)?vi(e.__v_raw):!!(e&&e.__v_isReactive)}function yo(e){return!!(e&&e.__v_isReadonly)}function za(e){return!!(e&&e.__v_isShallow)}function Rg(e){return e?!!e.__v_raw:!1}function Qe(e){const t=e&&e.__v_raw;return t?Qe(t):e}function ix(e){return Object.isExtensible(e)&&bg(e,"__v_skip",!0),e}const _o=e=>gt(e)?Bs(e):e,zc=e=>gt(e)?kg(e):e;class Yg{constructor(t,n,i,o){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Wc(()=>t(this._value),()=>Ra(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=i}get value(){const t=Qe(this);return(!t._cacheable||t.effect.dirty)&&as(t._value,t._value=t.effect.run())&&Ra(t,4),Ng(t),t.effect._dirtyLevel>=2&&Ra(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function ox(e,t,n=!1){let i,o;const a=We(e);return a?(i=e,o=Rn):(i=e.get,o=e.set),new Yg(i,o,a||!o,n)}function Ng(e){var t;is&&Es&&(e=Qe(e),Sg(Es,(t=e.dep)!=null?t:e.dep=Og(()=>e.dep=void 0,e instanceof Yg?e:void 0)))}function Ra(e,t=4,n){e=Qe(e);const i=e.dep;i&&Tg(i,t)}function It(e){return!!(e&&e.__v_isRef===!0)}function $t(e){return ax(e,!1)}function ax(e,t){return It(e)?e:new lx(e,t)}class lx{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:Qe(t),this._value=n?t:_o(t)}get value(){return Ng(this),this._value}set value(t){const n=this.__v_isShallow||za(t)||yo(t);t=n?t:Qe(t),as(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:_o(t),Ra(this,4))}}function Z(e){return It(e)?e.value:e}const ux={get:(e,t,n)=>Z(Reflect.get(e,t,n)),set:(e,t,n,i)=>{const o=e[t];return It(o)&&!It(n)?(o.value=n,!0):Reflect.set(e,t,n,i)}};function Fg(e){return vi(e)?e:new Proxy(e,ux)}function Wg(e){const t=Ae(e)?new Array(e.length):{};for(const n in e)t[n]=Bg(e,n);return t}class cx{constructor(t,n,i){this._object=t,this._key=n,this._defaultValue=i,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return FC(Qe(this._object),this._key)}}class fx{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Ya(e,t,n){return It(e)?e:We(e)?new fx(e):gt(e)&&arguments.length>1?Bg(e,t,n):$t(e)}function Bg(e,t,n){const i=e[t];return It(i)?i:new cx(e,t,n)}/** -* @vue/runtime-core v3.4.23 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function os(e,t,n,i){try{return i?e(...i):e()}catch(o){ml(o,t,n)}}function Nn(e,t,n,i){if(We(e)){const o=os(e,t,n,i);return o&&mg(o)&&o.catch(a=>{ml(a,t,n)}),o}if(Ae(e)){const o=[];for(let a=0;a>>1,o=Jt[i],a=wo(o);aur&&Jt.splice(t,1)}function px(e){Ae(e)?pi.push(...e):(!Qr||!Qr.includes(e,e.allowRecurse?As+1:As))&&pi.push(e),Hg()}function yv(e,t,n=bo?ur+1:0){for(;nwo(n)-wo(i));if(pi.length=0,Qr){Qr.push(...t);return}for(Qr=t,As=0;Ase.id==null?1/0:e.id,gx=(e,t)=>{const n=wo(e)-wo(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Vg(e){vc=!1,bo=!0,Jt.sort(gx);try{for(ur=0;urOt($)?$.trim():$)),y&&(o=n.map(cc))}let c,d=i[c=La(t)]||i[c=La(pr(t))];!d&&a&&(d=i[c=La(Ws(t))]),d&&Nn(d,e,6,o);const h=i[c+"Once"];if(h){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,Nn(h,e,6,o)}}function zg(e,t,n=!1){const i=t.emitsCache,o=i.get(e);if(o!==void 0)return o;const a=e.emits;let u={},c=!1;if(!We(e)){const d=h=>{const p=zg(h,t,!0);p&&(c=!0,Nt(u,p))};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!a&&!c?(gt(e)&&i.set(e,null),null):(Ae(a)?a.forEach(d=>u[d]=null):Nt(u,a),gt(e)&&i.set(e,u),u)}function yl(e,t){return!e||!dl(t)?!1:(t=t.slice(2).replace(/Once$/,""),Je(e,t[0].toLowerCase()+t.slice(1))||Je(e,Ws(t))||Je(e,t))}let Yt=null,jg=null;function ja(e){const t=Yt;return Yt=e,jg=e&&e.type.__scopeId||null,t}function Ee(e,t=Yt,n){if(!t||e._n)return e;const i=(...o)=>{i._d&&Mv(-1);const a=ja(t);let u;try{u=e(...o)}finally{ja(a),i._d&&Mv(1)}return u};return i._n=!0,i._c=!0,i._d=!0,i}function zu(e){const{type:t,vnode:n,proxy:i,withProxy:o,props:a,propsOptions:[u],slots:c,attrs:d,emit:h,render:p,renderCache:y,data:b,setupState:$,ctx:A,inheritAttrs:k}=e;let L,M;const le=ja(e);try{if(n.shapeFlag&4){const j=o||i,X=j;L=lr(p.call(X,j,y,a,$,b,A)),M=d}else{const j=t;L=lr(j.length>1?j(a,{attrs:d,slots:c,emit:h}):j(a,null)),M=t.props?d:yx(d)}}catch(j){po.length=0,ml(j,e,1),L=xe(Fn)}let re=L;if(M&&k!==!1){const j=Object.keys(M),{shapeFlag:X}=re;j.length&&X&7&&(u&&j.some(Yc)&&(M=_x(M,u)),re=ls(re,M))}return n.dirs&&(re=ls(re),re.dirs=re.dirs?re.dirs.concat(n.dirs):n.dirs),n.transition&&(re.transition=n.transition),L=re,ja(le),L}const yx=e=>{let t;for(const n in e)(n==="class"||n==="style"||dl(n))&&((t||(t={}))[n]=e[n]);return t},_x=(e,t)=>{const n={};for(const i in e)(!Yc(i)||!(i.slice(9)in t))&&(n[i]=e[i]);return n};function bx(e,t,n){const{props:i,children:o,component:a}=e,{props:u,children:c,patchFlag:d}=t,h=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&d>=0){if(d&1024)return!0;if(d&16)return i?_v(i,u,h):!!u;if(d&8){const p=t.dynamicProps;for(let y=0;ye.__isSuspense;function xx(e,t){t&&t.pendingBranch?Ae(e)?t.effects.push(...e):t.effects.push(e):px(e)}const Sx=Symbol.for("v-scx"),Tx=()=>Pr(Sx);function Gg(e,t){return Xc(e,null,t)}const Oa={};function Bt(e,t,n){return Xc(e,t,n)}function Xc(e,t,{immediate:n,deep:i,flush:o,once:a,onTrack:u,onTrigger:c}=bt){if(t&&a){const te=t;t=(...se)=>{te(...se),X()}}const d=Vt,h=te=>i===!0?te:Ps(te,i===!1?1:void 0);let p,y=!1,b=!1;if(It(e)?(p=()=>e.value,y=za(e)):vi(e)?(p=()=>h(e),y=!0):Ae(e)?(b=!0,y=e.some(te=>vi(te)||za(te)),p=()=>e.map(te=>{if(It(te))return te.value;if(vi(te))return h(te);if(We(te))return os(te,d,2)})):We(e)?t?p=()=>os(e,d,2):p=()=>($&&$(),Nn(e,d,3,[A])):p=Rn,t&&i){const te=p;p=()=>Ps(te())}let $,A=te=>{$=re.onStop=()=>{os(te,d,4),$=re.onStop=void 0}},k;if(Dl)if(A=Rn,t?n&&Nn(t,d,3,[p(),b?[]:void 0,A]):p(),o==="sync"){const te=Tx();k=te.__watcherHandles||(te.__watcherHandles=[])}else return Rn;let L=b?new Array(e.length).fill(Oa):Oa;const M=()=>{if(!(!re.active||!re.dirty))if(t){const te=re.run();(i||y||(b?te.some((se,Q)=>as(se,L[Q])):as(te,L)))&&($&&$(),Nn(t,d,3,[te,L===Oa?void 0:b&&L[0]===Oa?[]:L,A]),L=te)}else re.run()};M.allowRecurse=!!t;let le;o==="sync"?le=M:o==="post"?le=()=>vn(M,d&&d.suspense):(M.pre=!0,d&&(M.id=d.uid),le=()=>qc(M));const re=new Wc(p,Rn,le),j=YC(),X=()=>{re.stop(),j&&Nc(j.effects,re)};return t?n?M():L=re.run():o==="post"?vn(re.run.bind(re),d&&d.suspense):re.run(),k&&k.push(X),X}function Ox(e,t,n){const i=this.proxy,o=Ot(e)?e.includes(".")?Zg(i,e):()=>i[e]:e.bind(i,i);let a;We(t)?a=t:(a=t.handler,n=t);const u=Po(this),c=Xc(o,a.bind(i),n);return u(),c}function Zg(e,t){const n=t.split(".");return()=>{let i=e;for(let o=0;o0){if(n>=t)return e;n++}if(i=i||new Set,i.has(e))return e;if(i.add(e),It(e))Ps(e.value,t,n,i);else if(Ae(e))for(let o=0;o{Ps(o,t,n,i)});else if(_g(e))for(const o in e)Ps(e[o],t,n,i);return e}function ks(e,t){if(Yt===null)return e;const n=$l(Yt)||Yt.proxy,i=e.dirs||(e.dirs=[]);for(let o=0;o{e.isMounted=!0}),tm(()=>{e.isUnmounting=!0}),e}const kn=[Function,Array],Xg={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:kn,onEnter:kn,onAfterEnter:kn,onEnterCancelled:kn,onBeforeLeave:kn,onLeave:kn,onAfterLeave:kn,onLeaveCancelled:kn,onBeforeAppear:kn,onAppear:kn,onAfterAppear:kn,onAppearCancelled:kn},Mx={name:"BaseTransition",props:Xg,setup(e,{slots:t}){const n=dS(),i=Ax();return()=>{const o=t.default&&Qg(t.default(),!0);if(!o||!o.length)return;let a=o[0];if(o.length>1){for(const b of o)if(b.type!==Fn){a=b;break}}const u=Qe(e),{mode:c}=u;if(i.isLeaving)return ju(a);const d=wv(a);if(!d)return ju(a);const h=pc(d,u,i,n);gc(d,h);const p=n.subTree,y=p&&wv(p);if(y&&y.type!==Fn&&!Ms(d,y)){const b=pc(y,u,i,n);if(gc(y,b),c==="out-in")return i.isLeaving=!0,b.afterLeave=()=>{i.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},ju(a);c==="in-out"&&d.type!==Fn&&(b.delayLeave=($,A,k)=>{const L=Jg(i,y);L[String(y.key)]=y,$[es]=()=>{A(),$[es]=void 0,delete h.delayedLeave},h.delayedLeave=k})}return a}}},Px=Mx;function Jg(e,t){const{leavingVNodes:n}=e;let i=n.get(t.type);return i||(i=Object.create(null),n.set(t.type,i)),i}function pc(e,t,n,i){const{appear:o,mode:a,persisted:u=!1,onBeforeEnter:c,onEnter:d,onAfterEnter:h,onEnterCancelled:p,onBeforeLeave:y,onLeave:b,onAfterLeave:$,onLeaveCancelled:A,onBeforeAppear:k,onAppear:L,onAfterAppear:M,onAppearCancelled:le}=t,re=String(e.key),j=Jg(n,e),X=(Q,ve)=>{Q&&Nn(Q,i,9,ve)},te=(Q,ve)=>{const pe=ve[1];X(Q,ve),Ae(Q)?Q.every(we=>we.length<=1)&&pe():Q.length<=1&&pe()},se={mode:a,persisted:u,beforeEnter(Q){let ve=c;if(!n.isMounted)if(o)ve=k||c;else return;Q[es]&&Q[es](!0);const pe=j[re];pe&&Ms(e,pe)&&pe.el[es]&&pe.el[es](),X(ve,[Q])},enter(Q){let ve=d,pe=h,we=p;if(!n.isMounted)if(o)ve=L||d,pe=M||h,we=le||p;else return;let F=!1;const ce=Q[Aa]=ke=>{F||(F=!0,ke?X(we,[Q]):X(pe,[Q]),se.delayedLeave&&se.delayedLeave(),Q[Aa]=void 0)};ve?te(ve,[Q,ce]):ce()},leave(Q,ve){const pe=String(e.key);if(Q[Aa]&&Q[Aa](!0),n.isUnmounting)return ve();X(y,[Q]);let we=!1;const F=Q[es]=ce=>{we||(we=!0,ve(),ce?X(A,[Q]):X($,[Q]),Q[es]=void 0,j[pe]===e&&delete j[pe])};j[pe]=e,b?te(b,[Q,F]):F()},clone(Q){return pc(Q,t,n,i)}};return se}function ju(e){if(_l(e))return e=ls(e),e.children=null,e}function wv(e){return _l(e)?e.children?e.children[0]:void 0:e}function gc(e,t){e.shapeFlag&6&&e.component?gc(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Qg(e,t=!1,n){let i=[],o=0;for(let a=0;a1)for(let a=0;a!!e.type.__asyncLoader,_l=e=>e.type.__isKeepAlive;function Ix(e,t){em(e,"a",t)}function Ex(e,t){em(e,"da",t)}function em(e,t,n=Vt){const i=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(bl(t,i,n),n){let o=n.parent;for(;o&&o.parent;)_l(o.parent.vnode)&&Lx(i,t,n,o),o=o.parent}}function Lx(e,t,n,i){const o=bl(t,e,i,!0);Mo(()=>{Nc(i[t],o)},n)}function bl(e,t,n=Vt,i=!1){if(n){const o=n[e]||(n[e]=[]),a=t.__weh||(t.__weh=(...u)=>{if(n.isUnmounted)return;cs();const c=Po(n),d=Nn(t,n,e,u);return c(),fs(),d});return i?o.unshift(a):o.push(a),a}}const kr=e=>(t,n=Vt)=>(!Dl||e==="sp")&&bl(e,(...i)=>t(...i),n),kx=kr("bm"),xi=kr("m"),Rx=kr("bu"),Yx=kr("u"),tm=kr("bum"),Mo=kr("um"),Nx=kr("sp"),Fx=kr("rtg"),Wx=kr("rtc");function Bx(e,t=Vt){bl("ec",e,t)}function dt(e,t,n,i){let o;const a=n&&n[i];if(Ae(e)||Ot(e)){o=new Array(e.length);for(let u=0,c=e.length;ut(u,c,void 0,a&&a[c]));else{const u=Object.keys(e);o=new Array(u.length);for(let c=0,d=u.length;c{const a=i.fn(...o);return a&&(a.key=i.key),a}:i.fn)}return e}function Ce(e,t,n={},i,o){if(Yt.isCE||Yt.parent&&fo(Yt.parent)&&Yt.parent.isCE)return t!=="default"&&(n.name=t),xe("slot",n,i&&i());let a=e[t];a&&a._c&&(a._d=!1),I();const u=a&&nm(a(n)),c=lt(Be,{key:n.key||u&&u.key||`_${t}`},u||(i?i():[]),u&&e._===1?64:-2);return!o&&c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),a&&a._c&&(a._d=!0),c}function nm(e){return e.some(t=>Ga(t)?!(t.type===Fn||t.type===Be&&!nm(t.children)):!0)?e:null}function Ux(e,t){const n={};for(const i in e)n[t&&/[A-Z]/.test(i)?`on:${i}`:La(i)]=e[i];return n}const mc=e=>e?gm(e)?$l(e)||e.proxy:mc(e.parent):null,ho=Nt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>mc(e.parent),$root:e=>mc(e.root),$emit:e=>e.emit,$options:e=>Jc(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,qc(e.update)}),$nextTick:e=>e.n||(e.n=ci.bind(e.proxy)),$watch:e=>Ox.bind(e)}),qu=(e,t)=>e!==bt&&!e.__isScriptSetup&&Je(e,t),Hx={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:i,data:o,props:a,accessCache:u,type:c,appContext:d}=e;let h;if(t[0]!=="$"){const $=u[t];if($!==void 0)switch($){case 1:return i[t];case 2:return o[t];case 4:return n[t];case 3:return a[t]}else{if(qu(i,t))return u[t]=1,i[t];if(o!==bt&&Je(o,t))return u[t]=2,o[t];if((h=e.propsOptions[0])&&Je(h,t))return u[t]=3,a[t];if(n!==bt&&Je(n,t))return u[t]=4,n[t];yc&&(u[t]=0)}}const p=ho[t];let y,b;if(p)return t==="$attrs"&&mn(e.attrs,"get",""),p(e);if((y=c.__cssModules)&&(y=y[t]))return y;if(n!==bt&&Je(n,t))return u[t]=4,n[t];if(b=d.config.globalProperties,Je(b,t))return b[t]},set({_:e},t,n){const{data:i,setupState:o,ctx:a}=e;return qu(o,t)?(o[t]=n,!0):i!==bt&&Je(i,t)?(i[t]=n,!0):Je(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(a[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:i,appContext:o,propsOptions:a}},u){let c;return!!n[u]||e!==bt&&Je(e,u)||qu(t,u)||(c=a[0])&&Je(c,u)||Je(i,u)||Je(ho,u)||Je(o.config.globalProperties,u)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Je(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Dv(e){return Ae(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let yc=!0;function Kx(e){const t=Jc(e),n=e.proxy,i=e.ctx;yc=!1,t.beforeCreate&&$v(t.beforeCreate,e,"bc");const{data:o,computed:a,methods:u,watch:c,provide:d,inject:h,created:p,beforeMount:y,mounted:b,beforeUpdate:$,updated:A,activated:k,deactivated:L,beforeDestroy:M,beforeUnmount:le,destroyed:re,unmounted:j,render:X,renderTracked:te,renderTriggered:se,errorCaptured:Q,serverPrefetch:ve,expose:pe,inheritAttrs:we,components:F,directives:ce,filters:ke}=t;if(h&&Vx(h,i,null),u)for(const _e in u){const De=u[_e];We(De)&&(i[_e]=De.bind(n))}if(o){const _e=o.call(n,n);gt(_e)&&(e.data=Bs(_e))}if(yc=!0,a)for(const _e in a){const De=a[_e],Ze=We(De)?De.bind(n,n):We(De.get)?De.get.bind(n,n):Rn,ee=!We(De)&&We(De.set)?De.set.bind(n):Rn,Te=N({get:Ze,set:ee});Object.defineProperty(i,_e,{enumerable:!0,configurable:!0,get:()=>Te.value,set:de=>Te.value=de})}if(c)for(const _e in c)rm(c[_e],i,n,_e);if(d){const _e=We(d)?d.call(n):d;Reflect.ownKeys(_e).forEach(De=>{Si(De,_e[De])})}p&&$v(p,e,"c");function Se(_e,De){Ae(De)?De.forEach(Ze=>_e(Ze.bind(n))):De&&_e(De.bind(n))}if(Se(kx,y),Se(xi,b),Se(Rx,$),Se(Yx,A),Se(Ix,k),Se(Ex,L),Se(Bx,Q),Se(Wx,te),Se(Fx,se),Se(tm,le),Se(Mo,j),Se(Nx,ve),Ae(pe))if(pe.length){const _e=e.exposed||(e.exposed={});pe.forEach(De=>{Object.defineProperty(_e,De,{get:()=>n[De],set:Ze=>n[De]=Ze})})}else e.exposed||(e.exposed={});X&&e.render===Rn&&(e.render=X),we!=null&&(e.inheritAttrs=we),F&&(e.components=F),ce&&(e.directives=ce)}function Vx(e,t,n=Rn){Ae(e)&&(e=_c(e));for(const i in e){const o=e[i];let a;gt(o)?"default"in o?a=Pr(o.from||i,o.default,!0):a=Pr(o.from||i):a=Pr(o),It(a)?Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>a.value,set:u=>a.value=u}):t[i]=a}}function $v(e,t,n){Nn(Ae(e)?e.map(i=>i.bind(t.proxy)):e.bind(t.proxy),t,n)}function rm(e,t,n,i){const o=i.includes(".")?Zg(n,i):()=>n[i];if(Ot(e)){const a=t[e];We(a)&&Bt(o,a)}else if(We(e))Bt(o,e.bind(n));else if(gt(e))if(Ae(e))e.forEach(a=>rm(a,t,n,i));else{const a=We(e.handler)?e.handler.bind(n):t[e.handler];We(a)&&Bt(o,a,e)}}function Jc(e){const t=e.type,{mixins:n,extends:i}=t,{mixins:o,optionsCache:a,config:{optionMergeStrategies:u}}=e.appContext,c=a.get(t);let d;return c?d=c:!o.length&&!n&&!i?d=t:(d={},o.length&&o.forEach(h=>qa(d,h,u,!0)),qa(d,t,u)),gt(t)&&a.set(t,d),d}function qa(e,t,n,i=!1){const{mixins:o,extends:a}=t;a&&qa(e,a,n,!0),o&&o.forEach(u=>qa(e,u,n,!0));for(const u in t)if(!(i&&u==="expose")){const c=zx[u]||n&&n[u];e[u]=c?c(e[u],t[u]):t[u]}return e}const zx={data:Cv,props:xv,emits:xv,methods:oo,computed:oo,beforeCreate:an,created:an,beforeMount:an,mounted:an,beforeUpdate:an,updated:an,beforeDestroy:an,beforeUnmount:an,destroyed:an,unmounted:an,activated:an,deactivated:an,errorCaptured:an,serverPrefetch:an,components:oo,directives:oo,watch:qx,provide:Cv,inject:jx};function Cv(e,t){return t?e?function(){return Nt(We(e)?e.call(this,this):e,We(t)?t.call(this,this):t)}:t:e}function jx(e,t){return oo(_c(e),_c(t))}function _c(e){if(Ae(e)){const t={};for(let n=0;n1)return n&&We(t)?t.call(i&&i.proxy):t}}const im=Object.create(null),bc=()=>Object.create(im),om=e=>Object.getPrototypeOf(e)===im;function Xx(e,t,n,i=!1){const o={},a=bc();e.propsDefaults=Object.create(null),am(e,t,o,a);for(const u in e.propsOptions[0])u in o||(o[u]=void 0);n?e.props=i?o:sx(o):e.type.props?e.props=o:e.props=a,e.attrs=a}function Jx(e,t,n,i){const{props:o,attrs:a,vnode:{patchFlag:u}}=e,c=Qe(o),[d]=e.propsOptions;let h=!1;if((i||u>0)&&!(u&16)){if(u&8){const p=e.vnode.dynamicProps;for(let y=0;y{d=!0;const[b,$]=lm(y,t,!0);Nt(u,b),$&&c.push(...$)};!n&&t.mixins.length&&t.mixins.forEach(p),e.extends&&p(e.extends),e.mixins&&e.mixins.forEach(p)}if(!a&&!d)return gt(e)&&i.set(e,di),di;if(Ae(a))for(let p=0;p-1,$[1]=k<0||A-1||Je($,"default"))&&c.push(y)}}}const h=[u,c];return gt(e)&&i.set(e,h),h}function Sv(e){return e[0]!=="$"&&!co(e)}function Tv(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function Ov(e,t){return Tv(e)===Tv(t)}function Av(e,t){return Ae(t)?t.findIndex(n=>Ov(n,e)):We(t)&&Ov(t,e)?0:-1}const um=e=>e[0]==="_"||e==="$stable",Qc=e=>Ae(e)?e.map(lr):[lr(e)],Qx=(e,t,n)=>{if(t._n)return t;const i=Ee((...o)=>Qc(t(...o)),n);return i._c=!1,i},cm=(e,t,n)=>{const i=e._ctx;for(const o in e){if(um(o))continue;const a=e[o];if(We(a))t[o]=Qx(o,a,i);else if(a!=null){const u=Qc(a);t[o]=()=>u}}},fm=(e,t)=>{const n=Qc(t);e.slots.default=()=>n},eS=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=Qe(t),bg(e.slots,"_",n)):cm(t,e.slots=bc())}else e.slots=bc(),t&&fm(e,t)},tS=(e,t,n)=>{const{vnode:i,slots:o}=e;let a=!0,u=bt;if(i.shapeFlag&32){const c=t._;c?n&&c===1?a=!1:(Nt(o,t),!n&&c===1&&delete o._):(a=!t.$stable,cm(t,o)),u=t}else t&&(fm(e,t),u={default:1});if(a)for(const c in o)!um(c)&&u[c]==null&&delete o[c]};function Dc(e,t,n,i,o=!1){if(Ae(e)){e.forEach((b,$)=>Dc(b,t&&(Ae(t)?t[$]:t),n,i,o));return}if(fo(i)&&!o)return;const a=i.shapeFlag&4?$l(i.component)||i.component.proxy:i.el,u=o?null:a,{i:c,r:d}=e,h=t&&t.r,p=c.refs===bt?c.refs={}:c.refs,y=c.setupState;if(h!=null&&h!==d&&(Ot(h)?(p[h]=null,Je(y,h)&&(y[h]=null)):It(h)&&(h.value=null)),We(d))os(d,c,12,[u,p]);else{const b=Ot(d),$=It(d);if(b||$){const A=()=>{if(e.f){const k=b?Je(y,d)?y[d]:p[d]:d.value;o?Ae(k)&&Nc(k,a):Ae(k)?k.includes(a)||k.push(a):b?(p[d]=[a],Je(y,d)&&(y[d]=p[d])):(d.value=[a],e.k&&(p[e.k]=d.value))}else b?(p[d]=u,Je(y,d)&&(y[d]=u)):$&&(d.value=u,e.k&&(p[e.k]=u))};u?(A.id=-1,vn(A,n)):A()}}}const vn=xx;function nS(e){return rS(e)}function rS(e,t){const n=wg();n.__VUE__=!0;const{insert:i,remove:o,patchProp:a,createElement:u,createText:c,createComment:d,setText:h,setElementText:p,parentNode:y,nextSibling:b,setScopeId:$=Rn,insertStaticContent:A}=e,k=(w,x,E,B=null,Y=null,ne=null,ie=void 0,q=null,J=!!x.dynamicChildren)=>{if(w===x)return;w&&!Ms(w,x)&&(B=ut(w),de(w,Y,ne,!0),w=null),x.patchFlag===-2&&(J=!1,x.dynamicChildren=null);const{type:z,ref:oe,shapeFlag:ge}=x;switch(z){case wl:L(w,x,E,B);break;case Fn:M(w,x,E,B);break;case Zu:w==null&&le(x,E,B,ie);break;case Be:F(w,x,E,B,Y,ne,ie,q,J);break;default:ge&1?X(w,x,E,B,Y,ne,ie,q,J):ge&6?ce(w,x,E,B,Y,ne,ie,q,J):(ge&64||ge&128)&&z.process(w,x,E,B,Y,ne,ie,q,J,Ft)}oe!=null&&Y&&Dc(oe,w&&w.ref,ne,x||w,!x)},L=(w,x,E,B)=>{if(w==null)i(x.el=c(x.children),E,B);else{const Y=x.el=w.el;x.children!==w.children&&h(Y,x.children)}},M=(w,x,E,B)=>{w==null?i(x.el=d(x.children||""),E,B):x.el=w.el},le=(w,x,E,B)=>{[w.el,w.anchor]=A(w.children,x,E,B,w.el,w.anchor)},re=({el:w,anchor:x},E,B)=>{let Y;for(;w&&w!==x;)Y=b(w),i(w,E,B),w=Y;i(x,E,B)},j=({el:w,anchor:x})=>{let E;for(;w&&w!==x;)E=b(w),o(w),w=E;o(x)},X=(w,x,E,B,Y,ne,ie,q,J)=>{x.type==="svg"?ie="svg":x.type==="math"&&(ie="mathml"),w==null?te(x,E,B,Y,ne,ie,q,J):ve(w,x,Y,ne,ie,q,J)},te=(w,x,E,B,Y,ne,ie,q)=>{let J,z;const{props:oe,shapeFlag:ge,transition:fe,dirs:$e}=w;if(J=w.el=u(w.type,ne,oe&&oe.is,oe),ge&8?p(J,w.children):ge&16&&Q(w.children,J,null,B,Y,Gu(w,ne),ie,q),$e&&Cs(w,null,B,"created"),se(J,w,w.scopeId,ie,B),oe){for(const Ue in oe)Ue!=="value"&&!co(Ue)&&a(J,Ue,null,oe[Ue],ne,w.children,B,Y,et);"value"in oe&&a(J,"value",null,oe.value,ne),(z=oe.onVnodeBeforeMount)&&ar(z,B,w)}$e&&Cs(w,null,B,"beforeMount");const Me=sS(Y,fe);Me&&fe.beforeEnter(J),i(J,x,E),((z=oe&&oe.onVnodeMounted)||Me||$e)&&vn(()=>{z&&ar(z,B,w),Me&&fe.enter(J),$e&&Cs(w,null,B,"mounted")},Y)},se=(w,x,E,B,Y)=>{if(E&&$(w,E),B)for(let ne=0;ne{for(let z=J;z{const q=x.el=w.el;let{patchFlag:J,dynamicChildren:z,dirs:oe}=x;J|=w.patchFlag&16;const ge=w.props||bt,fe=x.props||bt;let $e;if(E&&xs(E,!1),($e=fe.onVnodeBeforeUpdate)&&ar($e,E,x,w),oe&&Cs(x,w,E,"beforeUpdate"),E&&xs(E,!0),z?pe(w.dynamicChildren,z,q,E,B,Gu(x,Y),ne):ie||De(w,x,q,null,E,B,Gu(x,Y),ne,!1),J>0){if(J&16)we(q,x,ge,fe,E,B,Y);else if(J&2&&ge.class!==fe.class&&a(q,"class",null,fe.class,Y),J&4&&a(q,"style",ge.style,fe.style,Y),J&8){const Me=x.dynamicProps;for(let Ue=0;Ue{$e&&ar($e,E,x,w),oe&&Cs(x,w,E,"updated")},B)},pe=(w,x,E,B,Y,ne,ie)=>{for(let q=0;q{if(E!==B){if(E!==bt)for(const q in E)!co(q)&&!(q in B)&&a(w,q,E[q],null,ie,x.children,Y,ne,et);for(const q in B){if(co(q))continue;const J=B[q],z=E[q];J!==z&&q!=="value"&&a(w,q,z,J,ie,x.children,Y,ne,et)}"value"in B&&a(w,"value",E.value,B.value,ie)}},F=(w,x,E,B,Y,ne,ie,q,J)=>{const z=x.el=w?w.el:c(""),oe=x.anchor=w?w.anchor:c("");let{patchFlag:ge,dynamicChildren:fe,slotScopeIds:$e}=x;$e&&(q=q?q.concat($e):$e),w==null?(i(z,E,B),i(oe,E,B),Q(x.children||[],E,oe,Y,ne,ie,q,J)):ge>0&&ge&64&&fe&&w.dynamicChildren?(pe(w.dynamicChildren,fe,E,Y,ne,ie,q),(x.key!=null||Y&&x===Y.subTree)&&dm(w,x,!0)):De(w,x,E,oe,Y,ne,ie,q,J)},ce=(w,x,E,B,Y,ne,ie,q,J)=>{x.slotScopeIds=q,w==null?x.shapeFlag&512?Y.ctx.activate(x,E,B,ie,J):ke(x,E,B,Y,ne,ie,J):me(w,x,J)},ke=(w,x,E,B,Y,ne,ie)=>{const q=w.component=fS(w,B,Y);if(_l(w)&&(q.ctx.renderer=Ft),hS(q),q.asyncDep){if(Y&&Y.registerDep(q,Se),!w.el){const J=q.subTree=xe(Fn);M(null,J,x,E)}}else Se(q,w,x,E,Y,ne,ie)},me=(w,x,E)=>{const B=x.component=w.component;if(bx(w,x,E))if(B.asyncDep&&!B.asyncResolved){_e(B,x,E);return}else B.next=x,vx(B.update),B.effect.dirty=!0,B.update();else x.el=w.el,B.vnode=x},Se=(w,x,E,B,Y,ne,ie)=>{const q=()=>{if(w.isMounted){let{next:oe,bu:ge,u:fe,parent:$e,vnode:Me}=w;{const tn=hm(w);if(tn){oe&&(oe.el=Me.el,_e(w,oe,ie)),tn.asyncDep.then(()=>{w.isUnmounted||q()});return}}let Ue=oe,tt;xs(w,!1),oe?(oe.el=Me.el,_e(w,oe,ie)):oe=Me,ge&&ka(ge),(tt=oe.props&&oe.props.onVnodeBeforeUpdate)&&ar(tt,$e,oe,Me),xs(w,!0);const ot=zu(w),Lt=w.subTree;w.subTree=ot,k(Lt,ot,y(Lt.el),ut(Lt),w,Y,ne),oe.el=ot.el,Ue===null&&wx(w,ot.el),fe&&vn(fe,Y),(tt=oe.props&&oe.props.onVnodeUpdated)&&vn(()=>ar(tt,$e,oe,Me),Y)}else{let oe;const{el:ge,props:fe}=x,{bm:$e,m:Me,parent:Ue}=w,tt=fo(x);if(xs(w,!1),$e&&ka($e),!tt&&(oe=fe&&fe.onVnodeBeforeMount)&&ar(oe,Ue,x),xs(w,!0),ge&&At){const ot=()=>{w.subTree=zu(w),At(ge,w.subTree,w,Y,null)};tt?x.type.__asyncLoader().then(()=>!w.isUnmounted&&ot()):ot()}else{const ot=w.subTree=zu(w);k(null,ot,E,B,w,Y,ne),x.el=ot.el}if(Me&&vn(Me,Y),!tt&&(oe=fe&&fe.onVnodeMounted)){const ot=x;vn(()=>ar(oe,Ue,ot),Y)}(x.shapeFlag&256||Ue&&fo(Ue.vnode)&&Ue.vnode.shapeFlag&256)&&w.a&&vn(w.a,Y),w.isMounted=!0,x=E=B=null}},J=w.effect=new Wc(q,Rn,()=>qc(z),w.scope),z=w.update=()=>{J.dirty&&J.run()};z.id=w.uid,xs(w,!0),z()},_e=(w,x,E)=>{x.component=w;const B=w.vnode.props;w.vnode=x,w.next=null,Jx(w,x.props,B,E),tS(w,x.children,E),cs(),yv(w),fs()},De=(w,x,E,B,Y,ne,ie,q,J=!1)=>{const z=w&&w.children,oe=w?w.shapeFlag:0,ge=x.children,{patchFlag:fe,shapeFlag:$e}=x;if(fe>0){if(fe&128){ee(z,ge,E,B,Y,ne,ie,q,J);return}else if(fe&256){Ze(z,ge,E,B,Y,ne,ie,q,J);return}}$e&8?(oe&16&&et(z,Y,ne),ge!==z&&p(E,ge)):oe&16?$e&16?ee(z,ge,E,B,Y,ne,ie,q,J):et(z,Y,ne,!0):(oe&8&&p(E,""),$e&16&&Q(ge,E,B,Y,ne,ie,q,J))},Ze=(w,x,E,B,Y,ne,ie,q,J)=>{w=w||di,x=x||di;const z=w.length,oe=x.length,ge=Math.min(z,oe);let fe;for(fe=0;feoe?et(w,Y,ne,!0,!1,ge):Q(x,E,B,Y,ne,ie,q,J,ge)},ee=(w,x,E,B,Y,ne,ie,q,J)=>{let z=0;const oe=x.length;let ge=w.length-1,fe=oe-1;for(;z<=ge&&z<=fe;){const $e=w[z],Me=x[z]=J?ts(x[z]):lr(x[z]);if(Ms($e,Me))k($e,Me,E,null,Y,ne,ie,q,J);else break;z++}for(;z<=ge&&z<=fe;){const $e=w[ge],Me=x[fe]=J?ts(x[fe]):lr(x[fe]);if(Ms($e,Me))k($e,Me,E,null,Y,ne,ie,q,J);else break;ge--,fe--}if(z>ge){if(z<=fe){const $e=fe+1,Me=$efe)for(;z<=ge;)de(w[z],Y,ne,!0),z++;else{const $e=z,Me=z,Ue=new Map;for(z=Me;z<=fe;z++){const St=x[z]=J?ts(x[z]):lr(x[z]);St.key!=null&&Ue.set(St.key,z)}let tt,ot=0;const Lt=fe-Me+1;let tn=!1,jn=0;const yn=new Array(Lt);for(z=0;z=Lt){de(St,Y,ne,!0);continue}let K;if(St.key!=null)K=Ue.get(St.key);else for(tt=Me;tt<=fe;tt++)if(yn[tt-Me]===0&&Ms(St,x[tt])){K=tt;break}K===void 0?de(St,Y,ne,!0):(yn[K-Me]=z+1,K>=jn?jn=K:tn=!0,k(St,x[K],E,null,Y,ne,ie,q,J),ot++)}const qn=tn?iS(yn):di;for(tt=qn.length-1,z=Lt-1;z>=0;z--){const St=Me+z,K=x[St],D=St+1{const{el:ne,type:ie,transition:q,children:J,shapeFlag:z}=w;if(z&6){Te(w.component.subTree,x,E,B);return}if(z&128){w.suspense.move(x,E,B);return}if(z&64){ie.move(w,x,E,Ft);return}if(ie===Be){i(ne,x,E);for(let ge=0;geq.enter(ne),Y);else{const{leave:ge,delayLeave:fe,afterLeave:$e}=q,Me=()=>i(ne,x,E),Ue=()=>{ge(ne,()=>{Me(),$e&&$e()})};fe?fe(ne,Me,Ue):Ue()}else i(ne,x,E)},de=(w,x,E,B=!1,Y=!1)=>{const{type:ne,props:ie,ref:q,children:J,dynamicChildren:z,shapeFlag:oe,patchFlag:ge,dirs:fe}=w;if(q!=null&&Dc(q,null,E,w,!0),oe&256){x.ctx.deactivate(w);return}const $e=oe&1&&fe,Me=!fo(w);let Ue;if(Me&&(Ue=ie&&ie.onVnodeBeforeUnmount)&&ar(Ue,x,w),oe&6)st(w.component,E,B);else{if(oe&128){w.suspense.unmount(E,B);return}$e&&Cs(w,null,x,"beforeUnmount"),oe&64?w.type.remove(w,x,E,Y,Ft,B):z&&(ne!==Be||ge>0&&ge&64)?et(z,x,E,!1,!0):(ne===Be&&ge&384||!Y&&oe&16)&&et(J,x,E),B&&mt(w)}(Me&&(Ue=ie&&ie.onVnodeUnmounted)||$e)&&vn(()=>{Ue&&ar(Ue,x,w),$e&&Cs(w,null,x,"unmounted")},E)},mt=w=>{const{type:x,el:E,anchor:B,transition:Y}=w;if(x===Be){Xe(E,B);return}if(x===Zu){j(w);return}const ne=()=>{o(E),Y&&!Y.persisted&&Y.afterLeave&&Y.afterLeave()};if(w.shapeFlag&1&&Y&&!Y.persisted){const{leave:ie,delayLeave:q}=Y,J=()=>ie(E,ne);q?q(w.el,ne,J):J()}else ne()},Xe=(w,x)=>{let E;for(;w!==x;)E=b(w),o(w),w=E;o(x)},st=(w,x,E)=>{const{bum:B,scope:Y,update:ne,subTree:ie,um:q}=w;B&&ka(B),Y.stop(),ne&&(ne.active=!1,de(ie,w,x,E)),q&&vn(q,x),vn(()=>{w.isUnmounted=!0},x),x&&x.pendingBranch&&!x.isUnmounted&&w.asyncDep&&!w.asyncResolved&&w.suspenseId===x.pendingId&&(x.deps--,x.deps===0&&x.resolve())},et=(w,x,E,B=!1,Y=!1,ne=0)=>{for(let ie=ne;iew.shapeFlag&6?ut(w.component.subTree):w.shapeFlag&128?w.suspense.next():b(w.anchor||w.el);let ct=!1;const xt=(w,x,E)=>{w==null?x._vnode&&de(x._vnode,null,null,!0):k(x._vnode||null,w,x,null,null,null,E),ct||(ct=!0,yv(),Kg(),ct=!1),x._vnode=w},Ft={p:k,um:de,m:Te,r:mt,mt:ke,mc:Q,pc:De,pbc:pe,n:ut,o:e};let Et,At;return t&&([Et,At]=t(Ft)),{render:xt,hydrate:Et,createApp:Zx(xt,Et)}}function Gu({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function xs({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function sS(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function dm(e,t,n=!1){const i=e.children,o=t.children;if(Ae(i)&&Ae(o))for(let a=0;a>1,e[n[c]]0&&(t[i]=n[a-1]),n[a]=i)}}for(a=n.length,u=n[a-1];a-- >0;)n[a]=u,u=t[u];return n}function hm(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:hm(t)}const oS=e=>e.__isTeleport,Be=Symbol.for("v-fgt"),wl=Symbol.for("v-txt"),Fn=Symbol.for("v-cmt"),Zu=Symbol.for("v-stc"),po=[];let er=null;function I(e=!1){po.push(er=e?null:[])}function aS(){po.pop(),er=po[po.length-1]||null}let $o=1;function Mv(e){$o+=e}function vm(e){return e.dynamicChildren=$o>0?er||di:null,aS(),$o>0&&er&&er.push(e),e}function H(e,t,n,i,o,a){return vm(O(e,t,n,i,o,a,!0))}function lt(e,t,n,i,o){return vm(xe(e,t,n,i,o,!0))}function Ga(e){return e?e.__v_isVNode===!0:!1}function Ms(e,t){return e.type===t.type&&e.key===t.key}const pm=({key:e})=>e??null,Na=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Ot(e)||It(e)||We(e)?{i:Yt,r:e,k:t,f:!!n}:e:null);function O(e,t=null,n=null,i=0,o=null,a=e===Be?0:1,u=!1,c=!1){const d={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&pm(t),ref:t&&Na(t),scopeId:jg,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:i,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Yt};return c?(ef(d,n),a&128&&e.normalize(d)):n&&(d.shapeFlag|=Ot(n)?8:16),$o>0&&!u&&er&&(d.patchFlag>0||a&6)&&d.patchFlag!==32&&er.push(d),d}const xe=lS;function lS(e,t=null,n=null,i=0,o=null,a=!1){if((!e||e===qg)&&(e=Fn),Ga(e)){const c=ls(e,t,!0);return n&&ef(c,n),$o>0&&!a&&er&&(c.shapeFlag&6?er[er.indexOf(e)]=c:er.push(c)),c.patchFlag|=-2,c}if(yS(e)&&(e=e.__vccOpts),t){t=xn(t);let{class:c,style:d}=t;c&&!Ot(c)&&(t.class=Le(c)),gt(d)&&(Rg(d)&&!Ae(d)&&(d=Nt({},d)),t.style=dr(d))}const u=Ot(e)?1:Cx(e)?128:oS(e)?64:gt(e)?4:We(e)?2:0;return O(e,t,n,i,o,u,a,!0)}function xn(e){return e?Rg(e)||om(e)?Nt({},e):e:null}function ls(e,t,n=!1){const{props:i,ref:o,patchFlag:a,children:u}=e,c=t?Bn(i||{},t):i;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&pm(c),ref:t&&t.ref?n&&o?Ae(o)?o.concat(Na(t)):[o,Na(t)]:Na(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:u,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Be?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ls(e.ssContent),ssFallback:e.ssFallback&&ls(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Wn(e=" ",t=0){return xe(wl,null,e,t)}function Re(e="",t=!1){return t?(I(),lt(Fn,null,e)):xe(Fn,null,e)}function lr(e){return e==null||typeof e=="boolean"?xe(Fn):Ae(e)?xe(Be,null,e.slice()):typeof e=="object"?ts(e):xe(wl,null,String(e))}function ts(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ls(e)}function ef(e,t){let n=0;const{shapeFlag:i}=e;if(t==null)t=null;else if(Ae(t))n=16;else if(typeof t=="object")if(i&65){const o=t.default;o&&(o._c&&(o._d=!1),ef(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!om(t)?t._ctx=Yt:o===3&&Yt&&(Yt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else We(t)?(t={default:t,_ctx:Yt},n=32):(t=String(t),i&64?(n=16,t=[Wn(t)]):n=8);e.children=t,e.shapeFlag|=n}function Bn(...e){const t={};for(let n=0;nVt||Yt;let Za,$c;{const e=wg(),t=(n,i)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(i),a=>{o.length>1?o.forEach(u=>u(a)):o[0](a)}};Za=t("__VUE_INSTANCE_SETTERS__",n=>Vt=n),$c=t("__VUE_SSR_SETTERS__",n=>Dl=n)}const Po=e=>{const t=Vt;return Za(e),e.scope.on(),()=>{e.scope.off(),Za(t)}},Pv=()=>{Vt&&Vt.scope.off(),Za(null)};function gm(e){return e.vnode.shapeFlag&4}let Dl=!1;function hS(e,t=!1){t&&$c(t);const{props:n,children:i}=e.vnode,o=gm(e);Xx(e,n,o,t),eS(e,i);const a=o?vS(e,t):void 0;return t&&$c(!1),a}function vS(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Hx);const{setup:i}=n;if(i){const o=e.setupContext=i.length>1?gS(e):null,a=Po(e);cs();const u=os(i,e,0,[e.props,o]);if(fs(),a(),mg(u)){if(u.then(Pv,Pv),t)return u.then(c=>{Iv(e,c,t)}).catch(c=>{ml(c,e,0)});e.asyncDep=u}else Iv(e,u,t)}else mm(e,t)}function Iv(e,t,n){We(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:gt(t)&&(e.setupState=Fg(t)),mm(e,n)}let Ev;function mm(e,t,n){const i=e.type;if(!e.render){if(!t&&Ev&&!i.render){const o=i.template||Jc(e).template;if(o){const{isCustomElement:a,compilerOptions:u}=e.appContext.config,{delimiters:c,compilerOptions:d}=i,h=Nt(Nt({isCustomElement:a,delimiters:c},u),d);i.render=Ev(o,h)}}e.render=i.render||Rn}{const o=Po(e);cs();try{Kx(e)}finally{fs(),o()}}}const pS={get(e,t){return mn(e,"get",""),e[t]}};function gS(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,pS),slots:e.slots,emit:e.emit,expose:t}}function $l(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Fg(ix(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in ho)return ho[n](e)},has(t,n){return n in t||n in ho}}))}function mS(e,t=!0){return We(e)?e.displayName||e.name:e.name||t&&e.__name}function yS(e){return We(e)&&"__vccOpts"in e}const N=(e,t)=>ox(e,t,Dl);function _S(e,t,n){const i=arguments.length;return i===2?gt(t)&&!Ae(t)?Ga(t)?xe(e,null,[t]):xe(e,t):xe(e,null,t):(i>3?n=Array.prototype.slice.call(arguments,2):i===3&&Ga(n)&&(n=[n]),xe(e,t,n))}const bS="3.4.23";/** -* @vue/runtime-dom v3.4.23 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/const wS="http://www.w3.org/2000/svg",DS="http://www.w3.org/1998/Math/MathML",ns=typeof document<"u"?document:null,Lv=ns&&ns.createElement("template"),$S={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,i)=>{const o=t==="svg"?ns.createElementNS(wS,e):t==="mathml"?ns.createElementNS(DS,e):ns.createElement(e,n?{is:n}:void 0);return e==="select"&&i&&i.multiple!=null&&o.setAttribute("multiple",i.multiple),o},createText:e=>ns.createTextNode(e),createComment:e=>ns.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ns.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,i,o,a){const u=n?n.previousSibling:t.lastChild;if(o&&(o===a||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===a||!(o=o.nextSibling)););else{Lv.innerHTML=i==="svg"?`${e}`:i==="mathml"?`${e}`:e;const c=Lv.content;if(i==="svg"||i==="mathml"){const d=c.firstChild;for(;d.firstChild;)c.appendChild(d.firstChild);c.removeChild(d)}t.insertBefore(c,n)}return[u?u.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Zr="transition",Ji="animation",Co=Symbol("_vtc"),Cl=(e,{slots:t})=>_S(Px,CS(e),t);Cl.displayName="Transition";const ym={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};Cl.props=Nt({},Xg,ym);const Ss=(e,t=[])=>{Ae(e)?e.forEach(n=>n(...t)):e&&e(...t)},kv=e=>e?Ae(e)?e.some(t=>t.length>1):e.length>1:!1;function CS(e){const t={};for(const F in e)F in ym||(t[F]=e[F]);if(e.css===!1)return t;const{name:n="v",type:i,duration:o,enterFromClass:a=`${n}-enter-from`,enterActiveClass:u=`${n}-enter-active`,enterToClass:c=`${n}-enter-to`,appearFromClass:d=a,appearActiveClass:h=u,appearToClass:p=c,leaveFromClass:y=`${n}-leave-from`,leaveActiveClass:b=`${n}-leave-active`,leaveToClass:$=`${n}-leave-to`}=e,A=xS(o),k=A&&A[0],L=A&&A[1],{onBeforeEnter:M,onEnter:le,onEnterCancelled:re,onLeave:j,onLeaveCancelled:X,onBeforeAppear:te=M,onAppear:se=le,onAppearCancelled:Q=re}=t,ve=(F,ce,ke)=>{Ts(F,ce?p:c),Ts(F,ce?h:u),ke&&ke()},pe=(F,ce)=>{F._isLeaving=!1,Ts(F,y),Ts(F,$),Ts(F,b),ce&&ce()},we=F=>(ce,ke)=>{const me=F?se:le,Se=()=>ve(ce,F,ke);Ss(me,[ce,Se]),Rv(()=>{Ts(ce,F?d:a),Xr(ce,F?p:c),kv(me)||Yv(ce,i,k,Se)})};return Nt(t,{onBeforeEnter(F){Ss(M,[F]),Xr(F,a),Xr(F,u)},onBeforeAppear(F){Ss(te,[F]),Xr(F,d),Xr(F,h)},onEnter:we(!1),onAppear:we(!0),onLeave(F,ce){F._isLeaving=!0;const ke=()=>pe(F,ce);Xr(F,y),OS(),Xr(F,b),Rv(()=>{F._isLeaving&&(Ts(F,y),Xr(F,$),kv(j)||Yv(F,i,L,ke))}),Ss(j,[F,ke])},onEnterCancelled(F){ve(F,!1),Ss(re,[F])},onAppearCancelled(F){ve(F,!0),Ss(Q,[F])},onLeaveCancelled(F){pe(F),Ss(X,[F])}})}function xS(e){if(e==null)return null;if(gt(e))return[Xu(e.enter),Xu(e.leave)];{const t=Xu(e);return[t,t]}}function Xu(e){return OC(e)}function Xr(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Co]||(e[Co]=new Set)).add(t)}function Ts(e,t){t.split(/\s+/).forEach(i=>i&&e.classList.remove(i));const n=e[Co];n&&(n.delete(t),n.size||(e[Co]=void 0))}function Rv(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let SS=0;function Yv(e,t,n,i){const o=e._endId=++SS,a=()=>{o===e._endId&&i()};if(n)return setTimeout(a,n);const{type:u,timeout:c,propCount:d}=TS(e,t);if(!u)return i();const h=u+"end";let p=0;const y=()=>{e.removeEventListener(h,b),a()},b=$=>{$.target===e&&++p>=d&&y()};setTimeout(()=>{p(n[A]||"").split(", "),o=i(`${Zr}Delay`),a=i(`${Zr}Duration`),u=Nv(o,a),c=i(`${Ji}Delay`),d=i(`${Ji}Duration`),h=Nv(c,d);let p=null,y=0,b=0;t===Zr?u>0&&(p=Zr,y=u,b=a.length):t===Ji?h>0&&(p=Ji,y=h,b=d.length):(y=Math.max(u,h),p=y>0?u>h?Zr:Ji:null,b=p?p===Zr?a.length:d.length:0);const $=p===Zr&&/\b(transform|all)(,|$)/.test(i(`${Zr}Property`).toString());return{type:p,timeout:y,propCount:b,hasTransform:$}}function Nv(e,t){for(;e.lengthFv(n)+Fv(e[i])))}function Fv(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function OS(){return document.body.offsetHeight}function AS(e,t,n){const i=e[Co];i&&(t=(t?[t,...i]:[...i]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Xa=Symbol("_vod"),_m=Symbol("_vsh"),Ja={beforeMount(e,{value:t},{transition:n}){e[Xa]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Qi(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:i}){!t!=!n&&(i?t?(i.beforeEnter(e),Qi(e,!0),i.enter(e)):i.leave(e,()=>{Qi(e,!1)}):Qi(e,t))},beforeUnmount(e,{value:t}){Qi(e,t)}};function Qi(e,t){e.style.display=t?e[Xa]:"none",e[_m]=!t}const MS=Symbol(""),PS=/(^|;)\s*display\s*:/;function IS(e,t,n){const i=e.style,o=Ot(n);let a=!1;if(n&&!o){if(t)if(Ot(t))for(const u of t.split(";")){const c=u.slice(0,u.indexOf(":")).trim();n[c]==null&&Fa(i,c,"")}else for(const u in t)n[u]==null&&Fa(i,u,"");for(const u in n)u==="display"&&(a=!0),Fa(i,u,n[u])}else if(o){if(t!==n){const u=i[MS];u&&(n+=";"+u),i.cssText=n,a=PS.test(n)}}else t&&e.removeAttribute("style");Xa in e&&(e[Xa]=a?i.display:"",e[_m]&&(i.display="none"))}const Wv=/\s*!important$/;function Fa(e,t,n){if(Ae(n))n.forEach(i=>Fa(e,t,i));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const i=ES(e,t);Wv.test(n)?e.setProperty(Ws(i),n.replace(Wv,""),"important"):e[i]=n}}const Bv=["Webkit","Moz","ms"],Ju={};function ES(e,t){const n=Ju[t];if(n)return n;let i=pr(t);if(i!=="filter"&&i in e)return Ju[t]=i;i=pl(i);for(let o=0;oQu||(FS.then(()=>Qu=0),Qu=Date.now());function BS(e,t){const n=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=n.attached)return;Nn(US(i,n.value),t,5,[i])};return n.value=e,n.attached=WS(),n}function US(e,t){if(Ae(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(i=>o=>!o._stopped&&i&&i(o))}else return t}const Vv=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,HS=(e,t,n,i,o,a,u,c,d)=>{const h=o==="svg";t==="class"?AS(e,i,h):t==="style"?IS(e,n,i):dl(t)?Yc(t)||YS(e,t,n,i,u):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):KS(e,t,i,h))?kS(e,t,i,a,u,c,d):(t==="true-value"?e._trueValue=i:t==="false-value"&&(e._falseValue=i),LS(e,t,i,h))};function KS(e,t,n,i){if(i)return!!(t==="innerHTML"||t==="textContent"||t in e&&Vv(t)&&We(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return Vv(t)&&Ot(n)?!1:t in e}const zv=e=>{const t=e.props["onUpdate:modelValue"]||!1;return Ae(t)?n=>ka(t,n):t};function VS(e){e.target.composing=!0}function jv(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const ec=Symbol("_assign"),zS={created(e,{modifiers:{lazy:t,trim:n,number:i}},o){e[ec]=zv(o);const a=i||o.props&&o.props.type==="number";li(e,t?"change":"input",u=>{if(u.target.composing)return;let c=e.value;n&&(c=c.trim()),a&&(c=cc(c)),e[ec](c)}),n&&li(e,"change",()=>{e.value=e.value.trim()}),t||(li(e,"compositionstart",VS),li(e,"compositionend",jv),li(e,"change",jv))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:i,number:o}},a){if(e[ec]=zv(a),e.composing)return;const u=(o||e.type==="number")&&!/^0\d/.test(e.value)?cc(e.value):e.value,c=t??"";u!==c&&(document.activeElement===e&&e.type!=="range"&&(n||i&&e.value.trim()===c)||(e.value=c))}},jS=["ctrl","shift","alt","meta"],qS={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>jS.some(n=>e[`${n}Key`]&&!t.includes(n))},hr=(e,t)=>{const n=e._withMods||(e._withMods={}),i=t.join(".");return n[i]||(n[i]=(o,...a)=>{for(let u=0;u{const n=e._withKeys||(e._withKeys={}),i=t.join(".");return n[i]||(n[i]=o=>{if(!("key"in o))return;const a=Ws(o.key);if(t.some(u=>u===a||GS[u]===a))return e(o)})},ZS=Nt({patchProp:HS},$S);let Gv;function XS(){return Gv||(Gv=nS(ZS))}const JS=(...e)=>{const t=XS().createApp(...e),{mount:n}=t;return t.mount=i=>{const o=eT(i);if(!o)return;const a=t._component;!We(a)&&!a.render&&!a.template&&(a.template=o.innerHTML),o.innerHTML="";const u=n(o,!1,QS(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),u},t};function QS(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function eT(e){return Ot(e)?document.querySelector(e):e}var pn="top",Vn="bottom",zn="right",gn="left",tf="auto",Io=[pn,Vn,zn,gn],_i="start",xo="end",tT="clippingParents",bm="viewport",eo="popper",nT="reference",Zv=Io.reduce(function(e,t){return e.concat([t+"-"+_i,t+"-"+xo])},[]),wm=[].concat(Io,[tf]).reduce(function(e,t){return e.concat([t,t+"-"+_i,t+"-"+xo])},[]),rT="beforeRead",sT="read",iT="afterRead",oT="beforeMain",aT="main",lT="afterMain",uT="beforeWrite",cT="write",fT="afterWrite",dT=[rT,sT,iT,oT,aT,lT,uT,cT,fT];function gr(e){return e?(e.nodeName||"").toLowerCase():null}function Sn(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Ys(e){var t=Sn(e).Element;return e instanceof t||e instanceof Element}function Un(e){var t=Sn(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function nf(e){if(typeof ShadowRoot>"u")return!1;var t=Sn(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function hT(e){var t=e.state;Object.keys(t.elements).forEach(function(n){var i=t.styles[n]||{},o=t.attributes[n]||{},a=t.elements[n];!Un(a)||!gr(a)||(Object.assign(a.style,i),Object.keys(o).forEach(function(u){var c=o[u];c===!1?a.removeAttribute(u):a.setAttribute(u,c===!0?"":c)}))})}function vT(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(i){var o=t.elements[i],a=t.attributes[i]||{},u=Object.keys(t.styles.hasOwnProperty(i)?t.styles[i]:n[i]),c=u.reduce(function(d,h){return d[h]="",d},{});!Un(o)||!gr(o)||(Object.assign(o.style,c),Object.keys(a).forEach(function(d){o.removeAttribute(d)}))})}}const pT={name:"applyStyles",enabled:!0,phase:"write",fn:hT,effect:vT,requires:["computeStyles"]};function vr(e){return e.split("-")[0]}var Rs=Math.max,Qa=Math.min,bi=Math.round;function Cc(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function Dm(){return!/^((?!chrome|android).)*safari/i.test(Cc())}function wi(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!1);var i=e.getBoundingClientRect(),o=1,a=1;t&&Un(e)&&(o=e.offsetWidth>0&&bi(i.width)/e.offsetWidth||1,a=e.offsetHeight>0&&bi(i.height)/e.offsetHeight||1);var u=Ys(e)?Sn(e):window,c=u.visualViewport,d=!Dm()&&n,h=(i.left+(d&&c?c.offsetLeft:0))/o,p=(i.top+(d&&c?c.offsetTop:0))/a,y=i.width/o,b=i.height/a;return{width:y,height:b,top:p,right:h+y,bottom:p+b,left:h,x:h,y:p}}function rf(e){var t=wi(e),n=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:i}}function $m(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&nf(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Ir(e){return Sn(e).getComputedStyle(e)}function gT(e){return["table","td","th"].indexOf(gr(e))>=0}function ds(e){return((Ys(e)?e.ownerDocument:e.document)||window.document).documentElement}function xl(e){return gr(e)==="html"?e:e.assignedSlot||e.parentNode||(nf(e)?e.host:null)||ds(e)}function Xv(e){return!Un(e)||Ir(e).position==="fixed"?null:e.offsetParent}function mT(e){var t=/firefox/i.test(Cc()),n=/Trident/i.test(Cc());if(n&&Un(e)){var i=Ir(e);if(i.position==="fixed")return null}var o=xl(e);for(nf(o)&&(o=o.host);Un(o)&&["html","body"].indexOf(gr(o))<0;){var a=Ir(o);if(a.transform!=="none"||a.perspective!=="none"||a.contain==="paint"||["transform","perspective"].indexOf(a.willChange)!==-1||t&&a.willChange==="filter"||t&&a.filter&&a.filter!=="none")return o;o=o.parentNode}return null}function Eo(e){for(var t=Sn(e),n=Xv(e);n&&gT(n)&&Ir(n).position==="static";)n=Xv(n);return n&&(gr(n)==="html"||gr(n)==="body"&&Ir(n).position==="static")?t:n||mT(e)||t}function sf(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function go(e,t,n){return Rs(e,Qa(t,n))}function yT(e,t,n){var i=go(e,t,n);return i>n?n:i}function Cm(){return{top:0,right:0,bottom:0,left:0}}function xm(e){return Object.assign({},Cm(),e)}function Sm(e,t){return t.reduce(function(n,i){return n[i]=e,n},{})}var _T=function(t,n){return t=typeof t=="function"?t(Object.assign({},n.rects,{placement:n.placement})):t,xm(typeof t!="number"?t:Sm(t,Io))};function bT(e){var t,n=e.state,i=e.name,o=e.options,a=n.elements.arrow,u=n.modifiersData.popperOffsets,c=vr(n.placement),d=sf(c),h=[gn,zn].indexOf(c)>=0,p=h?"height":"width";if(!(!a||!u)){var y=_T(o.padding,n),b=rf(a),$=d==="y"?pn:gn,A=d==="y"?Vn:zn,k=n.rects.reference[p]+n.rects.reference[d]-u[d]-n.rects.popper[p],L=u[d]-n.rects.reference[d],M=Eo(a),le=M?d==="y"?M.clientHeight||0:M.clientWidth||0:0,re=k/2-L/2,j=y[$],X=le-b[p]-y[A],te=le/2-b[p]/2+re,se=go(j,te,X),Q=d;n.modifiersData[i]=(t={},t[Q]=se,t.centerOffset=se-te,t)}}function wT(e){var t=e.state,n=e.options,i=n.element,o=i===void 0?"[data-popper-arrow]":i;o!=null&&(typeof o=="string"&&(o=t.elements.popper.querySelector(o),!o)||$m(t.elements.popper,o)&&(t.elements.arrow=o))}const DT={name:"arrow",enabled:!0,phase:"main",fn:bT,effect:wT,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Di(e){return e.split("-")[1]}var $T={top:"auto",right:"auto",bottom:"auto",left:"auto"};function CT(e,t){var n=e.x,i=e.y,o=t.devicePixelRatio||1;return{x:bi(n*o)/o||0,y:bi(i*o)/o||0}}function Jv(e){var t,n=e.popper,i=e.popperRect,o=e.placement,a=e.variation,u=e.offsets,c=e.position,d=e.gpuAcceleration,h=e.adaptive,p=e.roundOffsets,y=e.isFixed,b=u.x,$=b===void 0?0:b,A=u.y,k=A===void 0?0:A,L=typeof p=="function"?p({x:$,y:k}):{x:$,y:k};$=L.x,k=L.y;var M=u.hasOwnProperty("x"),le=u.hasOwnProperty("y"),re=gn,j=pn,X=window;if(h){var te=Eo(n),se="clientHeight",Q="clientWidth";if(te===Sn(n)&&(te=ds(n),Ir(te).position!=="static"&&c==="absolute"&&(se="scrollHeight",Q="scrollWidth")),te=te,o===pn||(o===gn||o===zn)&&a===xo){j=Vn;var ve=y&&te===X&&X.visualViewport?X.visualViewport.height:te[se];k-=ve-i.height,k*=d?1:-1}if(o===gn||(o===pn||o===Vn)&&a===xo){re=zn;var pe=y&&te===X&&X.visualViewport?X.visualViewport.width:te[Q];$-=pe-i.width,$*=d?1:-1}}var we=Object.assign({position:c},h&&$T),F=p===!0?CT({x:$,y:k},Sn(n)):{x:$,y:k};if($=F.x,k=F.y,d){var ce;return Object.assign({},we,(ce={},ce[j]=le?"0":"",ce[re]=M?"0":"",ce.transform=(X.devicePixelRatio||1)<=1?"translate("+$+"px, "+k+"px)":"translate3d("+$+"px, "+k+"px, 0)",ce))}return Object.assign({},we,(t={},t[j]=le?k+"px":"",t[re]=M?$+"px":"",t.transform="",t))}function xT(e){var t=e.state,n=e.options,i=n.gpuAcceleration,o=i===void 0?!0:i,a=n.adaptive,u=a===void 0?!0:a,c=n.roundOffsets,d=c===void 0?!0:c,h={placement:vr(t.placement),variation:Di(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Jv(Object.assign({},h,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:u,roundOffsets:d})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Jv(Object.assign({},h,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:d})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const ST={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:xT,data:{}};var Ma={passive:!0};function TT(e){var t=e.state,n=e.instance,i=e.options,o=i.scroll,a=o===void 0?!0:o,u=i.resize,c=u===void 0?!0:u,d=Sn(t.elements.popper),h=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&h.forEach(function(p){p.addEventListener("scroll",n.update,Ma)}),c&&d.addEventListener("resize",n.update,Ma),function(){a&&h.forEach(function(p){p.removeEventListener("scroll",n.update,Ma)}),c&&d.removeEventListener("resize",n.update,Ma)}}const OT={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:TT,data:{}};var AT={left:"right",right:"left",bottom:"top",top:"bottom"};function Wa(e){return e.replace(/left|right|bottom|top/g,function(t){return AT[t]})}var MT={start:"end",end:"start"};function Qv(e){return e.replace(/start|end/g,function(t){return MT[t]})}function of(e){var t=Sn(e),n=t.pageXOffset,i=t.pageYOffset;return{scrollLeft:n,scrollTop:i}}function af(e){return wi(ds(e)).left+of(e).scrollLeft}function PT(e,t){var n=Sn(e),i=ds(e),o=n.visualViewport,a=i.clientWidth,u=i.clientHeight,c=0,d=0;if(o){a=o.width,u=o.height;var h=Dm();(h||!h&&t==="fixed")&&(c=o.offsetLeft,d=o.offsetTop)}return{width:a,height:u,x:c+af(e),y:d}}function IT(e){var t,n=ds(e),i=of(e),o=(t=e.ownerDocument)==null?void 0:t.body,a=Rs(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),u=Rs(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),c=-i.scrollLeft+af(e),d=-i.scrollTop;return Ir(o||n).direction==="rtl"&&(c+=Rs(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:u,x:c,y:d}}function lf(e){var t=Ir(e),n=t.overflow,i=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function Tm(e){return["html","body","#document"].indexOf(gr(e))>=0?e.ownerDocument.body:Un(e)&&lf(e)?e:Tm(xl(e))}function mo(e,t){var n;t===void 0&&(t=[]);var i=Tm(e),o=i===((n=e.ownerDocument)==null?void 0:n.body),a=Sn(i),u=o?[a].concat(a.visualViewport||[],lf(i)?i:[]):i,c=t.concat(u);return o?c:c.concat(mo(xl(u)))}function xc(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ET(e,t){var n=wi(e,!1,t==="fixed");return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}function ep(e,t,n){return t===bm?xc(PT(e,n)):Ys(t)?ET(t,n):xc(IT(ds(e)))}function LT(e){var t=mo(xl(e)),n=["absolute","fixed"].indexOf(Ir(e).position)>=0,i=n&&Un(e)?Eo(e):e;return Ys(i)?t.filter(function(o){return Ys(o)&&$m(o,i)&&gr(o)!=="body"}):[]}function kT(e,t,n,i){var o=t==="clippingParents"?LT(e):[].concat(t),a=[].concat(o,[n]),u=a[0],c=a.reduce(function(d,h){var p=ep(e,h,i);return d.top=Rs(p.top,d.top),d.right=Qa(p.right,d.right),d.bottom=Qa(p.bottom,d.bottom),d.left=Rs(p.left,d.left),d},ep(e,u,i));return c.width=c.right-c.left,c.height=c.bottom-c.top,c.x=c.left,c.y=c.top,c}function Om(e){var t=e.reference,n=e.element,i=e.placement,o=i?vr(i):null,a=i?Di(i):null,u=t.x+t.width/2-n.width/2,c=t.y+t.height/2-n.height/2,d;switch(o){case pn:d={x:u,y:t.y-n.height};break;case Vn:d={x:u,y:t.y+t.height};break;case zn:d={x:t.x+t.width,y:c};break;case gn:d={x:t.x-n.width,y:c};break;default:d={x:t.x,y:t.y}}var h=o?sf(o):null;if(h!=null){var p=h==="y"?"height":"width";switch(a){case _i:d[h]=d[h]-(t[p]/2-n[p]/2);break;case xo:d[h]=d[h]+(t[p]/2-n[p]/2);break}}return d}function So(e,t){t===void 0&&(t={});var n=t,i=n.placement,o=i===void 0?e.placement:i,a=n.strategy,u=a===void 0?e.strategy:a,c=n.boundary,d=c===void 0?tT:c,h=n.rootBoundary,p=h===void 0?bm:h,y=n.elementContext,b=y===void 0?eo:y,$=n.altBoundary,A=$===void 0?!1:$,k=n.padding,L=k===void 0?0:k,M=xm(typeof L!="number"?L:Sm(L,Io)),le=b===eo?nT:eo,re=e.rects.popper,j=e.elements[A?le:b],X=kT(Ys(j)?j:j.contextElement||ds(e.elements.popper),d,p,u),te=wi(e.elements.reference),se=Om({reference:te,element:re,strategy:"absolute",placement:o}),Q=xc(Object.assign({},re,se)),ve=b===eo?Q:te,pe={top:X.top-ve.top+M.top,bottom:ve.bottom-X.bottom+M.bottom,left:X.left-ve.left+M.left,right:ve.right-X.right+M.right},we=e.modifiersData.offset;if(b===eo&&we){var F=we[o];Object.keys(pe).forEach(function(ce){var ke=[zn,Vn].indexOf(ce)>=0?1:-1,me=[pn,Vn].indexOf(ce)>=0?"y":"x";pe[ce]+=F[me]*ke})}return pe}function RT(e,t){t===void 0&&(t={});var n=t,i=n.placement,o=n.boundary,a=n.rootBoundary,u=n.padding,c=n.flipVariations,d=n.allowedAutoPlacements,h=d===void 0?wm:d,p=Di(i),y=p?c?Zv:Zv.filter(function(A){return Di(A)===p}):Io,b=y.filter(function(A){return h.indexOf(A)>=0});b.length===0&&(b=y);var $=b.reduce(function(A,k){return A[k]=So(e,{placement:k,boundary:o,rootBoundary:a,padding:u})[vr(k)],A},{});return Object.keys($).sort(function(A,k){return $[A]-$[k]})}function YT(e){if(vr(e)===tf)return[];var t=Wa(e);return[Qv(e),t,Qv(t)]}function NT(e){var t=e.state,n=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var o=n.mainAxis,a=o===void 0?!0:o,u=n.altAxis,c=u===void 0?!0:u,d=n.fallbackPlacements,h=n.padding,p=n.boundary,y=n.rootBoundary,b=n.altBoundary,$=n.flipVariations,A=$===void 0?!0:$,k=n.allowedAutoPlacements,L=t.options.placement,M=vr(L),le=M===L,re=d||(le||!A?[Wa(L)]:YT(L)),j=[L].concat(re).reduce(function(Xe,st){return Xe.concat(vr(st)===tf?RT(t,{placement:st,boundary:p,rootBoundary:y,padding:h,flipVariations:A,allowedAutoPlacements:k}):st)},[]),X=t.rects.reference,te=t.rects.popper,se=new Map,Q=!0,ve=j[0],pe=0;pe=0,me=ke?"width":"height",Se=So(t,{placement:we,boundary:p,rootBoundary:y,altBoundary:b,padding:h}),_e=ke?ce?zn:gn:ce?Vn:pn;X[me]>te[me]&&(_e=Wa(_e));var De=Wa(_e),Ze=[];if(a&&Ze.push(Se[F]<=0),c&&Ze.push(Se[_e]<=0,Se[De]<=0),Ze.every(function(Xe){return Xe})){ve=we,Q=!1;break}se.set(we,Ze)}if(Q)for(var ee=A?3:1,Te=function(st){var et=j.find(function(ut){var ct=se.get(ut);if(ct)return ct.slice(0,st).every(function(xt){return xt})});if(et)return ve=et,"break"},de=ee;de>0;de--){var mt=Te(de);if(mt==="break")break}t.placement!==ve&&(t.modifiersData[i]._skip=!0,t.placement=ve,t.reset=!0)}}const FT={name:"flip",enabled:!0,phase:"main",fn:NT,requiresIfExists:["offset"],data:{_skip:!1}};function tp(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function np(e){return[pn,zn,Vn,gn].some(function(t){return e[t]>=0})}function WT(e){var t=e.state,n=e.name,i=t.rects.reference,o=t.rects.popper,a=t.modifiersData.preventOverflow,u=So(t,{elementContext:"reference"}),c=So(t,{altBoundary:!0}),d=tp(u,i),h=tp(c,o,a),p=np(d),y=np(h);t.modifiersData[n]={referenceClippingOffsets:d,popperEscapeOffsets:h,isReferenceHidden:p,hasPopperEscaped:y},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":y})}const BT={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:WT};function UT(e,t,n){var i=vr(e),o=[gn,pn].indexOf(i)>=0?-1:1,a=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,u=a[0],c=a[1];return u=u||0,c=(c||0)*o,[gn,zn].indexOf(i)>=0?{x:c,y:u}:{x:u,y:c}}function HT(e){var t=e.state,n=e.options,i=e.name,o=n.offset,a=o===void 0?[0,0]:o,u=wm.reduce(function(p,y){return p[y]=UT(y,t.rects,a),p},{}),c=u[t.placement],d=c.x,h=c.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=d,t.modifiersData.popperOffsets.y+=h),t.modifiersData[i]=u}const KT={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:HT};function VT(e){var t=e.state,n=e.name;t.modifiersData[n]=Om({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const zT={name:"popperOffsets",enabled:!0,phase:"read",fn:VT,data:{}};function jT(e){return e==="x"?"y":"x"}function qT(e){var t=e.state,n=e.options,i=e.name,o=n.mainAxis,a=o===void 0?!0:o,u=n.altAxis,c=u===void 0?!1:u,d=n.boundary,h=n.rootBoundary,p=n.altBoundary,y=n.padding,b=n.tether,$=b===void 0?!0:b,A=n.tetherOffset,k=A===void 0?0:A,L=So(t,{boundary:d,rootBoundary:h,padding:y,altBoundary:p}),M=vr(t.placement),le=Di(t.placement),re=!le,j=sf(M),X=jT(j),te=t.modifiersData.popperOffsets,se=t.rects.reference,Q=t.rects.popper,ve=typeof k=="function"?k(Object.assign({},t.rects,{placement:t.placement})):k,pe=typeof ve=="number"?{mainAxis:ve,altAxis:ve}:Object.assign({mainAxis:0,altAxis:0},ve),we=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,F={x:0,y:0};if(te){if(a){var ce,ke=j==="y"?pn:gn,me=j==="y"?Vn:zn,Se=j==="y"?"height":"width",_e=te[j],De=_e+L[ke],Ze=_e-L[me],ee=$?-Q[Se]/2:0,Te=le===_i?se[Se]:Q[Se],de=le===_i?-Q[Se]:-se[Se],mt=t.elements.arrow,Xe=$&&mt?rf(mt):{width:0,height:0},st=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:Cm(),et=st[ke],ut=st[me],ct=go(0,se[Se],Xe[Se]),xt=re?se[Se]/2-ee-ct-et-pe.mainAxis:Te-ct-et-pe.mainAxis,Ft=re?-se[Se]/2+ee+ct+ut+pe.mainAxis:de+ct+ut+pe.mainAxis,Et=t.elements.arrow&&Eo(t.elements.arrow),At=Et?j==="y"?Et.clientTop||0:Et.clientLeft||0:0,w=(ce=we==null?void 0:we[j])!=null?ce:0,x=_e+xt-w-At,E=_e+Ft-w,B=go($?Qa(De,x):De,_e,$?Rs(Ze,E):Ze);te[j]=B,F[j]=B-_e}if(c){var Y,ne=j==="x"?pn:gn,ie=j==="x"?Vn:zn,q=te[X],J=X==="y"?"height":"width",z=q+L[ne],oe=q-L[ie],ge=[pn,gn].indexOf(M)!==-1,fe=(Y=we==null?void 0:we[X])!=null?Y:0,$e=ge?z:q-se[J]-Q[J]-fe+pe.altAxis,Me=ge?q+se[J]+Q[J]-fe-pe.altAxis:oe,Ue=$&&ge?yT($e,q,Me):go($?$e:z,q,$?Me:oe);te[X]=Ue,F[X]=Ue-q}t.modifiersData[i]=F}}const GT={name:"preventOverflow",enabled:!0,phase:"main",fn:qT,requiresIfExists:["offset"]};function ZT(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function XT(e){return e===Sn(e)||!Un(e)?of(e):ZT(e)}function JT(e){var t=e.getBoundingClientRect(),n=bi(t.width)/e.offsetWidth||1,i=bi(t.height)/e.offsetHeight||1;return n!==1||i!==1}function QT(e,t,n){n===void 0&&(n=!1);var i=Un(t),o=Un(t)&&JT(t),a=ds(t),u=wi(e,o,n),c={scrollLeft:0,scrollTop:0},d={x:0,y:0};return(i||!i&&!n)&&((gr(t)!=="body"||lf(a))&&(c=XT(t)),Un(t)?(d=wi(t,!0),d.x+=t.clientLeft,d.y+=t.clientTop):a&&(d.x=af(a))),{x:u.left+c.scrollLeft-d.x,y:u.top+c.scrollTop-d.y,width:u.width,height:u.height}}function eO(e){var t=new Map,n=new Set,i=[];e.forEach(function(a){t.set(a.name,a)});function o(a){n.add(a.name);var u=[].concat(a.requires||[],a.requiresIfExists||[]);u.forEach(function(c){if(!n.has(c)){var d=t.get(c);d&&o(d)}}),i.push(a)}return e.forEach(function(a){n.has(a.name)||o(a)}),i}function tO(e){var t=eO(e);return dT.reduce(function(n,i){return n.concat(t.filter(function(o){return o.phase===i}))},[])}function nO(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function rO(e){var t=e.reduce(function(n,i){var o=n[i.name];return n[i.name]=o?Object.assign({},o,i,{options:Object.assign({},o.options,i.options),data:Object.assign({},o.data,i.data)}):i,n},{});return Object.keys(t).map(function(n){return t[n]})}var rp={placement:"bottom",modifiers:[],strategy:"absolute"};function sp(){for(var e=arguments.length,t=new Array(e),n=0;nt in e?aO(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,be=(e,t,n)=>(lO(e,typeof t!="symbol"?t+"":t,n),n),Pa=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Am(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var uO=Object.prototype,cO=uO.hasOwnProperty;function fO(e,t){return e!=null&&cO.call(e,t)}var dO=fO,hO=Array.isArray,nr=hO,vO=typeof Pa=="object"&&Pa&&Pa.Object===Object&&Pa,Mm=vO,pO=Mm,gO=typeof self=="object"&&self&&self.Object===Object&&self,mO=pO||gO||Function("return this")(),mr=mO,yO=mr,_O=yO.Symbol,Sl=_O,ip=Sl,Pm=Object.prototype,bO=Pm.hasOwnProperty,wO=Pm.toString,to=ip?ip.toStringTag:void 0;function DO(e){var t=bO.call(e,to),n=e[to];try{e[to]=void 0;var i=!0}catch{}var o=wO.call(e);return i&&(t?e[to]=n:delete e[to]),o}var $O=DO,CO=Object.prototype,xO=CO.toString;function SO(e){return xO.call(e)}var TO=SO,op=Sl,OO=$O,AO=TO,MO="[object Null]",PO="[object Undefined]",ap=op?op.toStringTag:void 0;function IO(e){return e==null?e===void 0?PO:MO:ap&&ap in Object(e)?OO(e):AO(e)}var yr=IO;function EO(e){return e!=null&&typeof e=="object"}var rr=EO,LO=yr,kO=rr,RO="[object Symbol]";function YO(e){return typeof e=="symbol"||kO(e)&&LO(e)==RO}var uf=YO,NO=nr,FO=uf,WO=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,BO=/^\w*$/;function UO(e,t){if(NO(e))return!1;var n=typeof e;return n=="number"||n=="symbol"||n=="boolean"||e==null||FO(e)?!0:BO.test(e)||!WO.test(e)||t!=null&&e in Object(t)}var cf=UO;function HO(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var Rr=HO,KO=yr,VO=Rr,zO="[object AsyncFunction]",jO="[object Function]",qO="[object GeneratorFunction]",GO="[object Proxy]";function ZO(e){if(!VO(e))return!1;var t=KO(e);return t==jO||t==qO||t==zO||t==GO}var Us=ZO,XO=mr,JO=XO["__core-js_shared__"],QO=JO,tc=QO,lp=function(){var e=/[^.]+$/.exec(tc&&tc.keys&&tc.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function eA(e){return!!lp&&lp in e}var tA=eA,nA=Function.prototype,rA=nA.toString;function sA(e){if(e!=null){try{return rA.call(e)}catch{}try{return e+""}catch{}}return""}var Im=sA,iA=Us,oA=tA,aA=Rr,lA=Im,uA=/[\\^$.*+?()[\]{}|]/g,cA=/^\[object .+?Constructor\]$/,fA=Function.prototype,dA=Object.prototype,hA=fA.toString,vA=dA.hasOwnProperty,pA=RegExp("^"+hA.call(vA).replace(uA,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function gA(e){if(!aA(e)||oA(e))return!1;var t=iA(e)?pA:cA;return t.test(lA(e))}var mA=gA;function yA(e,t){return e==null?void 0:e[t]}var _A=yA,bA=mA,wA=_A;function DA(e,t){var n=wA(e,t);return bA(n)?n:void 0}var Hs=DA,$A=Hs,CA=$A(Object,"create"),Tl=CA,up=Tl;function xA(){this.__data__=up?up(null):{},this.size=0}var SA=xA;function TA(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var OA=TA,AA=Tl,MA="__lodash_hash_undefined__",PA=Object.prototype,IA=PA.hasOwnProperty;function EA(e){var t=this.__data__;if(AA){var n=t[e];return n===MA?void 0:n}return IA.call(t,e)?t[e]:void 0}var LA=EA,kA=Tl,RA=Object.prototype,YA=RA.hasOwnProperty;function NA(e){var t=this.__data__;return kA?t[e]!==void 0:YA.call(t,e)}var FA=NA,WA=Tl,BA="__lodash_hash_undefined__";function UA(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=WA&&t===void 0?BA:t,this}var HA=UA,KA=SA,VA=OA,zA=LA,jA=FA,qA=HA;function Ti(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t-1}var fM=cM,dM=Ol;function hM(e,t){var n=this.__data__,i=dM(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this}var vM=hM,pM=XA,gM=iM,mM=lM,yM=fM,_M=vM;function Ai(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t-1&&e%1==0&&e-1&&e%1==0&&e<=IP}var gf=EP,LP=uf,kP=1/0;function RP(e){if(typeof e=="string"||LP(e))return e;var t=e+"";return t=="0"&&1/e==-kP?"-0":t}var Pl=RP,YP=km,NP=vf,FP=nr,WP=pf,BP=gf,UP=Pl;function HP(e,t,n){t=YP(t,e);for(var i=-1,o=t.length,a=!1;++ic))return!1;var h=a.get(e),p=a.get(t);if(h&&p)return h==t&&p==e;var y=-1,b=!0,$=n&z2?new U2:void 0;for(a.set(e,t),a.set(t,e);++y0){if(++t>=zR)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var ZR=GR,XR=VR,JR=ZR,QR=JR(XR),eY=QR,tY=wf,nY=FR,rY=eY;function sY(e,t){return rY(nY(e,t,tY),e+"")}var $f=sY;function iY(e){var t=[];if(e!=null)for(var n in Object(e))t.push(n);return t}var oY=iY,aY=Rr,lY=_f,uY=oY,cY=Object.prototype,fY=cY.hasOwnProperty;function dY(e){if(!aY(e))return uY(e);var t=lY(e),n=[];for(var i in e)i=="constructor"&&(t||!fY.call(e,i))||n.push(i);return n}var hY=dY,vY=Hm,pY=hY,gY=Lo;function mY(e){return gY(e)?vY(e,!0):pY(e)}var Cf=mY,yY=$f,_Y=Oi,bY=Df,wY=Cf,ny=Object.prototype,DY=ny.hasOwnProperty,$Y=yY(function(e,t){e=Object(e);var n=-1,i=t.length,o=i>2?t[2]:void 0;for(o&&bY(t[0],t[1],o)&&(i=1);++n1?n[o-1]:void 0,u=o>2?n[2]:void 0;for(a=e.length>3&&typeof a=="function"?(o--,a):void 0,u&&YN(n[0],n[1],u)&&(a=o<3?void 0:a,o=1),t=Object(t);++iObject.prototype.toString.call(e).slice(8,-1),gi=e=>r2(e)&&!isNaN(e.getTime()),Er=e=>XN(e)==="Object",fy=Nm,jp=(e,t)=>dR(t,n=>Nm(e,n)),at=(e,t,n="0")=>{for(e=e!=null?String(e):"",t=t||2;e.lengthArray.isArray(e),Ar=e=>Hn(e)&&e.length>0,nl=e=>e==null?null:document&&cr(e)?document.querySelector(e):e.$el??e,rs=(e,t,n,i=void 0)=>{e.removeEventListener(t,n,i)},ss=(e,t,n,i=void 0)=>(e.addEventListener(t,n,i),()=>rs(e,t,n,i)),Ba=(e,t)=>!!e&&!!t&&(e===t||e.contains(t)),Ea=(e,t)=>{(e.key===" "||e.key==="Enter")&&(t(e),e.preventDefault())},dy=(e,...t)=>{const n={};let i;for(i in e)t.includes(i)||(n[i]=e[i]);return n},hy=(e,t)=>{const n={};return t.forEach(i=>{i in e&&(n[i]=e[i])}),n};function JN(e,t,n){return Math.min(Math.max(e,t),n)}var rl={},QN={get exports(){return rl},set exports(e){rl=e}};(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=n;function n(i){if(i===null||i===!0||i===!1)return NaN;var o=Number(i);return isNaN(o)?o:o<0?Math.ceil(o):Math.floor(o)}e.exports=t.default})(QN,rl);const eF=Am(rl);var sl={},tF={get exports(){return sl},set exports(e){sl=e}};(function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=n;function n(i){var o=new Date(Date.UTC(i.getFullYear(),i.getMonth(),i.getDate(),i.getHours(),i.getMinutes(),i.getSeconds(),i.getMilliseconds()));return o.setUTCFullYear(i.getFullYear()),i.getTime()-o.getTime()}e.exports=t.default})(tF,sl);const qp=Am(sl);function nF(e,t){var n=oF(t);return n.formatToParts?sF(n,e):iF(n,e)}var rF={year:0,month:1,day:2,hour:3,minute:4,second:5};function sF(e,t){try{for(var n=e.formatToParts(t),i=[],o=0;o=0&&(i[a]=parseInt(n[o].value,10))}return i}catch(u){if(u instanceof RangeError)return[NaN];throw u}}function iF(e,t){var n=e.format(t).replace(/\u200E/g,""),i=/(\d+)\/(\d+)\/(\d+),? (\d+):(\d+):(\d+)/.exec(n);return[i[3],i[1],i[2],i[4],i[5],i[6]]}var sc={};function oF(e){if(!sc[e]){var t=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:"America/New_York",year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(new Date("2014-06-25T04:00:00.123Z")),n=t==="06/25/2014, 00:00:00"||t==="‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00";sc[e]=n?new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:e,year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}):new Intl.DateTimeFormat("en-US",{hourCycle:"h23",timeZone:e,year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})}return sc[e]}function vy(e,t,n,i,o,a,u){var c=new Date(0);return c.setUTCFullYear(e,t,n),c.setUTCHours(i,o,a,u),c}var Gp=36e5,aF=6e4,ic={timezone:/([Z+-].*)$/,timezoneZ:/^(Z)$/,timezoneHH:/^([+-]\d{2})$/,timezoneHHMM:/^([+-]\d{2}):?(\d{2})$/};function lF(e,t,n){var i,o;if(!e||(i=ic.timezoneZ.exec(e),i))return 0;var a;if(i=ic.timezoneHH.exec(e),i)return a=parseInt(i[1],10),Zp(a)?-(a*Gp):NaN;if(i=ic.timezoneHHMM.exec(e),i){a=parseInt(i[1],10);var u=parseInt(i[2],10);return Zp(a,u)?(o=Math.abs(a)*Gp+u*aF,a>0?-o:o):NaN}if(fF(e)){t=new Date(t||Date.now());var c=n?t:uF(t),d=Pc(c,e),h=n?d:cF(t,d,e);return-h}return NaN}function uF(e){return vy(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())}function Pc(e,t){var n=nF(e,t),i=vy(n[0],n[1]-1,n[2],n[3]%24,n[4],n[5],0).getTime(),o=e.getTime(),a=o%1e3;return o-=a>=0?a:1e3+a,i-o}function cF(e,t,n){var i=e.getTime(),o=i-t,a=Pc(new Date(o),n);if(t===a)return t;o-=a-t;var u=Pc(new Date(o),n);return a===u?a:Math.max(a,u)}function Zp(e,t){return-23<=e&&e<=23&&(t==null||0<=t&&t<=59)}var Xp={};function fF(e){if(Xp[e])return!0;try{return new Intl.DateTimeFormat(void 0,{timeZone:e}),Xp[e]=!0,!0}catch{return!1}}var dF=/(Z|[+-]\d{2}(?::?\d{2})?| UTC| [a-zA-Z]+\/[a-zA-Z_]+(?:\/[a-zA-Z_]+)?)$/;const hF=dF;var oc=36e5,Jp=6e4,vF=2,un={dateTimePattern:/^([0-9W+-]+)(T| )(.*)/,datePattern:/^([0-9W+-]+)(.*)/,plainTime:/:/,YY:/^(\d{2})$/,YYY:[/^([+-]\d{2})$/,/^([+-]\d{3})$/,/^([+-]\d{4})$/],YYYY:/^(\d{4})/,YYYYY:[/^([+-]\d{4})/,/^([+-]\d{5})/,/^([+-]\d{6})/],MM:/^-(\d{2})$/,DDD:/^-?(\d{3})$/,MMDD:/^-?(\d{2})-?(\d{2})$/,Www:/^-?W(\d{2})$/,WwwD:/^-?W(\d{2})-?(\d{1})$/,HH:/^(\d{2}([.,]\d*)?)$/,HHMM:/^(\d{2}):?(\d{2}([.,]\d*)?)$/,HHMMSS:/^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/,timeZone:hF};function pF(e,t){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");if(e===null)return new Date(NaN);var n=t||{},i=n.additionalDigits==null?vF:eF(n.additionalDigits);if(i!==2&&i!==1&&i!==0)throw new RangeError("additionalDigits must be 0, 1 or 2");if(e instanceof Date||typeof e=="object"&&Object.prototype.toString.call(e)==="[object Date]")return new Date(e.getTime());if(typeof e=="number"||Object.prototype.toString.call(e)==="[object Number]")return new Date(e);if(!(typeof e=="string"||Object.prototype.toString.call(e)==="[object String]"))return new Date(NaN);var o=gF(e),a=mF(o.date,i),u=a.year,c=a.restDateString,d=yF(c,u);if(isNaN(d))return new Date(NaN);if(d){var h=d.getTime(),p=0,y;if(o.time&&(p=_F(o.time),isNaN(p)))return new Date(NaN);if(o.timeZone||n.timeZone){if(y=lF(o.timeZone||n.timeZone,new Date(h+p)),isNaN(y))return new Date(NaN)}else y=qp(new Date(h+p)),y=qp(new Date(h+p+y));return new Date(h+p+y)}else return new Date(NaN)}function gF(e){var t={},n=un.dateTimePattern.exec(e),i;if(n?(t.date=n[1],i=n[3]):(n=un.datePattern.exec(e),n?(t.date=n[1],i=n[2]):(t.date=null,i=e)),i){var o=un.timeZone.exec(i);o?(t.time=i.replace(o[1],""),t.timeZone=o[1].trim()):t.time=i}return t}function mF(e,t){var n=un.YYY[t],i=un.YYYYY[t],o;if(o=un.YYYY.exec(e)||i.exec(e),o){var a=o[1];return{year:parseInt(a,10),restDateString:e.slice(a.length)}}if(o=un.YY.exec(e)||n.exec(e),o){var u=o[1];return{year:parseInt(u,10)*100,restDateString:e.slice(u.length)}}return{year:null}}function yF(e,t){if(t===null)return null;var n,i,o,a;if(e.length===0)return i=new Date(0),i.setUTCFullYear(t),i;if(n=un.MM.exec(e),n)return i=new Date(0),o=parseInt(n[1],10)-1,eg(t,o)?(i.setUTCFullYear(t,o),i):new Date(NaN);if(n=un.DDD.exec(e),n){i=new Date(0);var u=parseInt(n[1],10);return DF(t,u)?(i.setUTCFullYear(t,0,u),i):new Date(NaN)}if(n=un.MMDD.exec(e),n){i=new Date(0),o=parseInt(n[1],10)-1;var c=parseInt(n[2],10);return eg(t,o,c)?(i.setUTCFullYear(t,o,c),i):new Date(NaN)}if(n=un.Www.exec(e),n)return a=parseInt(n[1],10)-1,tg(t,a)?Qp(t,a):new Date(NaN);if(n=un.WwwD.exec(e),n){a=parseInt(n[1],10)-1;var d=parseInt(n[2],10)-1;return tg(t,a,d)?Qp(t,a,d):new Date(NaN)}return null}function _F(e){var t,n,i;if(t=un.HH.exec(e),t)return n=parseFloat(t[1].replace(",",".")),ac(n)?n%24*oc:NaN;if(t=un.HHMM.exec(e),t)return n=parseInt(t[1],10),i=parseFloat(t[2].replace(",",".")),ac(n,i)?n%24*oc+i*Jp:NaN;if(t=un.HHMMSS.exec(e),t){n=parseInt(t[1],10),i=parseInt(t[2],10);var o=parseFloat(t[3].replace(",","."));return ac(n,i,o)?n%24*oc+i*Jp+o*1e3:NaN}return null}function Qp(e,t,n){t=t||0,n=n||0;var i=new Date(0);i.setUTCFullYear(e,0,4);var o=i.getUTCDay()||7,a=t*7+n+1-o;return i.setUTCDate(i.getUTCDate()+a),i}var bF=[31,28,31,30,31,30,31,31,30,31,30,31],wF=[31,29,31,30,31,30,31,31,30,31,30,31];function py(e){return e%400===0||e%4===0&&e%100!==0}function eg(e,t,n){if(t<0||t>11)return!1;if(n!=null){if(n<1)return!1;var i=py(e);if(i&&n>wF[t]||!i&&n>bF[t])return!1}return!0}function DF(e,t){if(t<1)return!1;var n=py(e);return!(n&&t>366||!n&&t>365)}function tg(e,t,n){return!(t<0||t>52||n!=null&&(n<0||n>6))}function ac(e,t,n){return!(e!=null&&(e<0||e>=25)||t!=null&&(t<0||t>=60)||n!=null&&(n<0||n>=60))}function Qt(e,t){if(t.length1?"s":"")+" required, but only "+t.length+" present")}function Ua(e){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ua=function(n){return typeof n}:Ua=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Ua(e)}function Yr(e){Qt(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||Ua(e)==="object"&&t==="[object Date]"?new Date(e.getTime()):typeof e=="number"||t==="[object Number]"?new Date(e):((typeof e=="string"||t==="[object String]")&&typeof console<"u"&&(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn(new Error().stack)),new Date(NaN))}function Ei(e){if(e===null||e===!0||e===!1)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}var $F={};function xf(){return $F}function Ns(e,t){var n,i,o,a,u,c,d,h;Qt(1,arguments);var p=xf(),y=Ei((n=(i=(o=(a=t==null?void 0:t.weekStartsOn)!==null&&a!==void 0?a:t==null||(u=t.locale)===null||u===void 0||(c=u.options)===null||c===void 0?void 0:c.weekStartsOn)!==null&&o!==void 0?o:p.weekStartsOn)!==null&&i!==void 0?i:(d=p.locale)===null||d===void 0||(h=d.options)===null||h===void 0?void 0:h.weekStartsOn)!==null&&n!==void 0?n:0);if(!(y>=0&&y<=6))throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");var b=Yr(e),$=b.getDay(),A=($=1&&$<=7))throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");var A=new Date(0);A.setFullYear(y+1,0,$),A.setHours(0,0,0,0);var k=Ns(A,t),L=new Date(0);L.setFullYear(y,0,$),L.setHours(0,0,0,0);var M=Ns(L,t);return p.getTime()>=k.getTime()?y+1:p.getTime()>=M.getTime()?y:y-1}function MF(e,t){var n,i,o,a,u,c,d,h;Qt(1,arguments);var p=xf(),y=Ei((n=(i=(o=(a=t==null?void 0:t.firstWeekContainsDate)!==null&&a!==void 0?a:t==null||(u=t.locale)===null||u===void 0||(c=u.options)===null||c===void 0?void 0:c.firstWeekContainsDate)!==null&&o!==void 0?o:p.firstWeekContainsDate)!==null&&i!==void 0?i:(d=p.locale)===null||d===void 0||(h=d.options)===null||h===void 0?void 0:h.firstWeekContainsDate)!==null&&n!==void 0?n:1),b=AF(e,t),$=new Date(0);$.setFullYear(b,0,y),$.setHours(0,0,0,0);var A=Ns($,t);return A}var PF=6048e5;function IF(e,t){Qt(1,arguments);var n=Yr(e),i=Ns(n,t).getTime()-MF(n,t).getTime();return Math.round(i/PF)+1}function il(e){return Qt(1,arguments),Ns(e,{weekStartsOn:1})}function EF(e){Qt(1,arguments);var t=Yr(e),n=t.getFullYear(),i=new Date(0);i.setFullYear(n+1,0,4),i.setHours(0,0,0,0);var o=il(i),a=new Date(0);a.setFullYear(n,0,4),a.setHours(0,0,0,0);var u=il(a);return t.getTime()>=o.getTime()?n+1:t.getTime()>=u.getTime()?n:n-1}function LF(e){Qt(1,arguments);var t=EF(e),n=new Date(0);n.setFullYear(t,0,4),n.setHours(0,0,0,0);var i=il(n);return i}var kF=6048e5;function RF(e){Qt(1,arguments);var t=Yr(e),n=il(t).getTime()-LF(t).getTime();return Math.round(n/kF)+1}function ln(e,t){Qt(2,arguments);var n=Yr(e),i=Ei(t);return isNaN(i)?new Date(NaN):(i&&n.setDate(n.getDate()+i),n)}function ol(e,t){Qt(2,arguments);var n=Yr(e),i=Ei(t);if(isNaN(i))return new Date(NaN);if(!i)return n;var o=n.getDate(),a=new Date(n.getTime());a.setMonth(n.getMonth()+i+1,0);var u=a.getDate();return o>=u?a:(n.setFullYear(a.getFullYear(),a.getMonth(),o),n)}function rg(e,t){Qt(2,arguments);var n=Ei(t);return ol(e,n*12)}const YF={daily:["year","month","day"],weekly:["year","month","week"],monthly:["year","month"]};function NF({monthComps:e,prevMonthComps:t,nextMonthComps:n},i){const o=[],{firstDayOfWeek:a,firstWeekday:u,isoWeeknumbers:c,weeknumbers:d,numDays:h,numWeeks:p}=e,y=u+(u{const d=Math.floor(c/7);let h=a[d];return h||(h={id:`week-${d+1}`,title:"",week:u.week,weekPosition:u.weekPosition,weeknumber:u.weeknumber,isoWeeknumber:u.isoWeeknumber,weeknumberDisplay:t?u.weeknumber:n?u.isoWeeknumber:void 0,days:[]},a[d]=h),h.days.push(u),a},Array(e.length/Xt));return o.forEach(a=>{const u=a.days[0],c=a.days[a.days.length-1];u.month===c.month?a.title=`${i.formatDate(u.date,"MMMM YYYY")}`:u.year===c.year?a.title=`${i.formatDate(u.date,"MMM")} - ${i.formatDate(c.date,"MMM YYYY")}`:a.title=`${i.formatDate(u.date,"MMM YYYY")} - ${i.formatDate(c.date,"MMM YYYY")}`}),o}function WF(e,t){return e.days.map(n=>({label:t.formatDate(n.date,t.masks.weekdays),weekday:n.weekday}))}function BF(e,t){return`${t}.${at(e,2)}`}function gy(e,t,n){return hy(n.getDateParts(n.toDate(e)),YF[t])}function my({day:e,week:t,month:n,year:i},o,a,u){if(a==="daily"&&e){const c=new Date(i,n-1,e),d=ln(c,o);return{day:d.getDate(),month:d.getMonth()+1,year:d.getFullYear()}}else if(a==="weekly"&&t){const d=u.getMonthParts(n,i).firstDayOfMonth,h=ln(d,(t-1+o)*7),p=u.getDateParts(h);return{week:p.week,month:p.month,year:p.year}}else{const c=new Date(i,n-1,1),d=ol(c,o);return{month:d.getMonth()+1,year:d.getFullYear()}}}function fr(e){return e!=null&&e.month!=null&&e.year!=null}function Ic(e,t){return!fr(e)||!fr(t)?!1:(e=e,t=t,e.year!==t.year?e.yeart.year:e.month&&t.month&&e.month!==t.month?e.month>t.month:e.week&&t.week&&e.week!==t.week?e.week>t.week:e.day&&t.day&&e.day!==t.day?e.day>t.day:!1)}function UF(e,t,n){return(e||!1)&&!Ic(e,t)&&!al(e,n)}function HF(e,t){return!e&&t||e&&!t?!1:!e&&!t?!0:(e=e,t=t,e.year===t.year&&e.month===t.month&&e.week===t.week&&e.day===t.day)}function KF(e,t,n,i){if(!fr(e)||!fr(t))return[];const o=[];for(;!al(e,t);)o.push(e),e=my(e,1,n,i);return o}function yy(e){const{day:t,week:n,month:i,year:o}=e;let a=`${o}-${at(i,2)}`;return n&&(a=`${a}-w${n}`),t&&(a=`${a}-${at(t,2)}`),a}function VF(e,t){const{month:n,year:i,showWeeknumbers:o,showIsoWeeknumbers:a}=e,u=new Date(i,n-1,15),c=t.getMonthParts(n,i),d=t.getPrevMonthParts(n,i),h=t.getNextMonthParts(n,i),p=NF({monthComps:c,prevMonthComps:d,nextMonthComps:h},t),y=FF(p,o,a,t),b=WF(y[0],t);return{id:yy(e),month:n,year:i,monthTitle:t.formatDate(u,t.masks.title),shortMonthLabel:t.formatDate(u,"MMM"),monthLabel:t.formatDate(u,"MMMM"),shortYearLabel:i.toString().substring(2),yearLabel:i.toString(),monthComps:c,prevMonthComps:d,nextMonthComps:h,days:p,weeks:y,weekdays:b}}function zF(e,t){const{day:n,week:i,view:o,trimWeeks:a}=e,u={...t,...e,title:"",viewDays:[],viewWeeks:[]};switch(o){case"daily":{let c=u.days.find(h=>h.inMonth);n?c=u.days.find(h=>h.day===n&&h.inMonth)||c:i&&(c=u.days.find(h=>h.week===i&&h.inMonth));const d=u.weeks[c.week-1];u.viewWeeks=[d],u.viewDays=[c],u.week=c.week,u.weekTitle=d.title,u.day=c.day,u.dayTitle=c.ariaLabel,u.title=u.dayTitle;break}case"weekly":{u.week=i||1;const c=u.weeks[u.week-1];u.viewWeeks=[c],u.viewDays=c.days,u.weekTitle=c.title,u.title=u.weekTitle;break}default:{u.title=u.monthTitle,u.viewWeeks=u.weeks.slice(0,a?u.monthComps.numWeeks:void 0),u.viewDays=u.days;break}}return u}class sg{constructor(t,n,i){be(this,"keys",[]),be(this,"store",{}),this.size=t,this.createKey=n,this.createItem=i}get(...t){const n=this.createKey(...t);return this.store[n]}getOrSet(...t){const n=this.createKey(...t);if(this.store[n])return this.store[n];const i=this.createItem(...t);if(this.keys.length>=this.size){const o=this.keys.shift();o!=null&&delete this.store[o]}return this.keys.push(n),this.store[n]=i,i}}class mi{constructor(t,n=new ll){be(this,"order"),be(this,"locale"),be(this,"start",null),be(this,"end",null),be(this,"repeat",null);var i;this.locale=n;const{start:o,end:a,span:u,order:c,repeat:d}=t;gi(o)&&(this.start=n.getDateParts(o)),gi(a)?this.end=n.getDateParts(a):this.start!=null&&u&&(this.end=n.getDateParts(ln(this.start.date,u-1))),this.order=c??0,d&&(this.repeat=new ul({from:(i=this.start)==null?void 0:i.date,...d},{locale:this.locale}))}static fromMany(t,n){return(Hn(t)?t:[t]).filter(i=>i).map(i=>mi.from(i,n))}static from(t,n){if(t instanceof mi)return t;const i={start:null,end:null};return t!=null&&(Hn(t)?(i.start=t[0]??null,i.end=t[1]??null):Er(t)?Object.assign(i,t):(i.start=t,i.end=t)),i.start!=null&&(i.start=new Date(i.start)),i.end!=null&&(i.end=new Date(i.end)),new mi(i,n)}get opts(){const{order:t,locale:n}=this;return{order:t,locale:n}}get hasRepeat(){return!!this.repeat}get isSingleDay(){const{start:t,end:n}=this;return t&&n&&t.year===n.year&&t.month===n.month&&t.day===n.day}get isMultiDay(){return!this.isSingleDay}get daySpan(){return this.start==null||this.end==null?this.hasRepeat?1:1/0:this.end.dayIndex-this.start.dayIndex}startsOnDay(t){var n,i;return((n=this.start)==null?void 0:n.dayIndex)===t.dayIndex||!!((i=this.repeat)!=null&&i.passes(t))}intersectsDay(t){return this.intersectsDayRange(t,t)}intersectsRange(t){var n,i;return this.intersectsDayRange(((n=t.start)==null?void 0:n.dayIndex)??-1/0,((i=t.end)==null?void 0:i.dayIndex)??1/0)}intersectsDayRange(t,n){return!(this.start&&this.start.dayIndex>n||this.end&&this.end.dayIndex{var b,$;if(n.startsOnDay(y)){const A=n.daySpan<1/0?n.daySpan:1;d={startDay:y.dayIndex,startTime:((b=n.start)==null?void 0:b.time)??0,endDay:y.dayIndex+A-1,endTime:(($=n.end)==null?void 0:$.time)??Ha},this.getRangeRecords(t).push(d)}}):n.intersectsDayRange(h,p)&&(d={startDay:((o=n.start)==null?void 0:o.dayIndex)??-1/0,startTime:((a=n.start)==null?void 0:a.time)??-1/0,endDay:((u=n.end)==null?void 0:u.dayIndex)??1/0,endTime:((c=n.end)==null?void 0:c.time)??1/0},this.getRangeRecords(t).push(d)),d}getRangeRecords(t){let n=this.records[t.key];return n||(n={ranges:[],data:t},this.records[t.key]=n),n.ranges}getCell(t,n){return this.getCells(n).find(a=>a.data.key===t)}cellExists(t,n){const i=this.records[t];return i==null?!1:i.ranges.some(o=>o.startDay<=n&&o.endDay>=n)}getCells(t){const n=Object.values(this.records),i=[],{dayIndex:o}=t;return n.forEach(({data:a,ranges:u})=>{u.filter(c=>c.startDay<=o&&c.endDay>=o).forEach(c=>{const d=o===c.startDay,h=o===c.endDay,p=d?c.startTime:0,y=new Date(t.startDate.getTime()+p),b=h?c.endTime:Ha,$=new Date(t.endDate.getTime()+b),A=p===0&&b===Ha,k=a.order||0;i.push({...c,data:a,onStart:d,onEnd:h,startTime:p,startDate:y,endTime:b,endDate:$,allDay:A,order:k})})}),i.sort((a,u)=>a.order-u.order),i}}const Lr={ar:{dow:7,L:"D/‏M/‏YYYY"},bg:{dow:2,L:"D.MM.YYYY"},ca:{dow:2,L:"DD/MM/YYYY"},"zh-CN":{dow:2,L:"YYYY/MM/DD"},"zh-TW":{dow:1,L:"YYYY/MM/DD"},hr:{dow:2,L:"DD.MM.YYYY"},cs:{dow:2,L:"DD.MM.YYYY"},da:{dow:2,L:"DD.MM.YYYY"},nl:{dow:2,L:"DD-MM-YYYY"},"en-US":{dow:1,L:"MM/DD/YYYY"},"en-AU":{dow:2,L:"DD/MM/YYYY"},"en-CA":{dow:1,L:"YYYY-MM-DD"},"en-GB":{dow:2,L:"DD/MM/YYYY"},"en-IE":{dow:2,L:"DD-MM-YYYY"},"en-NZ":{dow:2,L:"DD/MM/YYYY"},"en-ZA":{dow:1,L:"YYYY/MM/DD"},eo:{dow:2,L:"YYYY-MM-DD"},et:{dow:2,L:"DD.MM.YYYY"},fi:{dow:2,L:"DD.MM.YYYY"},fr:{dow:2,L:"DD/MM/YYYY"},"fr-CA":{dow:1,L:"YYYY-MM-DD"},"fr-CH":{dow:2,L:"DD.MM.YYYY"},de:{dow:2,L:"DD.MM.YYYY"},he:{dow:1,L:"DD.MM.YYYY"},id:{dow:2,L:"DD/MM/YYYY"},it:{dow:2,L:"DD/MM/YYYY"},ja:{dow:1,L:"YYYY年M月D日"},ko:{dow:1,L:"YYYY.MM.DD"},lv:{dow:2,L:"DD.MM.YYYY"},lt:{dow:2,L:"DD.MM.YYYY"},mk:{dow:2,L:"D.MM.YYYY"},nb:{dow:2,L:"D. MMMM YYYY"},nn:{dow:2,L:"D. MMMM YYYY"},pl:{dow:2,L:"DD.MM.YYYY"},pt:{dow:2,L:"DD/MM/YYYY"},ro:{dow:2,L:"DD.MM.YYYY"},ru:{dow:2,L:"DD.MM.YYYY"},sk:{dow:2,L:"DD.MM.YYYY"},"es-ES":{dow:2,L:"DD/MM/YYYY"},"es-MX":{dow:2,L:"DD/MM/YYYY"},sv:{dow:2,L:"YYYY-MM-DD"},th:{dow:1,L:"DD/MM/YYYY"},tr:{dow:2,L:"DD.MM.YYYY"},uk:{dow:2,L:"DD.MM.YYYY"},vi:{dow:2,L:"DD/MM/YYYY"}};Lr.en=Lr["en-US"];Lr.es=Lr["es-ES"];Lr.no=Lr.nb;Lr.zh=Lr["zh-CN"];const qF=Object.entries(Lr).reduce((e,[t,{dow:n,L:i}])=>(e[t]={id:t,firstDayOfWeek:n,masks:{L:i}},e),{}),GF="MMMM YYYY",ZF="W",XF="MMM",JF="h A",QF=["L","YYYY-MM-DD","YYYY/MM/DD"],e3=["L h:mm A","YYYY-MM-DD h:mm A","YYYY/MM/DD h:mm A"],t3=["L HH:mm","YYYY-MM-DD HH:mm","YYYY/MM/DD HH:mm"],n3=["h:mm A"],r3=["HH:mm"],s3="WWW, MMM D, YYYY",i3=["L","YYYY-MM-DD","YYYY/MM/DD"],o3="iso",a3="YYYY-MM-DDTHH:mm:ss.SSSZ",l3={title:GF,weekdays:ZF,navMonths:XF,hours:JF,input:QF,inputDateTime:e3,inputDateTime24hr:t3,inputTime:n3,inputTime24hr:r3,dayPopover:s3,data:i3,model:o3,iso:a3},u3=300,c3=60,f3=80,d3={maxSwipeTime:u3,minHorizontalSwipeDistance:c3,maxVerticalSwipeDistance:f3},h3={componentPrefix:"V",color:"blue",isDark:!1,navVisibility:"click",titlePosition:"center",transition:"slide-h",touch:d3,masks:l3,locales:qF,datePicker:{updateOnInput:!0,inputDebounce:1e3,popover:{visibility:"hover-focus",placement:"bottom-start",isInteractive:!0}}},Ec=Bs(h3),v3=N(()=>kR(Ec.locales,e=>(e.masks=Oo(e.masks,Ec.masks),e))),us=e=>typeof window<"u"&&fy(window.__vcalendar__,e)?Is(window.__vcalendar__,e):Is(Ec,e),p3=12,g3=5;function m3(e,t){const n=new Intl.DateTimeFormat().resolvedOptions().locale;let i;cr(e)?i=e:fy(e,"id")&&(i=e.id),i=(i||n).toLowerCase();const o=Object.keys(t),a=d=>o.find(h=>h.toLowerCase()===d);i=a(i)||a(i.substring(0,2))||n;const u={...t["en-IE"],...t[i],id:i,monthCacheSize:p3,pageCacheSize:g3};return Er(e)?Oo(e,u):u}class ll{constructor(t=void 0,n){be(this,"id"),be(this,"daysInWeek"),be(this,"firstDayOfWeek"),be(this,"masks"),be(this,"timezone"),be(this,"hourLabels"),be(this,"dayNames"),be(this,"dayNamesShort"),be(this,"dayNamesShorter"),be(this,"dayNamesNarrow"),be(this,"monthNames"),be(this,"monthNamesShort"),be(this,"relativeTimeNames"),be(this,"amPm",["am","pm"]),be(this,"monthCache"),be(this,"pageCache");const{id:i,firstDayOfWeek:o,masks:a,monthCacheSize:u,pageCacheSize:c}=m3(t,v3.value);this.monthCache=new sg(u,F3,W3),this.pageCache=new sg(c,yy,VF),this.id=i,this.daysInWeek=Xt,this.firstDayOfWeek=JN(o,1,Xt),this.masks=a,this.timezone=n||void 0,this.hourLabels=this.getHourLabels(),this.dayNames=lc("long",this.id),this.dayNamesShort=lc("short",this.id),this.dayNamesShorter=this.dayNamesShort.map(d=>d.substring(0,2)),this.dayNamesNarrow=lc("narrow",this.id),this.monthNames=cg("long",this.id),this.monthNamesShort=cg("short",this.id),this.relativeTimeNames=H3(this.id)}formatDate(t,n){return q3(t,n,this)}parseDate(t,n){return fg(t,n,this)}toDate(t,n={}){const i=new Date(NaN);let o=i;const{fillDate:a,mask:u,patch:c,rules:d}=n;if(tr(t)?(n.type="number",o=new Date(+t)):cr(t)?(n.type="string",o=t?fg(t,u||"iso",this):i):gi(t)?(n.type="date",o=new Date(t.getTime())):Sf(t)&&(n.type="object",o=this.getDateFromParts(t)),o&&(c||d)){let h=this.getDateParts(o);if(c&&a!=null){const p=this.getDateParts(this.toDate(a));h=this.getDateParts(this.toDate({...p,...hy(h,A3[c])}))}d&&(h=j3(h,d)),o=this.getDateFromParts(h)}return o||i}toDateOrNull(t,n={}){const i=this.toDate(t,n);return isNaN(i.getTime())?null:i}fromDate(t,{type:n,mask:i}={}){switch(n){case"number":return t?t.getTime():NaN;case"string":return t?this.formatDate(t,i||"iso"):"";case"object":return t?this.getDateParts(t):null;default:return t?new Date(t):null}}range(t){return mi.from(t,this)}ranges(t){return mi.fromMany(t,this)}getDateParts(t){return N3(t,this)}getDateFromParts(t){return Ay(t,this.timezone)}getDateFromParams(t,n,i,o,a,u,c){return this.getDateFromParts({year:t,month:n,day:i,hours:o,minutes:a,seconds:u,milliseconds:c})}getPage(t){const n=this.pageCache.getOrSet(t,this);return zF(t,n)}getMonthParts(t,n){const{firstDayOfWeek:i}=this;return this.monthCache.getOrSet(t,n,i)}getThisMonthParts(){const t=new Date;return this.getMonthParts(t.getMonth()+1,t.getFullYear())}getPrevMonthParts(t,n){return t===1?this.getMonthParts(12,n-1):this.getMonthParts(t-1,n)}getNextMonthParts(t,n){return t===12?this.getMonthParts(1,n+1):this.getMonthParts(t+1,n)}getHourLabels(){return U3().map(t=>this.formatDate(t,this.masks.hours))}getDayId(t){return this.formatDate(t,"YYYY-MM-DD")}}var ui=(e=>(e.Any="any",e.All="all",e))(ui||{}),_y=(e=>(e.Days="days",e.Weeks="weeks",e.Months="months",e.Years="years",e))(_y||{}),by=(e=>(e.Days="days",e.Weekdays="weekdays",e.Weeks="weeks",e.Months="months",e.Years="years",e))(by||{}),wy=(e=>(e.OrdinalWeekdays="ordinalWeekdays",e))(wy||{});class y3{constructor(t,n,i){be(this,"validated",!0),this.type=t,this.interval=n,this.from=i,this.from||(console.error('A valid "from" date is required for date interval rule. This rule will be skipped.'),this.validated=!1)}passes(t){if(!this.validated)return!0;const{date:n}=t;switch(this.type){case"days":return Tf(this.from.date,n)%this.interval===0;case"weeks":return R3(this.from.date,n)%this.interval===0;case"months":return Y3(this.from.date,n)%this.interval===0;case"years":return Oy(this.from.date,n)%this.interval===0;default:return!1}}}class Li{constructor(t,n,i,o){be(this,"components",[]),this.type=t,this.validator=i,this.getter=o,this.components=this.normalizeComponents(n)}static create(t,n){switch(t){case"days":return new _3(n);case"weekdays":return new b3(n);case"weeks":return new w3(n);case"months":return new D3(n);case"years":return new $3(n)}}normalizeComponents(t){if(this.validator(t))return[t];if(!Hn(t))return[];const n=[];return t.forEach(i=>{if(!this.validator(i)){console.error(`Component value ${i} in invalid for "${this.type}" rule. This rule will be skipped.`);return}n.push(i)}),n}passes(t){return this.getter(t).some(o=>this.components.includes(o))}}class _3 extends Li{constructor(t){super("days",t,S3,({day:n,dayFromEnd:i})=>[n,-i])}}class b3 extends Li{constructor(t){super("weekdays",t,Lc,({weekday:n})=>[n])}}class w3 extends Li{constructor(t){super("weeks",t,T3,({week:n,weekFromEnd:i})=>[n,-i])}}class D3 extends Li{constructor(t){super("months",t,O3,({month:n})=>[n])}}class $3 extends Li{constructor(t){super("years",t,tr,({year:n})=>[n])}}class C3{constructor(t,n){be(this,"components"),this.type=t,this.components=this.normalizeComponents(n)}normalizeArrayConfig(t){const n=[];return t.forEach((i,o)=>{if(tr(i)){if(o===0)return;if(!ig(t[0])){console.error(`Ordinal range for "${this.type}" rule is from -5 to -1 or 1 to 5. This rule will be skipped.`);return}if(!Lc(i)){console.error(`Acceptable range for "${this.type}" rule is from 1 to 5. This rule will be skipped`);return}n.push([t[0],i])}else Hn(i)&&n.push(...this.normalizeArrayConfig(i))}),n}normalizeComponents(t){const n=[];return t.forEach((i,o)=>{if(tr(i)){if(o===0)return;if(!ig(t[0])){console.error(`Ordinal range for "${this.type}" rule is from -5 to -1 or 1 to 5. This rule will be skipped.`);return}if(!Lc(i)){console.error(`Acceptable range for "${this.type}" rule is from 1 to 5. This rule will be skipped`);return}n.push([t[0],i])}else Hn(i)&&n.push(...this.normalizeArrayConfig(i))}),n}passes(t){const{weekday:n,weekdayOrdinal:i,weekdayOrdinalFromEnd:o}=t;return this.components.some(([a,u])=>(a===i||a===-o)&&n===u)}}class x3{constructor(t){be(this,"type","function"),be(this,"validated",!0),this.fn=t,Us(t)||(console.error("The function rule requires a valid function. This rule will be skipped."),this.validated=!1)}passes(t){return this.validated?this.fn(t):!0}}class ul{constructor(t,n={},i){be(this,"validated",!0),be(this,"config"),be(this,"type",ui.Any),be(this,"from"),be(this,"until"),be(this,"rules",[]),be(this,"locale",new ll),this.parent=i,n.locale&&(this.locale=n.locale),this.config=t,Us(t)?(this.type=ui.All,this.rules=[new x3(t)]):Hn(t)?(this.type=ui.Any,this.rules=t.map(o=>new ul(o,n,this))):Er(t)?(this.type=ui.All,this.from=t.from?this.locale.getDateParts(t.from):i==null?void 0:i.from,this.until=t.until?this.locale.getDateParts(t.until):i==null?void 0:i.until,this.rules=this.getObjectRules(t)):(console.error("Rule group configuration must be an object or an array."),this.validated=!1)}getObjectRules(t){const n=[];if(t.every&&(cr(t.every)&&(t.every=[1,`${t.every}s`]),Hn(t.every))){const[i=1,o=_y.Days]=t.every;n.push(new y3(o,i,this.from))}return Object.values(by).forEach(i=>{i in t&&n.push(Li.create(i,t[i]))}),Object.values(wy).forEach(i=>{i in t&&n.push(new C3(i,t[i]))}),t.on!=null&&(Hn(t.on)||(t.on=[t.on]),n.push(new ul(t.on,{locale:this.locale},this.parent))),n}passes(t){return this.validated?this.from&&t.dayIndex<=this.from.dayIndex||this.until&&t.dayIndex>=this.until.dayIndex?!1:this.type===ui.Any?this.rules.some(n=>n.passes(t)):this.rules.every(n=>n.passes(t)):!0}}function S3(e){return tr(e)?e>=1&&e<=31:!1}function Lc(e){return tr(e)?e>=1&&e<=7:!1}function T3(e){return tr(e)?e>=-6&&e<=-1||e>=1&&e<=6:!1}function O3(e){return tr(e)?e>=1&&e<=12:!1}function ig(e){return!(!tr(e)||e<-5||e>5||e===0)}const A3={dateTime:["year","month","day","hours","minutes","seconds","milliseconds"],date:["year","month","day"],time:["hours","minutes","seconds","milliseconds"]},Xt=7,M3=6,Dy=1e3,$y=Dy*60,Cy=$y*60,Ha=Cy*24,P3=[31,28,31,30,31,30,31,31,30,31,30,31],I3=["L","iso"],ao={milliseconds:[0,999,3],seconds:[0,59,2],minutes:[0,59,2],hours:[0,23,2]},xy=/d{1,2}|W{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|Z{1,4}|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,E3=/\[([^]*?)\]/gm,og={D(e){return e.day},DD(e){return at(e.day,2)},d(e){return e.weekday-1},dd(e){return at(e.weekday-1,2)},W(e,t){return t.dayNamesNarrow[e.weekday-1]},WW(e,t){return t.dayNamesShorter[e.weekday-1]},WWW(e,t){return t.dayNamesShort[e.weekday-1]},WWWW(e,t){return t.dayNames[e.weekday-1]},M(e){return e.month},MM(e){return at(e.month,2)},MMM(e,t){return t.monthNamesShort[e.month-1]},MMMM(e,t){return t.monthNames[e.month-1]},YY(e){return String(e.year).substr(2)},YYYY(e){return at(e.year,4)},h(e){return e.hours%12||12},hh(e){return at(e.hours%12||12,2)},H(e){return e.hours},HH(e){return at(e.hours,2)},m(e){return e.minutes},mm(e){return at(e.minutes,2)},s(e){return e.seconds},ss(e){return at(e.seconds,2)},S(e){return Math.round(e.milliseconds/100)},SS(e){return at(Math.round(e.milliseconds/10),2)},SSS(e){return at(e.milliseconds,3)},a(e,t){return e.hours<12?t.amPm[0]:t.amPm[1]},A(e,t){return e.hours<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},Z(){return"Z"},ZZ(e){const t=e.timezoneOffset;return`${t>0?"-":"+"}${at(Math.floor(Math.abs(t)/60),2)}`},ZZZ(e){const t=e.timezoneOffset;return`${t>0?"-":"+"}${at(Math.floor(Math.abs(t)/60)*100+Math.abs(t)%60,4)}`},ZZZZ(e){const t=e.timezoneOffset;return`${t>0?"-":"+"}${at(Math.floor(Math.abs(t)/60),2)}:${at(Math.abs(t)%60,2)}`}},Jr=/\d\d?/,L3=/\d{3}/,k3=/\d{4}/,no=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF/]+(\s*?[\u0600-\u06FF]+){1,2}/i,ag=()=>{},lg=e=>(t,n,i)=>{const o=i[e].indexOf(n.charAt(0).toUpperCase()+n.substr(1).toLowerCase());~o&&(t.month=o)},ht={D:[Jr,(e,t)=>{e.day=t}],Do:[new RegExp(Jr.source+no.source),(e,t)=>{e.day=parseInt(t,10)}],d:[Jr,ag],W:[no,ag],M:[Jr,(e,t)=>{e.month=t-1}],MMM:[no,lg("monthNamesShort")],MMMM:[no,lg("monthNames")],YY:[Jr,(e,t)=>{const i=+new Date().getFullYear().toString().substr(0,2);e.year=+`${t>68?i-1:i}${t}`}],YYYY:[k3,(e,t)=>{e.year=t}],S:[/\d/,(e,t)=>{e.milliseconds=t*100}],SS:[/\d{2}/,(e,t)=>{e.milliseconds=t*10}],SSS:[L3,(e,t)=>{e.milliseconds=t}],h:[Jr,(e,t)=>{e.hours=t}],m:[Jr,(e,t)=>{e.minutes=t}],s:[Jr,(e,t)=>{e.seconds=t}],a:[no,(e,t,n)=>{const i=t.toLowerCase();i===n.amPm[0]?e.isPm=!1:i===n.amPm[1]&&(e.isPm=!0)}],Z:[/[^\s]*?[+-]\d\d:?\d\d|[^\s]*?Z?/,(e,t)=>{t==="Z"&&(t="+00:00");const n=`${t}`.match(/([+-]|\d\d)/gi);if(n){const i=+n[1]*60+parseInt(n[2],10);e.timezoneOffset=n[0]==="+"?i:-i}}]};ht.DD=ht.D;ht.dd=ht.d;ht.WWWW=ht.WWW=ht.WW=ht.W;ht.MM=ht.M;ht.mm=ht.m;ht.hh=ht.H=ht.HH=ht.h;ht.ss=ht.s;ht.A=ht.a;ht.ZZZZ=ht.ZZZ=ht.ZZ=ht.Z;function Sy(e,t){return(Ar(e)&&e||[cr(e)&&e||"YYYY-MM-DD"]).map(n=>I3.reduce((i,o)=>i.replace(o,t.masks[o]||""),n))}function Sf(e){return Er(e)&&"year"in e&&"month"in e&&"day"in e}function ug(e,t=1){const n=e.getDay()+1,i=n>=t?t-n:-(7-(t-n));return ln(e,i)}function Ty(e,t,n){const i=Date.UTC(e,t-1,n);return Tf(new Date(0),new Date(i))}function Tf(e,t){return Math.round((t.getTime()-e.getTime())/Ha)}function R3(e,t){return Math.ceil(Tf(ug(e),ug(t))/7)}function Oy(e,t){return t.getUTCFullYear()-e.getUTCFullYear()}function Y3(e,t){return Oy(e,t)*12+(t.getMonth()-e.getMonth())}function Ay(e,t=""){const n=new Date,{year:i=n.getFullYear(),month:o=n.getMonth()+1,day:a=n.getDate(),hours:u=0,minutes:c=0,seconds:d=0,milliseconds:h=0}=e;if(t){const p=`${at(i,4)}-${at(o,2)}-${at(a,2)}T${at(u,2)}:${at(c,2)}:${at(d,2)}.${at(h,3)}`;return pF(p,{timeZone:t})}return new Date(i,o-1,a,u,c,d,h)}function N3(e,t){let n=new Date(e.getTime());t.timezone&&(n=new Date(e.toLocaleString("en-US",{timeZone:t.timezone})),n.setMilliseconds(e.getMilliseconds()));const i=n.getMilliseconds(),o=n.getSeconds(),a=n.getMinutes(),u=n.getHours(),c=i+o*Dy+a*$y+u*Cy,d=n.getMonth()+1,h=n.getFullYear(),p=t.getMonthParts(d,h),y=n.getDate(),b=p.numDays-y+1,$=n.getDay()+1,A=Math.floor((y-1)/7+1),k=Math.floor((p.numDays-y)/7+1),L=Math.ceil((y+Math.abs(p.firstWeekday-p.firstDayOfWeek))/7),M=p.numWeeks-L+1,le=p.weeknumbers[L],re=Ty(h,d,y);return{milliseconds:i,seconds:o,minutes:a,hours:u,time:c,day:y,dayFromEnd:b,weekday:$,weekdayOrdinal:A,weekdayOrdinalFromEnd:k,week:L,weekFromEnd:M,weeknumber:le,month:d,year:h,date:n,dateTime:n.getTime(),dayIndex:re,timezoneOffset:0,isValid:!0}}function F3(e,t,n){return`${t}-${e}-${n}`}function W3(e,t,n){const i=t%4===0&&t%100!==0||t%400===0,o=new Date(t,e-1,1),a=o.getDay()+1,u=e===2&&i?29:P3[e-1],c=n-1,d=OF(o,{weekStartsOn:c}),h=[],p=[];for(let y=0;yn.format(i))}function U3(){const e=[];for(let t=0;t<=24;t++)e.push(new Date(2e3,0,1,t));return e}function H3(e=void 0){const t=["second","minute","hour","day","week","month","quarter","year"],n=new Intl.RelativeTimeFormat(e);return t.reduce((i,o)=>{const a=n.formatToParts(100,o);return i[o]=a[1].unit,i},{})}function My(){const e=[];for(let t=0;t<12;t++)e.push(new Date(2e3,t,15));return e}function cg(e,t=void 0){const n=new Intl.DateTimeFormat(t,{month:e,timeZone:"UTC"});return My().map(i=>n.format(i))}function K3(e,t,n){return tr(t)?t===e:Hn(t)?t.includes(e):Us(t)?t(e,n):!(t.min!=null&&t.min>e||t.max!=null&&t.max{if(c.disabled)return u;if(isNaN(u))return c.value;const d=Math.abs(u-n);return Math.abs(c.value-n){const a=ao[i],u=e[i];n[i]=z3(e,a,u,o)}),n}function fg(e,t,n){return Sy(t,n).map(o=>{if(typeof o!="string")throw new Error("Invalid mask");let a=e;if(a.length>1e3)return!1;let u=!0;const c={};if(o.replace(xy,p=>{if(ht[p]){const y=ht[p],b=a.search(y[0]);~b?a.replace(y[0],$=>(y[1](c,$,n),a=a.substr(b+$.length),$)):u=!1}return ht[p]?"":p.slice(1,p.length-1)}),!u)return!1;const d=new Date;c.hours!=null&&(c.isPm===!0&&+c.hours!=12?c.hours=+c.hours+12:c.isPm===!1&&+c.hours==12&&(c.hours=0));let h;return c.timezoneOffset!=null?(c.minutes=+(c.minutes||0)-+c.timezoneOffset,h=new Date(Date.UTC(c.year||d.getFullYear(),c.month||0,c.day||1,c.hours||0,c.minutes||0,c.seconds||0,c.milliseconds||0))):h=n.getDateFromParts({year:c.year||d.getFullYear(),month:(c.month||0)+1,day:c.day||1,hours:c.hours||0,minutes:c.minutes||0,seconds:c.seconds||0,milliseconds:c.milliseconds||0}),h}).find(o=>o)||new Date(e)}function q3(e,t,n){if(e==null)return"";let i=Sy(t,n)[0];/Z$/.test(i)&&(n.timezone="utc");const o=[];i=i.replace(E3,(u,c)=>(o.push(c),"??"));const a=n.getDateParts(e);return i=i.replace(xy,u=>u in og?og[u](a,n):u.slice(1,u.length-1)),i.replace(/\?\?/g,()=>o.shift())}let G3=0;class Py{constructor(t,n,i){be(this,"key",""),be(this,"hashcode",""),be(this,"highlight",null),be(this,"content",null),be(this,"dot",null),be(this,"bar",null),be(this,"event",null),be(this,"popover",null),be(this,"customData",null),be(this,"ranges"),be(this,"hasRanges",!1),be(this,"order",0),be(this,"pinPage",!1),be(this,"maxRepeatSpan",0),be(this,"locale");const{dates:o}=Object.assign(this,{hashcode:"",order:0,pinPage:!1},t);this.key||(this.key=++G3),this.locale=i,n.normalizeGlyphs(this),this.ranges=i.ranges(o??[]),this.hasRanges=!!Ar(this.ranges),this.maxRepeatSpan=this.ranges.filter(a=>a.hasRepeat).map(a=>a.daySpan).reduce((a,u)=>Math.max(a,u),0)}intersectsRange({start:t,end:n}){if(t==null||n==null)return!1;const i=this.ranges.filter(u=>!u.hasRepeat);for(const u of i)if(u.intersectsDayRange(t.dayIndex,n.dayIndex))return!0;const o=this.ranges.filter(u=>u.hasRepeat);if(!o.length)return!1;let a=t;for(this.maxRepeatSpan>1&&(a=this.locale.getDateParts(ln(a.date,-this.maxRepeatSpan)));a.dayIndex<=n.dayIndex;){for(const u of o)if(u.startsOnDay(a))return!0;a=this.locale.getDateParts(ln(a.date,1))}return!1}}function kc(e){document&&document.dispatchEvent(new CustomEvent("show-popover",{detail:e}))}function Ao(e){document&&document.dispatchEvent(new CustomEvent("hide-popover",{detail:e}))}function Iy(e){document&&document.dispatchEvent(new CustomEvent("toggle-popover",{detail:e}))}function Ey(e){const{visibility:t}=e,n=t==="click",i=t==="hover",o=t==="hover-focus",a=t==="focus";e.autoHide=!n;let u=!1,c=!1;const d=A=>{n&&(Iy({...e,target:e.target||A.currentTarget}),A.stopPropagation())},h=A=>{u||(u=!0,(i||o)&&kc({...e,target:e.target||A.currentTarget}))},p=()=>{u&&(u=!1,(i||o&&!c)&&Ao(e))},y=A=>{c||(c=!0,(a||o)&&kc({...e,target:e.target||A.currentTarget}))},b=A=>{c&&!Ba(A.currentTarget,A.relatedTarget)&&(c=!1,(a||o&&!u)&&Ao(e))},$={};switch(e.visibility){case"click":$.click=d;break;case"hover":$.mousemove=h,$.mouseleave=p;break;case"focus":$.focusin=y,$.focusout=b;break;case"hover-focus":$.mousemove=h,$.mouseleave=p,$.focusin=y,$.focusout=b;break}return $}const dg=e=>{const t=nl(e);if(t==null)return;const n=t.popoverHandlers;!n||!n.length||(n.forEach(i=>i()),delete t.popoverHandlers)},hg=(e,t)=>{const n=nl(e);if(n==null)return;const i=[],o=Ey(t);Object.entries(o).forEach(([a,u])=>{i.push(ss(n,a,u))}),n.popoverHandlers=i},Ly={mounted(e,t){const{value:n}=t;n&&hg(e,n)},updated(e,t){const{oldValue:n,value:i}=t,o=n==null?void 0:n.visibility,a=i==null?void 0:i.visibility;o!==a&&(o&&(dg(e),a||Ao(n)),a&&hg(e,i))},unmounted(e){dg(e)}},Z3=(e,t,{maxSwipeTime:n,minHorizontalSwipeDistance:i,maxVerticalSwipeDistance:o})=>{if(!e||!e.addEventListener||!Us(t))return null;let a=0,u=0,c=null,d=!1;function h(y){const b=y.changedTouches[0];a=b.screenX,u=b.screenY,c=new Date().getTime(),d=!0}function p(y){if(!d||!c)return;d=!1;const b=y.changedTouches[0],$=b.screenX-a,A=b.screenY-u;if(new Date().getTime()-c=i&&Math.abs(A)<=o){const L={toLeft:!1,toRight:!1};$<0?L.toLeft=!0:L.toRight=!0,t(L)}}return ss(e,"touchstart",h,{passive:!0}),ss(e,"touchend",p,{passive:!0}),()=>{rs(e,"touchstart",h),rs(e,"touchend",p)}},Ka={},X3=(e,t=10)=>{Ka[e]=Date.now()+t},J3=(e,t)=>{if(e in Ka){const n=Ka[e];if(Date.now()t.value?"dark":"light");let i,o;function a($){t.value=$.matches}function u(){Q3("matchMedia")&&(i=window.matchMedia("(prefers-color-scheme: dark)"),i.addEventListener("change",a),t.value=i.matches)}function c(){const{selector:$=":root",darkClass:A="dark"}=e.value,k=document.querySelector($);t.value=k.classList.contains(A)}function d($){const{selector:A=":root",darkClass:k="dark"}=$;if(ky()&&A&&k){const L=document.querySelector(A);L&&(o=new MutationObserver(c),o.observe(L,{attributes:!0,attributeFilter:["class"]}),t.value=L.classList.contains(k))}}function h(){y();const $=typeof e.value;$==="string"&&e.value.toLowerCase()==="system"?u():$==="object"?d(e.value):t.value=!!e.value}const p=Bt(()=>e.value,()=>h(),{immediate:!0});function y(){i&&(i.removeEventListener("change",a),i=void 0),o&&(o.disconnect(),o=void 0)}function b(){y(),p()}return Mo(()=>b()),{isDark:t,displayMode:n,cleanup:b}}const tW=["base","start","end","startEnd"],nW=["class","wrapperClass","contentClass","style","contentStyle","color","fillMode"],rW={base:{},start:{},end:{}};function Of(e,t,n=rW){let i=e,o={};t===!0||cr(t)?(i=cr(t)?t:i,o={...n}):Er(t)&&(jp(t,tW)?o={...t}:o={base:{...t},start:{...t},end:{...t}});const a=Oo(o,{start:o.startEnd,end:o.startEnd},n);return Object.entries(a).forEach(([u,c])=>{let d=i;c===!0||cr(c)?(d=cr(c)?c:d,a[u]={color:d}):Er(c)&&(jp(c,nW)?a[u]={...c}:a[u]={}),Oo(a[u],{color:d})}),a}class sW{constructor(){be(this,"type","highlight")}normalizeConfig(t,n){return Of(t,n,{base:{fillMode:"light"},start:{fillMode:"solid"},end:{fillMode:"solid"}})}prepareRender(t){t.highlights=[],t.content||(t.content=[])}render({data:t,onStart:n,onEnd:i},o){const{key:a,highlight:u}=t;if(!u)return;const{highlights:c}=o,{base:d,start:h,end:p}=u;n&&i?c.push({...h,key:a,wrapperClass:`vc-day-layer vc-day-box-center-center vc-attr vc-${h.color}`,class:[`vc-highlight vc-highlight-bg-${h.fillMode}`,h.class],contentClass:[`vc-attr vc-highlight-content-${h.fillMode} vc-${h.color}`,h.contentClass]}):n?(c.push({...d,key:`${a}-base`,wrapperClass:`vc-day-layer vc-day-box-right-center vc-attr vc-${d.color}`,class:[`vc-highlight vc-highlight-base-start vc-highlight-bg-${d.fillMode}`,d.class]}),c.push({...h,key:a,wrapperClass:`vc-day-layer vc-day-box-center-center vc-attr vc-${h.color}`,class:[`vc-highlight vc-highlight-bg-${h.fillMode}`,h.class],contentClass:[`vc-attr vc-highlight-content-${h.fillMode} vc-${h.color}`,h.contentClass]})):i?(c.push({...d,key:`${a}-base`,wrapperClass:`vc-day-layer vc-day-box-left-center vc-attr vc-${d.color}`,class:[`vc-highlight vc-highlight-base-end vc-highlight-bg-${d.fillMode}`,d.class]}),c.push({...p,key:a,wrapperClass:`vc-day-layer vc-day-box-center-center vc-attr vc-${p.color}`,class:[`vc-highlight vc-highlight-bg-${p.fillMode}`,p.class],contentClass:[`vc-attr vc-highlight-content-${p.fillMode} vc-${p.color}`,p.contentClass]})):c.push({...d,key:`${a}-middle`,wrapperClass:`vc-day-layer vc-day-box-center-center vc-attr vc-${d.color}`,class:[`vc-highlight vc-highlight-base-middle vc-highlight-bg-${d.fillMode}`,d.class],contentClass:[`vc-attr vc-highlight-content-${d.fillMode} vc-${d.color}`,d.contentClass]})}}class Af{constructor(t,n){be(this,"type",""),be(this,"collectionType",""),this.type=t,this.collectionType=n}normalizeConfig(t,n){return Of(t,n)}prepareRender(t){t[this.collectionType]=[]}render({data:t,onStart:n,onEnd:i},o){const{key:a}=t,u=t[this.type];if(!a||!u)return;const c=o[this.collectionType],{base:d,start:h,end:p}=u;n?c.push({...h,key:a,class:[`vc-${this.type} vc-${this.type}-start vc-${h.color} vc-attr`,h.class]}):i?c.push({...p,key:a,class:[`vc-${this.type} vc-${this.type}-end vc-${p.color} vc-attr`,p.class]}):c.push({...d,key:a,class:[`vc-${this.type} vc-${this.type}-base vc-${d.color} vc-attr`,d.class]})}}class iW extends Af{constructor(){super("content","content")}normalizeConfig(t,n){return Of("base",n)}}class oW extends Af{constructor(){super("dot","dots")}}class aW extends Af{constructor(){super("bar","bars")}}class lW{constructor(t){be(this,"color"),be(this,"renderers",[new iW,new sW,new oW,new aW]),this.color=t}normalizeGlyphs(t){this.renderers.forEach(n=>{const i=n.type;t[i]!=null&&(t[i]=n.normalizeConfig(this.color,t[i]))})}prepareRender(t={}){return this.renderers.forEach(n=>{n.prepareRender(t)}),t}render(t,n){this.renderers.forEach(i=>{i.render(t,n)})}}const Ry=Symbol("__vc_base_context__"),Yy={color:{type:String,default:()=>us("color")},isDark:{type:[Boolean,String,Object],default:()=>us("isDark")},firstDayOfWeek:Number,masks:Object,locale:[String,Object],timezone:String,minDate:null,maxDate:null,disabledDates:null};function Ny(e){const t=N(()=>e.color??""),n=N(()=>e.isDark??!1),{displayMode:i}=eW(n),o=N(()=>new lW(t.value)),a=N(()=>{if(e.locale instanceof ll)return e.locale;const b=Er(e.locale)?e.locale:{id:e.locale,firstDayOfWeek:e.firstDayOfWeek,masks:e.masks};return new ll(b,e.timezone)}),u=N(()=>a.value.masks),c=N(()=>e.minDate),d=N(()=>e.maxDate),h=N(()=>{const b=e.disabledDates?[...e.disabledDates]:[];return c.value!=null&&b.push({start:null,end:ln(a.value.toDate(c.value),-1)}),d.value!=null&&b.push({start:ln(a.value.toDate(d.value),1),end:null}),a.value.ranges(b)}),p=N(()=>new Py({key:"disabled",dates:h.value,order:100},o.value,a.value)),y={color:t,isDark:n,displayMode:i,theme:o,locale:a,masks:u,minDate:c,maxDate:d,disabledDates:h,disabledAttribute:p};return Si(Ry,y),y}function uW(e){return Pr(Ry,()=>Ny(e),!0)}function Fy(e){return`__vc_slot_${e}__`}function Wy(e,t={}){Object.keys(e).forEach(n=>{Si(Fy(t[n]??n),e[n])})}function By(e){return Pr(Fy(e),null)}const cW={...Yy,view:{type:String,default:"monthly",validator(e){return["daily","weekly","monthly"].includes(e)}},rows:{type:Number,default:1},columns:{type:Number,default:1},step:Number,titlePosition:{type:String,default:()=>us("titlePosition")},navVisibility:{type:String,default:()=>us("navVisibility")},showWeeknumbers:[Boolean,String],showIsoWeeknumbers:[Boolean,String],expanded:Boolean,borderless:Boolean,transparent:Boolean,initialPage:Object,initialPagePosition:{type:Number,default:1},minPage:Object,maxPage:Object,transition:String,attributes:Array,trimWeeks:Boolean,disablePageSwipe:Boolean},fW=["dayclick","daymouseenter","daymouseleave","dayfocusin","dayfocusout","daykeydown","weeknumberclick","transition-start","transition-end","did-move","update:view","update:pages"],Uy=Symbol("__vc_calendar_context__");function dW(e,{slots:t,emit:n}){const i=$t(null),o=$t(null),a=$t(new Date().getDate()),u=$t(!1),c=$t(Symbol()),d=$t(Symbol()),h=$t(e.view),p=$t([]),y=$t("");let b=null,$=null;Wy(t);const{theme:A,color:k,displayMode:L,locale:M,masks:le,minDate:re,maxDate:j,disabledAttribute:X,disabledDates:te}=uW(e),se=N(()=>e.rows*e.columns),Q=N(()=>e.step||se.value),ve=N(()=>cy(p.value)??null),pe=N(()=>fi(p.value)??null),we=N(()=>e.minPage||(re.value?de(re.value):null)),F=N(()=>e.maxPage||(j.value?de(j.value):null)),ce=N(()=>e.navVisibility),ke=N(()=>!!e.showWeeknumbers),me=N(()=>!!e.showIsoWeeknumbers),Se=N(()=>h.value==="monthly"),_e=N(()=>h.value==="weekly"),De=N(()=>h.value==="daily"),Ze=()=>{u.value=!0,n("transition-start")},ee=()=>{u.value=!1,n("transition-end"),b&&(b.resolve(!0),b=null)},Te=(K,D,V=h.value)=>my(K,D,V,M.value),de=K=>gy(K,h.value,M.value),mt=K=>{!X.value||!xt.value||(K.isDisabled=xt.value.cellExists(X.value.key,K.dayIndex))},Xe=K=>{K.isFocusable=K.inMonth&&K.day===a.value},st=(K,D)=>{for(const V of K)for(const ae of V.days)if(D(ae)===!1)return},et=N(()=>p.value.reduce((K,D)=>(K.push(...D.viewDays),K),[])),ut=N(()=>{const K=[];return(e.attributes||[]).forEach((D,V)=>{!D||!D.dates||K.push(new Py({...D,order:D.order||0},A.value,M.value))}),X.value&&K.push(X.value),K}),ct=N(()=>Ar(ut.value)),xt=N(()=>{const K=new jF;return ut.value.forEach(D=>{D.ranges.forEach(V=>{K.render(D,V,et.value)})}),K}),Ft=N(()=>et.value.reduce((K,D)=>(K[D.dayIndex]={day:D,cells:[]},K[D.dayIndex].cells.push(...xt.value.getCells(D)),K),{})),Et=(K,D)=>{const V=e.showWeeknumbers||e.showIsoWeeknumbers;return V==null?"":mR(V)?V?"left":"":V.startsWith("right")?D>1?"right":V:K>1?"left":V},At=()=>{var K,D;if(!ct.value)return null;const V=ut.value.find(vt=>vt.pinPage)||ut.value[0];if(!V||!V.hasRanges)return null;const[ae]=V.ranges,Ye=((K=ae.start)==null?void 0:K.date)||((D=ae.end)==null?void 0:D.date);return Ye?de(Ye):null},w=()=>{if(fr(ve.value))return ve.value;const K=At();return fr(K)?K:de(new Date)},x=(K,D={})=>{const{view:V=h.value,position:ae=1,force:Ye}=D,vt=ae>0?1-ae:-(se.value+ae);let Ut=Te(K,vt,V),nn=Te(Ut,se.value-1,V);return Ye||(Ic(Ut,we.value)?Ut=we.value:al(nn,F.value)&&(Ut=Te(F.value,1-se.value)),nn=Te(Ut,se.value-1)),{fromPage:Ut,toPage:nn}},E=(K,D,V="")=>{if(V==="none"||V==="fade")return V;if((K==null?void 0:K.view)!==(D==null?void 0:D.view))return"fade";const ae=al(D,K),Ye=Ic(D,K);return!ae&&!Ye?"fade":V==="slide-v"?Ye?"slide-down":"slide-up":Ye?"slide-right":"slide-left"},B=(K={})=>new Promise((D,V)=>{const{position:ae=1,force:Ye=!1,transition:vt}=K,Ut=fr(K.page)?K.page:w(),{fromPage:nn}=x(Ut,{position:ae,force:Ye}),Nr=[];for(let Fr=0;Fr{const D=ve.value??de(new Date);return Te(D,K)},ne=(K,D={})=>{const V=fr(K)?K:de(K);return Object.assign(D,x(V,{...D,force:!0})),KF(D.fromPage,D.toPage,h.value,M.value).map(Ye=>UF(Ye,we.value,F.value)).some(Ye=>Ye)},ie=(K,D={})=>ne(Y(K),D),q=N(()=>ie(-Q.value)),J=N(()=>ie(Q.value)),z=async(K,D={})=>!D.force&&!ne(K,D)?!1:(D.fromPage&&!HF(D.fromPage,ve.value)&&(Ao({id:c.value,hideDelay:0}),D.view&&(X3("view",10),h.value=D.view),await B({...D,page:D.fromPage,position:1,force:!0}),n("did-move",p.value)),!0),oe=(K,D={})=>z(Y(K),D),ge=()=>oe(-Q.value),fe=()=>oe(Q.value),$e=K=>{const D=Se.value?".in-month":"",V=`.id-${M.value.getDayId(K)}${D}`,ae=`${V}.vc-focusable, ${V} .vc-focusable`,Ye=i.value;if(Ye){const vt=Ye.querySelector(ae);if(vt)return vt.focus(),!0}return!1},Me=async(K,D={})=>$e(K)?!0:(await z(K,D),$e(K)),Ue=(K,D)=>{a.value=K.day,n("dayclick",K,D)},tt=(K,D)=>{n("daymouseenter",K,D)},ot=(K,D)=>{n("daymouseleave",K,D)},Lt=(K,D)=>{a.value=K.day,o.value=K,K.isFocused=!0,n("dayfocusin",K,D)},tn=(K,D)=>{o.value=null,K.isFocused=!1,n("dayfocusout",K,D)},jn=(K,D)=>{n("daykeydown",K,D);const V=K.noonDate;let ae=null;switch(D.key){case"ArrowLeft":{ae=ln(V,-1);break}case"ArrowRight":{ae=ln(V,1);break}case"ArrowUp":{ae=ln(V,-7);break}case"ArrowDown":{ae=ln(V,7);break}case"Home":{ae=ln(V,-K.weekdayPosition+1);break}case"End":{ae=ln(V,K.weekdayPositionFromEnd);break}case"PageUp":{D.altKey?ae=rg(V,-1):ae=ol(V,-1);break}case"PageDown":{D.altKey?ae=rg(V,1):ae=ol(V,1);break}}ae&&(D.preventDefault(),Me(ae).catch())},yn=K=>{const D=o.value;D!=null&&jn(D,K)},qn=(K,D)=>{n("weeknumberclick",K,D)};B({page:e.initialPage,position:e.initialPagePosition}),xi(()=>{!e.disablePageSwipe&&i.value&&($=Z3(i.value,({toLeft:K=!1,toRight:D=!1})=>{K?fe():D&&ge()},us("touch")))}),Mo(()=>{p.value=[],$&&$()}),Bt(()=>M.value,()=>{B()}),Bt(()=>se.value,()=>B()),Bt(()=>e.view,()=>h.value=e.view),Bt(()=>h.value,()=>{J3("view",()=>{B()}),n("update:view",h.value)}),Bt(()=>a.value,()=>{st(p.value,K=>Xe(K))}),Gg(()=>{n("update:pages",p.value),st(p.value,K=>{mt(K),Xe(K)})});const St={emit:n,containerRef:i,focusedDay:o,inTransition:u,navPopoverId:c,dayPopoverId:d,view:h,pages:p,transitionName:y,theme:A,color:k,displayMode:L,locale:M,masks:le,attributes:ut,disabledAttribute:X,disabledDates:te,attributeContext:xt,days:et,dayCells:Ft,count:se,step:Q,firstPage:ve,lastPage:pe,canMovePrev:q,canMoveNext:J,minPage:we,maxPage:F,isMonthly:Se,isWeekly:_e,isDaily:De,navVisibility:ce,showWeeknumbers:ke,showIsoWeeknumbers:me,getDateAddress:de,canMove:ne,canMoveBy:ie,move:z,moveBy:oe,movePrev:ge,moveNext:fe,onTransitionBeforeEnter:Ze,onTransitionAfterEnter:ee,tryFocusDate:$e,focusDate:Me,onKeydown:yn,onDayKeydown:jn,onDayClick:Ue,onDayMouseenter:tt,onDayMouseleave:ot,onDayFocusin:Lt,onDayFocusout:tn,onWeeknumberClick:qn};return Si(Uy,St),St}function Ks(){const e=Pr(Uy);if(e)return e;throw new Error("Calendar context missing. Please verify this component is nested within a valid context provider.")}const hW=jt({inheritAttrs:!1,emits:["before-show","after-show","before-hide","after-hide"],props:{id:{type:[Number,String,Symbol],required:!0},showDelay:{type:Number,default:0},hideDelay:{type:Number,default:110},boundarySelector:{type:String}},setup(e,{emit:t}){let n;const i=$t();let o=null,a=null;const u=Bs({isVisible:!1,target:null,data:null,transition:"slide-fade",placement:"bottom",direction:"",positionFixed:!1,modifiers:[],isInteractive:!0,visibility:"click",isHovered:!1,isFocused:!1,autoHide:!1,force:!1});function c(ee){ee&&(u.direction=ee.split("-")[0])}function d({placement:ee,options:Te}){c(ee||(Te==null?void 0:Te.placement))}const h=N(()=>({placement:u.placement,strategy:u.positionFixed?"fixed":"absolute",boundary:"",modifiers:[{name:"onUpdate",enabled:!0,phase:"afterWrite",fn:d},...u.modifiers||[]],onFirstUpdate:d})),p=N(()=>{const ee=u.direction==="left"||u.direction==="right";let Te="";if(u.placement){const de=u.placement.split("-");de.length>1&&(Te=de[1])}return["start","top","left"].includes(Te)?ee?"top":"left":["end","bottom","right"].includes(Te)?ee?"bottom":"right":ee?"middle":"center"});function y(){a&&(a.destroy(),a=null)}function b(){ci(()=>{const ee=nl(u.target);!ee||!i.value||(a&&a.state.elements.reference!==ee&&y(),a?a.update():a=oO(ee,i.value,h.value))})}function $(ee){Object.assign(u,dy(ee,"force"))}function A(ee,Te){clearTimeout(n),ee>0?n=setTimeout(Te,ee):Te()}function k(ee){return!ee||!a?!1:nl(ee)===a.state.elements.reference}async function L(ee={}){u.force||(ee.force&&(u.force=!0),A(ee.showDelay??e.showDelay,()=>{u.isVisible&&(u.force=!1),$({...ee,isVisible:!0}),b()}))}function M(ee={}){a&&(ee.target&&!k(ee.target)||u.force||(ee.force&&(u.force=!0),A(ee.hideDelay??e.hideDelay,()=>{u.isVisible||(u.force=!1),u.isVisible=!1})))}function le(ee={}){ee.target!=null&&(u.isVisible&&k(ee.target)?M(ee):L(ee))}function re(ee){if(!a)return;const Te=a.state.elements.reference;if(!i.value||!Te)return;const de=ee.target;Ba(i.value,de)||Ba(Te,de)||M({force:!0})}function j(ee){(ee.key==="Esc"||ee.key==="Escape")&&M()}function X({detail:ee}){!ee.id||ee.id!==e.id||L(ee)}function te({detail:ee}){!ee.id||ee.id!==e.id||M(ee)}function se({detail:ee}){!ee.id||ee.id!==e.id||le(ee)}function Q(){ss(document,"keydown",j),ss(document,"click",re),ss(document,"show-popover",X),ss(document,"hide-popover",te),ss(document,"toggle-popover",se)}function ve(){rs(document,"keydown",j),rs(document,"click",re),rs(document,"show-popover",X),rs(document,"hide-popover",te),rs(document,"toggle-popover",se)}function pe(ee){t("before-show",ee)}function we(ee){u.force=!1,t("after-show",ee)}function F(ee){t("before-hide",ee)}function ce(ee){u.force=!1,y(),t("after-hide",ee)}function ke(ee){ee.stopPropagation()}function me(){u.isHovered=!0,u.isInteractive&&["hover","hover-focus"].includes(u.visibility)&&L()}function Se(){if(u.isHovered=!1,!a)return;const ee=a.state.elements.reference;u.autoHide&&!u.isFocused&&(!ee||ee!==document.activeElement)&&["hover","hover-focus"].includes(u.visibility)&&M()}function _e(){u.isFocused=!0,u.isInteractive&&["focus","hover-focus"].includes(u.visibility)&&L()}function De(ee){["focus","hover-focus"].includes(u.visibility)&&(!ee.relatedTarget||!Ba(i.value,ee.relatedTarget))&&(u.isFocused=!1,!u.isHovered&&u.autoHide&&M())}function Ze(){o!=null&&(o.disconnect(),o=null)}return Bt(()=>i.value,ee=>{Ze(),ee&&(o=new ResizeObserver(()=>{a&&a.update()}),o.observe(ee))}),Bt(()=>u.placement,c,{immediate:!0}),xi(()=>{Q()}),Mo(()=>{y(),Ze(),ve()}),{...Wg(u),popoverRef:i,alignment:p,hide:M,setupPopper:b,beforeEnter:pe,afterEnter:we,beforeLeave:F,afterLeave:ce,onClick:ke,onMouseOver:me,onMouseLeave:Se,onFocusIn:_e,onFocusOut:De}}}),hs=(e,t)=>{const n=e.__vccOpts||e;for(const[i,o]of t)n[i]=o;return n};function vW(e,t,n,i,o,a){return I(),H("div",{class:Le(["vc-popover-content-wrapper",{"is-interactive":e.isInteractive}]),ref:"popoverRef",onClick:t[0]||(t[0]=(...u)=>e.onClick&&e.onClick(...u)),onMouseover:t[1]||(t[1]=(...u)=>e.onMouseOver&&e.onMouseOver(...u)),onMouseleave:t[2]||(t[2]=(...u)=>e.onMouseLeave&&e.onMouseLeave(...u)),onFocusin:t[3]||(t[3]=(...u)=>e.onFocusIn&&e.onFocusIn(...u)),onFocusout:t[4]||(t[4]=(...u)=>e.onFocusOut&&e.onFocusOut(...u))},[xe(Cl,{name:`vc-${e.transition}`,appear:"",onBeforeEnter:e.beforeEnter,onAfterEnter:e.afterEnter,onBeforeLeave:e.beforeLeave,onAfterLeave:e.afterLeave},{default:Ee(()=>[e.isVisible?(I(),H("div",Bn({key:0,tabindex:"-1",class:`vc-popover-content direction-${e.direction}`},e.$attrs),[Ce(e.$slots,"default",{direction:e.direction,alignment:e.alignment,data:e.data,hide:e.hide},()=>[Wn(Ve(e.data),1)]),O("span",{class:Le(["vc-popover-caret",`direction-${e.direction}`,`align-${e.alignment}`])},null,2)],16)):Re("",!0)]),_:3},8,["name","onBeforeEnter","onAfterEnter","onBeforeLeave","onAfterLeave"])],34)}const Mf=hs(hW,[["render",vW]]),pW={class:"vc-day-popover-row"},gW={key:0,class:"vc-day-popover-row-indicator"},mW={class:"vc-day-popover-row-label"},yW=jt({__name:"PopoverRow",props:{attribute:null},setup(e){const t=e,n=N(()=>{const{content:i,highlight:o,dot:a,bar:u,popover:c}=t.attribute;return c&&c.hideIndicator?null:i?{class:`vc-bar vc-day-popover-row-bar vc-attr vc-${i.base.color}`}:o?{class:`vc-highlight-bg-solid vc-day-popover-row-highlight vc-attr vc-${o.base.color}`}:a?{class:`vc-dot vc-attr vc-${a.base.color}`}:u?{class:`vc-bar vc-day-popover-row-bar vc-attr vc-${u.base.color}`}:null});return(i,o)=>(I(),H("div",pW,[Z(n)?(I(),H("div",gW,[O("span",{class:Le(Z(n).class)},null,2)])):Re("",!0),O("div",mW,[Ce(i.$slots,"default",{},()=>[Wn(Ve(e.attribute.popover?e.attribute.popover.label:"No content provided"),1)])])]))}}),_W={inheritAttrs:!1},Yn=jt({..._W,__name:"CalendarSlot",props:{name:null},setup(e){const n=By(e.name);return(i,o)=>Z(n)?(I(),lt(yi(Z(n)),zt(Bn({key:0},i.$attrs)),null,16)):Ce(i.$slots,"default",{key:1})}}),bW={class:"vc-day-popover-container"},wW={key:0,class:"vc-day-popover-header"},DW=jt({__name:"CalendarDayPopover",setup(e){const{dayPopoverId:t,displayMode:n,color:i,masks:o,locale:a}=Ks();function u(d,h){return a.value.formatDate(d,h)}function c(d){return a.value.formatDate(d.date,o.value.dayPopover)}return(d,h)=>(I(),lt(Mf,{id:Z(t),class:Le([`vc-${Z(i)}`,`vc-${Z(n)}`])},{default:Ee(({data:{day:p,attributes:y},hide:b})=>[xe(Yn,{name:"day-popover",day:p,"day-title":c(p),attributes:y,format:u,masks:Z(o),hide:b},{default:Ee(()=>[O("div",bW,[Z(o).dayPopover?(I(),H("div",wW,Ve(c(p)),1)):Re("",!0),(I(!0),H(Be,null,dt(y,$=>(I(),lt(yW,{key:$.key,attribute:$},null,8,["attribute"]))),128))])]),_:2},1032,["day","day-title","attributes","masks","hide"])]),_:1},8,["id","class"]))}}),$W={},CW={"stroke-linecap":"round","stroke-linejoin":"round",viewBox:"0 0 24 24"},xW=O("polyline",{points:"9 18 15 12 9 6"},null,-1),SW=[xW];function TW(e,t){return I(),H("svg",CW,SW)}const OW=hs($W,[["render",TW]]),AW={},MW={"stroke-linecap":"round","stroke-linejoin":"round",viewBox:"0 0 24 24"},PW=O("polyline",{points:"15 18 9 12 15 6"},null,-1),IW=[PW];function EW(e,t){return I(),H("svg",MW,IW)}const LW=hs(AW,[["render",EW]]),kW={},RW={"stroke-linecap":"round","stroke-linejoin":"round",viewBox:"0 0 24 24"},YW=O("polyline",{points:"6 9 12 15 18 9"},null,-1),NW=[YW];function FW(e,t){return I(),H("svg",RW,NW)}const WW=hs(kW,[["render",FW]]),BW={},UW={fill:"none","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",viewBox:"0 0 24 24"},HW=O("path",{d:"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1),KW=[HW];function VW(e,t){return I(),H("svg",UW,KW)}const zW=hs(BW,[["render",VW]]),jW=Object.freeze(Object.defineProperty({__proto__:null,IconChevronDown:WW,IconChevronLeft:LW,IconChevronRight:OW,IconClock:zW},Symbol.toStringTag,{value:"Module"})),Ci=jt({__name:"BaseIcon",props:{name:{type:String,required:!0},width:{type:String},height:{type:String},size:{type:String,default:"26"},viewBox:{type:String}},setup(e){const t=e,n=N(()=>t.width||t.size),i=N(()=>t.height||t.size),o=N(()=>jW[`Icon${t.name}`]);return(a,u)=>(I(),lt(yi(Z(o)),{width:Z(n),height:Z(i),class:"vc-base-icon"},null,8,["width","height"]))}}),qW=["disabled"],GW={key:1,class:"vc-title-wrapper"},ZW={type:"button",class:"vc-title"},XW=["disabled"],Hy=jt({__name:"CalendarHeader",props:{page:null,layout:null,isLg:{type:Boolean},isXl:{type:Boolean},is2xl:{type:Boolean},hideTitle:{type:Boolean},hideArrows:{type:Boolean}},setup(e){const t=e,{navPopoverId:n,navVisibility:i,canMovePrev:o,movePrev:a,canMoveNext:u,moveNext:c}=Ks(),d=N(()=>{switch(t.page.titlePosition){case"left":return"bottom-start";case"right":return"bottom-end";default:return"bottom"}}),h=N(()=>{const{page:k}=t;return{id:n.value,visibility:i.value,placement:d.value,modifiers:[{name:"flip",options:{fallbackPlacements:["bottom"]}}],data:{page:k},isInteractive:!0}}),p=N(()=>t.page.titlePosition.includes("left")),y=N(()=>t.page.titlePosition.includes("right")),b=N(()=>t.layout?t.layout:p.value?"tu-pn":y.value?"pn-tu":"p-tu-n;"),$=N(()=>({prev:b.value.includes("p")&&!t.hideArrows,title:b.value.includes("t")&&!t.hideTitle,next:b.value.includes("n")&&!t.hideArrows})),A=N(()=>({gridTemplateColumns:b.value.split("").map(L=>{switch(L){case"p":return"[prev] auto";case"n":return"[next] auto";case"t":return"[title] auto";case"-":return"1fr";default:return""}}).join(" ")}));return(k,L)=>(I(),H("div",{class:Le(["vc-header",{"is-lg":e.isLg,"is-xl":e.isXl,"is-2xl":e.is2xl}]),style:dr(Z(A))},[Z($).prev?(I(),H("button",{key:0,type:"button",class:"vc-arrow vc-prev vc-focus",disabled:!Z(o),onClick:L[0]||(L[0]=(...M)=>Z(a)&&Z(a)(...M)),onKeydown:L[1]||(L[1]=qv((...M)=>Z(a)&&Z(a)(...M),["space","enter"]))},[xe(Yn,{name:"header-prev-button",disabled:!Z(o)},{default:Ee(()=>[xe(Ci,{name:"ChevronLeft",size:"24"})]),_:1},8,["disabled"])],40,qW)):Re("",!0),Z($).title?(I(),H("div",GW,[xe(Yn,{name:"header-title-wrapper"},{default:Ee(()=>[ks((I(),H("button",ZW,[xe(Yn,{name:"header-title",title:e.page.title},{default:Ee(()=>[O("span",null,Ve(e.page.title),1)]),_:1},8,["title"])])),[[Z(Ly),Z(h)]])]),_:1})])):Re("",!0),Z($).next?(I(),H("button",{key:2,type:"button",class:"vc-arrow vc-next vc-focus",disabled:!Z(u),onClick:L[2]||(L[2]=(...M)=>Z(c)&&Z(c)(...M)),onKeydown:L[3]||(L[3]=qv((...M)=>Z(c)&&Z(c)(...M),["space","enter"]))},[xe(Yn,{name:"header-next-button",disabled:!Z(u)},{default:Ee(()=>[xe(Ci,{name:"ChevronRight",size:"24"})]),_:1},8,["disabled"])],40,XW)):Re("",!0)],6))}}),Ky=Symbol("__vc_page_context__");function JW(e){const{locale:t,getDateAddress:n,canMove:i}=Ks();function o(c,d){const{month:h,year:p}=n(new Date);return My().map((y,b)=>{const $=b+1;return{month:$,year:c,id:BF($,c),label:t.value.formatDate(y,d),ariaLabel:t.value.formatDate(y,"MMMM"),isActive:$===e.value.month&&c===e.value.year,isCurrent:$===h&&c===p,isDisabled:!i({month:$,year:c},{position:e.value.position})}})}function a(c,d){const{year:h}=n(new Date),{position:p}=e.value,y=[];for(let b=c;b<=d;b+=1){const $=[...Array(12).keys()].some(A=>i({month:A+1,year:b},{position:p}));y.push({year:b,id:b.toString(),label:b.toString(),ariaLabel:b.toString(),isActive:b===e.value.year,isCurrent:b===h,isDisabled:!$})}return y}const u={page:e,getMonthItems:o,getYearItems:a};return Si(Ky,u),u}function Vy(){const e=Pr(Ky);if(e)return e;throw new Error("Page context missing. Please verify this component is nested within a valid context provider.")}const QW={class:"vc-nav-header"},eB=["disabled"],tB=["disabled"],nB={class:"vc-nav-items"},rB=["data-id","aria-label","disabled","onClick","onKeydown"],sB=jt({__name:"CalendarNav",setup(e){const{masks:t,move:n}=Ks(),{page:i,getMonthItems:o,getYearItems:a}=Vy(),u=$t(!0),c=12,d=$t(i.value.year),h=$t(b(i.value.year)),p=$t(null);function y(){setTimeout(()=>{if(p.value==null)return;const de=p.value.querySelector(".vc-nav-item:not(:disabled)");de&&de.focus()},10)}function b(de){return Math.floor(de/c)}function $(){u.value=!u.value}function A(de){return de*c}function k(de){return c*(de+1)-1}function L(){_e.value&&(u.value&&le(),j())}function M(){De.value&&(u.value&&re(),X())}function le(){d.value--}function re(){d.value++}function j(){h.value--}function X(){h.value++}const te=N(()=>o(d.value,t.value.navMonths).map(de=>({...de,click:()=>n({month:de.month,year:de.year},{position:i.value.position})}))),se=N(()=>o(d.value-1,t.value.navMonths)),Q=N(()=>se.value.some(de=>!de.isDisabled)),ve=N(()=>o(d.value+1,t.value.navMonths)),pe=N(()=>ve.value.some(de=>!de.isDisabled)),we=N(()=>a(A(h.value),k(h.value)).map(de=>({...de,click:()=>{d.value=de.year,u.value=!0,y()}}))),F=N(()=>a(A(h.value-1),k(h.value-1))),ce=N(()=>F.value.some(de=>!de.isDisabled)),ke=N(()=>a(A(h.value+1),k(h.value+1))),me=N(()=>ke.value.some(de=>!de.isDisabled)),Se=N(()=>u.value?te.value:we.value),_e=N(()=>u.value?Q.value:ce.value),De=N(()=>u.value?pe.value:me.value),Ze=N(()=>cy(we.value.map(de=>de.year))),ee=N(()=>fi(we.value.map(de=>de.year))),Te=N(()=>u.value?d.value:`${Ze.value} - ${ee.value}`);return Gg(()=>{d.value=i.value.year,y()}),Bt(()=>d.value,de=>h.value=b(de)),xi(()=>y()),(de,mt)=>(I(),H("div",{class:"vc-nav-container",ref_key:"navContainer",ref:p},[O("div",QW,[O("button",{type:"button",class:"vc-nav-arrow is-left vc-focus",disabled:!Z(_e),onClick:L,onKeydown:mt[0]||(mt[0]=Xe=>Z(Ea)(Xe,L))},[xe(Yn,{name:"nav-prev-button",move:L,disabled:!Z(_e)},{default:Ee(()=>[xe(Ci,{name:"ChevronLeft",width:"22px",height:"24px"})]),_:1},8,["disabled"])],40,eB),O("button",{type:"button",class:"vc-nav-title vc-focus",onClick:$,onKeydown:mt[1]||(mt[1]=Xe=>Z(Ea)(Xe,$))},Ve(Z(Te)),33),O("button",{type:"button",class:"vc-nav-arrow is-right vc-focus",disabled:!Z(De),onClick:M,onKeydown:mt[2]||(mt[2]=Xe=>Z(Ea)(Xe,M))},[xe(Yn,{name:"nav-next-button",move:M,disabled:!Z(De)},{default:Ee(()=>[xe(Ci,{name:"ChevronRight",width:"22px",height:"24px"})]),_:1},8,["disabled"])],40,tB)]),O("div",nB,[(I(!0),H(Be,null,dt(Z(Se),Xe=>(I(),H("button",{key:Xe.label,type:"button","data-id":Xe.id,"aria-label":Xe.ariaLabel,class:Le(["vc-nav-item vc-focus",[Xe.isActive?"is-active":Xe.isCurrent?"is-current":""]]),disabled:Xe.isDisabled,onClick:Xe.click,onKeydown:st=>Z(Ea)(st,Xe.click)},Ve(Xe.label),43,rB))),128))])],512))}}),zy=jt({__name:"CalendarPageProvider",props:{page:null},setup(e){return JW(Ya(e,"page")),(n,i)=>Ce(n.$slots,"default")}}),iB=jt({__name:"CalendarNavPopover",setup(e){const{navPopoverId:t,color:n,displayMode:i}=Ks();return(o,a)=>(I(),lt(Mf,{id:Z(t),class:Le(["vc-nav-popover-container",`vc-${Z(n)}`,`vc-${Z(i)}`])},{default:Ee(({data:u})=>[xe(zy,{page:u.page},{default:Ee(()=>[xe(Yn,{name:"nav"},{default:Ee(()=>[xe(sB)]),_:1})]),_:2},1032,["page"])]),_:1},8,["id","class"]))}}),oB=jt({directives:{popover:Ly},components:{CalendarSlot:Yn},props:{day:{type:Object,required:!0}},setup(e){const{locale:t,theme:n,attributeContext:i,dayPopoverId:o,onDayClick:a,onDayMouseenter:u,onDayMouseleave:c,onDayFocusin:d,onDayFocusout:h,onDayKeydown:p}=Ks(),y=N(()=>e.day),b=N(()=>i.value.getCells(y.value)),$=N(()=>b.value.map(me=>me.data)),A=N(()=>({...y.value,attributes:$.value,attributeCells:b.value}));function k({data:me},{popovers:Se}){const{key:_e,customData:De,popover:Ze}=me;if(!Ze)return;const ee=Fp({key:_e,customData:De,attribute:me},{...Ze},{visibility:Ze.label?"hover":"click",placement:"bottom",isInteractive:!Ze.label});Se.splice(0,0,ee)}const L=N(()=>{const me={...n.value.prepareRender({}),popovers:[]};return b.value.forEach(Se=>{n.value.render(Se,me),k(Se,me)}),me}),M=N(()=>L.value.highlights),le=N(()=>!!Ar(M.value)),re=N(()=>L.value.content),j=N(()=>L.value.dots),X=N(()=>!!Ar(j.value)),te=N(()=>L.value.bars),se=N(()=>!!Ar(te.value)),Q=N(()=>L.value.popovers),ve=N(()=>Q.value.map(me=>me.attribute)),pe=By("day-content"),we=N(()=>["vc-day",...y.value.classes,{"vc-day-box-center-center":!pe},{"is-not-in-month":!e.day.inMonth}]),F=N(()=>{let me;y.value.isFocusable?me="0":me="-1";const Se=["vc-day-content vc-focusable vc-focus vc-attr",{"vc-disabled":y.value.isDisabled},Is(fi(M.value),"contentClass"),Is(fi(re.value),"class")||""],_e={...Is(fi(M.value),"contentStyle"),...Is(fi(re.value),"style")};return{class:Se,style:_e,tabindex:me,"aria-label":y.value.ariaLabel,"aria-disabled":!!y.value.isDisabled,role:"button"}}),ce=N(()=>({click(me){a(A.value,me)},mouseenter(me){u(A.value,me)},mouseleave(me){c(A.value,me)},focusin(me){d(A.value,me)},focusout(me){h(A.value,me)},keydown(me){p(A.value,me)}})),ke=N(()=>Ar(Q.value)?Fp({id:o.value,data:{day:y,attributes:ve.value}},...Q.value):null);return{attributes:$,attributeCells:b,bars:te,dayClasses:we,dayContentProps:F,dayContentEvents:ce,dayPopover:ke,glyphs:L,dots:j,hasDots:X,hasBars:se,highlights:M,hasHighlights:le,locale:t,popovers:Q}}}),aB={key:0,class:"vc-highlights vc-day-layer"},lB={key:1,class:"vc-day-layer vc-day-box-center-bottom"},uB={class:"vc-dots"},cB={key:2,class:"vc-day-layer vc-day-box-center-bottom"},fB={class:"vc-bars"};function dB(e,t,n,i,o,a){const u=Ct("CalendarSlot"),c=$x("popover");return I(),H("div",{class:Le(e.dayClasses)},[e.hasHighlights?(I(),H("div",aB,[(I(!0),H(Be,null,dt(e.highlights,({key:d,wrapperClass:h,class:p,style:y})=>(I(),H("div",{key:d,class:Le(h)},[O("div",{class:Le(p),style:dr(y)},null,6)],2))),128))])):Re("",!0),xe(u,{name:"day-content",day:e.day,attributes:e.attributes,"attribute-cells":e.attributeCells,dayProps:e.dayContentProps,dayEvents:e.dayContentEvents,locale:e.locale},{default:Ee(()=>[ks((I(),H("div",Bn(e.dayContentProps,Ux(e.dayContentEvents,!0)),[Wn(Ve(e.day.label),1)],16)),[[c,e.dayPopover]])]),_:1},8,["day","attributes","attribute-cells","dayProps","dayEvents","locale"]),e.hasDots?(I(),H("div",lB,[O("div",uB,[(I(!0),H(Be,null,dt(e.dots,({key:d,class:h,style:p})=>(I(),H("span",{key:d,class:Le(h),style:dr(p)},null,6))),128))])])):Re("",!0),e.hasBars?(I(),H("div",cB,[O("div",fB,[(I(!0),H(Be,null,dt(e.bars,({key:d,class:h,style:p})=>(I(),H("span",{key:d,class:Le(h),style:dr(p)},null,6))),128))])])):Re("",!0)],2)}const hB=hs(oB,[["render",dB]]),vB={class:"vc-weekdays"},pB=["onClick"],gB={inheritAttrs:!1},mB=jt({...gB,__name:"CalendarPage",setup(e){const{page:t}=Vy(),{onWeeknumberClick:n}=Ks();return(i,o)=>(I(),H("div",{class:Le(["vc-pane",`row-${Z(t).row}`,`row-from-end-${Z(t).rowFromEnd}`,`column-${Z(t).column}`,`column-from-end-${Z(t).columnFromEnd}`]),ref:"pane"},[xe(Hy,{page:Z(t),"is-lg":"","hide-arrows":""},null,8,["page"]),O("div",{class:Le(["vc-weeks",{[`vc-show-weeknumbers-${Z(t).weeknumberPosition}`]:Z(t).weeknumberPosition}])},[O("div",vB,[(I(!0),H(Be,null,dt(Z(t).weekdays,({weekday:a,label:u},c)=>(I(),H("div",{key:c,class:Le(`vc-weekday vc-weekday-${a}`)},Ve(u),3))),128))]),(I(!0),H(Be,null,dt(Z(t).viewWeeks,a=>(I(),H("div",{key:`weeknumber-${a.weeknumber}`,class:"vc-week"},[Z(t).weeknumberPosition?(I(),H("div",{key:0,class:Le(["vc-weeknumber",`is-${Z(t).weeknumberPosition}`])},[O("span",{class:Le(["vc-weeknumber-content"]),onClick:u=>Z(n)(a,u)},Ve(a.weeknumberDisplay),9,pB)],2)):Re("",!0),(I(!0),H(Be,null,dt(a.days,u=>(I(),lt(hB,{key:u.id,day:u},null,8,["day"]))),128))]))),128))],2)],2))}}),yB=jt({components:{CalendarHeader:Hy,CalendarPage:mB,CalendarNavPopover:iB,CalendarDayPopover:DW,CalendarPageProvider:zy,CalendarSlot:Yn},props:cW,emit:fW,setup(e,{emit:t,slots:n}){return dW(e,{emit:t,slots:n})}}),_B={class:"vc-pane-header-wrapper"};function bB(e,t,n,i,o,a){const u=Ct("CalendarHeader"),c=Ct("CalendarPage"),d=Ct("CalendarSlot"),h=Ct("CalendarPageProvider"),p=Ct("CalendarDayPopover"),y=Ct("CalendarNavPopover");return I(),H(Be,null,[O("div",Bn({"data-helptext":"Press the arrow keys to navigate by day, Home and End to navigate to week ends, PageUp and PageDown to navigate by month, Alt+PageUp and Alt+PageDown to navigate by year"},e.$attrs,{class:["vc-container",`vc-${e.view}`,`vc-${e.color}`,`vc-${e.displayMode}`,{"vc-expanded":e.expanded,"vc-bordered":!e.borderless,"vc-transparent":e.transparent}],onMouseup:t[0]||(t[0]=hr(()=>{},["prevent"])),ref:"containerRef"}),[O("div",{class:Le(["vc-pane-container",{"in-transition":e.inTransition}])},[O("div",_B,[e.firstPage?(I(),lt(u,{key:0,page:e.firstPage,"is-lg":"","hide-title":""},null,8,["page"])):Re("",!0)]),xe(Cl,{name:`vc-${e.transitionName}`,onBeforeEnter:e.onTransitionBeforeEnter,onAfterEnter:e.onTransitionAfterEnter},{default:Ee(()=>[(I(),H("div",{key:e.pages[0].id,class:"vc-pane-layout",style:dr({gridTemplateColumns:`repeat(${e.columns}, 1fr)`})},[(I(!0),H(Be,null,dt(e.pages,b=>(I(),lt(h,{key:b.id,page:b},{default:Ee(()=>[xe(d,{name:"page",page:b},{default:Ee(()=>[xe(c)]),_:2},1032,["page"])]),_:2},1032,["page"]))),128))],4))]),_:1},8,["name","onBeforeEnter","onAfterEnter"]),xe(d,{name:"footer"})],2)],16),xe(p),xe(y)],64)}const jy=hs(yB,[["render",bB]]),qy=Symbol("__vc_date_picker_context__"),wB={...Yy,mode:{type:String,default:"date"},modelValue:{type:[Number,String,Date,Object]},modelModifiers:{type:Object,default:()=>({})},rules:[String,Object],is24hr:Boolean,hideTimeHeader:Boolean,timeAccuracy:{type:Number,default:2},isRequired:Boolean,isRange:Boolean,updateOnInput:{type:Boolean,default:()=>us("datePicker.updateOnInput")},inputDebounce:{type:Number,default:()=>us("datePicker.inputDebounce")},popover:{type:[Boolean,Object],default:!0},dragAttribute:Object,selectAttribute:Object,attributes:[Object,Array]},DB=["update:modelValue","drag","dayclick","daykeydown","popover-will-show","popover-did-show","popover-will-hide","popover-did-hide"];function $B(e,{emit:t,slots:n}){Wy(n,{footer:"dp-footer"});const i=Ny(e),{locale:o,masks:a,disabledAttribute:u}=i,c=$t(!1),d=$t(Symbol()),h=$t(null),p=$t(null),y=$t(["",""]),b=$t(null),$=$t(null);let A,k,L=!0;const M=N(()=>e.isRange||e.modelModifiers.range===!0),le=N(()=>M.value&&h.value!=null?h.value.start:null),re=N(()=>M.value&&h.value!=null?h.value.end:null),j=N(()=>e.mode.toLowerCase()==="date"),X=N(()=>e.mode.toLowerCase()==="datetime"),te=N(()=>e.mode.toLowerCase()==="time"),se=N(()=>!!p.value),Q=N(()=>{let D="date";e.modelModifiers.number&&(D="number"),e.modelModifiers.string&&(D="string");const V=a.value.modelValue||"iso";return mt({type:D,mask:V})}),ve=N(()=>ie(p.value??h.value)),pe=N(()=>te.value?e.is24hr?a.value.inputTime24hr:a.value.inputTime:X.value?e.is24hr?a.value.inputDateTime24hr:a.value.inputDateTime:a.value.input),we=N(()=>/[Hh]/g.test(pe.value)),F=N(()=>/[dD]{1,2}|Do|W{1,4}|M{1,4}|YY(?:YY)?/g.test(pe.value)),ce=N(()=>{if(we.value&&F.value)return"dateTime";if(F.value)return"date";if(we.value)return"time"}),ke=N(()=>{var D;const V=((D=b.value)==null?void 0:D.$el.previousElementSibling)??void 0;return Oo({},e.popover,us("datePicker.popover"),{target:V})}),me=N(()=>Ey({...ke.value,id:d.value})),Se=N(()=>M.value?{start:y.value[0],end:y.value[1]}:y.value[0]),_e=N(()=>{const D=["start","end"].map(V=>({input:B(V),change:Y(V),keyup:ne,...e.popover&&me.value}));return M.value?{start:D[0],end:D[1]}:D[0]}),De=N(()=>{if(!ut(h.value))return null;const D={key:"select-drag",...e.selectAttribute,dates:h.value,pinPage:!0},{dot:V,bar:ae,highlight:Ye,content:vt}=D;return!V&&!ae&&!Ye&&!vt&&(D.highlight=!0),D}),Ze=N(()=>{if(!M.value||!ut(p.value))return null;const D={key:"select-drag",...e.dragAttribute,dates:p.value},{dot:V,bar:ae,highlight:Ye,content:vt}=D;return!V&&!ae&&!Ye&&!vt&&(D.highlight={startEnd:{fillMode:"outline"}}),D}),ee=N(()=>{const D=Hn(e.attributes)?[...e.attributes]:[];return Ze.value?D.unshift(Ze.value):De.value&&D.unshift(De.value),D}),Te=N(()=>mt(e.rules==="auto"?de():e.rules??{}));function de(){const D={ms:[0,999],sec:[0,59],min:[0,59],hr:[0,23]},V=j.value?0:e.timeAccuracy;return[0,1].map(ae=>{switch(V){case 0:return{hours:D.hr[ae],minutes:D.min[ae],seconds:D.sec[ae],milliseconds:D.ms[ae]};case 1:return{minutes:D.min[ae],seconds:D.sec[ae],milliseconds:D.ms[ae]};case 3:return{milliseconds:D.ms[ae]};case 4:return{};default:return{seconds:D.sec[ae],milliseconds:D.ms[ae]}}})}function mt(D){return Hn(D)?D.length===1?[D[0],D[0]]:D:[D,D]}function Xe(D){return mt(D).map((V,ae)=>({...V,rules:Te.value[ae]}))}function st(D){return D==null?!1:tr(D)?!isNaN(D):gi(D)?!isNaN(D.getTime()):cr(D)?D!=="":Sf(D)}function et(D){return Er(D)&&"start"in D&&"end"in D&&st(D.start??null)&&st(D.end??null)}function ut(D){return et(D)||st(D)}function ct(D,V){if(D==null&&V==null)return!0;if(D==null||V==null)return!1;const ae=gi(D),Ye=gi(V);return ae&&Ye?D.getTime()===V.getTime():ae||Ye?!1:ct(D.start,V.start)&&ct(D.end,V.end)}function xt(D){return!ut(D)||!u.value?!1:u.value.intersectsRange(o.value.range(D))}function Ft(D,V,ae,Ye){if(!ut(D))return null;if(et(D)){const vt=o.value.toDate(D.start,{...V[0],fillDate:le.value??void 0,patch:ae}),Ut=o.value.toDate(D.end,{...V[1],fillDate:re.value??void 0,patch:ae});return tn({start:vt,end:Ut},Ye)}return o.value.toDateOrNull(D,{...V[0],fillDate:h.value,patch:ae})}function Et(D,V){return et(D)?{start:o.value.fromDate(D.start,V[0]),end:o.value.fromDate(D.end,V[1])}:M.value?null:o.value.fromDate(D,V[0])}function At(D,V={}){return clearTimeout(A),new Promise(ae=>{const{debounce:Ye=0,...vt}=V;Ye>0?A=window.setTimeout(()=>{ae(w(D,vt))},Ye):ae(w(D,vt))})}function w(D,{config:V=Q.value,patch:ae="dateTime",clearIfEqual:Ye=!1,formatInput:vt=!0,hidePopover:Ut=!1,dragging:nn=se.value,targetPriority:Nr,moveToValue:Fr=!1}={}){const Vs=Xe(V);let qt=Ft(D,Vs,ae,Nr);if(xt(qt)){if(nn)return null;qt=h.value,Ut=!1}else qt==null&&e.isRequired?qt=h.value:qt!=null&&ct(h.value,qt)&&Ye&&(qt=null);const zs=nn?p:h,_r=!ct(zs.value,qt);zs.value=qt,nn||(p.value=null);const vs=Et(qt,Q.value);return _r&&(L=!1,t(nn?"drag":"update:modelValue",vs),ci(()=>L=!0)),Ut&&!nn&&ot(),vt&&x(),Fr&&ci(()=>qn(Nr??"start")),vs}function x(){ci(()=>{const D=Xe({type:"string",mask:pe.value}),V=Et(p.value??h.value,D);M.value?y.value=[V&&V.start,V&&V.end]:y.value=[V,""]})}function E(D,V,ae){y.value.splice(V==="start"?0:1,1,D);const Ye=M.value?{start:y.value[0],end:y.value[1]||y.value[0]}:D,vt={type:"string",mask:pe.value};At(Ye,{...ae,config:vt,patch:ce.value,targetPriority:V,moveToValue:!0})}function B(D){return V=>{e.updateOnInput&&E(V.currentTarget.value,D,{formatInput:!1,hidePopover:!1,debounce:e.inputDebounce})}}function Y(D){return V=>{E(V.currentTarget.value,D,{formatInput:!0,hidePopover:!1})}}function ne(D){D.key==="Escape"&&At(h.value,{formatInput:!0,hidePopover:!0})}function ie(D){return M.value?[D&&D.start?o.value.getDateParts(D.start):null,D&&D.end?o.value.getDateParts(D.end):null]:[D?o.value.getDateParts(D):null]}function q(){p.value=null,x()}function J(D){t("popover-will-show",D)}function z(D){t("popover-did-show",D)}function oe(D){q(),t("popover-will-hide",D)}function ge(D){t("popover-did-hide",D)}function fe(D){const V={patch:"date",formatInput:!0,hidePopover:!0};if(M.value){const ae=!se.value;ae?k={start:D.startDate,end:D.endDate}:k!=null&&(k.end=D.date),At(k,{...V,dragging:ae})}else At(D.date,{...V,clearIfEqual:!e.isRequired})}function $e(D,V){fe(D),t("dayclick",D,V)}function Me(D,V){switch(V.key){case" ":case"Enter":{fe(D),V.preventDefault();break}case"Escape":ot()}t("daykeydown",D,V)}function Ue(D,V){!se.value||k==null||(k.end=D.date,At(tn(k),{patch:"date",formatInput:!0}))}function tt(D={}){kc({...ke.value,...D,isInteractive:!0,id:d.value})}function ot(D={}){Ao({hideDelay:10,force:!0,...ke.value,...D,id:d.value})}function Lt(D){Iy({...ke.value,...D,isInteractive:!0,id:d.value})}function tn(D,V){const{start:ae,end:Ye}=D;if(ae>Ye)switch(V){case"start":return{start:ae,end:ae};case"end":return{start:Ye,end:Ye};default:return{start:Ye,end:ae}}return{start:ae,end:Ye}}async function jn(D,V={}){return $.value==null?!1:$.value.move(D,V)}async function yn(D,V={}){return $.value==null?!1:$.value.moveBy(D,V)}async function qn(D,V={}){const ae=h.value;if($.value==null||!ut(ae))return!1;const Ye=D!=="end",vt=Ye?1:-1,Ut=et(ae)?Ye?ae.start:ae.end:ae,nn=gy(Ut,"monthly",o.value);return $.value.move(nn,{position:vt,...V})}Bt(()=>e.isRange,D=>{D&&console.warn("The `is-range` prop will be deprecated in future releases. Please use the `range` modifier.")},{immediate:!0}),Bt(()=>M.value,()=>{w(null,{formatInput:!0})}),Bt(()=>pe.value,()=>x()),Bt(()=>e.modelValue,D=>{L&&w(D,{formatInput:!0,hidePopover:!1})}),Bt(()=>Te.value,()=>{Er(e.rules)&&w(e.modelValue,{formatInput:!0,hidePopover:!1})}),Bt(()=>e.timezone,()=>{w(h.value,{formatInput:!0})});const St=mt(Q.value);h.value=Ft(e.modelValue??null,St,"dateTime"),xi(()=>{w(e.modelValue,{formatInput:!0,hidePopover:!1})}),ci(()=>c.value=!0);const K={...i,showCalendar:c,datePickerPopoverId:d,popoverRef:b,popoverEvents:me,calendarRef:$,isRange:M,isTimeMode:te,isDateTimeMode:X,is24hr:Ya(e,"is24hr"),hideTimeHeader:Ya(e,"hideTimeHeader"),timeAccuracy:Ya(e,"timeAccuracy"),isDragging:se,inputValue:Se,inputEvents:_e,dateParts:ve,attributes:ee,rules:Te,move:jn,moveBy:yn,moveToValue:qn,updateValue:At,showPopover:tt,hidePopover:ot,togglePopover:Lt,onDayClick:$e,onDayKeydown:Me,onDayMouseEnter:Ue,onPopoverBeforeShow:J,onPopoverAfterShow:z,onPopoverBeforeHide:oe,onPopoverAfterHide:ge};return Si(qy,K),K}function Pf(){const e=Pr(qy);if(e)return e;throw new Error("DatePicker context missing. Please verify this component is nested within a valid context provider.")}const CB=[{value:0,label:"12"},{value:1,label:"1"},{value:2,label:"2"},{value:3,label:"3"},{value:4,label:"4"},{value:5,label:"5"},{value:6,label:"6"},{value:7,label:"7"},{value:8,label:"8"},{value:9,label:"9"},{value:10,label:"10"},{value:11,label:"11"}],xB=[{value:12,label:"12"},{value:13,label:"1"},{value:14,label:"2"},{value:15,label:"3"},{value:16,label:"4"},{value:17,label:"5"},{value:18,label:"6"},{value:19,label:"7"},{value:20,label:"8"},{value:21,label:"9"},{value:22,label:"10"},{value:23,label:"11"}];function SB(e){const t=Pf(),{locale:n,isRange:i,isTimeMode:o,dateParts:a,rules:u,is24hr:c,hideTimeHeader:d,timeAccuracy:h,updateValue:p}=t;function y(F){F=Object.assign($.value,F);let ce=null;if(i.value){const ke=b.value?F:a.value[0],me=b.value?a.value[1]:F;ce={start:ke,end:me}}else ce=F;p(ce,{patch:"time",targetPriority:b.value?"start":"end",moveToValue:!0})}const b=N(()=>e.position===0),$=N(()=>a.value[e.position]||{isValid:!1}),A=N(()=>Sf($.value)),k=N(()=>!!$.value.isValid),L=N(()=>!d.value&&k.value),M=N(()=>{if(!A.value)return null;let F=n.value.toDate($.value);return $.value.hours===24&&(F=new Date(F.getTime()-1)),F}),le=N({get(){return $.value.hours},set(F){y({hours:F})}}),re=N({get(){return $.value.minutes},set(F){y({minutes:F})}}),j=N({get(){return $.value.seconds},set(F){y({seconds:F})}}),X=N({get(){return $.value.milliseconds},set(F){y({milliseconds:F})}}),te=N({get(){return $.value.hours<12},set(F){F=String(F).toLowerCase()=="true";let ce=le.value;F&&ce>=12?ce-=12:!F&&ce<12&&(ce+=12),y({hours:ce})}}),se=N(()=>V3($.value,u.value[e.position])),Q=N(()=>CB.filter(F=>se.value.hours.some(ce=>ce.value===F.value))),ve=N(()=>xB.filter(F=>se.value.hours.some(ce=>ce.value===F.value))),pe=N(()=>c.value?se.value.hours:te.value?Q.value:ve.value),we=N(()=>{const F=[];return Ar(Q.value)&&F.push({value:!0,label:"AM"}),Ar(ve.value)&&F.push({value:!1,label:"PM"}),F});return{...t,showHeader:L,timeAccuracy:h,parts:$,isValid:k,date:M,hours:le,minutes:re,seconds:j,milliseconds:X,options:se,hourOptions:pe,isAM:te,isAMOptions:we,is24hr:c}}const TB=["value"],OB=["value","disabled"],AB={key:1,class:"vc-base-sizer","aria-hidden":"true"},MB={inheritAttrs:!1},ro=jt({...MB,__name:"BaseSelect",props:{options:null,modelValue:null,alignRight:{type:Boolean},alignLeft:{type:Boolean},showIcon:{type:Boolean},fitContent:{type:Boolean}},emits:["update:modelValue"],setup(e){const t=e,n=N(()=>{const i=t.options.find(o=>o.value===t.modelValue);return i==null?void 0:i.label});return(i,o)=>(I(),H("div",{class:Le(["vc-base-select",{"vc-fit-content":e.fitContent,"vc-has-icon":e.showIcon}])},[O("select",Bn(i.$attrs,{value:e.modelValue,class:["vc-focus",{"vc-align-right":e.alignRight,"vc-align-left":e.alignLeft}],onChange:o[0]||(o[0]=a=>i.$emit("update:modelValue",a.target.value))}),[(I(!0),H(Be,null,dt(e.options,a=>(I(),H("option",{key:a.value,value:a.value,disabled:a.disabled},Ve(a.label),9,OB))),128))],16,TB),e.showIcon?(I(),lt(Ci,{key:0,name:"ChevronDown",size:"18"})):Re("",!0),e.fitContent?(I(),H("div",AB,Ve(Z(n)),1)):Re("",!0)],2))}}),PB={key:0,class:"vc-time-header"},IB={class:"vc-time-weekday"},EB={class:"vc-time-month"},LB={class:"vc-time-day"},kB={class:"vc-time-year"},RB={class:"vc-time-select-group"},YB=O("span",{class:"vc-time-colon"},":",-1),NB=O("span",{class:"vc-time-colon"},":",-1),FB=O("span",{class:"vc-time-decimal"},".",-1),vg=jt({__name:"TimePicker",props:{position:null},setup(e,{expose:t}){const i=SB(e);t(i);const{locale:o,isValid:a,date:u,hours:c,minutes:d,seconds:h,milliseconds:p,options:y,hourOptions:b,isTimeMode:$,isAM:A,isAMOptions:k,is24hr:L,showHeader:M,timeAccuracy:le}=i;return(re,j)=>(I(),H("div",{class:Le(["vc-time-picker",[{"vc-invalid":!Z(a),"vc-attached":!Z($)}]])},[xe(Yn,{name:"time-header"},{default:Ee(()=>[Z(M)&&Z(u)?(I(),H("div",PB,[O("span",IB,Ve(Z(o).formatDate(Z(u),"WWW")),1),O("span",EB,Ve(Z(o).formatDate(Z(u),"MMM")),1),O("span",LB,Ve(Z(o).formatDate(Z(u),"D")),1),O("span",kB,Ve(Z(o).formatDate(Z(u),"YYYY")),1)])):Re("",!0)]),_:1}),O("div",RB,[xe(Ci,{name:"Clock",size:"17"}),xe(ro,{modelValue:Z(c),"onUpdate:modelValue":j[0]||(j[0]=X=>It(c)?c.value=X:null),modelModifiers:{number:!0},options:Z(b),class:"vc-time-select-hours","align-right":""},null,8,["modelValue","options"]),Z(le)>1?(I(),H(Be,{key:0},[YB,xe(ro,{modelValue:Z(d),"onUpdate:modelValue":j[1]||(j[1]=X=>It(d)?d.value=X:null),modelModifiers:{number:!0},options:Z(y).minutes,class:"vc-time-select-minutes","align-left":Z(le)===2},null,8,["modelValue","options","align-left"])],64)):Re("",!0),Z(le)>2?(I(),H(Be,{key:1},[NB,xe(ro,{modelValue:Z(h),"onUpdate:modelValue":j[2]||(j[2]=X=>It(h)?h.value=X:null),modelModifiers:{number:!0},options:Z(y).seconds,class:"vc-time-select-seconds","align-left":Z(le)===3},null,8,["modelValue","options","align-left"])],64)):Re("",!0),Z(le)>3?(I(),H(Be,{key:2},[FB,xe(ro,{modelValue:Z(p),"onUpdate:modelValue":j[3]||(j[3]=X=>It(p)?p.value=X:null),modelModifiers:{number:!0},options:Z(y).milliseconds,class:"vc-time-select-milliseconds","align-left":""},null,8,["modelValue","options"])],64)):Re("",!0),Z(L)?Re("",!0):(I(),lt(ro,{key:3,modelValue:Z(A),"onUpdate:modelValue":j[4]||(j[4]=X=>It(A)?A.value=X:null),options:Z(k)},null,8,["modelValue","options"]))])],2))}}),Gy=jt({__name:"DatePickerBase",setup(e){const{attributes:t,calendarRef:n,color:i,displayMode:o,isDateTimeMode:a,isTimeMode:u,isRange:c,onDayClick:d,onDayMouseEnter:h,onDayKeydown:p}=Pf(),y=c.value?[0,1]:[0];return(b,$)=>Z(u)?(I(),H("div",{key:0,class:Le(`vc-container vc-bordered vc-${Z(i)} vc-${Z(o)}`)},[(I(!0),H(Be,null,dt(Z(y),A=>(I(),lt(vg,{key:A,position:A},null,8,["position"]))),128))],2)):(I(),lt(jy,{key:1,attributes:Z(t),ref_key:"calendarRef",ref:n,onDayclick:Z(d),onDaymouseenter:Z(h),onDaykeydown:Z(p)},{footer:Ee(()=>[Z(a)?(I(!0),H(Be,{key:0},dt(Z(y),A=>(I(),lt(vg,{key:A,position:A},null,8,["position"]))),128)):Re("",!0),xe(Yn,{name:"dp-footer"})]),_:1},8,["attributes","onDayclick","onDaymouseenter","onDaykeydown"]))}}),WB={inheritAttrs:!1},BB=jt({...WB,__name:"DatePickerPopover",setup(e){const{datePickerPopoverId:t,color:n,displayMode:i,popoverRef:o,onPopoverBeforeShow:a,onPopoverAfterShow:u,onPopoverBeforeHide:c,onPopoverAfterHide:d}=Pf();return(h,p)=>(I(),lt(Mf,{id:Z(t),placement:"bottom-start",class:Le(`vc-date-picker-content vc-${Z(n)} vc-${Z(i)}`),ref_key:"popoverRef",ref:o,onBeforeShow:Z(a),onAfterShow:Z(u),onBeforeHide:Z(c),onAfterHide:Z(d)},{default:Ee(()=>[xe(Gy,zt(xn(h.$attrs)),null,16)]),_:1},8,["id","class","onBeforeShow","onAfterShow","onBeforeHide","onAfterHide"]))}}),UB=jt({inheritAttrs:!1,emits:DB,props:wB,components:{DatePickerBase:Gy,DatePickerPopover:BB},setup(e,t){const n=$B(e,t),i=Bs(dy(n,"calendarRef","popoverRef"));return{...n,slotCtx:i}}});function HB(e,t,n,i,o,a){const u=Ct("DatePickerPopover"),c=Ct("DatePickerBase");return e.$slots.default?(I(),H(Be,{key:0},[Ce(e.$slots,"default",zt(xn(e.slotCtx))),xe(u,zt(xn(e.$attrs)),null,16)],64)):(I(),lt(c,zt(Bn({key:1},e.$attrs)),null,16))}const KB=hs(UB,[["render",HB]]);function VB(e){if(document.cookie&&document.cookie!==""){const t=document.cookie.split(";").find(n=>n.trim().startsWith(e+"="));return t?decodeURIComponent(t.split("=")[1]):null}return null}var uc=null;function Zy(){return uc===null&&(uc=VB("csrftoken")),uc}class Kn{constructor(t={},{url:n=null,...i}={}){this.url=n||t.url_,this.options=i,this.commit(t)}get errors(){return this.data&&this.data.__errors__}static getId(t){return"id"in t?t.id:t.pk}static getOptions(t){return{headers:{"Content-Type":"application/json",Accept:"application/json","X-CSRFToken":Zy()},...t}}static fromList(t,n={}){return t?t.map(i=>new this(i,n)):[]}static fetch(t,{many:n=!1,...i}={},o={}){i=this.getOptions(i);const a=fetch(t,i).then(u=>u.json());return n?a.then(u=>(u instanceof Array||(u=u.results),this.fromList(u,o))):a.then(u=>new this(u,{url:t,...o}))}fetch(t){return t=this.constructor.getOptions(t),fetch(this.url,t).then(n=>n.json()).then(n=>this.commit(n))}action(t,n,i=!1){n=this.constructor.getOptions(n);const o=fetch(this.url+t,n);return i?o.then(a=>a.json()).then(a=>{this.commit(a),this.data}):o}commit(t){this.data=t,this.id=this.constructor.getId(this.data)}update(t){this.data={...this.data,...t},this.id=this.constructor.getId(this.data)}store(t){window.localStorage.setItem(t,JSON.stringify(this.data))}static storeLoad(t){let n=window.localStorage.getItem(t);return n===null?n:new this(JSON.parse(n))}get isEmpty(){return!this.data||Object.keys(this.data).findIndex(t=>!!this.data[t]&&this.data[t]!==0)==-1}error(t=null){return t===null?this.errors:this.errors&&this.errors[t]}}let El=class{constructor(t,{items:n=[],url:i=null,args:o={},unique:a=null,max:u=null,storeKey:c=null}={}){this.items=[],this.model=t,this.url=i,this.unique=a,this.max=u,this.storeKey=c;for(var d of n)this.push(d,{args:o,save:!1})}get length(){return this.items.length}static fetch(t,n,i=null,o=null){return i=t.getOptions(i),fetch(n,i).then(a=>a.json()).then(a=>(a instanceof Array?a:a.results).map(u=>new t(u,{url:n,...o})))}static storeLoad(t,n,i={}){let o=window.localStorage.getItem(n);return new this(t,{...i,storeKey:n,items:o?JSON.parse(o):[]})}store(){this.storeKey&&window.localStorage.setItem(this.storeKey,JSON.stringify(this.items.map(t=>t.data)))}save(){this.storeKey&&this.store()}get(t){return this.items[t]}find(t){return t instanceof Function?this.items.find(t):this.items.find(n=>n.id==t.id)}findIndex(t){return t instanceof Function?this.items.findIndex(t):this.items.findIndex(n=>n.id==t.id)}push(t,{args:n={},save:i=!0}={}){if(t=t instanceof this.model?t:new this.model(t,n),this.unique){let o=this.findIndex(t);if(o>-1)return o}return this.max&&this.items.length>=this.max&&this.items.splice(0,this.items.length-this.max),this.items.push(t),i&&this.save(),this.items.length-1}remove(t,{save:n=!0}={}){this.items.splice(t,1),n&&this.save()}reset(t=[]){this.items=[];for(var n of t)this.push(n)}move(t,n){if(t>=this.length||n>this.length)throw"source or target index is not in range";const i=this.items[t];this.items.splice(t,1),this.items.splice(n,0,i)}};El[Symbol.iterator]=function(){return this.items[Symbol.iterator]()};const en=(e,t)=>{const n=e.__vccOpts||e;for(const[i,o]of t)n[i]=o;return n},zB={emit:["start","done"],props:{tag:{type:String,default:"a"},icon:String,data:Object,method:{type:String,default:"POST"},confirm:{type:String,default:""},url:String,fetchOptions:{type:Object,default:()=>({})},runClass:String,runIcon:String},computed:{item(){return this.data instanceof Kn?this.data:new Kn(this.data)},buttonClass(){return this.promise?this.runClass:""}},data(){return{promise:!1}},methods:{call(){if(this.promise||!this.url||this.confirm&&!confirm(this.confirm))return;const e=Kn.getOptions({...this.fetchOptions,method:this.method,body:JSON.stringify(this.item.data)});return this.promise=fetch(this.url,e).then(t=>t.text()).then(t=>(t=t&&JSON.parse(t)||null,this.promise=null,this.$emit("done",t),t),t=>(this.promise=null,t)),this.promise}}},jB={key:0},qB={key:1,class:"icon is-small"},GB={key:2};function ZB(e,t,n,i,o,a){return I(),lt(yi(n.tag),{onClickCapture:hr(a.call,["stop"]),type:"button",class:Le([a.buttonClass,this.promise&&"blink"||""])},{default:Ee(()=>[o.promise&&n.runIcon?(I(),H("span",jB,[O("i",{class:Le(n.runIcon)},null,2)])):n.icon?(I(),H("span",qB,[O("i",{class:Le(n.icon)},null,2)])):Re("",!0),e.$slots.default?(I(),H("span",GB,[Ce(e.$slots,"default")])):Re("",!0)]),_:3},40,["onClickCapture","class"])}const If=en(zB,[["render",ZB]]);class Ll extends Kn{constructor({sound:t={},...n}={},i={}){super({...t,...n},i)}get name(){return this.data.name}get src(){return this.data.url}}const XB={emits:["select","unselect","move"],data(){return{selectedIndex:this.defaultIndex}},props:{listClass:String,itemClass:String,defaultIndex:{type:Number,default:-1},set:Object,orderable:{type:Boolean,default:!1},itemTag:{default:"li"},listTag:{default:"ul"}},computed:{model(){return this.set.model},items(){return this.set.items},length(){return this.set.length},selected(){return this.selectedIndex>-1&&this.items.length>this.selectedIndex>-1?this.items[this.selectedIndex]:null}},methods:{get(e){return this.set.get(e)},find(e){return this.set.find(e)},findIndex(e){return this.set.findIndex(e)},remove(e,t=!1){this.set.remove(e),e-1&&this.items.length?e%this.items.length:-1,this.$emit("select",{item:this.selected,index:this.selectedIndex}),this.selectedIndex},unselect(){this.$emit("unselect",{item:this.selected,index:this.selectedIndex}),this.selectedIndex=-1},onDragStart(e){const n=`row:${e.target.dataset.index}`;e.dataTransfer.setData("text/cell",n),e.dataTransfer.dropEffect="move"},onDragOver(e){e.preventDefault(),e.dataTransfer.dropEffect="move"},onDrop(e){const t=e.dataTransfer.getData("text/cell");if(!t||!t.startsWith("row:"))return;e.preventDefault();const n=Number(t.slice(4)),i=e.target.tagName==this.itemTag?e.target:e.target.closest(this.itemTag);this.$emit("move",{from:n,target:i,to:Number(i.dataset.index),set:this.set})}}};function JB(e,t,n,i,o,a){return I(),H("div",null,[Ce(e.$slots,"header"),(I(),lt(yi(n.listTag),{class:Le(n.listClass)},{default:Ee(()=>[(I(!0),H(Be,null,dt(a.items,(u,c)=>(I(),lt(yi(n.itemTag),{key:c,class:Le(n.itemClass),onClick:d=>a.select(c),draggable:n.orderable,"data-index":c,onDragstart:a.onDragStart,onDragover:a.onDragOver,onDrop:a.onDrop},{default:Ee(()=>[Ce(e.$slots,"item",{selected:c==o.selectedIndex,set:n.set,index:c,item:u})]),_:2},1064,["class","onClick","draggable","data-index","onDragstart","onDragover","onDrop"]))),128))]),_:3},8,["class"])),Ce(e.$slots,"footer")])}const cl=en(XB,[["render",JB]]);function Ef(e,...t){return setInterval((...n)=>{!document.hidden&&e(...n)},...t)}class QB{constructor({url:t,timeout:n=10,src:i=""}={}){this.url=t,this.timeout=n,this.src=i,this.interval=null,this.promise=null,this.items=[],this.current=null}drop(){this.promise=null}fetch({then:t=null}={}){const n=fetch(this.url).then(i=>i.ok?i.json():Promise.reject(i)).then(i=>{i=i.results,i.forEach(u=>{u.start&&(u.start=new Date(u.start)),u.end&&(u.end=new Date(u.end))}),this.items=i;const o=new Date;let a=i.find(u=>u.start&&u.start<=o{if(n!=this.promise)return[]}),n}refresh(t={}){if(this.interval===null)return this._refresh(t),this.interval=Ef(()=>this._refresh(t),this.timeout*1e3),this.interval}stopRefresh(){this.interval!==null&&clearInterval(this.interval)}}const eU={props:{data:{type:Object,default:()=>{}},name:String,player:Object,page_url:String,actions:{type:Array,default:()=>[]},index:{type:Number,default:null}},computed:{item(){return this.data instanceof Kn?this.data:new Ll(this.data||{})},loaded(){return this.player&&this.player.isLoaded(this.item)},playing(){return this.player&&this.player.isPlaying(this.item)},paused(){return this.player&&this.player.paused&&this.loaded},pinned(){return this.player&&this.player.sets.pin.find(this.item)}},methods:{hasAction(e){return this.actions&&this.actions.indexOf(e)!=-1}}},tU={class:"button-group actions"},nU=["href"],rU=O("span",{class:"icon is-small"},[O("i",{class:"fa fa-external-link"})],-1),sU=[rU],iU=["href"],oU=O("span",{class:"icon is-small"},[O("span",{class:"fa fa-download"})],-1),aU=[oU],lU=O("span",{class:"icon is-small"},[O("span",{class:"fa fa-star"})],-1),uU=[lU];function cU(e,t,n,i,o,a){return I(),H("div",{class:Le(["a-sound-item m-0 button-group",a.playing&&"playing"||""])},[Ce(e.$slots,"title",{player:n.player,item:a.item,loaded:a.loaded},()=>[O("span",{class:Le(["label is-flex-grow-1 align-left",a.playing&&"blink"||""]),onClick:t[0]||(t[0]=hr(u=>e.$emit("togglePlay"),["stop"]))},Ve(n.name||a.item.name),3)]),Ce(e.$slots,"after-title",{player:n.player,item:a.item,loaded:a.loaded}),O("div",tU,[a.hasAction("page")?(I(),H("a",{key:0,class:"button action",href:a.item.data.page_url},sU,8,nU)):Re("",!0),a.hasAction("download")&&a.item.data.is_downloadable?(I(),H("a",{key:1,class:"button action",href:a.item.data.url,target:"_blank"},aU,8,iU)):Re("",!0),a.hasAction("pin")&&n.player&&n.player.sets.pin!=e.$parent.set?(I(),H("button",{key:2,class:Le(["button action",a.pinned?"selected":"not-selected"]),onClick:t[1]||(t[1]=hr(u=>n.player.togglePlaylist("pin",a.item),["stop"]))},uU,2)):Re("",!0),Ce(e.$slots,"actions",{player:n.player,item:a.item,loaded:a.loaded})]),Ce(e.$slots,"extra-right",{player:n.player,item:a.item,loaded:a.loaded})],2)}const fU=en(eU,[["render",cU]]),dU={extends:cl,emits:[...cl.emits,"remove"],components:{ASoundItem:fU},props:{actions:Array,name:String,player:Object,editable:Boolean,withLink:Boolean},computed:{self(){return this},player_(){return this.player||window.aircox.player}},methods:{hasAction(e){return this.actions&&this.actions.indexOf(e)!=-1},selectNext(){let e=this.selectedIndex+1;return this.select(e>=this.items.length?-1:e)},togglePlay(e){this.player_.isPlaying(this.set.get(e))?this.player_.pause():this.select(e)}}},hU={class:"a-playlist"},vU={class:"header"},pU=["onClick"],gU=["onClick"],mU=O("span",{class:"icon is-small"},[O("span",{class:"fa fa-close"})],-1),yU=[mU];function _U(e,t,n,i,o,a){const u=Ct("ASoundItem");return I(),H("div",hU,[O("div",vU,[Ce(e.$slots,"header")]),O("ul",{class:Le(e.listClass)},[(I(!0),H(Be,null,dt(e.items,(c,d)=>(I(),H("li",{class:Le([e.itemClass,n.player.isPlaying(c)?"is-active":""]),onClick:h=>!a.hasAction("play")&&e.select(d),key:d},[xe(u,{data:c,index:d,set:e.set,player:a.player_,onTogglePlay:h=>a.togglePlay(d),actions:n.actions},{"after-title":Ee(h=>[Ce(e.$slots,"after-title",zt(xn(h)))]),actions:Ee(h=>[Ce(e.$slots,"actions",zt(xn(h))),n.editable?(I(),H("button",{key:0,class:"button",onClick:hr(p=>e.remove(d,!0),["stop"])},yU,8,gU)):Re("",!0)]),_:2},1032,["data","index","set","player","onTogglePlay","actions"])],10,pU))),128))],2),Ce(e.$slots,"footer")])}const bU=en(dU,[["render",_U]]),wU={data(){return{hoverValue:null}},props:{value:Number,max:Number,format:{type:Function,default:e=>e},progressClass:{default:"a-progress-bar"},vertical:{type:Boolean,default:!1}},computed:{valueDisplay(){return this.hoverValue===null?this.value:this.hoverValue},progressStyle(){if(!this.max)return null;let e=this.max?this.valueDisplay*100/this.max:0;return this.vertical?{height:`${e}%`}:{width:`${e}%`}}},methods:{xToValue(e){return e*this.max/this.$refs.bar.getBoundingClientRect().width},yToValue(e){return e*this.max/this.$refs.bar.getBoundingClientRect().height},valueFromEvent(e){let t=e.currentTarget.getBoundingClientRect();return this.vertical?this.yToValue(e.clientY-t.y):this.xToValue(e.clientX-t.x)},onClick(e){this.$emit("select",this.valueFromEvent(e))},onMouseMove(e){e.type=="mouseleave"?this.hoverValue=null:this.hoverValue=this.valueFromEvent(e)}}},DU={class:"a-progress m-0"},$U={class:"time-now"},CU={key:0},xU={class:"time-total"};function SU(e,t,n,i,o,a){return I(),H("div",DU,[O("time",$U,[Ce(e.$slots,"value",{value:n.value,max:n.max},()=>[Wn(Ve(n.format(n.value)),1)])]),O("div",{ref:"bar",class:"a-progress-bar-container",onClick:t[0]||(t[0]=hr((...u)=>a.onClick&&a.onClick(...u),["stop"])),onMouseleave:t[1]||(t[1]=hr((...u)=>a.onMouseMove&&a.onMouseMove(...u),["stop"])),onMousemove:t[2]||(t[2]=hr((...u)=>a.onMouseMove&&a.onMouseMove(...u),["stop"]))},[O("div",{class:Le(n.progressClass),style:dr(a.progressStyle)},[o.hoverValue?(I(),H("time",CU,Ve(n.format(o.hoverValue)),1)):(I(),H(Be,{key:1},[Wn(" ")],64))],6)],544),O("time",xU,[Ce(e.$slots,"value",{value:a.valueDisplay,max:n.max},()=>[Wn(Ve(n.format(n.max)),1)])])])}const TU=en(wU,[["render",SU]]),ai={paused:0,playing:1,loading:2},OU={components:{APlaylist:bU,AProgress:TU},data(){let e=new Audio;e.addEventListener("ended",i=>this.onState(i)),e.addEventListener("pause",i=>this.onState(i)),e.addEventListener("playing",i=>this.onState(i)),e.addEventListener("timeupdate",()=>{this.currentTime=this.audio.currentTime}),e.addEventListener("durationchange",()=>{this.duration=Number.isFinite(this.audio.duration)?this.audio.duration:null});let t=this.liveArgs?Bs(new QB(this.liveArgs)):null;t&&t.refresh();const n={};for(const i in this.playlists)n[i]=El.storeLoad(Ll,"playlist."+i,{max:30,unique:!0});return{audio:e,duration:0,currentTime:0,state:ai.paused,live:t,loaded:null,panel:null,playlistName:null,sets:n}},props:{buttonTitle:String,liveArgs:Object,playlists:Object},computed:{self(){return this},paused(){return this.state==ai.paused},playing(){return this.state==ai.playing},loading(){return this.state==ai.loading},playlist(){return this.playlistName?this.$refs[this.playlistName][0]:null},current(){return this.loaded?this.loaded:this.live&&this.live.current}},methods:{displayTime(e){e=parseInt(e);let t=e%60;e=(e-t)/60;let n=e%60,i=(e-n)/60,[o,a,u]=[t.toString().padStart(2,"0"),n.toString().padStart(2,"0"),i.toString().padStart(2,"0")];return i?`${u}:${a}:${o}`:`${a}:${o}`},playlistButtonClass(e){let t=this.sets[e];return(t?(t.length?"":"has-text-grey-light ")+(this.panel==e?"open":this.playlistName==e?"active":""):"")+" button"},togglePanel(e){this.panel=this.panel==e?null:e},isLoaded(e){return this.loaded&&this.loaded.id==e.id},isPlaying(e){return this.isLoaded(e)&&!this.paused},_setPlaylist(e){this.playlistName=e;for(var t in this.sets)t!=e&&this.$refs[t]&&this.$refs[t][0].unselect()},load(e=null,t=0){let n=null;if(e!==null&&t!=-1){let a=this.$refs[e][0].get(t);if(!a)throw`No sound at index ${t} for playlist ${e}`;this.loaded=a,n=a.src}else this.loaded=null,n=this.live.src;this._setPlaylist(e);const i=this.audio;if(n instanceof Array){i.innerHTML="",i.removeAttribute("src");for(var o of n){let a=document.createElement("source");a.setAttribute("src",o),i.appendChild(a)}}else i.src=n;i.load()},play(e=null,t=0){this.load(e,t),this.audio.play().catch(n=>console.error(n))},push(e,...t){return this.sets[e].push(...t)},playItems(e,...t){let n=this.push(e,...t);this.$refs[e][0].selectedIndex=n,this.play(e,n)},playButtonClick(e){var t=JSON.parse(e.currentTarget.dataset.sounds);this.playItems("queue",...t)},pause(){this.audio.pause()},togglePlay(e=null,t=0){if(e!==null){this.panel=null;let n=this.sets[e].get(t);if(!this.playlist||this.playlistName!==e||this.loaded!=n){this.play(e,t);return}}this.paused?this.audio.play().catch(n=>console.error(n)):this.audio.pause()},togglePlaylist(e,t){const n=this.sets[e];let i=n.findIndex(t);i>-1?n.remove(i):n.push(t)},onState(e){const t=this.audio;this.state=t.paused?ai.paused:ai.playing,e.type=="ended"&&(!this.playlist||this.playlist.selectNext()==-1)&&this.play()}},mounted(){this.load()}},AU={class:"a-player"},MU={class:"title is-flex-grow-1"},PU={class:"icon"},IU={class:"action button no-border"},EU=O("i",{class:"fa fa-close"},null,-1),LU=[EU],kU={key:0,class:"a-player-progress"},RU={class:"a-player-bar button-group"},YU=["title","aria-label"],NU={key:0,class:"fas fa-pause"},FU={key:1,class:"fas fa-play"},WU=O("span",{class:"icon is-size-6 has-text-danger"},[O("span",{class:"fa fa-circle"})],-1),BU=[WU],UU=["onClick"],HU={class:"is-size-6"},KU={class:"icon"};function VU(e,t,n,i,o,a){const u=Ct("APlaylist"),c=Ct("AProgress");return I(),H("div",AU,[O("div",{class:Le(["a-player-panels",o.panel?"is-open":""])},[(I(!0),H(Be,null,dt(n.playlists,(d,h)=>ks((I(),lt(u,{key:h,ref_for:!0,ref:h,class:"a-player-panel a-playlist",actions:["page",h!="pin"&&"pin"||""],editable:!0,player:a.self,set:o.sets[h],onSelect:p=>a.togglePlay(h,p.index),listClass:"menu-list",itemClass:"menu-item"},{header:Ee(()=>[O("div",MU,[O("span",PU,[O("i",{class:Le(d[1])},null,2)]),Wn(" "+Ve(d[0]),1)]),O("button",IU,[O("span",{class:"icon",onClick:t[0]||(t[0]=hr(p=>a.togglePanel(),["stop"]))},LU)])]),_:2},1032,["actions","player","set","onSelect"])),[[Ja,o.panel==h&&o.sets[h].length]])),128))],2),o.loaded&&o.duration?(I(),H("div",kU,[o.loaded&&o.duration?(I(),lt(c,{key:0,value:o.currentTime,max:this.duration,format:a.displayTime,onSelect:t[1]||(t[1]=d=>o.audio.currentTime=d)},null,8,["value","max","format"])):Re("",!0)])):Re("",!0),O("div",RU,[O("button",{class:"button",onClick:t[2]||(t[2]=d=>a.togglePlay()),title:n.buttonTitle,"aria-label":n.buttonTitle},[a.playing?(I(),H("span",NU)):(I(),H("span",FU))],8,YU),O("div",{class:Le(["a-player-bar-content",o.loaded&&o.duration?"has-progress":""])},[Ce(e.$slots,"content",{loaded:o.loaded,live:o.live,current:a.current})],2),o.loaded?(I(),H("button",{key:0,class:"button has-text-weight-bold",onClick:t[3]||(t[3]=d=>a.play()),title:"Live"},BU)):Re("",!0),o.sets?(I(!0),H(Be,{key:1},dt(n.playlists,(d,h)=>ks((I(),H("button",{key:h,class:Le(a.playlistButtonClass(h)),onClick:p=>a.togglePanel(h)},[O("span",HU,Ve(o.sets[h]&&o.sets[h].length),1),O("span",KU,[O("i",{class:Le(d[1])},null,2)])],10,UU)),[[Ja,o.sets[h]&&o.sets[h].length]])),128)):Re("",!0)])])}const zU=en(OU,[["render",VU]]),jU={props:{title:{type:String,default:""}},data(){return{active:!1,item:null}},methods:{open(e=null){this.active=!0,this.item=e},close(){this.active=!1,this.item=null}}},qU={class:"modal-card"},GU={class:"modal-card-head"},ZU={class:"modal-card-title"},XU=O("span",{class:"icon"},[O("i",{class:"fa fa-close"})],-1),JU=[XU],QU={class:"modal-card-body"},eH={class:"modal-card-foot align-right"};function tH(e,t,n,i,o,a){return I(),H("section",{class:Le(["modal",o.active&&"is-active"||""])},[O("div",{class:"modal-background",onClick:t[0]||(t[0]=(...u)=>a.close&&a.close(...u))}),O("div",qU,[O("header",GU,[O("div",ZU,[Ce(e.$slots,"title",{},()=>[Wn(Ve(n.title),1)])]),Ce(e.$slots,"bar"),O("button",{type:"button",class:"delete square","aria-label":"close",onClick:t[1]||(t[1]=(...u)=>a.close&&a.close(...u))},JU)]),O("section",QU,[Ce(e.$slots,"default",{item:o.item})]),O("div",eH,[Ce(e.$slots,"footer",{item:o.item,close:a.close})])])],2)}const Lf=en(jU,[["render",tH]]),nH={emit:["fileChange","load","abort","error"],props:{url:{type:String},fieldName:{type:String,default:"file"},label:{type:String,default:"Select a file"},submitLabel:{type:String,default:"Upload"}},data(){return{STATE:{DEFAULT:0,UPLOADING:1},state:0,upload:{},file:null,fileUrl:null,total:0,loaded:0,request:null}},methods:{abort(){this.request&&this.request.abort()},onFileChange(){const[e]=this.$refs.uploadFile.files;e&&(this._setUploadFile(e),this.$emit("fileChange",{upload:this,file:this.file,fileUrl:this.fileUrl}))},submit(){const e=new XMLHttpRequest;e.open("POST",this.url),e.upload.addEventListener("progress",n=>this.onUploadProgress(n)),e.addEventListener("load",n=>this.onUploadDone(n,"load")),e.addEventListener("abort",n=>this.onUploadDone(n,"abort")),e.addEventListener("error",n=>this.onUploadDone(n,"error"));const t=new FormData(this.$refs.form);t.append("csrfmiddlewaretoken",Zy()),e.send(t),this._resetUpload(this.STATE.UPLOADING,!1,e)},onUploadProgress(e){this.loaded=e.loaded,this.total=e.total},onUploadDone(e,t){this.$emit(t,e),this._resetUpload(this.STATE.DEFAULT,!0)},_setUploadFile(e){this.file=e,this.fileURL=e&&URL.createObjectURL(e)},_resetUpload(e,t=!1,n=null){this.state=e,this.loaded=0,this.total=0,this.request=n,t&&(this.file=null)}}},rH={ref:"list",class:"a-select-file-list"},sH={key:0,ref:"form",class:"flex-column"},iH={class:"field is-horizontal"},oH={class:"label"},aH=["name"],lH={key:0,class:"flex-row align-right"},uH={key:1,class:"flex-column"},cH={class:"flex-row"},fH=["max","value"],dH=O("span",{class:"icon small"},[O("i",{class:"fa fa-close"})],-1),hH=[dH];function vH(e,t,n,i,o,a){return I(),H("div",rH,[o.state==o.STATE.DEFAULT?(I(),H("form",sH,[Ce(e.$slots,"form"),O("div",iH,[O("label",oH,Ve(n.label),1),O("input",{type:"file",ref:"uploadFile",name:n.fieldName,onChange:t[0]||(t[0]=(...u)=>a.onFileChange&&a.onFileChange(...u))},null,40,aH)]),n.submitLabel?(I(),H("div",lH,[O("button",{type:"button",class:"button small",onClick:t[1]||(t[1]=(...u)=>a.submit&&a.submit(...u))},Ve(n.submitLabel),1)])):Re("",!0)],512)):(I(),H("div",uH,[Ce(e.$slots,"preview",{fileUrl:o.fileUrl,file:o.file,loaded:o.loaded,total:o.total}),O("div",cH,[O("progress",{max:o.total,value:o.loaded},null,8,fH),O("button",{type:"button",class:"button small square ml-2",onClick:t[2]||(t[2]=(...u)=>a.abort&&a.abort(...u))},hH)])]))],512)}const Xy=en(nH,[["render",vH]]),pH={emit:["select"],components:{AActionButton:If,AFileUpload:Xy,AModal:Lf},props:{title:{type:String},labels:Object,listClass:{type:String,default:""},listUrl:{type:String},deleteUrl:{type:String},uploadUrl:{type:String},uploadFieldName:{type:String,default:"file"},uploadLabel:{type:String,default:"Upload a file"}},data(){return{LIST:0,UPLOAD:1,panel:0,item:null,items:[],nextUrl:"",prevUrl:"",lastUrl:""}},methods:{open(){this.$refs.modal.open()},close(){this.$refs.modal.close()},showPanel(e){this.panel=e},load(e){return fetch(e||this.listUrl).then(t=>t.ok?t.json():Promise.reject(t)).then(t=>(this.lastUrl=e,this.nextUrl=t.next,this.prevUrl=t.previous,this.items=t.results,this.showPanel(this.LIST),this.$forceUpdate(),this.$refs.list.scroll(0,0),this.items))},select(e){this.item=e},selected(){this.$emit("select",this.item),this.close()},uploadDone(e=!1){e&&this.load().then(t=>{this.item=t[0]})}},mounted(){this.load()}},gH=O("span",{class:"icon"},[O("i",{class:"fa fa-upload"})],-1),mH=O("span",{class:"icon"},[O("i",{class:"fa fa-list"})],-1),yH={key:1,class:"a-select-file"},_H={key:0},bH=["onClick"],wH={key:1},DH={key:0,class:"mr-3"};function $H(e,t,n,i,o,a){const u=Ct("a-file-upload"),c=Ct("a-action-button"),d=Ct("a-modal");return I(),lt(d,{ref:"modal",title:n.title},{bar:Ee(()=>[o.panel==o.LIST?(I(),H("button",{key:0,type:"button",class:"button small mr-3",onClick:t[0]||(t[0]=h=>a.showPanel(o.UPLOAD))},[gH,O("span",null,Ve(n.labels.upload),1)])):(I(),H("button",{key:1,type:"button",class:"button small mr-3",onClick:t[1]||(t[1]=h=>a.showPanel(o.LIST))},[mH,O("span",null,Ve(n.labels.list),1)]))]),default:Ee(()=>[o.panel==o.UPLOAD?(I(),lt(u,{key:0,ref:"upload",url:n.uploadUrl,label:n.uploadLabel,"field-name":n.uploadFieldName,onLoad:a.uploadDone},{form:Ee(h=>[Ce(e.$slots,"upload-form",zt(xn(h)))]),preview:Ee(h=>[Ce(e.$slots,"upload-preview",zt(xn(h)))]),_:3},8,["url","label","field-name","onLoad"])):(I(),H("div",yH,[O("div",{ref:"list",class:Le(["a-select-file-list",n.listClass])},[o.prevUrl?(I(),H("div",_H,[O("a",{href:"#",onClick:t[2]||(t[2]=h=>a.load(o.prevUrl))},Ve(n.labels.show_previous),1)])):Re("",!0),(I(!0),H(Be,null,dt(o.items,h=>(I(),H("div",{key:h.id,class:Le(["file-preview",this.item&&h.id==this.item.id&&"active"]),onClick:p=>a.select(h)},[Ce(e.$slots,"default",{item:h,load:a.load,lastUrl:o.lastUrl}),n.deleteUrl?(I(),lt(c,{key:0,class:"has-text-danger small float-right",icon:"fa fa-trash",confirm:n.labels.confirm_delete,method:"DELETE",url:n.deleteUrl.replace("123",h.id),onDone:t[3]||(t[3]=p=>a.load(o.lastUrl))},null,8,["confirm","url"])):Re("",!0)],10,bH))),128)),o.nextUrl?(I(),H("div",wH,[O("a",{href:"#",onClick:t[4]||(t[4]=h=>a.load(o.nextUrl))},Ve(n.labels.show_next),1)])):Re("",!0)],2)]))]),footer:Ee(()=>[Ce(e.$slots,"footer",{item:o.item},()=>[o.item?(I(),H("span",DH,Ve(o.item.name),1)):Re("",!0)]),o.panel==o.LIST?(I(),H("button",{key:0,type:"button",class:"button align-right",onClick:t[5]||(t[5]=(...h)=>a.selected&&a.selected(...h))},Ve(n.labels.select_file),1)):Re("",!0)]),_:3},8,["title"])}const Jy=en(pH,[["render",$H]]),CH=new RegExp(",\\s*|\\s+","g"),xH={data(){return{counts:{}}},methods:{update(){const e=this.$el.querySelectorAll('input[name="data"]:checked'),t={};for(var n of e)if(n.value)for(var i of n.value.split(CH))i.trim()&&(t[i.trim()]=(t[i.trim()]||0)+1);this.counts=t},onclick(){}},mounted(){console.log(this.counts),this.$refs.form.addEventListener("change",()=>this.update()),this.update()}},SH={ref:"form"};function TH(e,t,n,i,o,a){return I(),H("form",SH,[Ce(e.$slots,"default",{counts:o.counts})],512)}const OH=en(xH,[["render",TH]]);class AH extends Kn{get playlists(){return this.data?this.data.playlists:[]}get queues(){return this.data?this.data.queues:[]}get sources(){return[...this.queues,...this.playlists]}get source(){return this.sources.find(t=>t.id==this.data.source)}commit(t){this.data||(this.data={id:t.id,playlists:[],queues:[]}),t.playlists=PH.fromList(t.playlists,{streamer:this}),t.queues=IH.fromList(t.queues,{streamer:this}),super.commit(t)}}class MH extends Kn{static getId(t){return t.rid}}class Qy extends Kn{constructor(t,{streamer:n=null,...i}={}){super(t,i),this.streamer=n,Ef(()=>this.tick(),1e3)}get isQueue(){return!1}get isPlaylist(){return!1}get isPlaying(){return this.data.status=="playing"}get isPaused(){return this.data.status=="paused"}get remainingString(){if(!this.remaining)return"00:00";const t=Math.floor(this.remaining%60),n=Math.floor(this.remaining/60);return String(n).padStart(2,"0")+":"+String(t).padStart(2,"0")}sync(){return this.action("sync/",{method:"POST"},!0)}skip(){return this.action("skip/",{method:"POST"},!0)}restart(){return this.action("restart/",{method:"POST"},!0)}seek(t){return this.action("seek/",{method:"POST",body:JSON.stringify({count:t})},!0)}tick(){if(!this.data.remaining||!this.isPlaying)return;const t=(Date.now()-this.commitDate)/1e3;this.remaining=this.data.remaining-t}commit(t){t.air_time&&(t.air_time=new Date(t.air_time)),this.commitDate=Date.now(),super.commit(t),this.remaining=t.remaining}}class PH extends Qy{get isPlaylist(){return!0}}class IH extends Qy{get isQueue(){return!0}get queue(){return this.data&&this.data.queue}commit(t){t.queue=MH.fromList(t.queue),super.commit(t)}push(t){return this.action("push/",{method:"POST",body:JSON.stringify({sound_id:parseInt(t)})},!0)}}const EH={props:{apiUrl:String},data(){return{streamer:null,streamers:[],fetchInterval:null,Sound:Ll}},computed:{sources(){var e=this.streamer?this.streamer.sources:[];return e.filter(t=>t.data)}},methods:{fetchStreamers(){AH.fetch(this.apiUrl,{many:!0}).then(e=>{this.streamers=e,this.streamer=e?e[0]:null})}},mounted(){this.fetchStreamers(),this.fetchInterval=Ef(()=>this.streamer&&this.streamer.fetch(),5e3)},unmounted(){this.fetchInterval!==null&&clearInterval(this.fetchInterval)}};function LH(e,t,n,i,o,a){return I(),H("div",null,[Ce(e.$slots,"default",{streamer:o.streamer,streamers:o.streamers,Sound:o.Sound,sources:a.sources,fetchStreamers:a.fetchStreamers})])}const kH=en(EH,[["render",LH]]);var so=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},fl={exports:{}};/** - * @license - * Lodash - * Copyright OpenJS Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */fl.exports;(function(e,t){(function(){var n,i="4.17.21",o=200,a="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",u="Expected a function",c="Invalid `variable` option passed into `_.template`",d="__lodash_hash_undefined__",h=500,p="__lodash_placeholder__",y=1,b=2,$=4,A=1,k=2,L=1,M=2,le=4,re=8,j=16,X=32,te=64,se=128,Q=256,ve=512,pe=30,we="...",F=800,ce=16,ke=1,me=2,Se=3,_e=1/0,De=9007199254740991,Ze=17976931348623157e292,ee=NaN,Te=4294967295,de=Te-1,mt=Te>>>1,Xe=[["ary",se],["bind",L],["bindKey",M],["curry",re],["curryRight",j],["flip",ve],["partial",X],["partialRight",te],["rearg",Q]],st="[object Arguments]",et="[object Array]",ut="[object AsyncFunction]",ct="[object Boolean]",xt="[object Date]",Ft="[object DOMException]",Et="[object Error]",At="[object Function]",w="[object GeneratorFunction]",x="[object Map]",E="[object Number]",B="[object Null]",Y="[object Object]",ne="[object Promise]",ie="[object Proxy]",q="[object RegExp]",J="[object Set]",z="[object String]",oe="[object Symbol]",ge="[object Undefined]",fe="[object WeakMap]",$e="[object WeakSet]",Me="[object ArrayBuffer]",Ue="[object DataView]",tt="[object Float32Array]",ot="[object Float64Array]",Lt="[object Int8Array]",tn="[object Int16Array]",jn="[object Int32Array]",yn="[object Uint8Array]",qn="[object Uint8ClampedArray]",St="[object Uint16Array]",K="[object Uint32Array]",D=/\b__p \+= '';/g,V=/\b(__p \+=) '' \+/g,ae=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Ye=/&(?:amp|lt|gt|quot|#39);/g,vt=/[&<>"']/g,Ut=RegExp(Ye.source),nn=RegExp(vt.source),Nr=/<%-([\s\S]+?)%>/g,Fr=/<%([\s\S]+?)%>/g,Vs=/<%=([\s\S]+?)%>/g,qt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ki=/^\w*$/,zs=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,_r=/[\\^$.*+?()[\]{}|]/g,vs=RegExp(_r.source),Ri=/^\s+/,t_=/\s/,n_=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,r_=/\{\n\/\* \[wrapped with (.+)\] \*/,s_=/,? & /,i_=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,o_=/[()=,{}\[\]\/\s]/,a_=/\\(\\)?/g,l_=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Nf=/\w*$/,u_=/^[-+]0x[0-9a-f]+$/i,c_=/^0b[01]+$/i,f_=/^\[object .+?Constructor\]$/,d_=/^0o[0-7]+$/i,h_=/^(?:0|[1-9]\d*)$/,v_=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,ko=/($^)/,p_=/['\n\r\u2028\u2029\\]/g,Ro="\\ud800-\\udfff",g_="\\u0300-\\u036f",m_="\\ufe20-\\ufe2f",y_="\\u20d0-\\u20ff",Ff=g_+m_+y_,Wf="\\u2700-\\u27bf",Bf="a-z\\xdf-\\xf6\\xf8-\\xff",__="\\xac\\xb1\\xd7\\xf7",b_="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",w_="\\u2000-\\u206f",D_=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Uf="A-Z\\xc0-\\xd6\\xd8-\\xde",Hf="\\ufe0e\\ufe0f",Kf=__+b_+w_+D_,kl="['’]",$_="["+Ro+"]",Vf="["+Kf+"]",Yo="["+Ff+"]",zf="\\d+",C_="["+Wf+"]",jf="["+Bf+"]",qf="[^"+Ro+Kf+zf+Wf+Bf+Uf+"]",Rl="\\ud83c[\\udffb-\\udfff]",x_="(?:"+Yo+"|"+Rl+")",Gf="[^"+Ro+"]",Yl="(?:\\ud83c[\\udde6-\\uddff]){2}",Nl="[\\ud800-\\udbff][\\udc00-\\udfff]",js="["+Uf+"]",Zf="\\u200d",Xf="(?:"+jf+"|"+qf+")",S_="(?:"+js+"|"+qf+")",Jf="(?:"+kl+"(?:d|ll|m|re|s|t|ve))?",Qf="(?:"+kl+"(?:D|LL|M|RE|S|T|VE))?",ed=x_+"?",td="["+Hf+"]?",T_="(?:"+Zf+"(?:"+[Gf,Yl,Nl].join("|")+")"+td+ed+")*",O_="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",A_="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",nd=td+ed+T_,M_="(?:"+[C_,Yl,Nl].join("|")+")"+nd,P_="(?:"+[Gf+Yo+"?",Yo,Yl,Nl,$_].join("|")+")",I_=RegExp(kl,"g"),E_=RegExp(Yo,"g"),Fl=RegExp(Rl+"(?="+Rl+")|"+P_+nd,"g"),L_=RegExp([js+"?"+jf+"+"+Jf+"(?="+[Vf,js,"$"].join("|")+")",S_+"+"+Qf+"(?="+[Vf,js+Xf,"$"].join("|")+")",js+"?"+Xf+"+"+Jf,js+"+"+Qf,A_,O_,zf,M_].join("|"),"g"),k_=RegExp("["+Zf+Ro+Ff+Hf+"]"),R_=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Y_=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],N_=-1,yt={};yt[tt]=yt[ot]=yt[Lt]=yt[tn]=yt[jn]=yt[yn]=yt[qn]=yt[St]=yt[K]=!0,yt[st]=yt[et]=yt[Me]=yt[ct]=yt[Ue]=yt[xt]=yt[Et]=yt[At]=yt[x]=yt[E]=yt[Y]=yt[q]=yt[J]=yt[z]=yt[fe]=!1;var pt={};pt[st]=pt[et]=pt[Me]=pt[Ue]=pt[ct]=pt[xt]=pt[tt]=pt[ot]=pt[Lt]=pt[tn]=pt[jn]=pt[x]=pt[E]=pt[Y]=pt[q]=pt[J]=pt[z]=pt[oe]=pt[yn]=pt[qn]=pt[St]=pt[K]=!0,pt[Et]=pt[At]=pt[fe]=!1;var F_={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},W_={"&":"&","<":"<",">":">",'"':""","'":"'"},B_={"&":"&","<":"<",">":">",""":'"',"'":"'"},U_={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},H_=parseFloat,K_=parseInt,rd=typeof so=="object"&&so&&so.Object===Object&&so,V_=typeof self=="object"&&self&&self.Object===Object&&self,Ht=rd||V_||Function("return this")(),Wl=t&&!t.nodeType&&t,ps=Wl&&!0&&e&&!e.nodeType&&e,sd=ps&&ps.exports===Wl,Bl=sd&&rd.process,Tn=function(){try{var S=ps&&ps.require&&ps.require("util").types;return S||Bl&&Bl.binding&&Bl.binding("util")}catch{}}(),id=Tn&&Tn.isArrayBuffer,od=Tn&&Tn.isDate,ad=Tn&&Tn.isMap,ld=Tn&&Tn.isRegExp,ud=Tn&&Tn.isSet,cd=Tn&&Tn.isTypedArray;function _n(S,R,P){switch(P.length){case 0:return S.call(R);case 1:return S.call(R,P[0]);case 2:return S.call(R,P[0],P[1]);case 3:return S.call(R,P[0],P[1],P[2])}return S.apply(R,P)}function z_(S,R,P,he){for(var Ne=-1,nt=S==null?0:S.length;++Ne-1}function Ul(S,R,P){for(var he=-1,Ne=S==null?0:S.length;++he-1;);return P}function yd(S,R){for(var P=S.length;P--&&qs(R,S[P],0)>-1;);return P}function t1(S,R){for(var P=S.length,he=0;P--;)S[P]===R&&++he;return he}var n1=zl(F_),r1=zl(W_);function s1(S){return"\\"+U_[S]}function i1(S,R){return S==null?n:S[R]}function Gs(S){return k_.test(S)}function o1(S){return R_.test(S)}function a1(S){for(var R,P=[];!(R=S.next()).done;)P.push(R.value);return P}function Zl(S){var R=-1,P=Array(S.size);return S.forEach(function(he,Ne){P[++R]=[Ne,he]}),P}function _d(S,R){return function(P){return S(R(P))}}function Ur(S,R){for(var P=-1,he=S.length,Ne=0,nt=[];++P-1}function q1(r,s){var l=this.__data__,f=ta(l,r);return f<0?(++this.size,l.push([r,s])):l[f][1]=s,this}br.prototype.clear=K1,br.prototype.delete=V1,br.prototype.get=z1,br.prototype.has=j1,br.prototype.set=q1;function wr(r){var s=-1,l=r==null?0:r.length;for(this.clear();++s=s?r:s)),r}function Pn(r,s,l,f,v,m){var _,C=s&y,T=s&b,W=s&$;if(l&&(_=v?l(r,f,v,m):l(r)),_!==n)return _;if(!Dt(r))return r;var U=Fe(r);if(U){if(_=J0(r),!C)return cn(r,_)}else{var G=Zt(r),ue=G==At||G==w;if(qr(r))return th(r,C);if(G==Y||G==st||ue&&!v){if(_=T||ue?{}:bh(r),!C)return T?B0(r,c0(_,r)):W0(r,Pd(_,r))}else{if(!pt[G])return v?r:{};_=Q0(r,G,C)}}m||(m=new Zn);var ye=m.get(r);if(ye)return ye;m.set(r,_),Gh(r)?r.forEach(function(Ie){_.add(Pn(Ie,s,l,Ie,r,m))}):jh(r)&&r.forEach(function(Ie,je){_.set(je,Pn(Ie,s,l,je,r,m))});var Pe=W?T?Du:wu:T?dn:Wt,Ke=U?n:Pe(r);return On(Ke||r,function(Ie,je){Ke&&(je=Ie,Ie=r[je]),Hi(_,je,Pn(Ie,s,l,je,r,m))}),_}function f0(r){var s=Wt(r);return function(l){return Id(l,r,s)}}function Id(r,s,l){var f=l.length;if(r==null)return!f;for(r=ft(r);f--;){var v=l[f],m=s[v],_=r[v];if(_===n&&!(v in r)||!m(_))return!1}return!0}function Ed(r,s,l){if(typeof r!="function")throw new An(u);return Zi(function(){r.apply(n,l)},s)}function Ki(r,s,l,f){var v=-1,m=No,_=!0,C=r.length,T=[],W=s.length;if(!C)return T;l&&(s=wt(s,bn(l))),f?(m=Ul,_=!1):s.length>=o&&(m=Yi,_=!1,s=new ys(s));e:for(;++vv?0:v+l),f=f===n||f>v?v:He(f),f<0&&(f+=v),f=l>f?0:Xh(f);l0&&l(C)?s>1?Kt(C,s-1,l,f,v):Br(v,C):f||(v[v.length]=C)}return v}var ru=ah(),Rd=ah(!0);function sr(r,s){return r&&ru(r,s,Wt)}function su(r,s){return r&&Rd(r,s,Wt)}function ra(r,s){return Wr(s,function(l){return Sr(r[l])})}function bs(r,s){s=zr(s,r);for(var l=0,f=s.length;r!=null&&ls}function v0(r,s){return r!=null&&it.call(r,s)}function p0(r,s){return r!=null&&s in ft(r)}function g0(r,s,l){return r>=Gt(s,l)&&r=120&&U.length>=120)?new ys(_&&U):n}U=r[0];var G=-1,ue=C[0];e:for(;++G-1;)C!==r&&qo.call(C,T,1),qo.call(r,T,1);return r}function jd(r,s){for(var l=r?s.length:0,f=l-1;l--;){var v=s[l];if(l==f||v!==m){var m=v;xr(v)?qo.call(r,v,1):vu(r,v)}}return r}function fu(r,s){return r+Xo(Td()*(s-r+1))}function A0(r,s,l,f){for(var v=-1,m=Rt(Zo((s-r)/(l||1)),0),_=P(m);m--;)_[f?m:++v]=r,r+=l;return _}function du(r,s){var l="";if(!r||s<1||s>De)return l;do s%2&&(l+=r),s=Xo(s/2),s&&(r+=r);while(s);return l}function ze(r,s){return Au($h(r,s,hn),r+"")}function M0(r){return Md(oi(r))}function P0(r,s){var l=oi(r);return va(l,_s(s,0,l.length))}function ji(r,s,l,f){if(!Dt(r))return r;s=zr(s,r);for(var v=-1,m=s.length,_=m-1,C=r;C!=null&&++vv?0:v+s),l=l>v?v:l,l<0&&(l+=v),v=s>l?0:l-s>>>0,s>>>=0;for(var m=P(v);++f>>1,_=r[m];_!==null&&!Dn(_)&&(l?_<=s:_=o){var W=s?null:V0(r);if(W)return Wo(W);_=!1,v=Yi,T=new ys}else T=s?[]:C;e:for(;++f=f?r:In(r,s,l)}var eh=D1||function(r){return Ht.clearTimeout(r)};function th(r,s){if(s)return r.slice();var l=r.length,f=Dd?Dd(l):new r.constructor(l);return r.copy(f),f}function yu(r){var s=new r.constructor(r.byteLength);return new zo(s).set(new zo(r)),s}function R0(r,s){var l=s?yu(r.buffer):r.buffer;return new r.constructor(l,r.byteOffset,r.byteLength)}function Y0(r){var s=new r.constructor(r.source,Nf.exec(r));return s.lastIndex=r.lastIndex,s}function N0(r){return Ui?ft(Ui.call(r)):{}}function nh(r,s){var l=s?yu(r.buffer):r.buffer;return new r.constructor(l,r.byteOffset,r.length)}function rh(r,s){if(r!==s){var l=r!==n,f=r===null,v=r===r,m=Dn(r),_=s!==n,C=s===null,T=s===s,W=Dn(s);if(!C&&!W&&!m&&r>s||m&&_&&T&&!C&&!W||f&&_&&T||!l&&T||!v)return 1;if(!f&&!m&&!W&&r=C)return T;var W=l[f];return T*(W=="desc"?-1:1)}}return r.index-s.index}function sh(r,s,l,f){for(var v=-1,m=r.length,_=l.length,C=-1,T=s.length,W=Rt(m-_,0),U=P(T+W),G=!f;++C1?l[v-1]:n,_=v>2?l[2]:n;for(m=r.length>3&&typeof m=="function"?(v--,m):n,_&&sn(l[0],l[1],_)&&(m=v<3?n:m,v=1),s=ft(s);++f-1?v[m?s[_]:_]:n}}function ch(r){return Cr(function(s){var l=s.length,f=l,v=Mn.prototype.thru;for(r&&s.reverse();f--;){var m=s[f];if(typeof m!="function")throw new An(u);if(v&&!_&&da(m)=="wrapper")var _=new Mn([],!0)}for(f=_?f:l;++f1&&Ge.reverse(),U&&TC))return!1;var W=m.get(r),U=m.get(s);if(W&&U)return W==s&&U==r;var G=-1,ue=!0,ye=l&k?new ys:n;for(m.set(r,s),m.set(s,r);++G1?"& ":"")+s[f],s=s.join(l>2?", ":" "),r.replace(n_,`{ -/* [wrapped with `+s+`] */ -`)}function tb(r){return Fe(r)||$s(r)||!!(xd&&r&&r[xd])}function xr(r,s){var l=typeof r;return s=s??De,!!s&&(l=="number"||l!="symbol"&&h_.test(r))&&r>-1&&r%1==0&&r0){if(++s>=F)return arguments[0]}else s=0;return r.apply(n,arguments)}}function va(r,s){var l=-1,f=r.length,v=f-1;for(s=s===n?f:s;++l1?r[s-1]:n;return l=typeof l=="function"?(r.pop(),l):n,kh(r,l)});function Rh(r){var s=g(r);return s.__chain__=!0,s}function dw(r,s){return s(r),r}function pa(r,s){return s(r)}var hw=Cr(function(r){var s=r.length,l=s?r[0]:0,f=this.__wrapped__,v=function(m){return nu(m,r)};return s>1||this.__actions__.length||!(f instanceof qe)||!xr(l)?this.thru(v):(f=f.slice(l,+l+(s?1:0)),f.__actions__.push({func:pa,args:[v],thisArg:n}),new Mn(f,this.__chain__).thru(function(m){return s&&!m.length&&m.push(n),m}))});function vw(){return Rh(this)}function pw(){return new Mn(this.value(),this.__chain__)}function gw(){this.__values__===n&&(this.__values__=Zh(this.value()));var r=this.__index__>=this.__values__.length,s=r?n:this.__values__[this.__index__++];return{done:r,value:s}}function mw(){return this}function yw(r){for(var s,l=this;l instanceof ea;){var f=Ah(l);f.__index__=0,f.__values__=n,s?v.__wrapped__=f:s=f;var v=f;l=l.__wrapped__}return v.__wrapped__=r,s}function _w(){var r=this.__wrapped__;if(r instanceof qe){var s=r;return this.__actions__.length&&(s=new qe(this)),s=s.reverse(),s.__actions__.push({func:pa,args:[Mu],thisArg:n}),new Mn(s,this.__chain__)}return this.thru(Mu)}function bw(){return Jd(this.__wrapped__,this.__actions__)}var ww=aa(function(r,s,l){it.call(r,l)?++r[l]:Dr(r,l,1)});function Dw(r,s,l){var f=Fe(r)?fd:d0;return l&&sn(r,s,l)&&(s=n),f(r,Oe(s,3))}function $w(r,s){var l=Fe(r)?Wr:kd;return l(r,Oe(s,3))}var Cw=uh(Mh),xw=uh(Ph);function Sw(r,s){return Kt(ga(r,s),1)}function Tw(r,s){return Kt(ga(r,s),_e)}function Ow(r,s,l){return l=l===n?1:He(l),Kt(ga(r,s),l)}function Yh(r,s){var l=Fe(r)?On:Kr;return l(r,Oe(s,3))}function Nh(r,s){var l=Fe(r)?j_:Ld;return l(r,Oe(s,3))}var Aw=aa(function(r,s,l){it.call(r,l)?r[l].push(s):Dr(r,l,[s])});function Mw(r,s,l,f){r=fn(r)?r:oi(r),l=l&&!f?He(l):0;var v=r.length;return l<0&&(l=Rt(v+l,0)),wa(r)?l<=v&&r.indexOf(s,l)>-1:!!v&&qs(r,s,l)>-1}var Pw=ze(function(r,s,l){var f=-1,v=typeof s=="function",m=fn(r)?P(r.length):[];return Kr(r,function(_){m[++f]=v?_n(s,_,l):Vi(_,s,l)}),m}),Iw=aa(function(r,s,l){Dr(r,l,s)});function ga(r,s){var l=Fe(r)?wt:Bd;return l(r,Oe(s,3))}function Ew(r,s,l,f){return r==null?[]:(Fe(s)||(s=s==null?[]:[s]),l=f?n:l,Fe(l)||(l=l==null?[]:[l]),Vd(r,s,l))}var Lw=aa(function(r,s,l){r[l?0:1].push(s)},function(){return[[],[]]});function kw(r,s,l){var f=Fe(r)?Hl:pd,v=arguments.length<3;return f(r,Oe(s,4),l,v,Kr)}function Rw(r,s,l){var f=Fe(r)?q_:pd,v=arguments.length<3;return f(r,Oe(s,4),l,v,Ld)}function Yw(r,s){var l=Fe(r)?Wr:kd;return l(r,_a(Oe(s,3)))}function Nw(r){var s=Fe(r)?Md:M0;return s(r)}function Fw(r,s,l){(l?sn(r,s,l):s===n)?s=1:s=He(s);var f=Fe(r)?a0:P0;return f(r,s)}function Ww(r){var s=Fe(r)?l0:E0;return s(r)}function Bw(r){if(r==null)return 0;if(fn(r))return wa(r)?Zs(r):r.length;var s=Zt(r);return s==x||s==J?r.size:lu(r).length}function Uw(r,s,l){var f=Fe(r)?Kl:L0;return l&&sn(r,s,l)&&(s=n),f(r,Oe(s,3))}var Hw=ze(function(r,s){if(r==null)return[];var l=s.length;return l>1&&sn(r,s[0],s[1])?s=[]:l>2&&sn(s[0],s[1],s[2])&&(s=[s[0]]),Vd(r,Kt(s,1),[])}),ma=$1||function(){return Ht.Date.now()};function Kw(r,s){if(typeof s!="function")throw new An(u);return r=He(r),function(){if(--r<1)return s.apply(this,arguments)}}function Fh(r,s,l){return s=l?n:s,s=r&&s==null?r.length:s,$r(r,se,n,n,n,n,s)}function Wh(r,s){var l;if(typeof s!="function")throw new An(u);return r=He(r),function(){return--r>0&&(l=s.apply(this,arguments)),r<=1&&(s=n),l}}var Iu=ze(function(r,s,l){var f=L;if(l.length){var v=Ur(l,si(Iu));f|=X}return $r(r,f,s,l,v)}),Bh=ze(function(r,s,l){var f=L|M;if(l.length){var v=Ur(l,si(Bh));f|=X}return $r(s,f,r,l,v)});function Uh(r,s,l){s=l?n:s;var f=$r(r,re,n,n,n,n,n,s);return f.placeholder=Uh.placeholder,f}function Hh(r,s,l){s=l?n:s;var f=$r(r,j,n,n,n,n,n,s);return f.placeholder=Hh.placeholder,f}function Kh(r,s,l){var f,v,m,_,C,T,W=0,U=!1,G=!1,ue=!0;if(typeof r!="function")throw new An(u);s=Ln(s)||0,Dt(l)&&(U=!!l.leading,G="maxWait"in l,m=G?Rt(Ln(l.maxWait)||0,s):m,ue="trailing"in l?!!l.trailing:ue);function ye(Pt){var Jn=f,Or=v;return f=v=n,W=Pt,_=r.apply(Or,Jn),_}function Pe(Pt){return W=Pt,C=Zi(je,s),U?ye(Pt):_}function Ke(Pt){var Jn=Pt-T,Or=Pt-W,uv=s-Jn;return G?Gt(uv,m-Or):uv}function Ie(Pt){var Jn=Pt-T,Or=Pt-W;return T===n||Jn>=s||Jn<0||G&&Or>=m}function je(){var Pt=ma();if(Ie(Pt))return Ge(Pt);C=Zi(je,Ke(Pt))}function Ge(Pt){return C=n,ue&&f?ye(Pt):(f=v=n,_)}function $n(){C!==n&&eh(C),W=0,f=T=v=C=n}function on(){return C===n?_:Ge(ma())}function Cn(){var Pt=ma(),Jn=Ie(Pt);if(f=arguments,v=this,T=Pt,Jn){if(C===n)return Pe(T);if(G)return eh(C),C=Zi(je,s),ye(T)}return C===n&&(C=Zi(je,s)),_}return Cn.cancel=$n,Cn.flush=on,Cn}var Vw=ze(function(r,s){return Ed(r,1,s)}),zw=ze(function(r,s,l){return Ed(r,Ln(s)||0,l)});function jw(r){return $r(r,ve)}function ya(r,s){if(typeof r!="function"||s!=null&&typeof s!="function")throw new An(u);var l=function(){var f=arguments,v=s?s.apply(this,f):f[0],m=l.cache;if(m.has(v))return m.get(v);var _=r.apply(this,f);return l.cache=m.set(v,_)||m,_};return l.cache=new(ya.Cache||wr),l}ya.Cache=wr;function _a(r){if(typeof r!="function")throw new An(u);return function(){var s=arguments;switch(s.length){case 0:return!r.call(this);case 1:return!r.call(this,s[0]);case 2:return!r.call(this,s[0],s[1]);case 3:return!r.call(this,s[0],s[1],s[2])}return!r.apply(this,s)}}function qw(r){return Wh(2,r)}var Gw=k0(function(r,s){s=s.length==1&&Fe(s[0])?wt(s[0],bn(Oe())):wt(Kt(s,1),bn(Oe()));var l=s.length;return ze(function(f){for(var v=-1,m=Gt(f.length,l);++v=s}),$s=Nd(function(){return arguments}())?Nd:function(r){return Tt(r)&&it.call(r,"callee")&&!Cd.call(r,"callee")},Fe=P.isArray,cD=id?bn(id):y0;function fn(r){return r!=null&&ba(r.length)&&!Sr(r)}function Mt(r){return Tt(r)&&fn(r)}function fD(r){return r===!0||r===!1||Tt(r)&&rn(r)==ct}var qr=x1||Ku,dD=od?bn(od):_0;function hD(r){return Tt(r)&&r.nodeType===1&&!Xi(r)}function vD(r){if(r==null)return!0;if(fn(r)&&(Fe(r)||typeof r=="string"||typeof r.splice=="function"||qr(r)||ii(r)||$s(r)))return!r.length;var s=Zt(r);if(s==x||s==J)return!r.size;if(Gi(r))return!lu(r).length;for(var l in r)if(it.call(r,l))return!1;return!0}function pD(r,s){return zi(r,s)}function gD(r,s,l){l=typeof l=="function"?l:n;var f=l?l(r,s):n;return f===n?zi(r,s,n,l):!!f}function Lu(r){if(!Tt(r))return!1;var s=rn(r);return s==Et||s==Ft||typeof r.message=="string"&&typeof r.name=="string"&&!Xi(r)}function mD(r){return typeof r=="number"&&Sd(r)}function Sr(r){if(!Dt(r))return!1;var s=rn(r);return s==At||s==w||s==ut||s==ie}function zh(r){return typeof r=="number"&&r==He(r)}function ba(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=De}function Dt(r){var s=typeof r;return r!=null&&(s=="object"||s=="function")}function Tt(r){return r!=null&&typeof r=="object"}var jh=ad?bn(ad):w0;function yD(r,s){return r===s||au(r,s,Cu(s))}function _D(r,s,l){return l=typeof l=="function"?l:n,au(r,s,Cu(s),l)}function bD(r){return qh(r)&&r!=+r}function wD(r){if(sb(r))throw new Ne(a);return Fd(r)}function DD(r){return r===null}function $D(r){return r==null}function qh(r){return typeof r=="number"||Tt(r)&&rn(r)==E}function Xi(r){if(!Tt(r)||rn(r)!=Y)return!1;var s=jo(r);if(s===null)return!0;var l=it.call(s,"constructor")&&s.constructor;return typeof l=="function"&&l instanceof l&&Ho.call(l)==_1}var ku=ld?bn(ld):D0;function CD(r){return zh(r)&&r>=-De&&r<=De}var Gh=ud?bn(ud):$0;function wa(r){return typeof r=="string"||!Fe(r)&&Tt(r)&&rn(r)==z}function Dn(r){return typeof r=="symbol"||Tt(r)&&rn(r)==oe}var ii=cd?bn(cd):C0;function xD(r){return r===n}function SD(r){return Tt(r)&&Zt(r)==fe}function TD(r){return Tt(r)&&rn(r)==$e}var OD=fa(uu),AD=fa(function(r,s){return r<=s});function Zh(r){if(!r)return[];if(fn(r))return wa(r)?Gn(r):cn(r);if(Ni&&r[Ni])return a1(r[Ni]());var s=Zt(r),l=s==x?Zl:s==J?Wo:oi;return l(r)}function Tr(r){if(!r)return r===0?r:0;if(r=Ln(r),r===_e||r===-_e){var s=r<0?-1:1;return s*Ze}return r===r?r:0}function He(r){var s=Tr(r),l=s%1;return s===s?l?s-l:s:0}function Xh(r){return r?_s(He(r),0,Te):0}function Ln(r){if(typeof r=="number")return r;if(Dn(r))return ee;if(Dt(r)){var s=typeof r.valueOf=="function"?r.valueOf():r;r=Dt(s)?s+"":s}if(typeof r!="string")return r===0?r:+r;r=gd(r);var l=c_.test(r);return l||d_.test(r)?K_(r.slice(2),l?2:8):u_.test(r)?ee:+r}function Jh(r){return ir(r,dn(r))}function MD(r){return r?_s(He(r),-De,De):r===0?r:0}function rt(r){return r==null?"":wn(r)}var PD=ni(function(r,s){if(Gi(s)||fn(s)){ir(s,Wt(s),r);return}for(var l in s)it.call(s,l)&&Hi(r,l,s[l])}),Qh=ni(function(r,s){ir(s,dn(s),r)}),Da=ni(function(r,s,l,f){ir(s,dn(s),r,f)}),ID=ni(function(r,s,l,f){ir(s,Wt(s),r,f)}),ED=Cr(nu);function LD(r,s){var l=ti(r);return s==null?l:Pd(l,s)}var kD=ze(function(r,s){r=ft(r);var l=-1,f=s.length,v=f>2?s[2]:n;for(v&&sn(s[0],s[1],v)&&(f=1);++l1),m}),ir(r,Du(r),l),f&&(l=Pn(l,y|b|$,z0));for(var v=s.length;v--;)vu(l,s[v]);return l});function QD(r,s){return tv(r,_a(Oe(s)))}var e$=Cr(function(r,s){return r==null?{}:T0(r,s)});function tv(r,s){if(r==null)return{};var l=wt(Du(r),function(f){return[f]});return s=Oe(s),zd(r,l,function(f,v){return s(f,v[0])})}function t$(r,s,l){s=zr(s,r);var f=-1,v=s.length;for(v||(v=1,r=n);++fs){var f=r;r=s,s=f}if(l||r%1||s%1){var v=Td();return Gt(r+v*(s-r+H_("1e-"+((v+"").length-1))),s)}return fu(r,s)}var d$=ri(function(r,s,l){return s=s.toLowerCase(),r+(l?sv(s):s)});function sv(r){return Nu(rt(r).toLowerCase())}function iv(r){return r=rt(r),r&&r.replace(v_,n1).replace(E_,"")}function h$(r,s,l){r=rt(r),s=wn(s);var f=r.length;l=l===n?f:_s(He(l),0,f);var v=l;return l-=s.length,l>=0&&r.slice(l,v)==s}function v$(r){return r=rt(r),r&&nn.test(r)?r.replace(vt,r1):r}function p$(r){return r=rt(r),r&&vs.test(r)?r.replace(_r,"\\$&"):r}var g$=ri(function(r,s,l){return r+(l?"-":"")+s.toLowerCase()}),m$=ri(function(r,s,l){return r+(l?" ":"")+s.toLowerCase()}),y$=lh("toLowerCase");function _$(r,s,l){r=rt(r),s=He(s);var f=s?Zs(r):0;if(!s||f>=s)return r;var v=(s-f)/2;return ca(Xo(v),l)+r+ca(Zo(v),l)}function b$(r,s,l){r=rt(r),s=He(s);var f=s?Zs(r):0;return s&&f>>0,l?(r=rt(r),r&&(typeof s=="string"||s!=null&&!ku(s))&&(s=wn(s),!s&&Gs(r))?jr(Gn(r),0,l):r.split(s,l)):[]}var T$=ri(function(r,s,l){return r+(l?" ":"")+Nu(s)});function O$(r,s,l){return r=rt(r),l=l==null?0:_s(He(l),0,r.length),s=wn(s),r.slice(l,l+s.length)==s}function A$(r,s,l){var f=g.templateSettings;l&&sn(r,s,l)&&(s=n),r=rt(r),s=Da({},s,f,ph);var v=Da({},s.imports,f.imports,ph),m=Wt(v),_=Gl(v,m),C,T,W=0,U=s.interpolate||ko,G="__p += '",ue=Xl((s.escape||ko).source+"|"+U.source+"|"+(U===Vs?l_:ko).source+"|"+(s.evaluate||ko).source+"|$","g"),ye="//# sourceURL="+(it.call(s,"sourceURL")?(s.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++N_+"]")+` -`;r.replace(ue,function(Ie,je,Ge,$n,on,Cn){return Ge||(Ge=$n),G+=r.slice(W,Cn).replace(p_,s1),je&&(C=!0,G+=`' + -__e(`+je+`) + -'`),on&&(T=!0,G+=`'; -`+on+`; -__p += '`),Ge&&(G+=`' + -((__t = (`+Ge+`)) == null ? '' : __t) + -'`),W=Cn+Ie.length,Ie}),G+=`'; -`;var Pe=it.call(s,"variable")&&s.variable;if(!Pe)G=`with (obj) { -`+G+` -} -`;else if(o_.test(Pe))throw new Ne(c);G=(T?G.replace(D,""):G).replace(V,"$1").replace(ae,"$1;"),G="function("+(Pe||"obj")+`) { -`+(Pe?"":`obj || (obj = {}); -`)+"var __t, __p = ''"+(C?", __e = _.escape":"")+(T?`, __j = Array.prototype.join; -function print() { __p += __j.call(arguments, '') } -`:`; -`)+G+`return __p -}`;var Ke=av(function(){return nt(m,ye+"return "+G).apply(n,_)});if(Ke.source=G,Lu(Ke))throw Ke;return Ke}function M$(r){return rt(r).toLowerCase()}function P$(r){return rt(r).toUpperCase()}function I$(r,s,l){if(r=rt(r),r&&(l||s===n))return gd(r);if(!r||!(s=wn(s)))return r;var f=Gn(r),v=Gn(s),m=md(f,v),_=yd(f,v)+1;return jr(f,m,_).join("")}function E$(r,s,l){if(r=rt(r),r&&(l||s===n))return r.slice(0,bd(r)+1);if(!r||!(s=wn(s)))return r;var f=Gn(r),v=yd(f,Gn(s))+1;return jr(f,0,v).join("")}function L$(r,s,l){if(r=rt(r),r&&(l||s===n))return r.replace(Ri,"");if(!r||!(s=wn(s)))return r;var f=Gn(r),v=md(f,Gn(s));return jr(f,v).join("")}function k$(r,s){var l=pe,f=we;if(Dt(s)){var v="separator"in s?s.separator:v;l="length"in s?He(s.length):l,f="omission"in s?wn(s.omission):f}r=rt(r);var m=r.length;if(Gs(r)){var _=Gn(r);m=_.length}if(l>=m)return r;var C=l-Zs(f);if(C<1)return f;var T=_?jr(_,0,C).join(""):r.slice(0,C);if(v===n)return T+f;if(_&&(C+=T.length-C),ku(v)){if(r.slice(C).search(v)){var W,U=T;for(v.global||(v=Xl(v.source,rt(Nf.exec(v))+"g")),v.lastIndex=0;W=v.exec(U);)var G=W.index;T=T.slice(0,G===n?C:G)}}else if(r.indexOf(wn(v),C)!=C){var ue=T.lastIndexOf(v);ue>-1&&(T=T.slice(0,ue))}return T+f}function R$(r){return r=rt(r),r&&Ut.test(r)?r.replace(Ye,f1):r}var Y$=ri(function(r,s,l){return r+(l?" ":"")+s.toUpperCase()}),Nu=lh("toUpperCase");function ov(r,s,l){return r=rt(r),s=l?n:s,s===n?o1(r)?v1(r):X_(r):r.match(s)||[]}var av=ze(function(r,s){try{return _n(r,n,s)}catch(l){return Lu(l)?l:new Ne(l)}}),N$=Cr(function(r,s){return On(s,function(l){l=or(l),Dr(r,l,Iu(r[l],r))}),r});function F$(r){var s=r==null?0:r.length,l=Oe();return r=s?wt(r,function(f){if(typeof f[1]!="function")throw new An(u);return[l(f[0]),f[1]]}):[],ze(function(f){for(var v=-1;++vDe)return[];var l=Te,f=Gt(r,Te);s=Oe(s),r-=Te;for(var v=ql(f,s);++l0||s<0)?new qe(l):(r<0?l=l.takeRight(-r):r&&(l=l.drop(r)),s!==n&&(s=He(s),l=s<0?l.dropRight(-s):l.take(s-r)),l)},qe.prototype.takeRightWhile=function(r){return this.reverse().takeWhile(r).reverse()},qe.prototype.toArray=function(){return this.take(Te)},sr(qe.prototype,function(r,s){var l=/^(?:filter|find|map|reject)|While$/.test(s),f=/^(?:head|last)$/.test(s),v=g[f?"take"+(s=="last"?"Right":""):s],m=f||/^find/.test(s);v&&(g.prototype[s]=function(){var _=this.__wrapped__,C=f?[1]:arguments,T=_ instanceof qe,W=C[0],U=T||Fe(_),G=function(je){var Ge=v.apply(g,Br([je],C));return f&&ue?Ge[0]:Ge};U&&l&&typeof W=="function"&&W.length!=1&&(T=U=!1);var ue=this.__chain__,ye=!!this.__actions__.length,Pe=m&&!ue,Ke=T&&!ye;if(!m&&U){_=Ke?_:new qe(this);var Ie=r.apply(_,C);return Ie.__actions__.push({func:pa,args:[G],thisArg:n}),new Mn(Ie,ue)}return Pe&&Ke?r.apply(this,C):(Ie=this.thru(G),Pe?f?Ie.value()[0]:Ie.value():Ie)})}),On(["pop","push","shift","sort","splice","unshift"],function(r){var s=Bo[r],l=/^(?:push|sort|unshift)$/.test(r)?"tap":"thru",f=/^(?:pop|shift)$/.test(r);g.prototype[r]=function(){var v=arguments;if(f&&!this.__chain__){var m=this.value();return s.apply(Fe(m)?m:[],v)}return this[l](function(_){return s.apply(Fe(_)?_:[],v)})}}),sr(qe.prototype,function(r,s){var l=g[s];if(l){var f=l.name+"";it.call(ei,f)||(ei[f]=[]),ei[f].push({name:s,func:l})}}),ei[la(n,M).name]=[{name:"wrapper",func:n}],qe.prototype.clone=R1,qe.prototype.reverse=Y1,qe.prototype.value=N1,g.prototype.at=hw,g.prototype.chain=vw,g.prototype.commit=pw,g.prototype.next=gw,g.prototype.plant=yw,g.prototype.reverse=_w,g.prototype.toJSON=g.prototype.valueOf=g.prototype.value=bw,g.prototype.first=g.prototype.head,Ni&&(g.prototype[Ni]=mw),g},Xs=p1();ps?((ps.exports=Xs)._=Xs,Wl._=Xs):Ht._=Xs}).call(so)})(fl,fl.exports);var uo=fl.exports;const RH={emits:["move","cell"],props:{item:{type:Object,default:()=>({})},columns:Array,cell:{type:Object,default(){return{row:0}}},cellTag:{type:String,default:"td"},orderable:{type:Boolean,default:!1}},computed:{row(){return this.cell&&this.cell.row||0},itemData(){return this.item instanceof Kn?this.item.data:this.item},cells(){const e=vi(this.cell)&&Wg(this.cell)||this.cell||{},t=[];for(var n in this.columns)t.push({...e,col:Number(n)});return t}},methods:{cellEmit(e,t,n){this.$emit("cell",{name:e,cell:t,data:n,item:this.item})},onDragStart(e){const n=`cell:${e.target.dataset.col}`;e.dataTransfer.setData("text/cell",n),e.dataTransfer.dropEffect="move"},onDragOver(e){e.preventDefault(),e.dataTransfer.dropEffect="move"},onDrop(e){const t=e.dataTransfer.getData("text/cell");!t||!t.startsWith("cell:")||(e.preventDefault(),this.$emit("move",{from:Number(t.slice(5)),to:Number(e.target.dataset.col)}))},getCellEl(e){const t=this.$el.querySelectorAll(this.cellTag);for(var n of t)if(e==Number(n.dataset.col))return n;return null},focus(e,t){t&&(e+=t.col);const n=this.getCellEl(e);if(!n)return;const i=n.querySelector('input:not([type="hidden"])')||n.querySelector("button")||n.querySelector("select")||n.querySelector("a");i&&i.focus()}},mounted(){this.$el.__row=this}};function YH(e,t,n,i,o,a){return I(),H("tr",null,[Ce(e.$slots,"head",{item:n.item,row:a.row}),(I(!0),H(Be,null,dt(n.columns,(u,c)=>(I(),H(Be,{key:c},[Ce(e.$slots,"cell-before",{item:n.item,cell:a.cells[c],attr:u}),(I(),lt(yi(n.cellTag),{class:Le(["cell","cell-"+u]),"data-col":c,draggable:n.orderable,onDragstart:a.onDragStart,onDragover:a.onDragOver,onDrop:a.onDrop},{default:Ee(()=>[Ce(e.$slots,u,{item:n.item,cell:a.cells[c],data:a.itemData,attr:u,emit:a.cellEmit,value:a.itemData&&a.itemData[u]},()=>[Wn(Ve(a.itemData&&a.itemData[u]),1)]),Ce(e.$slots,"cell",{item:n.item,cell:a.cells[c],data:a.itemData,attr:u,emit:a.cellEmit,value:a.itemData&&a.itemData[u]})]),_:2},1064,["class","data-col","draggable","onDragstart","onDragover","onDrop"])),Ce(e.$slots,"cell-after",{item:n.item,col:c,cell:a.cells[c],attr:u})],64))),128)),Ce(e.$slots,"tail",{item:n.item,row:a.row})])}const e_=en(RH,[["render",YH]]),kf={extends:cl,components:{ARow:e_},emits:["cell","colmove"],props:{...cl.props,columns:Array,columnsOrderable:Boolean},data(){return{...super.data,columns_:[...this.columns],extraItem:new this.set.model}},computed:{columnNames(){return this.columns_.map(e=>e.name)},columnLabels(){return this.columns_.reduce((e,t)=>({...e,[t.name]:t.label}),{})},rowSlots(){return Object.keys(this.$slots).filter(e=>e.startsWith("row-")).map(e=>[e,e.slice(4)])}},methods:{sortColumns(e){const t=e.map(i=>this.columns_.find(o=>o.name==i)).filter(i=>!!i),n=this.columns_.filter(i=>e.indexOf(i.name)==-1);this.columns_=[...t,...n],this.$emit("colmove")},moveColumn(e){const{from:t,to:n}=e,i=this.columns_[t];this.columns_.splice(t,1),this.columns_.splice(n,0,i),this.$emit("colmove",e)},onCellEvent(e,t){t.name=="focus"&&this.focus(t.data,t.cell),this.$emit("cell",{...t,row:e,set:this.set})},getRow(e){const t=this.$el.querySelectorAll("tr");for(var n of t)if(n.__row&&e==Number(n.dataset.row))return n.__row},focus(e,t,n=null){n&&(e+=n.row),e=this.getRow(e),e&&e.focus(t,n)}}};kf.props.itemTag.default="tr";kf.props.listTag.default="tbody";const NH=kf,FH={class:"table is-stripped is-fullwidth"},WH=["title"],BH=O("i",{class:"fa fa-circle-question"},null,-1),UH=[BH];function HH(e,t,n,i,o,a){const u=Ct("a-row");return I(),H("table",FH,[O("thead",null,[xe(u,{columns:e.columnNames,orderable:e.columnsOrderable,cellTag:"th",onMove:e.moveColumn},Do({_:2},[e.$slots["header-head"]?{name:"head",fn:Ee(c=>[Ce(e.$slots,"header-head",zt(xn(c)))]),key:"0"}:void 0,e.$slots["header-tail"]?{name:"tail",fn:Ee(c=>[Ce(e.$slots,"header-tail",zt(xn(c)))]),key:"1"}:void 0,dt(e.columns,c=>({name:c.name,fn:Ee(d=>[Ce(e.$slots,"header-"+c.name,zt(xn(d)),()=>[Wn(Ve(c.label)+" ",1),c.help?(I(),H("span",{key:0,class:"icon small",title:c.help},UH,8,WH)):Re("",!0)])])}))]),1032,["columns","orderable","onMove"])]),O("tbody",null,[Ce(e.$slots,"head"),(I(!0),H(Be,null,dt(e.items,(c,d)=>(I(),lt(u,{key:d,item:c,cell:{row:d},columns:e.columnNames,"data-index":d,"data-row":d,draggable:e.orderable,onDragstart:e.onDragStart,onDragover:e.onDragOver,onDrop:e.onDrop,onCell:h=>e.onCellEvent(d,h)},Do({_:2},[dt(e.rowSlots,([h,p])=>({name:p,fn:Ee(y=>[Ce(e.$slots,h,zt(xn(y)))])}))]),1032,["item","cell","columns","data-index","data-row","draggable","onDragstart","onDragover","onDrop","onCell"]))),128)),Ce(e.$slots,"tail")])])}const KH=en(NH,[["render",HH]]),VH={emit:["cell","move","colmove","load"],components:{ARows:KH},props:{labels:Object,actionAdd:Function,columnsOrderable:Boolean,orderBy:String,formData:Object,model:{type:Function,default:Kn},initials:Array},data(){return{set:new El(Kn)}},computed:{_prefix(){return this.formData.prefix?this.formData.prefix+"-":""},fields(){return this.formData.fields},orderField(){return this.orderBy&&this.fields.find(e=>e.name==this.orderBy)},orderable(){return!!this.orderField},hiddenFields(){return this.fields.filter(e=>e.hidden&&!(this.orderable&&e==this.orderField))},visibleFields(){return this.fields.filter(e=>!e.hidden)},fieldSlots(){return this.visibleFields.reduce((e,t)=>({...e,["row-"+t.name]:t}),{})},items(){return this.set.items},rows(){return this.$refs.rows}},methods:{onCellEvent(e){this.$emit("cell",e)},onColumnMove(e){this.$emit("colmove",e)},onActionAdd(){if(this.actionAdd)return this.actionAdd(this);this.set.push()},moveItem(e){const{from:t,to:n}=e,i=e.set||this.set;i.move(t,n),this.$emit("move",{...e,seŧ:i})},removeItem(e){this.items[e].id||this.items.splice(e,1)},load(e=[],t=!1){t&&(this.set.items=[]);for(var n of e)this.set.push(uo.cloneDeep(n));this.$emit("load",e)},reset(){this.load(this.initials||[],!0)}},mounted(){this.reset()}},zH=["name","value"],jH=["name","value"],qH=["title","aria-label","aria-description"],GH=O("span",{class:"icon"},[O("i",{class:"fa fa-arrow-down-1-9"})],-1),ZH=[GH],XH=["name","value"],JH=["name","value"],QH=["name","value"],e4={key:0},t4={class:"field"},n4={class:"control"},r4={class:"align-right pr-0"},s4=["onClick","title","aria-label"],i4=O("span",{class:"icon"},[O("i",{class:"fa fa-trash"})],-1),o4=[i4],a4={class:"a-formset-footer flex-row"},l4={class:"flex-grow-1 flex-row"},u4={class:"flex-grow-1 align-right"},c4=["title","aria-label"],f4=O("span",{class:"icon"},[O("i",{class:"fa fa-rotate"})],-1),d4=[f4],h4=["title","aria-label"],v4=O("span",{class:"icon"},[O("i",{class:"fa fa-plus"})],-1),p4=[v4];function g4(e,t,n,i,o,a){const u=Ct("a-rows");return I(),H("div",null,[O("input",{type:"hidden",name:a._prefix+"TOTAL_FORMS",value:a.items.length||0},null,8,zH),(I(!0),H(Be,null,dt(n.formData.management,(c,d)=>(I(),H("input",{key:d,type:"hidden",name:a._prefix+d.toUpperCase(),value:c},null,8,jH))),128)),xe(u,{ref:"rows",set:o.set,columns:a.visibleFields,columnsOrderable:n.columnsOrderable,orderable:a.orderable,onMove:a.moveItem,onColmove:a.onColumnMove,onCell:t[0]||(t[0]=c=>e.$emit("cell",c))},Do({"header-head":Ee(()=>[a.orderable?(I(),H(Be,{key:0},[O("th",{style:{"max-width":"2em"},title:a.orderField.label,"aria-label":a.orderField.label,"aria-description":a.orderField.help||""},ZH,8,qH),Ce(e.$slots,"rows-header-head")],64)):Re("",!0)]),"row-head":Ee(c=>[a.orderable?(I(),H("input",{key:0,type:"hidden",name:a._prefix+c.row+"-"+n.orderBy,value:c.row},null,8,XH)):Re("",!0),O("input",{type:"hidden",name:a._prefix+c.row+"-id",value:c.item?c.item.id:""},null,8,JH),(I(!0),H(Be,null,dt(a.hiddenFields,d=>(I(),H(Be,{key:d.name},[d.name in["id",n.orderBy]?Re("",!0):(I(),H("input",{key:0,type:"hidden",name:a._prefix+c.row+"-"+d.name,value:d.value in[null,void 0]?c.item.data[e.name]:d.value},null,8,QH))],64))),128)),Ce(e.$slots,"row-head",zt(xn(c)),()=>[a.orderable?(I(),H("td",e4,Ve(c.row+1),1)):Re("",!0)])]),"row-tail":Ee(c=>[e.$slots["row-tail"]?Ce(e.$slots,"row-tail",zt(Bn({key:0},c))):Re("",!0),O("td",r4,[O("button",{type:"button",class:"button square",onClick:hr(d=>a.removeItem(c.row,c.item),["stop"]),title:n.labels.remove_item,"aria-label":n.labels.remove_item},o4,8,s4)])]),_:2},[dt(a.fieldSlots,(c,d)=>({name:d,fn:Ee(h=>[Ce(e.$slots,d,Bn(h,{field:c,inputName:a._prefix+h.cell.row+"-"+c.name}),()=>[O("div",t4,[O("div",n4,[Ce(e.$slots,"control-"+c.name,Bn(h,{field:c,inputName:a._prefix+h.cell.row+"-"+c.name}))]),(I(!0),H(Be,null,dt(h.item.error(c.name),([p,y])=>(I(),H("p",{class:"help is-danger",key:y},Ve(p),1))),128))])])])}))]),1032,["set","columns","columnsOrderable","orderable","onMove","onColmove"]),O("div",a4,[O("div",l4,[Ce(e.$slots,"footer")]),O("div",u4,[O("button",{type:"button",class:"button square is-warning p-2",onClick:t[1]||(t[1]=c=>a.reset()),title:n.labels.discard_changes,"aria-label":n.labels.discard_changes},d4,8,c4),O("button",{type:"button",class:"button square is-primary p-2",onClick:t[2]||(t[2]=(...c)=>a.onActionAdd&&a.onActionAdd(...c)),title:n.labels.add_item,"aria-label":n.labels.add_item},p4,8,h4)])])])}const Rf=en(VH,[["render",g4]]),io={Text:0,List:1,Settings:2},m4={components:{AActionButton:If,AFormSet:Rf,ARow:e_,AModal:Lf},props:{formData:Object,labels:Object,initData:Object,dataPrefix:String,settingsUrl:String,defaultColumns:{type:Array,default:()=>["artist","title","tags","album","year","timestamp"]}},data(){const e={tracklist_editor_sep:" -- "};return{Page:io,page:io.Text,extraData:{},settings:e,savedSettings:uo.cloneDeep(e)}},computed:{rows(){return this.$refs.formset&&this.$refs.formset.rows},columns(){return this.rows&&this.rows.columns_||[]},settingsChanged(){var e=Object.keys(this.savedSettings).findIndex(t=>!uo.isEqual(this.settings[t],this.savedSettings[t]));return e!=-1},separator:{set(e){this.settings.tracklist_editor_sep=e,this.page==io.List&&this.updateInput()},get(){return this.settings.tracklist_editor_sep}},rowsSlots(){return Object.keys(this.$slots).filter(e=>e.startsWith("row-")||e.startsWith("rows-")||e.startsWith("control-")).map(e=>[e,e.startsWith("rows-")?e.slice(5):e])}},methods:{onCellEvent(e){switch(e.name){case"change":this.updateInput();break}},onColumnMove(){this.settings.tracklist_editor_columns=this.$refs.formset.rows.columnNames,this.page==this.Page.List?this.updateInput():this.updateList()},updateList(){const e=this.toList(this.$refs.textarea.value);this.$refs.formset.set.reset(e)},updateInput(){const e=this.toText(this.$refs.formset.items);this.$refs.textarea.value=e},toList(e){const t=this.$refs.formset.rows.columns_;var n=e.split(` -`),i=[];for(let c of n)if(c=c.trimLeft(),!!c){var o=c.split(this.separator),a={};for(var u in t){if(u>=o.length)break;const d=t[u];a[d.name]=o[u].trim()}a&&i.push(a)}return i},toText(e){const t=this.$refs.formset.rows.columns_,n=` ${this.separator.trim()} `,i=[];for(let u of e)if(u){var o=[];for(var a of t)o.push(u.data[a.name]||"");o=uo.dropRightWhile(o,c=>!c||!(""+c).trim()),o=o.join(n).trimRight(),i.push(o)}return i.join(` -`)},_data_key(e){e=e.slice(this.dataPrefix.length);try{var[t,n]=e.split("-",1);return[Number(t),n]}catch{return[null,e]}},settingsSaved(e=null){e!==null&&(this.settings=e),this.$refs.settings&&this.$refs.settings.close(),this.savedSettings=uo.cloneDeep(this.settings)}},mounted(){const e=this.initData&&this.initData.settings;e&&(this.settingsSaved(e),this.rows.sortColumns(e.tracklist_editor_columns)),this.page=this.initData.items.length?io.List:io.Text}},y4={class:"a-tracklist-editor"},_4={class:"flex-row"},b4={class:"flex-grow-1"},w4={class:"flex-row align-right"},D4={class:"field has-addons"},$4={class:"control"},C4=O("span",{class:"icon is-small"},[O("i",{class:"fa fa-pencil"})],-1),x4={class:"control"},S4=O("span",{class:"icon is-small"},[O("i",{class:"fa fa-list"})],-1),T4={class:"control ml-3"},O4=["title"],A4=O("span",{class:"icon is-small"},[O("i",{class:"fa fa-cog"})],-1),M4=[A4],P4={class:"panel"},I4={class:"panel"},E4={class:"field"},L4={class:"label",style:{"vertical-align":"middle"}},k4={class:"table is-bordered",style:{"vertical-align":"middle"}},R4={key:0},Y4={key:0,style:{cursor:"pointer"}},N4=["onClick"],F4=O("i",{class:"fa fa-left-right"},null,-1),W4=[F4],B4={class:"flex-row"},U4={class:"field is-inline-block is-vcentered flex-grow-1"},H4=O("label",{class:"label is-inline mr-2",style:{"vertical-align":"middle"}}," Séparateur",-1),K4={class:"control is-inline-block",style:{"vertical-align":"middle"}},V4={class:"flex-row align-right"};function z4(e,t,n,i,o,a){const u=Ct("a-form-set"),c=Ct("a-row"),d=Ct("a-action-button"),h=Ct("a-modal");return I(),H("div",y4,[O("div",_4,[O("div",b4,[Ce(e.$slots,"title")]),O("div",w4,[O("div",D4,[O("p",$4,[O("button",{type:"button",class:Le(["button","p-2",o.page==o.Page.Text?"is-primary":"is-light"]),onClick:t[0]||(t[0]=p=>o.page=o.Page.Text)},[C4,O("span",null,Ve(n.labels.text),1)],2)]),O("p",x4,[O("button",{type:"button",class:Le(["button","p-2",o.page==o.Page.List?"is-primary":"is-light"]),onClick:t[1]||(t[1]=p=>o.page=o.Page.List)},[S4,O("span",null,Ve(n.labels.list),1)],2)]),O("p",T4,[O("button",{type:"button",class:"button is-info square",title:n.labels.settings,onClick:t[2]||(t[2]=p=>e.$refs.settings.open())},M4,8,O4)])])])]),ks(O("section",P4,[O("textarea",{ref:"textarea",class:"is-fullwidth is-size-6",rows:"20",onChange:t[3]||(t[3]=(...p)=>a.updateList&&a.updateList(...p))},null,544)],512),[[Ja,o.page==o.Page.Text]]),ks(O("section",I4,[xe(u,{ref:"formset","form-data":n.formData,initials:n.initData.items,columnsOrderable:!0,labels:n.labels,"order-by":"position",onLoad:a.updateInput,onColmove:a.onColumnMove,onMove:a.updateInput,onCell:a.onCellEvent},Do({_:2},[dt(a.rowsSlots,([p,y])=>({name:y,fn:Ee(b=>[p!="row-tail"?Ce(e.$slots,p,zt(Bn({key:0},b))):Re("",!0)])}))]),1032,["form-data","initials","labels","onLoad","onColmove","onMove","onCell"])],512),[[Ja,o.page==o.Page.List]]),xe(h,{ref:"settings",title:n.labels.settings},{default:Ee(()=>[O("div",E4,[O("label",L4,Ve(n.labels.columns),1),O("table",k4,[e.$refs.formset?(I(),H("tr",R4,[xe(c,{columns:e.$refs.formset.rows.columnNames,item:e.$refs.formset.rows.columnLabels,onMove:e.$refs.formset.rows.moveColumn},{"cell-after":Ee(({cell:p})=>[p.cole.$refs.formset.rows.moveColumn({from:p.col,to:p.col+1})},W4,8,N4)])):Re("",!0)]),_:1},8,["columns","item","onMove"])])):Re("",!0)])]),O("div",B4,[O("div",U4,[H4,O("div",K4,[ks(O("input",{type:"text",ref:"sep",class:"input is-inline is-text-centered is-small",style:{"max-width":"5em"},"onUpdate:modelValue":t[4]||(t[4]=p=>a.separator=p),onChange:t[5]||(t[5]=p=>a.updateList())},null,544),[[zS,a.separator]])])])])]),footer:Ee(()=>[O("div",V4,[a.settingsChanged?(I(),lt(d,{key:0,icon:"fa fa-floppy-disk",class:"button control p-2 mr-3 is-secondary","run-class":"blink",url:n.settingsUrl,method:"POST",data:o.settings,"aria-label":n.labels.save_settings,onDone:t[6]||(t[6]=p=>a.settingsSaved())},{default:Ee(()=>[Wn(Ve(n.labels.save_settings),1)]),_:1},8,["url","data","aria-label"])):Re("",!0),O("button",{class:"button",type:"button",onClick:t[7]||(t[7]=p=>e.$refs.settings.close())}," Fermer ")])]),_:1},8,["title"])])}const j4=en(m4,[["render",z4]]),q4={components:{AFormSet:Rf,ASelectFile:Jy},props:{formData:Object,labels:Object,initData:Object,soundListUrl:String,soundUploadUrl:String,soundDeleteUrl:String},computed:{rowsSlots(){return Object.keys(this.$slots).filter(e=>e.startsWith("row-")||e.startsWith("rows-")||e.startsWith("control-")).map(e=>[e,e.startsWith("rows-")?e.slice(5):e])}},methods:{actionAdd(){this.$refs["select-file"].open()},selected(e){const t={sound:e.id,name:e.name,url:e.url,broadcast:e.broadcast};this.$refs.formset.set.push(t)}}},G4={class:"a-playlist-editor"},Z4=["src"],X4={class:"label small flex-grow-1"},J4=O("br",null,null,-1),Q4=["src"],e6=["name","value"];function t6(e,t,n,i,o,a){const u=Ct("a-select-file"),c=Ct("a-form-set");return I(),H("div",G4,[xe(u,{ref:"select-file",title:n.labels&&n.labels.add_sound,labels:n.labels,"list-url":n.soundListUrl,deleteUrl:n.soundDeleteUrl,uploadUrl:n.soundUploadUrl,uploadLabel:n.labels.select_file,onSelect:a.selected},{"upload-preview":Ee(({upload:d})=>[Ce(e.$slots,"upload-preview",{upload:d})]),"upload-form":Ee(()=>[Ce(e.$slots,"upload-form")]),default:Ee(({item:d})=>[O("audio",{controls:"",src:d.url},null,8,Z4),O("label",X4,Ve(d.name),1)]),_:3},8,["title","labels","list-url","deleteUrl","uploadUrl","uploadLabel","onSelect"]),xe(c,{ref:"formset","form-data":n.formData,labels:n.labels,initials:n.initData.items,"order-by":"position","action-add":a.actionAdd},Do({"row-sound":Ee(({item:d,inputName:h})=>[O("label",null,Ve(d.data.name),1),J4,O("audio",{controls:"",src:d.data.url},null,8,Q4),O("input",{type:"hidden",name:h,value:d.data.sound},null,8,e6)]),_:2},[dt(a.rowsSlots,([d,h])=>({name:h,fn:Ee(p=>[d!="row-tail"?Ce(e.$slots,d,zt(Bn({key:0},p))):Re("",!0)])}))]),1032,["form-data","labels","initials","action-add"])])}const n6=en(q4,[["render",t6]]),Yf={APlayer:zU},a6={...Yf,AActionButton:If,AFileUpload:Xy,ASelectFile:Jy,AModal:Lf,AFormSet:Rf,ATrackListEditor:j4,ASoundListEditor:n6,AStatistics:OH,AStreamer:kH},r6={el:"#app",delimiters:["[[","]]"],components:{...Yf,VCalendar:jy,VDatepicker:KB},computed:{player(){return window.aircox.player}},methods:{deleteElements(e){for(var t of document.querySelectorAll(e))t.parentNode.removeChild(t)}}},s6={el:"#player",delimiters:["[[","]]"],components:{...Yf}};class i6{constructor(t,{loadingClass:n="loading",append:i=!1}={}){this.el=t,this.append=i,this.loadingClass=n}get target(){return this._target||(this._target=document.querySelector(this.el)),this._target}reset(){this._target=null}enable(t=null){if(this._pageChanged)throw"Already enabled, please disable me";t||(t=this.target||document.body),this.historySave(document.location,!0),this._pageChanged=n=>this.pageChanged(n),this._statePopped=n=>this.statePopped(n),t.addEventListener("click",this._pageChanged,!0),t.addEventListener("submit",this._pageChanged,!0),window.addEventListener("popstate",this._statePopped,!0)}disable(){this.target.removeEventListener("click",this._pageChanged,!0),this.target.removeEventListener("submit",this._pageChanged,!0),window.removeEventListener("popstate",this._statePopped,!0),this._pageChanged=null,this._statePopped=null}fetch(t,n){return fetch(t,n)}load(t,{mount:n=!0,scroll:i=[0,0],...o}={}){return this.loadingClass&&this.target.classList.add(this.loadingClass),this.onLoad&&this.onLoad({url:t,el:this.el,options:o}),i&&window.scroll(...i),this.fetch(t,o).then(a=>a.text()).then(a=>{this.loadingClass&&this.target.classList.remove(this.loadingClass);var u=new DOMParser().parseFromString(a,"text/html"),c=u.querySelectorAll(this.el),d={url:t,content:c||[document.createTextNode(a)],title:u.title,append:this.append};return n&&this.mount(d),d})}mount({content:t,title:n=null,...i}={}){this.onPreMount&&this.onPreMount({target:this.target,content:t,items:o,title:n});var o=null;t&&(o=this.mountContent(t,i)),n&&(document.title=n),this.onMount&&this.onMount({target:this.target,content:t,items:o,title:n})}mountContent(t,{append:n=!1}={}){if(typeof t=="string")return this.target.innerHTML=n?this.target.innerHTML+t:t,[];n||(this.target.innerHTML="");var i=document.createDocumentFragment(),o=[];for(var a of t)for(;a.firstChild;)o.push(a.firstChild),i.appendChild(a.firstChild);return this.target.append(i),o}historySave(t,n=!1){const i={content:this.target.innerHTML,title:document.title};n?history.replaceState(i,"",t):history.pushState(i,"",t)}pageChanged(t){let n=t.type=="submit",i=n||t.target.tagName=="A"?t.target:t.target.closest("a");if(!i||i.hasAttribute("target")||i.data.forceReload)return;let o=n?i.getAttribute("action")||"":i.getAttribute("href"),a=window.location.protocol+"//"+window.location.hostname,u=(o===""||o.startsWith("/")||o.startsWith("?")||o.startsWith(a))&&o.indexOf("wp-admin")==-1;if(o===null||!u)return;let c={};if(n){let d=new FormData(t.target);i.method=="get"?o+="?"+new URLSearchParams(d).toString():c={...c,method:i.method,body:d}}this.load(o,c).then(()=>this.historySave(o)),t.preventDefault(),t.stopPropagation()}statePopped(t){const n=t.state;n&&n.content&&this.mount({content:n.content,title:n.title})}}class pg{constructor({el:t=null,props:n={},...i}={},o={}){this.appConfig=i,this.appConfig.el=t,this.props=n,this.pageLoad=new i6(t,o),this.pageLoad.onPreMount=a=>this.onPreMount(a),this.pageLoad.onMount=a=>this.onMount(a)}enable(t=!0){t&&this.pageLoad.enable(document.body),this.mount()}mount(){this.app&&this.unmount();const t=JS(this.appConfig,this.props);t.config.globalProperties.window=window,this.vm=t.mount(this.pageLoad.el),this.app=t}unmount(){if(this.app){try{this.app.unmount()}catch{}this.app=null,this.vm=null,this.pageLoad.reset()}}onPreMount(){this.unmount()}onMount(){this.mount()}}window.aircox={loader:null,get app(){return this.loader.app},playerLoader:null,get playerApp(){return this.playerLoader&&this.playerLoader.app},get player(){return this.playerLoader.vm&&this.playerLoader.vm.$refs.player},Set:El,Sound:Ll,init(e=null,{hotReload:t=!1,el:n=null,config:i=null,playerConfig:o=null,initApp:a=!0,initPlayer:u=!0,loader:c=null,playerLoader:d=null}={}){u&&(o=o||s6,d=d||new pg(o),d.enable(!1),this.playerLoader=d,document.addEventListener("keyup",h=>this.onKeyPress(h),!1)),a&&(i=i||window.App||r6,i.el=n||i.el,c=c||new pg({el:n,props:e,...i}),c.enable(t),this.loader=c)},onKeyPress(){},filter_menu(e){var t=new RegExp(e.target.value,"gi"),n=e.target.closest(".navbar-dropdown");if(e.target.value)for(let i of n.querySelectorAll("a.navbar-item"))i.style.display=i.innerHTML.search(t)==-1?"none":null;else for(let i of n.querySelectorAll("a.navbar-item"))i.style.display=null},pickDate(e,t){e=`${e}?date=${t.id}`,this.loader.pageLoad.load(e)}};export{r6 as A,a6 as a}; -//# sourceMappingURL=index-BHp9xxGn.js.map diff --git a/aircox/static/aircox/assets/index-BHp9xxGn.js.map b/aircox/static/aircox/assets/index-BHp9xxGn.js.map deleted file mode 100644 index 4b31b32..0000000 --- a/aircox/static/aircox/assets/index-BHp9xxGn.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-BHp9xxGn.js","sources":["../../../../assets/node_modules/@vue/shared/dist/shared.esm-bundler.js","../../../../assets/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js","../../../../assets/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js","../../../../assets/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js","../../../../assets/node_modules/@popperjs/core/lib/enums.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../../assets/node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../../assets/node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../../assets/node_modules/@popperjs/core/lib/utils/math.js","../../../../assets/node_modules/@popperjs/core/lib/utils/userAgent.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../../assets/node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../../assets/node_modules/@popperjs/core/lib/utils/within.js","../../../../assets/node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../../assets/node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../../assets/node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../../assets/node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../../assets/node_modules/@popperjs/core/lib/utils/getVariation.js","../../../../assets/node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../../assets/node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../../assets/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../../assets/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../../../assets/node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../../assets/node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../../assets/node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../../assets/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../../assets/node_modules/@popperjs/core/lib/modifiers/flip.js","../../../../assets/node_modules/@popperjs/core/lib/modifiers/hide.js","../../../../assets/node_modules/@popperjs/core/lib/modifiers/offset.js","../../../../assets/node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../../assets/node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../../assets/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../../assets/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../../assets/node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../../assets/node_modules/@popperjs/core/lib/utils/debounce.js","../../../../assets/node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../../assets/node_modules/@popperjs/core/lib/createPopper.js","../../../../assets/node_modules/@popperjs/core/lib/popper.js","../../../../assets/node_modules/v-calendar/dist/es/index.js","../../../../assets/src/model.js","../../../../assets/src/components/AActionButton.vue","../../../../assets/src/sound.js","../../../../assets/src/components/AList.vue","../../../../assets/src/utils.js","../../../../assets/src/live.js","../../../../assets/src/components/ASoundItem.vue","../../../../assets/src/components/APlaylist.vue","../../../../assets/src/components/AProgress.vue","../../../../assets/src/components/APlayer.vue","../../../../assets/src/components/AModal.vue","../../../../assets/src/components/AFileUpload.vue","../../../../assets/src/components/ASelectFile.vue","../../../../assets/src/components/AStatistics.vue","../../../../assets/src/streamer.js","../../../../assets/src/components/AStreamer.vue","../../../../assets/node_modules/lodash/lodash.js","../../../../assets/src/components/ARow.vue","../../../../assets/src/components/ARows.vue","../../../../assets/src/components/AFormSet.vue","../../../../assets/src/components/ATrackListEditor.vue","../../../../assets/src/components/ASoundListEditor.vue","../../../../assets/src/components/index.js","../../../../assets/src/app.js","../../../../assets/src/pageLoad.js","../../../../assets/src/vueLoader.js","../../../../assets/src/index.js"],"sourcesContent":["/**\n* @vue/shared v3.4.23\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction makeMap(str, expectsLowerCase) {\n const set = new Set(str.split(\",\"));\n return expectsLowerCase ? (val) => set.has(val.toLowerCase()) : (val) => set.has(val);\n}\n\nconst EMPTY_OBJ = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze({}) : {};\nconst EMPTY_ARR = !!(process.env.NODE_ENV !== \"production\") ? Object.freeze([]) : [];\nconst NOOP = () => {\n};\nconst NO = () => false;\nconst isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter\n(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);\nconst isModelListener = (key) => key.startsWith(\"onUpdate:\");\nconst extend = Object.assign;\nconst remove = (arr, el) => {\n const i = arr.indexOf(el);\n if (i > -1) {\n arr.splice(i, 1);\n }\n};\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst isArray = Array.isArray;\nconst isMap = (val) => toTypeString(val) === \"[object Map]\";\nconst isSet = (val) => toTypeString(val) === \"[object Set]\";\nconst isDate = (val) => toTypeString(val) === \"[object Date]\";\nconst isRegExp = (val) => toTypeString(val) === \"[object RegExp]\";\nconst isFunction = (val) => typeof val === \"function\";\nconst isString = (val) => typeof val === \"string\";\nconst isSymbol = (val) => typeof val === \"symbol\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => {\n return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch);\n};\nconst objectToString = Object.prototype.toString;\nconst toTypeString = (value) => objectToString.call(value);\nconst toRawType = (value) => {\n return toTypeString(value).slice(8, -1);\n};\nconst isPlainObject = (val) => toTypeString(val) === \"[object Object]\";\nconst isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nconst isReservedProp = /* @__PURE__ */ makeMap(\n // the leading comma is intentional so empty string \"\" is also included\n \",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"\n);\nconst isBuiltInDirective = /* @__PURE__ */ makeMap(\n \"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo\"\n);\nconst cacheStringFunction = (fn) => {\n const cache = /* @__PURE__ */ Object.create(null);\n return (str) => {\n const hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n};\nconst camelizeRE = /-(\\w)/g;\nconst camelize = cacheStringFunction((str) => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nconst hyphenateRE = /\\B([A-Z])/g;\nconst hyphenate = cacheStringFunction(\n (str) => str.replace(hyphenateRE, \"-$1\").toLowerCase()\n);\nconst capitalize = cacheStringFunction((str) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n});\nconst toHandlerKey = cacheStringFunction((str) => {\n const s = str ? `on${capitalize(str)}` : ``;\n return s;\n});\nconst hasChanged = (value, oldValue) => !Object.is(value, oldValue);\nconst invokeArrayFns = (fns, arg) => {\n for (let i = 0; i < fns.length; i++) {\n fns[i](arg);\n }\n};\nconst def = (obj, key, value) => {\n Object.defineProperty(obj, key, {\n configurable: true,\n enumerable: false,\n value\n });\n};\nconst looseToNumber = (val) => {\n const n = parseFloat(val);\n return isNaN(n) ? val : n;\n};\nconst toNumber = (val) => {\n const n = isString(val) ? Number(val) : NaN;\n return isNaN(n) ? val : n;\n};\nlet _globalThis;\nconst getGlobalThis = () => {\n return _globalThis || (_globalThis = typeof globalThis !== \"undefined\" ? globalThis : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : {});\n};\nconst identRE = /^[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/;\nfunction genPropsAccessExp(name) {\n return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`;\n}\n\nconst PatchFlags = {\n \"TEXT\": 1,\n \"1\": \"TEXT\",\n \"CLASS\": 2,\n \"2\": \"CLASS\",\n \"STYLE\": 4,\n \"4\": \"STYLE\",\n \"PROPS\": 8,\n \"8\": \"PROPS\",\n \"FULL_PROPS\": 16,\n \"16\": \"FULL_PROPS\",\n \"NEED_HYDRATION\": 32,\n \"32\": \"NEED_HYDRATION\",\n \"STABLE_FRAGMENT\": 64,\n \"64\": \"STABLE_FRAGMENT\",\n \"KEYED_FRAGMENT\": 128,\n \"128\": \"KEYED_FRAGMENT\",\n \"UNKEYED_FRAGMENT\": 256,\n \"256\": \"UNKEYED_FRAGMENT\",\n \"NEED_PATCH\": 512,\n \"512\": \"NEED_PATCH\",\n \"DYNAMIC_SLOTS\": 1024,\n \"1024\": \"DYNAMIC_SLOTS\",\n \"DEV_ROOT_FRAGMENT\": 2048,\n \"2048\": \"DEV_ROOT_FRAGMENT\",\n \"HOISTED\": -1,\n \"-1\": \"HOISTED\",\n \"BAIL\": -2,\n \"-2\": \"BAIL\"\n};\nconst PatchFlagNames = {\n [1]: `TEXT`,\n [2]: `CLASS`,\n [4]: `STYLE`,\n [8]: `PROPS`,\n [16]: `FULL_PROPS`,\n [32]: `NEED_HYDRATION`,\n [64]: `STABLE_FRAGMENT`,\n [128]: `KEYED_FRAGMENT`,\n [256]: `UNKEYED_FRAGMENT`,\n [512]: `NEED_PATCH`,\n [1024]: `DYNAMIC_SLOTS`,\n [2048]: `DEV_ROOT_FRAGMENT`,\n [-1]: `HOISTED`,\n [-2]: `BAIL`\n};\n\nconst ShapeFlags = {\n \"ELEMENT\": 1,\n \"1\": \"ELEMENT\",\n \"FUNCTIONAL_COMPONENT\": 2,\n \"2\": \"FUNCTIONAL_COMPONENT\",\n \"STATEFUL_COMPONENT\": 4,\n \"4\": \"STATEFUL_COMPONENT\",\n \"TEXT_CHILDREN\": 8,\n \"8\": \"TEXT_CHILDREN\",\n \"ARRAY_CHILDREN\": 16,\n \"16\": \"ARRAY_CHILDREN\",\n \"SLOTS_CHILDREN\": 32,\n \"32\": \"SLOTS_CHILDREN\",\n \"TELEPORT\": 64,\n \"64\": \"TELEPORT\",\n \"SUSPENSE\": 128,\n \"128\": \"SUSPENSE\",\n \"COMPONENT_SHOULD_KEEP_ALIVE\": 256,\n \"256\": \"COMPONENT_SHOULD_KEEP_ALIVE\",\n \"COMPONENT_KEPT_ALIVE\": 512,\n \"512\": \"COMPONENT_KEPT_ALIVE\",\n \"COMPONENT\": 6,\n \"6\": \"COMPONENT\"\n};\n\nconst SlotFlags = {\n \"STABLE\": 1,\n \"1\": \"STABLE\",\n \"DYNAMIC\": 2,\n \"2\": \"DYNAMIC\",\n \"FORWARDED\": 3,\n \"3\": \"FORWARDED\"\n};\nconst slotFlagsText = {\n [1]: \"STABLE\",\n [2]: \"DYNAMIC\",\n [3]: \"FORWARDED\"\n};\n\nconst GLOBALS_ALLOWED = \"Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error\";\nconst isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);\nconst isGloballyWhitelisted = isGloballyAllowed;\n\nconst range = 2;\nfunction generateCodeFrame(source, start = 0, end = source.length) {\n let lines = source.split(/(\\r?\\n)/);\n const newlineSequences = lines.filter((_, idx) => idx % 2 === 1);\n lines = lines.filter((_, idx) => idx % 2 === 0);\n let count = 0;\n const res = [];\n for (let i = 0; i < lines.length; i++) {\n count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0);\n if (count >= start) {\n for (let j = i - range; j <= i + range || end > count; j++) {\n if (j < 0 || j >= lines.length)\n continue;\n const line = j + 1;\n res.push(\n `${line}${\" \".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`\n );\n const lineLength = lines[j].length;\n const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0;\n if (j === i) {\n const pad = start - (count - (lineLength + newLineSeqLength));\n const length = Math.max(\n 1,\n end > count ? lineLength - pad : end - start\n );\n res.push(` | ` + \" \".repeat(pad) + \"^\".repeat(length));\n } else if (j > i) {\n if (end > count) {\n const length = Math.max(Math.min(end - count, lineLength), 1);\n res.push(` | ` + \"^\".repeat(length));\n }\n count += lineLength + newLineSeqLength;\n }\n }\n break;\n }\n }\n return res.join(\"\\n\");\n}\n\nfunction normalizeStyle(value) {\n if (isArray(value)) {\n const res = {};\n for (let i = 0; i < value.length; i++) {\n const item = value[i];\n const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item);\n if (normalized) {\n for (const key in normalized) {\n res[key] = normalized[key];\n }\n }\n }\n return res;\n } else if (isString(value) || isObject(value)) {\n return value;\n }\n}\nconst listDelimiterRE = /;(?![^(]*\\))/g;\nconst propertyDelimiterRE = /:([^]+)/;\nconst styleCommentRE = /\\/\\*[^]*?\\*\\//g;\nfunction parseStringStyle(cssText) {\n const ret = {};\n cssText.replace(styleCommentRE, \"\").split(listDelimiterRE).forEach((item) => {\n if (item) {\n const tmp = item.split(propertyDelimiterRE);\n tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return ret;\n}\nfunction stringifyStyle(styles) {\n let ret = \"\";\n if (!styles || isString(styles)) {\n return ret;\n }\n for (const key in styles) {\n const value = styles[key];\n const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key);\n if (isString(value) || typeof value === \"number\") {\n ret += `${normalizedKey}:${value};`;\n }\n }\n return ret;\n}\nfunction normalizeClass(value) {\n let res = \"\";\n if (isString(value)) {\n res = value;\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const normalized = normalizeClass(value[i]);\n if (normalized) {\n res += normalized + \" \";\n }\n }\n } else if (isObject(value)) {\n for (const name in value) {\n if (value[name]) {\n res += name + \" \";\n }\n }\n }\n return res.trim();\n}\nfunction normalizeProps(props) {\n if (!props)\n return null;\n let { class: klass, style } = props;\n if (klass && !isString(klass)) {\n props.class = normalizeClass(klass);\n }\n if (style) {\n props.style = normalizeStyle(style);\n }\n return props;\n}\n\nconst HTML_TAGS = \"html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot\";\nconst SVG_TAGS = \"svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view\";\nconst MATH_TAGS = \"annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics\";\nconst VOID_TAGS = \"area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr\";\nconst isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);\nconst isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);\nconst isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);\nconst isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);\n\nconst specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nconst isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);\nconst isBooleanAttr = /* @__PURE__ */ makeMap(\n specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`\n);\nfunction includeBooleanAttr(value) {\n return !!value || value === \"\";\n}\nconst unsafeAttrCharRE = /[>/=\"'\\u0009\\u000a\\u000c\\u0020]/;\nconst attrValidationCache = {};\nfunction isSSRSafeAttrName(name) {\n if (attrValidationCache.hasOwnProperty(name)) {\n return attrValidationCache[name];\n }\n const isUnsafe = unsafeAttrCharRE.test(name);\n if (isUnsafe) {\n console.error(`unsafe attribute name: ${name}`);\n }\n return attrValidationCache[name] = !isUnsafe;\n}\nconst propsToAttrMap = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\"\n};\nconst isKnownHtmlAttr = /* @__PURE__ */ makeMap(\n `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap`\n);\nconst isKnownSvgAttr = /* @__PURE__ */ makeMap(\n `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xmlns:xlink,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan`\n);\nfunction isRenderableAttrValue(value) {\n if (value == null) {\n return false;\n }\n const type = typeof value;\n return type === \"string\" || type === \"number\" || type === \"boolean\";\n}\n\nconst escapeRE = /[\"'&<>]/;\nfunction escapeHtml(string) {\n const str = \"\" + string;\n const match = escapeRE.exec(str);\n if (!match) {\n return str;\n }\n let html = \"\";\n let escaped;\n let index;\n let lastIndex = 0;\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n escaped = \""\";\n break;\n case 38:\n escaped = \"&\";\n break;\n case 39:\n escaped = \"'\";\n break;\n case 60:\n escaped = \"<\";\n break;\n case 62:\n escaped = \">\";\n break;\n default:\n continue;\n }\n if (lastIndex !== index) {\n html += str.slice(lastIndex, index);\n }\n lastIndex = index + 1;\n html += escaped;\n }\n return lastIndex !== index ? html + str.slice(lastIndex, index) : html;\n}\nconst commentStripRE = /^-?>||--!>| looseEqual(item, val));\n}\n\nconst toDisplayString = (val) => {\n return isString(val) ? val : val == null ? \"\" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val);\n};\nconst replacer = (_key, val) => {\n if (val && val.__v_isRef) {\n return replacer(_key, val.value);\n } else if (isMap(val)) {\n return {\n [`Map(${val.size})`]: [...val.entries()].reduce(\n (entries, [key, val2], i) => {\n entries[stringifySymbol(key, i) + \" =>\"] = val2;\n return entries;\n },\n {}\n )\n };\n } else if (isSet(val)) {\n return {\n [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))\n };\n } else if (isSymbol(val)) {\n return stringifySymbol(val);\n } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {\n return String(val);\n }\n return val;\n};\nconst stringifySymbol = (v, i = \"\") => {\n var _a;\n return (\n // Symbol.description in es2019+ so we need to cast here to pass\n // the lib: es2016 check\n isSymbol(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v\n );\n};\n\nexport { EMPTY_ARR, EMPTY_OBJ, NO, NOOP, PatchFlagNames, PatchFlags, ShapeFlags, SlotFlags, camelize, capitalize, def, escapeHtml, escapeHtmlComment, extend, genPropsAccessExp, generateCodeFrame, getGlobalThis, hasChanged, hasOwn, hyphenate, includeBooleanAttr, invokeArrayFns, isArray, isBooleanAttr, isBuiltInDirective, isDate, isFunction, isGloballyAllowed, isGloballyWhitelisted, isHTMLTag, isIntegerKey, isKnownHtmlAttr, isKnownSvgAttr, isMap, isMathMLTag, isModelListener, isObject, isOn, isPlainObject, isPromise, isRegExp, isRenderableAttrValue, isReservedProp, isSSRSafeAttrName, isSVGTag, isSet, isSpecialBooleanAttr, isString, isSymbol, isVoidTag, looseEqual, looseIndexOf, looseToNumber, makeMap, normalizeClass, normalizeProps, normalizeStyle, objectToString, parseStringStyle, propsToAttrMap, remove, slotFlagsText, stringifyStyle, toDisplayString, toHandlerKey, toNumber, toRawType, toTypeString };\n","/**\n* @vue/reactivity v3.4.23\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { NOOP, extend, isArray, isSymbol, isMap, isIntegerKey, hasOwn, hasChanged, isObject, makeMap, capitalize, toRawType, def, isFunction } from '@vue/shared';\n\nfunction warn(msg, ...args) {\n console.warn(`[Vue warn] ${msg}`, ...args);\n}\n\nlet activeEffectScope;\nclass EffectScope {\n constructor(detached = false) {\n this.detached = detached;\n /**\n * @internal\n */\n this._active = true;\n /**\n * @internal\n */\n this.effects = [];\n /**\n * @internal\n */\n this.cleanups = [];\n this.parent = activeEffectScope;\n if (!detached && activeEffectScope) {\n this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(\n this\n ) - 1;\n }\n }\n get active() {\n return this._active;\n }\n run(fn) {\n if (this._active) {\n const currentEffectScope = activeEffectScope;\n try {\n activeEffectScope = this;\n return fn();\n } finally {\n activeEffectScope = currentEffectScope;\n }\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`cannot run an inactive effect scope.`);\n }\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n on() {\n activeEffectScope = this;\n }\n /**\n * This should only be called on non-detached scopes\n * @internal\n */\n off() {\n activeEffectScope = this.parent;\n }\n stop(fromParent) {\n if (this._active) {\n let i, l;\n for (i = 0, l = this.effects.length; i < l; i++) {\n this.effects[i].stop();\n }\n for (i = 0, l = this.cleanups.length; i < l; i++) {\n this.cleanups[i]();\n }\n if (this.scopes) {\n for (i = 0, l = this.scopes.length; i < l; i++) {\n this.scopes[i].stop(true);\n }\n }\n if (!this.detached && this.parent && !fromParent) {\n const last = this.parent.scopes.pop();\n if (last && last !== this) {\n this.parent.scopes[this.index] = last;\n last.index = this.index;\n }\n }\n this.parent = void 0;\n this._active = false;\n }\n }\n}\nfunction effectScope(detached) {\n return new EffectScope(detached);\n}\nfunction recordEffectScope(effect, scope = activeEffectScope) {\n if (scope && scope.active) {\n scope.effects.push(effect);\n }\n}\nfunction getCurrentScope() {\n return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n if (activeEffectScope) {\n activeEffectScope.cleanups.push(fn);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `onScopeDispose() is called when there is no active effect scope to be associated with.`\n );\n }\n}\n\nlet activeEffect;\nclass ReactiveEffect {\n constructor(fn, trigger, scheduler, scope) {\n this.fn = fn;\n this.trigger = trigger;\n this.scheduler = scheduler;\n this.active = true;\n this.deps = [];\n /**\n * @internal\n */\n this._dirtyLevel = 4;\n /**\n * @internal\n */\n this._trackId = 0;\n /**\n * @internal\n */\n this._runnings = 0;\n /**\n * @internal\n */\n this._shouldSchedule = false;\n /**\n * @internal\n */\n this._depsLength = 0;\n recordEffectScope(this, scope);\n }\n get dirty() {\n if (this._dirtyLevel === 2 || this._dirtyLevel === 3) {\n this._dirtyLevel = 1;\n pauseTracking();\n for (let i = 0; i < this._depsLength; i++) {\n const dep = this.deps[i];\n if (dep.computed) {\n triggerComputed(dep.computed);\n if (this._dirtyLevel >= 4) {\n break;\n }\n }\n }\n if (this._dirtyLevel === 1) {\n this._dirtyLevel = 0;\n }\n resetTracking();\n }\n return this._dirtyLevel >= 4;\n }\n set dirty(v) {\n this._dirtyLevel = v ? 4 : 0;\n }\n run() {\n this._dirtyLevel = 0;\n if (!this.active) {\n return this.fn();\n }\n let lastShouldTrack = shouldTrack;\n let lastEffect = activeEffect;\n try {\n shouldTrack = true;\n activeEffect = this;\n this._runnings++;\n preCleanupEffect(this);\n return this.fn();\n } finally {\n postCleanupEffect(this);\n this._runnings--;\n activeEffect = lastEffect;\n shouldTrack = lastShouldTrack;\n }\n }\n stop() {\n var _a;\n if (this.active) {\n preCleanupEffect(this);\n postCleanupEffect(this);\n (_a = this.onStop) == null ? void 0 : _a.call(this);\n this.active = false;\n }\n }\n}\nfunction triggerComputed(computed) {\n return computed.value;\n}\nfunction preCleanupEffect(effect2) {\n effect2._trackId++;\n effect2._depsLength = 0;\n}\nfunction postCleanupEffect(effect2) {\n if (effect2.deps.length > effect2._depsLength) {\n for (let i = effect2._depsLength; i < effect2.deps.length; i++) {\n cleanupDepEffect(effect2.deps[i], effect2);\n }\n effect2.deps.length = effect2._depsLength;\n }\n}\nfunction cleanupDepEffect(dep, effect2) {\n const trackId = dep.get(effect2);\n if (trackId !== void 0 && effect2._trackId !== trackId) {\n dep.delete(effect2);\n if (dep.size === 0) {\n dep.cleanup();\n }\n }\n}\nfunction effect(fn, options) {\n if (fn.effect instanceof ReactiveEffect) {\n fn = fn.effect.fn;\n }\n const _effect = new ReactiveEffect(fn, NOOP, () => {\n if (_effect.dirty) {\n _effect.run();\n }\n });\n if (options) {\n extend(_effect, options);\n if (options.scope)\n recordEffectScope(_effect, options.scope);\n }\n if (!options || !options.lazy) {\n _effect.run();\n }\n const runner = _effect.run.bind(_effect);\n runner.effect = _effect;\n return runner;\n}\nfunction stop(runner) {\n runner.effect.stop();\n}\nlet shouldTrack = true;\nlet pauseScheduleStack = 0;\nconst trackStack = [];\nfunction pauseTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = false;\n}\nfunction enableTracking() {\n trackStack.push(shouldTrack);\n shouldTrack = true;\n}\nfunction resetTracking() {\n const last = trackStack.pop();\n shouldTrack = last === void 0 ? true : last;\n}\nfunction pauseScheduling() {\n pauseScheduleStack++;\n}\nfunction resetScheduling() {\n pauseScheduleStack--;\n while (!pauseScheduleStack && queueEffectSchedulers.length) {\n queueEffectSchedulers.shift()();\n }\n}\nfunction trackEffect(effect2, dep, debuggerEventExtraInfo) {\n var _a;\n if (dep.get(effect2) !== effect2._trackId) {\n dep.set(effect2, effect2._trackId);\n const oldDep = effect2.deps[effect2._depsLength];\n if (oldDep !== dep) {\n if (oldDep) {\n cleanupDepEffect(oldDep, effect2);\n }\n effect2.deps[effect2._depsLength++] = dep;\n } else {\n effect2._depsLength++;\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrack) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n }\n}\nconst queueEffectSchedulers = [];\nfunction triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {\n var _a;\n pauseScheduling();\n for (const effect2 of dep.keys()) {\n let tracking;\n if (effect2._dirtyLevel < dirtyLevel && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n effect2._shouldSchedule || (effect2._shouldSchedule = effect2._dirtyLevel === 0);\n effect2._dirtyLevel = dirtyLevel;\n }\n if (effect2._shouldSchedule && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n (_a = effect2.onTrigger) == null ? void 0 : _a.call(effect2, extend({ effect: effect2 }, debuggerEventExtraInfo));\n }\n effect2.trigger();\n if ((!effect2._runnings || effect2.allowRecurse) && effect2._dirtyLevel !== 2) {\n effect2._shouldSchedule = false;\n if (effect2.scheduler) {\n queueEffectSchedulers.push(effect2.scheduler);\n }\n }\n }\n }\n resetScheduling();\n}\n\nconst createDep = (cleanup, computed) => {\n const dep = /* @__PURE__ */ new Map();\n dep.cleanup = cleanup;\n dep.computed = computed;\n return dep;\n};\n\nconst targetMap = /* @__PURE__ */ new WeakMap();\nconst ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"iterate\" : \"\");\nconst MAP_KEY_ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== \"production\") ? \"Map key iterate\" : \"\");\nfunction track(target, type, key) {\n if (shouldTrack && activeEffect) {\n let depsMap = targetMap.get(target);\n if (!depsMap) {\n targetMap.set(target, depsMap = /* @__PURE__ */ new Map());\n }\n let dep = depsMap.get(key);\n if (!dep) {\n depsMap.set(key, dep = createDep(() => depsMap.delete(key)));\n }\n trackEffect(\n activeEffect,\n dep,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key\n } : void 0\n );\n }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n const depsMap = targetMap.get(target);\n if (!depsMap) {\n return;\n }\n let deps = [];\n if (type === \"clear\") {\n deps = [...depsMap.values()];\n } else if (key === \"length\" && isArray(target)) {\n const newLength = Number(newValue);\n depsMap.forEach((dep, key2) => {\n if (key2 === \"length\" || !isSymbol(key2) && key2 >= newLength) {\n deps.push(dep);\n }\n });\n } else {\n if (key !== void 0) {\n deps.push(depsMap.get(key));\n }\n switch (type) {\n case \"add\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n } else if (isIntegerKey(key)) {\n deps.push(depsMap.get(\"length\"));\n }\n break;\n case \"delete\":\n if (!isArray(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n if (isMap(target)) {\n deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));\n }\n }\n break;\n case \"set\":\n if (isMap(target)) {\n deps.push(depsMap.get(ITERATE_KEY));\n }\n break;\n }\n }\n pauseScheduling();\n for (const dep of deps) {\n if (dep) {\n triggerEffects(\n dep,\n 4,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target,\n type,\n key,\n newValue,\n oldValue,\n oldTarget\n } : void 0\n );\n }\n }\n resetScheduling();\n}\nfunction getDepFromReactive(object, key) {\n var _a;\n return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key);\n}\n\nconst isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nconst builtInSymbols = new Set(\n /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== \"arguments\" && key !== \"caller\").map((key) => Symbol[key]).filter(isSymbol)\n);\nconst arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations();\nfunction createArrayInstrumentations() {\n const instrumentations = {};\n [\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n const arr = toRaw(this);\n for (let i = 0, l = this.length; i < l; i++) {\n track(arr, \"get\", i + \"\");\n }\n const res = arr[key](...args);\n if (res === -1 || res === false) {\n return arr[key](...args.map(toRaw));\n } else {\n return res;\n }\n };\n });\n [\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n instrumentations[key] = function(...args) {\n pauseTracking();\n pauseScheduling();\n const res = toRaw(this)[key].apply(this, args);\n resetScheduling();\n resetTracking();\n return res;\n };\n });\n return instrumentations;\n}\nfunction hasOwnProperty(key) {\n if (!isSymbol(key))\n key = String(key);\n const obj = toRaw(this);\n track(obj, \"has\", key);\n return obj.hasOwnProperty(key);\n}\nclass BaseReactiveHandler {\n constructor(_isReadonly = false, _isShallow = false) {\n this._isReadonly = _isReadonly;\n this._isShallow = _isShallow;\n }\n get(target, key, receiver) {\n const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;\n if (key === \"__v_isReactive\") {\n return !isReadonly2;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly2;\n } else if (key === \"__v_isShallow\") {\n return isShallow2;\n } else if (key === \"__v_raw\") {\n if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype\n // this means the reciever is a user proxy of the reactive proxy\n Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {\n return target;\n }\n return;\n }\n const targetIsArray = isArray(target);\n if (!isReadonly2) {\n if (targetIsArray && hasOwn(arrayInstrumentations, key)) {\n return Reflect.get(arrayInstrumentations, key, receiver);\n }\n if (key === \"hasOwnProperty\") {\n return hasOwnProperty;\n }\n }\n const res = Reflect.get(target, key, receiver);\n if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n return res;\n }\n if (!isReadonly2) {\n track(target, \"get\", key);\n }\n if (isShallow2) {\n return res;\n }\n if (isRef(res)) {\n return targetIsArray && isIntegerKey(key) ? res : res.value;\n }\n if (isObject(res)) {\n return isReadonly2 ? readonly(res) : reactive(res);\n }\n return res;\n }\n}\nclass MutableReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(false, isShallow2);\n }\n set(target, key, value, receiver) {\n let oldValue = target[key];\n if (!this._isShallow) {\n const isOldValueReadonly = isReadonly(oldValue);\n if (!isShallow(value) && !isReadonly(value)) {\n oldValue = toRaw(oldValue);\n value = toRaw(value);\n }\n if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n if (isOldValueReadonly) {\n return false;\n } else {\n oldValue.value = value;\n return true;\n }\n }\n }\n const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n const result = Reflect.set(target, key, value, receiver);\n if (target === toRaw(receiver)) {\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n }\n return result;\n }\n deleteProperty(target, key) {\n const hadKey = hasOwn(target, key);\n const oldValue = target[key];\n const result = Reflect.deleteProperty(target, key);\n if (result && hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n }\n has(target, key) {\n const result = Reflect.has(target, key);\n if (!isSymbol(key) || !builtInSymbols.has(key)) {\n track(target, \"has\", key);\n }\n return result;\n }\n ownKeys(target) {\n track(\n target,\n \"iterate\",\n isArray(target) ? \"length\" : ITERATE_KEY\n );\n return Reflect.ownKeys(target);\n }\n}\nclass ReadonlyReactiveHandler extends BaseReactiveHandler {\n constructor(isShallow2 = false) {\n super(true, isShallow2);\n }\n set(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Set operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n deleteProperty(target, key) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(\n `Delete operation on key \"${String(key)}\" failed: target is readonly.`,\n target\n );\n }\n return true;\n }\n}\nconst mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();\nconst readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();\nconst shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(\n true\n);\nconst shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);\n\nconst toShallow = (value) => value;\nconst getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get(target, key, isReadonly = false, isShallow = false) {\n target = target[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"get\", key);\n }\n track(rawTarget, \"get\", rawKey);\n }\n const { has: has2 } = getProto(rawTarget);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n if (has2.call(rawTarget, key)) {\n return wrap(target.get(key));\n } else if (has2.call(rawTarget, rawKey)) {\n return wrap(target.get(rawKey));\n } else if (target !== rawTarget) {\n target.get(key);\n }\n}\nfunction has(key, isReadonly = false) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const rawKey = toRaw(key);\n if (!isReadonly) {\n if (hasChanged(key, rawKey)) {\n track(rawTarget, \"has\", key);\n }\n track(rawTarget, \"has\", rawKey);\n }\n return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n target = target[\"__v_raw\"];\n !isReadonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n return Reflect.get(target, \"size\", target);\n}\nfunction add(value) {\n value = toRaw(value);\n const target = toRaw(this);\n const proto = getProto(target);\n const hadKey = proto.has.call(target, value);\n if (!hadKey) {\n target.add(value);\n trigger(target, \"add\", value, value);\n }\n return this;\n}\nfunction set(key, value) {\n value = toRaw(value);\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2.call(target, key);\n target.set(key, value);\n if (!hadKey) {\n trigger(target, \"add\", key, value);\n } else if (hasChanged(value, oldValue)) {\n trigger(target, \"set\", key, value, oldValue);\n }\n return this;\n}\nfunction deleteEntry(key) {\n const target = toRaw(this);\n const { has: has2, get: get2 } = getProto(target);\n let hadKey = has2.call(target, key);\n if (!hadKey) {\n key = toRaw(key);\n hadKey = has2.call(target, key);\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n checkIdentityKeys(target, has2, key);\n }\n const oldValue = get2 ? get2.call(target, key) : void 0;\n const result = target.delete(key);\n if (hadKey) {\n trigger(target, \"delete\", key, void 0, oldValue);\n }\n return result;\n}\nfunction clear() {\n const target = toRaw(this);\n const hadItems = target.size !== 0;\n const oldTarget = !!(process.env.NODE_ENV !== \"production\") ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n const result = target.clear();\n if (hadItems) {\n trigger(target, \"clear\", void 0, void 0, oldTarget);\n }\n return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n return function forEach(callback, thisArg) {\n const observed = this;\n const target = observed[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n return target.forEach((value, key) => {\n return callback.call(thisArg, wrap(value), wrap(key), observed);\n });\n };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n return function(...args) {\n const target = this[\"__v_raw\"];\n const rawTarget = toRaw(target);\n const targetIsMap = isMap(rawTarget);\n const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n const isKeyOnly = method === \"keys\" && targetIsMap;\n const innerIterator = target[method](...args);\n const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n !isReadonly && track(\n rawTarget,\n \"iterate\",\n isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY\n );\n return {\n // iterator protocol\n next() {\n const { value, done } = innerIterator.next();\n return done ? { value, done } : {\n value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n done\n };\n },\n // iterable protocol\n [Symbol.iterator]() {\n return this;\n }\n };\n };\n}\nfunction createReadonlyMethod(type) {\n return function(...args) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n warn(\n `${capitalize(type)} operation ${key}failed: target is readonly.`,\n toRaw(this)\n );\n }\n return type === \"delete\" ? false : type === \"clear\" ? void 0 : this;\n };\n}\nfunction createInstrumentations() {\n const mutableInstrumentations2 = {\n get(key) {\n return get(this, key);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, false)\n };\n const shallowInstrumentations2 = {\n get(key) {\n return get(this, key, false, true);\n },\n get size() {\n return size(this);\n },\n has,\n add,\n set,\n delete: deleteEntry,\n clear,\n forEach: createForEach(false, true)\n };\n const readonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, false)\n };\n const shallowReadonlyInstrumentations2 = {\n get(key) {\n return get(this, key, true, true);\n },\n get size() {\n return size(this, true);\n },\n has(key) {\n return has.call(this, key, true);\n },\n add: createReadonlyMethod(\"add\"),\n set: createReadonlyMethod(\"set\"),\n delete: createReadonlyMethod(\"delete\"),\n clear: createReadonlyMethod(\"clear\"),\n forEach: createForEach(true, true)\n };\n const iteratorMethods = [\n \"keys\",\n \"values\",\n \"entries\",\n Symbol.iterator\n ];\n iteratorMethods.forEach((method) => {\n mutableInstrumentations2[method] = createIterableMethod(method, false, false);\n readonlyInstrumentations2[method] = createIterableMethod(method, true, false);\n shallowInstrumentations2[method] = createIterableMethod(method, false, true);\n shallowReadonlyInstrumentations2[method] = createIterableMethod(\n method,\n true,\n true\n );\n });\n return [\n mutableInstrumentations2,\n readonlyInstrumentations2,\n shallowInstrumentations2,\n shallowReadonlyInstrumentations2\n ];\n}\nconst [\n mutableInstrumentations,\n readonlyInstrumentations,\n shallowInstrumentations,\n shallowReadonlyInstrumentations\n] = /* @__PURE__ */ createInstrumentations();\nfunction createInstrumentationGetter(isReadonly, shallow) {\n const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;\n return (target, key, receiver) => {\n if (key === \"__v_isReactive\") {\n return !isReadonly;\n } else if (key === \"__v_isReadonly\") {\n return isReadonly;\n } else if (key === \"__v_raw\") {\n return target;\n }\n return Reflect.get(\n hasOwn(instrumentations, key) && key in target ? instrumentations : target,\n key,\n receiver\n );\n };\n}\nconst mutableCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, false)\n};\nconst shallowCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(false, true)\n};\nconst readonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, false)\n};\nconst shallowReadonlyCollectionHandlers = {\n get: /* @__PURE__ */ createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has2, key) {\n const rawKey = toRaw(key);\n if (rawKey !== key && has2.call(target, rawKey)) {\n const type = toRawType(target);\n warn(\n `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`\n );\n }\n}\n\nconst reactiveMap = /* @__PURE__ */ new WeakMap();\nconst shallowReactiveMap = /* @__PURE__ */ new WeakMap();\nconst readonlyMap = /* @__PURE__ */ new WeakMap();\nconst shallowReadonlyMap = /* @__PURE__ */ new WeakMap();\nfunction targetTypeMap(rawType) {\n switch (rawType) {\n case \"Object\":\n case \"Array\":\n return 1 /* COMMON */;\n case \"Map\":\n case \"Set\":\n case \"WeakMap\":\n case \"WeakSet\":\n return 2 /* COLLECTION */;\n default:\n return 0 /* INVALID */;\n }\n}\nfunction getTargetType(value) {\n return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value));\n}\nfunction reactive(target) {\n if (isReadonly(target)) {\n return target;\n }\n return createReactiveObject(\n target,\n false,\n mutableHandlers,\n mutableCollectionHandlers,\n reactiveMap\n );\n}\nfunction shallowReactive(target) {\n return createReactiveObject(\n target,\n false,\n shallowReactiveHandlers,\n shallowCollectionHandlers,\n shallowReactiveMap\n );\n}\nfunction readonly(target) {\n return createReactiveObject(\n target,\n true,\n readonlyHandlers,\n readonlyCollectionHandlers,\n readonlyMap\n );\n}\nfunction shallowReadonly(target) {\n return createReactiveObject(\n target,\n true,\n shallowReadonlyHandlers,\n shallowReadonlyCollectionHandlers,\n shallowReadonlyMap\n );\n}\nfunction createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {\n if (!isObject(target)) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn(`value cannot be made reactive: ${String(target)}`);\n }\n return target;\n }\n if (target[\"__v_raw\"] && !(isReadonly2 && target[\"__v_isReactive\"])) {\n return target;\n }\n const existingProxy = proxyMap.get(target);\n if (existingProxy) {\n return existingProxy;\n }\n const targetType = getTargetType(target);\n if (targetType === 0 /* INVALID */) {\n return target;\n }\n const proxy = new Proxy(\n target,\n targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers\n );\n proxyMap.set(target, proxy);\n return proxy;\n}\nfunction isReactive(value) {\n if (isReadonly(value)) {\n return isReactive(value[\"__v_raw\"]);\n }\n return !!(value && value[\"__v_isReactive\"]);\n}\nfunction isReadonly(value) {\n return !!(value && value[\"__v_isReadonly\"]);\n}\nfunction isShallow(value) {\n return !!(value && value[\"__v_isShallow\"]);\n}\nfunction isProxy(value) {\n return value ? !!value[\"__v_raw\"] : false;\n}\nfunction toRaw(observed) {\n const raw = observed && observed[\"__v_raw\"];\n return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n if (Object.isExtensible(value)) {\n def(value, \"__v_skip\", true);\n }\n return value;\n}\nconst toReactive = (value) => isObject(value) ? reactive(value) : value;\nconst toReadonly = (value) => isObject(value) ? readonly(value) : value;\n\nconst COMPUTED_SIDE_EFFECT_WARN = `Computed is still dirty after getter evaluation, likely because a computed is mutating its own dependency in its getter. State mutations in computed getters should be avoided. Check the docs for more details: https://vuejs.org/guide/essentials/computed.html#getters-should-be-side-effect-free`;\nclass ComputedRefImpl {\n constructor(getter, _setter, isReadonly, isSSR) {\n this.getter = getter;\n this._setter = _setter;\n this.dep = void 0;\n this.__v_isRef = true;\n this[\"__v_isReadonly\"] = false;\n this.effect = new ReactiveEffect(\n () => getter(this._value),\n () => triggerRefValue(\n this,\n this.effect._dirtyLevel === 2 ? 2 : 3\n )\n );\n this.effect.computed = this;\n this.effect.active = this._cacheable = !isSSR;\n this[\"__v_isReadonly\"] = isReadonly;\n }\n get value() {\n const self = toRaw(this);\n if ((!self._cacheable || self.effect.dirty) && hasChanged(self._value, self._value = self.effect.run())) {\n triggerRefValue(self, 4);\n }\n trackRefValue(self);\n if (self.effect._dirtyLevel >= 2) {\n if (!!(process.env.NODE_ENV !== \"production\") && this._warnRecursive) {\n warn(COMPUTED_SIDE_EFFECT_WARN, `\n\ngetter: `, this.getter);\n }\n triggerRefValue(self, 2);\n }\n return self._value;\n }\n set value(newValue) {\n this._setter(newValue);\n }\n // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x\n get _dirty() {\n return this.effect.dirty;\n }\n set _dirty(v) {\n this.effect.dirty = v;\n }\n // #endregion\n}\nfunction computed(getterOrOptions, debugOptions, isSSR = false) {\n let getter;\n let setter;\n const onlyGetter = isFunction(getterOrOptions);\n if (onlyGetter) {\n getter = getterOrOptions;\n setter = !!(process.env.NODE_ENV !== \"production\") ? () => {\n warn(\"Write operation failed: computed value is readonly\");\n } : NOOP;\n } else {\n getter = getterOrOptions.get;\n setter = getterOrOptions.set;\n }\n const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);\n if (!!(process.env.NODE_ENV !== \"production\") && debugOptions && !isSSR) {\n cRef.effect.onTrack = debugOptions.onTrack;\n cRef.effect.onTrigger = debugOptions.onTrigger;\n }\n return cRef;\n}\n\nfunction trackRefValue(ref2) {\n var _a;\n if (shouldTrack && activeEffect) {\n ref2 = toRaw(ref2);\n trackEffect(\n activeEffect,\n (_a = ref2.dep) != null ? _a : ref2.dep = createDep(\n () => ref2.dep = void 0,\n ref2 instanceof ComputedRefImpl ? ref2 : void 0\n ),\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"get\",\n key: \"value\"\n } : void 0\n );\n }\n}\nfunction triggerRefValue(ref2, dirtyLevel = 4, newVal) {\n ref2 = toRaw(ref2);\n const dep = ref2.dep;\n if (dep) {\n triggerEffects(\n dep,\n dirtyLevel,\n !!(process.env.NODE_ENV !== \"production\") ? {\n target: ref2,\n type: \"set\",\n key: \"value\",\n newValue: newVal\n } : void 0\n );\n }\n}\nfunction isRef(r) {\n return !!(r && r.__v_isRef === true);\n}\nfunction ref(value) {\n return createRef(value, false);\n}\nfunction shallowRef(value) {\n return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n if (isRef(rawValue)) {\n return rawValue;\n }\n return new RefImpl(rawValue, shallow);\n}\nclass RefImpl {\n constructor(value, __v_isShallow) {\n this.__v_isShallow = __v_isShallow;\n this.dep = void 0;\n this.__v_isRef = true;\n this._rawValue = __v_isShallow ? value : toRaw(value);\n this._value = __v_isShallow ? value : toReactive(value);\n }\n get value() {\n trackRefValue(this);\n return this._value;\n }\n set value(newVal) {\n const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);\n newVal = useDirectValue ? newVal : toRaw(newVal);\n if (hasChanged(newVal, this._rawValue)) {\n this._rawValue = newVal;\n this._value = useDirectValue ? newVal : toReactive(newVal);\n triggerRefValue(this, 4, newVal);\n }\n }\n}\nfunction triggerRef(ref2) {\n triggerRefValue(ref2, 4, !!(process.env.NODE_ENV !== \"production\") ? ref2.value : void 0);\n}\nfunction unref(ref2) {\n return isRef(ref2) ? ref2.value : ref2;\n}\nfunction toValue(source) {\n return isFunction(source) ? source() : unref(source);\n}\nconst shallowUnwrapHandlers = {\n get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),\n set: (target, key, value, receiver) => {\n const oldValue = target[key];\n if (isRef(oldValue) && !isRef(value)) {\n oldValue.value = value;\n return true;\n } else {\n return Reflect.set(target, key, value, receiver);\n }\n }\n};\nfunction proxyRefs(objectWithRefs) {\n return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);\n}\nclass CustomRefImpl {\n constructor(factory) {\n this.dep = void 0;\n this.__v_isRef = true;\n const { get, set } = factory(\n () => trackRefValue(this),\n () => triggerRefValue(this)\n );\n this._get = get;\n this._set = set;\n }\n get value() {\n return this._get();\n }\n set value(newVal) {\n this._set(newVal);\n }\n}\nfunction customRef(factory) {\n return new CustomRefImpl(factory);\n}\nfunction toRefs(object) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isProxy(object)) {\n warn(`toRefs() expects a reactive object but received a plain one.`);\n }\n const ret = isArray(object) ? new Array(object.length) : {};\n for (const key in object) {\n ret[key] = propertyToRef(object, key);\n }\n return ret;\n}\nclass ObjectRefImpl {\n constructor(_object, _key, _defaultValue) {\n this._object = _object;\n this._key = _key;\n this._defaultValue = _defaultValue;\n this.__v_isRef = true;\n }\n get value() {\n const val = this._object[this._key];\n return val === void 0 ? this._defaultValue : val;\n }\n set value(newVal) {\n this._object[this._key] = newVal;\n }\n get dep() {\n return getDepFromReactive(toRaw(this._object), this._key);\n }\n}\nclass GetterRefImpl {\n constructor(_getter) {\n this._getter = _getter;\n this.__v_isRef = true;\n this.__v_isReadonly = true;\n }\n get value() {\n return this._getter();\n }\n}\nfunction toRef(source, key, defaultValue) {\n if (isRef(source)) {\n return source;\n } else if (isFunction(source)) {\n return new GetterRefImpl(source);\n } else if (isObject(source) && arguments.length > 1) {\n return propertyToRef(source, key, defaultValue);\n } else {\n return ref(source);\n }\n}\nfunction propertyToRef(source, key, defaultValue) {\n const val = source[key];\n return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);\n}\n\nconst deferredComputed = computed;\n\nconst TrackOpTypes = {\n \"GET\": \"get\",\n \"HAS\": \"has\",\n \"ITERATE\": \"iterate\"\n};\nconst TriggerOpTypes = {\n \"SET\": \"set\",\n \"ADD\": \"add\",\n \"DELETE\": \"delete\",\n \"CLEAR\": \"clear\"\n};\nconst ReactiveFlags = {\n \"SKIP\": \"__v_skip\",\n \"IS_REACTIVE\": \"__v_isReactive\",\n \"IS_READONLY\": \"__v_isReadonly\",\n \"IS_SHALLOW\": \"__v_isShallow\",\n \"RAW\": \"__v_raw\"\n};\n\nexport { EffectScope, ITERATE_KEY, ReactiveEffect, ReactiveFlags, TrackOpTypes, TriggerOpTypes, computed, customRef, deferredComputed, effect, effectScope, enableTracking, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, pauseScheduling, pauseTracking, proxyRefs, reactive, readonly, ref, resetScheduling, resetTracking, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, track, trigger, triggerRef, unref };\n","/**\n* @vue/runtime-core v3.4.23\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/\nimport { pauseTracking, resetTracking, isRef, toRaw, isShallow, isReactive, ReactiveEffect, getCurrentScope, ref, shallowReadonly, track, reactive, shallowReactive, trigger, isProxy, proxyRefs, markRaw, EffectScope, computed as computed$1, customRef, isReadonly } from '@vue/reactivity';\nexport { EffectScope, ReactiveEffect, TrackOpTypes, TriggerOpTypes, customRef, effect, effectScope, getCurrentScope, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, onScopeDispose, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, stop, toRaw, toRef, toRefs, toValue, triggerRef, unref } from '@vue/reactivity';\nimport { isString, isFunction, isPromise, isArray, NOOP, getGlobalThis, extend, EMPTY_OBJ, toHandlerKey, looseToNumber, hyphenate, camelize, isObject, isOn, hasOwn, isModelListener, capitalize, toNumber, hasChanged, remove, isSet, isMap, isPlainObject, isBuiltInDirective, invokeArrayFns, isRegExp, isGloballyAllowed, NO, isReservedProp, EMPTY_ARR, toRawType, makeMap, def, normalizeClass, stringifyStyle, normalizeStyle, isKnownSvgAttr, isBooleanAttr, isKnownHtmlAttr, includeBooleanAttr, isRenderableAttrValue } from '@vue/shared';\nexport { camelize, capitalize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';\n\nconst stack = [];\nfunction pushWarningContext(vnode) {\n stack.push(vnode);\n}\nfunction popWarningContext() {\n stack.pop();\n}\nfunction warn$1(msg, ...args) {\n pauseTracking();\n const instance = stack.length ? stack[stack.length - 1].component : null;\n const appWarnHandler = instance && instance.appContext.config.warnHandler;\n const trace = getComponentTrace();\n if (appWarnHandler) {\n callWithErrorHandling(\n appWarnHandler,\n instance,\n 11,\n [\n msg + args.map((a) => {\n var _a, _b;\n return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);\n }).join(\"\"),\n instance && instance.proxy,\n trace.map(\n ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`\n ).join(\"\\n\"),\n trace\n ]\n );\n } else {\n const warnArgs = [`[Vue warn]: ${msg}`, ...args];\n if (trace.length && // avoid spamming console during tests\n true) {\n warnArgs.push(`\n`, ...formatTrace(trace));\n }\n console.warn(...warnArgs);\n }\n resetTracking();\n}\nfunction getComponentTrace() {\n let currentVNode = stack[stack.length - 1];\n if (!currentVNode) {\n return [];\n }\n const normalizedStack = [];\n while (currentVNode) {\n const last = normalizedStack[0];\n if (last && last.vnode === currentVNode) {\n last.recurseCount++;\n } else {\n normalizedStack.push({\n vnode: currentVNode,\n recurseCount: 0\n });\n }\n const parentInstance = currentVNode.component && currentVNode.component.parent;\n currentVNode = parentInstance && parentInstance.vnode;\n }\n return normalizedStack;\n}\nfunction formatTrace(trace) {\n const logs = [];\n trace.forEach((entry, i) => {\n logs.push(...i === 0 ? [] : [`\n`], ...formatTraceEntry(entry));\n });\n return logs;\n}\nfunction formatTraceEntry({ vnode, recurseCount }) {\n const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;\n const isRoot = vnode.component ? vnode.component.parent == null : false;\n const open = ` at <${formatComponentName(\n vnode.component,\n vnode.type,\n isRoot\n )}`;\n const close = `>` + postfix;\n return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];\n}\nfunction formatProps(props) {\n const res = [];\n const keys = Object.keys(props);\n keys.slice(0, 3).forEach((key) => {\n res.push(...formatProp(key, props[key]));\n });\n if (keys.length > 3) {\n res.push(` ...`);\n }\n return res;\n}\nfunction formatProp(key, value, raw) {\n if (isString(value)) {\n value = JSON.stringify(value);\n return raw ? value : [`${key}=${value}`];\n } else if (typeof value === \"number\" || typeof value === \"boolean\" || value == null) {\n return raw ? value : [`${key}=${value}`];\n } else if (isRef(value)) {\n value = formatProp(key, toRaw(value.value), true);\n return raw ? value : [`${key}=Ref<`, value, `>`];\n } else if (isFunction(value)) {\n return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];\n } else {\n value = toRaw(value);\n return raw ? value : [`${key}=`, value];\n }\n}\nfunction assertNumber(val, type) {\n if (!!!(process.env.NODE_ENV !== \"production\"))\n return;\n if (val === void 0) {\n return;\n } else if (typeof val !== \"number\") {\n warn$1(`${type} is not a valid number - got ${JSON.stringify(val)}.`);\n } else if (isNaN(val)) {\n warn$1(`${type} is NaN - the duration expression might be incorrect.`);\n }\n}\n\nconst ErrorCodes = {\n \"SETUP_FUNCTION\": 0,\n \"0\": \"SETUP_FUNCTION\",\n \"RENDER_FUNCTION\": 1,\n \"1\": \"RENDER_FUNCTION\",\n \"WATCH_GETTER\": 2,\n \"2\": \"WATCH_GETTER\",\n \"WATCH_CALLBACK\": 3,\n \"3\": \"WATCH_CALLBACK\",\n \"WATCH_CLEANUP\": 4,\n \"4\": \"WATCH_CLEANUP\",\n \"NATIVE_EVENT_HANDLER\": 5,\n \"5\": \"NATIVE_EVENT_HANDLER\",\n \"COMPONENT_EVENT_HANDLER\": 6,\n \"6\": \"COMPONENT_EVENT_HANDLER\",\n \"VNODE_HOOK\": 7,\n \"7\": \"VNODE_HOOK\",\n \"DIRECTIVE_HOOK\": 8,\n \"8\": \"DIRECTIVE_HOOK\",\n \"TRANSITION_HOOK\": 9,\n \"9\": \"TRANSITION_HOOK\",\n \"APP_ERROR_HANDLER\": 10,\n \"10\": \"APP_ERROR_HANDLER\",\n \"APP_WARN_HANDLER\": 11,\n \"11\": \"APP_WARN_HANDLER\",\n \"FUNCTION_REF\": 12,\n \"12\": \"FUNCTION_REF\",\n \"ASYNC_COMPONENT_LOADER\": 13,\n \"13\": \"ASYNC_COMPONENT_LOADER\",\n \"SCHEDULER\": 14,\n \"14\": \"SCHEDULER\"\n};\nconst ErrorTypeStrings$1 = {\n [\"sp\"]: \"serverPrefetch hook\",\n [\"bc\"]: \"beforeCreate hook\",\n [\"c\"]: \"created hook\",\n [\"bm\"]: \"beforeMount hook\",\n [\"m\"]: \"mounted hook\",\n [\"bu\"]: \"beforeUpdate hook\",\n [\"u\"]: \"updated\",\n [\"bum\"]: \"beforeUnmount hook\",\n [\"um\"]: \"unmounted hook\",\n [\"a\"]: \"activated hook\",\n [\"da\"]: \"deactivated hook\",\n [\"ec\"]: \"errorCaptured hook\",\n [\"rtc\"]: \"renderTracked hook\",\n [\"rtg\"]: \"renderTriggered hook\",\n [0]: \"setup function\",\n [1]: \"render function\",\n [2]: \"watcher getter\",\n [3]: \"watcher callback\",\n [4]: \"watcher cleanup function\",\n [5]: \"native event handler\",\n [6]: \"component event handler\",\n [7]: \"vnode hook\",\n [8]: \"directive hook\",\n [9]: \"transition hook\",\n [10]: \"app errorHandler\",\n [11]: \"app warnHandler\",\n [12]: \"ref function\",\n [13]: \"async component loader\",\n [14]: \"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core .\"\n};\nfunction callWithErrorHandling(fn, instance, type, args) {\n try {\n return args ? fn(...args) : fn();\n } catch (err) {\n handleError(err, instance, type);\n }\n}\nfunction callWithAsyncErrorHandling(fn, instance, type, args) {\n if (isFunction(fn)) {\n const res = callWithErrorHandling(fn, instance, type, args);\n if (res && isPromise(res)) {\n res.catch((err) => {\n handleError(err, instance, type);\n });\n }\n return res;\n }\n if (isArray(fn)) {\n const values = [];\n for (let i = 0; i < fn.length; i++) {\n values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));\n }\n return values;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `Invalid value type passed to callWithAsyncErrorHandling(): ${typeof fn}`\n );\n }\n}\nfunction handleError(err, instance, type, throwInDev = true) {\n const contextVNode = instance ? instance.vnode : null;\n if (instance) {\n let cur = instance.parent;\n const exposedInstance = instance.proxy;\n const errorInfo = !!(process.env.NODE_ENV !== \"production\") ? ErrorTypeStrings$1[type] : `https://vuejs.org/error-reference/#runtime-${type}`;\n while (cur) {\n const errorCapturedHooks = cur.ec;\n if (errorCapturedHooks) {\n for (let i = 0; i < errorCapturedHooks.length; i++) {\n if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {\n return;\n }\n }\n }\n cur = cur.parent;\n }\n const appErrorHandler = instance.appContext.config.errorHandler;\n if (appErrorHandler) {\n pauseTracking();\n callWithErrorHandling(\n appErrorHandler,\n null,\n 10,\n [err, exposedInstance, errorInfo]\n );\n resetTracking();\n return;\n }\n }\n logError(err, type, contextVNode, throwInDev);\n}\nfunction logError(err, type, contextVNode, throwInDev = true) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const info = ErrorTypeStrings$1[type];\n if (contextVNode) {\n pushWarningContext(contextVNode);\n }\n warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);\n if (contextVNode) {\n popWarningContext();\n }\n if (throwInDev) {\n throw err;\n } else {\n console.error(err);\n }\n } else {\n console.error(err);\n }\n}\n\nlet isFlushing = false;\nlet isFlushPending = false;\nconst queue = [];\nlet flushIndex = 0;\nconst pendingPostFlushCbs = [];\nlet activePostFlushCbs = null;\nlet postFlushIndex = 0;\nconst resolvedPromise = /* @__PURE__ */ Promise.resolve();\nlet currentFlushPromise = null;\nconst RECURSION_LIMIT = 100;\nfunction nextTick(fn) {\n const p = currentFlushPromise || resolvedPromise;\n return fn ? p.then(this ? fn.bind(this) : fn) : p;\n}\nfunction findInsertionIndex(id) {\n let start = flushIndex + 1;\n let end = queue.length;\n while (start < end) {\n const middle = start + end >>> 1;\n const middleJob = queue[middle];\n const middleJobId = getId(middleJob);\n if (middleJobId < id || middleJobId === id && middleJob.pre) {\n start = middle + 1;\n } else {\n end = middle;\n }\n }\n return start;\n}\nfunction queueJob(job) {\n if (!queue.length || !queue.includes(\n job,\n isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex\n )) {\n if (job.id == null) {\n queue.push(job);\n } else {\n queue.splice(findInsertionIndex(job.id), 0, job);\n }\n queueFlush();\n }\n}\nfunction queueFlush() {\n if (!isFlushing && !isFlushPending) {\n isFlushPending = true;\n currentFlushPromise = resolvedPromise.then(flushJobs);\n }\n}\nfunction invalidateJob(job) {\n const i = queue.indexOf(job);\n if (i > flushIndex) {\n queue.splice(i, 1);\n }\n}\nfunction queuePostFlushCb(cb) {\n if (!isArray(cb)) {\n if (!activePostFlushCbs || !activePostFlushCbs.includes(\n cb,\n cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex\n )) {\n pendingPostFlushCbs.push(cb);\n }\n } else {\n pendingPostFlushCbs.push(...cb);\n }\n queueFlush();\n}\nfunction flushPreFlushCbs(instance, seen, i = isFlushing ? flushIndex + 1 : 0) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (; i < queue.length; i++) {\n const cb = queue[i];\n if (cb && cb.pre) {\n if (instance && cb.id !== instance.uid) {\n continue;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, cb)) {\n continue;\n }\n queue.splice(i, 1);\n i--;\n cb();\n }\n }\n}\nfunction flushPostFlushCbs(seen) {\n if (pendingPostFlushCbs.length) {\n const deduped = [...new Set(pendingPostFlushCbs)].sort(\n (a, b) => getId(a) - getId(b)\n );\n pendingPostFlushCbs.length = 0;\n if (activePostFlushCbs) {\n activePostFlushCbs.push(...deduped);\n return;\n }\n activePostFlushCbs = deduped;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {\n if (!!(process.env.NODE_ENV !== \"production\") && checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {\n continue;\n }\n activePostFlushCbs[postFlushIndex]();\n }\n activePostFlushCbs = null;\n postFlushIndex = 0;\n }\n}\nconst getId = (job) => job.id == null ? Infinity : job.id;\nconst comparator = (a, b) => {\n const diff = getId(a) - getId(b);\n if (diff === 0) {\n if (a.pre && !b.pre)\n return -1;\n if (b.pre && !a.pre)\n return 1;\n }\n return diff;\n};\nfunction flushJobs(seen) {\n isFlushPending = false;\n isFlushing = true;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n seen = seen || /* @__PURE__ */ new Map();\n }\n queue.sort(comparator);\n const check = !!(process.env.NODE_ENV !== \"production\") ? (job) => checkRecursiveUpdates(seen, job) : NOOP;\n try {\n for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {\n const job = queue[flushIndex];\n if (job && job.active !== false) {\n if (!!(process.env.NODE_ENV !== \"production\") && check(job)) {\n continue;\n }\n callWithErrorHandling(job, null, 14);\n }\n }\n } finally {\n flushIndex = 0;\n queue.length = 0;\n flushPostFlushCbs(seen);\n isFlushing = false;\n currentFlushPromise = null;\n if (queue.length || pendingPostFlushCbs.length) {\n flushJobs(seen);\n }\n }\n}\nfunction checkRecursiveUpdates(seen, fn) {\n if (!seen.has(fn)) {\n seen.set(fn, 1);\n } else {\n const count = seen.get(fn);\n if (count > RECURSION_LIMIT) {\n const instance = fn.ownerInstance;\n const componentName = instance && getComponentName(instance.type);\n handleError(\n `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,\n null,\n 10\n );\n return true;\n } else {\n seen.set(fn, count + 1);\n }\n }\n}\n\nlet isHmrUpdating = false;\nconst hmrDirtyComponents = /* @__PURE__ */ new Set();\nif (!!(process.env.NODE_ENV !== \"production\")) {\n getGlobalThis().__VUE_HMR_RUNTIME__ = {\n createRecord: tryWrap(createRecord),\n rerender: tryWrap(rerender),\n reload: tryWrap(reload)\n };\n}\nconst map = /* @__PURE__ */ new Map();\nfunction registerHMR(instance) {\n const id = instance.type.__hmrId;\n let record = map.get(id);\n if (!record) {\n createRecord(id, instance.type);\n record = map.get(id);\n }\n record.instances.add(instance);\n}\nfunction unregisterHMR(instance) {\n map.get(instance.type.__hmrId).instances.delete(instance);\n}\nfunction createRecord(id, initialDef) {\n if (map.has(id)) {\n return false;\n }\n map.set(id, {\n initialDef: normalizeClassComponent(initialDef),\n instances: /* @__PURE__ */ new Set()\n });\n return true;\n}\nfunction normalizeClassComponent(component) {\n return isClassComponent(component) ? component.__vccOpts : component;\n}\nfunction rerender(id, newRender) {\n const record = map.get(id);\n if (!record) {\n return;\n }\n record.initialDef.render = newRender;\n [...record.instances].forEach((instance) => {\n if (newRender) {\n instance.render = newRender;\n normalizeClassComponent(instance.type).render = newRender;\n }\n instance.renderCache = [];\n isHmrUpdating = true;\n instance.effect.dirty = true;\n instance.update();\n isHmrUpdating = false;\n });\n}\nfunction reload(id, newComp) {\n const record = map.get(id);\n if (!record)\n return;\n newComp = normalizeClassComponent(newComp);\n updateComponentDef(record.initialDef, newComp);\n const instances = [...record.instances];\n for (const instance of instances) {\n const oldComp = normalizeClassComponent(instance.type);\n if (!hmrDirtyComponents.has(oldComp)) {\n if (oldComp !== record.initialDef) {\n updateComponentDef(oldComp, newComp);\n }\n hmrDirtyComponents.add(oldComp);\n }\n instance.appContext.propsCache.delete(instance.type);\n instance.appContext.emitsCache.delete(instance.type);\n instance.appContext.optionsCache.delete(instance.type);\n if (instance.ceReload) {\n hmrDirtyComponents.add(oldComp);\n instance.ceReload(newComp.styles);\n hmrDirtyComponents.delete(oldComp);\n } else if (instance.parent) {\n instance.parent.effect.dirty = true;\n queueJob(instance.parent.update);\n } else if (instance.appContext.reload) {\n instance.appContext.reload();\n } else if (typeof window !== \"undefined\") {\n window.location.reload();\n } else {\n console.warn(\n \"[HMR] Root or manually mounted instance modified. Full reload required.\"\n );\n }\n }\n queuePostFlushCb(() => {\n for (const instance of instances) {\n hmrDirtyComponents.delete(\n normalizeClassComponent(instance.type)\n );\n }\n });\n}\nfunction updateComponentDef(oldComp, newComp) {\n extend(oldComp, newComp);\n for (const key in oldComp) {\n if (key !== \"__file\" && !(key in newComp)) {\n delete oldComp[key];\n }\n }\n}\nfunction tryWrap(fn) {\n return (id, arg) => {\n try {\n return fn(id, arg);\n } catch (e) {\n console.error(e);\n console.warn(\n `[HMR] Something went wrong during Vue component hot-reload. Full reload required.`\n );\n }\n };\n}\n\nlet devtools$1;\nlet buffer = [];\nlet devtoolsNotInstalled = false;\nfunction emit$1(event, ...args) {\n if (devtools$1) {\n devtools$1.emit(event, ...args);\n } else if (!devtoolsNotInstalled) {\n buffer.push({ event, args });\n }\n}\nfunction setDevtoolsHook$1(hook, target) {\n var _a, _b;\n devtools$1 = hook;\n if (devtools$1) {\n devtools$1.enabled = true;\n buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));\n buffer = [];\n } else if (\n // handle late devtools injection - only do this if we are in an actual\n // browser environment to avoid the timer handle stalling test runner exit\n // (#4815)\n typeof window !== \"undefined\" && // some envs mock window but not fully\n window.HTMLElement && // also exclude jsdom\n !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes(\"jsdom\"))\n ) {\n const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];\n replay.push((newHook) => {\n setDevtoolsHook$1(newHook, target);\n });\n setTimeout(() => {\n if (!devtools$1) {\n target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;\n devtoolsNotInstalled = true;\n buffer = [];\n }\n }, 3e3);\n } else {\n devtoolsNotInstalled = true;\n buffer = [];\n }\n}\nfunction devtoolsInitApp(app, version) {\n emit$1(\"app:init\" /* APP_INIT */, app, version, {\n Fragment,\n Text,\n Comment,\n Static\n });\n}\nfunction devtoolsUnmountApp(app) {\n emit$1(\"app:unmount\" /* APP_UNMOUNT */, app);\n}\nconst devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:added\" /* COMPONENT_ADDED */\n);\nconst devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook(\"component:updated\" /* COMPONENT_UPDATED */);\nconst _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook(\n \"component:removed\" /* COMPONENT_REMOVED */\n);\nconst devtoolsComponentRemoved = (component) => {\n if (devtools$1 && typeof devtools$1.cleanupBuffer === \"function\" && // remove the component if it wasn't buffered\n !devtools$1.cleanupBuffer(component)) {\n _devtoolsComponentRemoved(component);\n }\n};\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction createDevtoolsComponentHook(hook) {\n return (component) => {\n emit$1(\n hook,\n component.appContext.app,\n component.uid,\n component.parent ? component.parent.uid : void 0,\n component\n );\n };\n}\nconst devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:start\" /* PERFORMANCE_START */\n);\nconst devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook(\n \"perf:end\" /* PERFORMANCE_END */\n);\nfunction createDevtoolsPerformanceHook(hook) {\n return (component, type, time) => {\n emit$1(hook, component.appContext.app, component.uid, component, type, time);\n };\n}\nfunction devtoolsComponentEmit(component, event, params) {\n emit$1(\n \"component:emit\" /* COMPONENT_EMIT */,\n component.appContext.app,\n component,\n event,\n params\n );\n}\n\nfunction emit(instance, event, ...rawArgs) {\n if (instance.isUnmounted)\n return;\n const props = instance.vnode.props || EMPTY_OBJ;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const {\n emitsOptions,\n propsOptions: [propsOptions]\n } = instance;\n if (emitsOptions) {\n if (!(event in emitsOptions) && true) {\n if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {\n warn$1(\n `Component emitted event \"${event}\" but it is neither declared in the emits option nor as an \"${toHandlerKey(event)}\" prop.`\n );\n }\n } else {\n const validator = emitsOptions[event];\n if (isFunction(validator)) {\n const isValid = validator(...rawArgs);\n if (!isValid) {\n warn$1(\n `Invalid event arguments: event validation failed for event \"${event}\".`\n );\n }\n }\n }\n }\n }\n let args = rawArgs;\n const isModelListener = event.startsWith(\"update:\");\n const modelArg = isModelListener && event.slice(7);\n if (modelArg && modelArg in props) {\n const modifiersKey = `${modelArg === \"modelValue\" ? \"model\" : modelArg}Modifiers`;\n const { number, trim } = props[modifiersKey] || EMPTY_OBJ;\n if (trim) {\n args = rawArgs.map((a) => isString(a) ? a.trim() : a);\n }\n if (number) {\n args = rawArgs.map(looseToNumber);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentEmit(instance, event, args);\n }\n if (!!(process.env.NODE_ENV !== \"production\")) {\n const lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {\n warn$1(\n `Event \"${lowerCaseEvent}\" is emitted in component ${formatComponentName(\n instance,\n instance.type\n )} but the handler is registered for \"${event}\". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use \"${hyphenate(\n event\n )}\" instead of \"${event}\".`\n );\n }\n }\n let handlerName;\n let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)\n props[handlerName = toHandlerKey(camelize(event))];\n if (!handler && isModelListener) {\n handler = props[handlerName = toHandlerKey(hyphenate(event))];\n }\n if (handler) {\n callWithAsyncErrorHandling(\n handler,\n instance,\n 6,\n args\n );\n }\n const onceHandler = props[handlerName + `Once`];\n if (onceHandler) {\n if (!instance.emitted) {\n instance.emitted = {};\n } else if (instance.emitted[handlerName]) {\n return;\n }\n instance.emitted[handlerName] = true;\n callWithAsyncErrorHandling(\n onceHandler,\n instance,\n 6,\n args\n );\n }\n}\nfunction normalizeEmitsOptions(comp, appContext, asMixin = false) {\n const cache = appContext.emitsCache;\n const cached = cache.get(comp);\n if (cached !== void 0) {\n return cached;\n }\n const raw = comp.emits;\n let normalized = {};\n let hasExtends = false;\n if (__VUE_OPTIONS_API__ && !isFunction(comp)) {\n const extendEmits = (raw2) => {\n const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);\n if (normalizedFromExtend) {\n hasExtends = true;\n extend(normalized, normalizedFromExtend);\n }\n };\n if (!asMixin && appContext.mixins.length) {\n appContext.mixins.forEach(extendEmits);\n }\n if (comp.extends) {\n extendEmits(comp.extends);\n }\n if (comp.mixins) {\n comp.mixins.forEach(extendEmits);\n }\n }\n if (!raw && !hasExtends) {\n if (isObject(comp)) {\n cache.set(comp, null);\n }\n return null;\n }\n if (isArray(raw)) {\n raw.forEach((key) => normalized[key] = null);\n } else {\n extend(normalized, raw);\n }\n if (isObject(comp)) {\n cache.set(comp, normalized);\n }\n return normalized;\n}\nfunction isEmitListener(options, key) {\n if (!options || !isOn(key)) {\n return false;\n }\n key = key.slice(2).replace(/Once$/, \"\");\n return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key);\n}\n\nlet currentRenderingInstance = null;\nlet currentScopeId = null;\nfunction setCurrentRenderingInstance(instance) {\n const prev = currentRenderingInstance;\n currentRenderingInstance = instance;\n currentScopeId = instance && instance.type.__scopeId || null;\n return prev;\n}\nfunction pushScopeId(id) {\n currentScopeId = id;\n}\nfunction popScopeId() {\n currentScopeId = null;\n}\nconst withScopeId = (_id) => withCtx;\nfunction withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {\n if (!ctx)\n return fn;\n if (fn._n) {\n return fn;\n }\n const renderFnWithContext = (...args) => {\n if (renderFnWithContext._d) {\n setBlockTracking(-1);\n }\n const prevInstance = setCurrentRenderingInstance(ctx);\n let res;\n try {\n res = fn(...args);\n } finally {\n setCurrentRenderingInstance(prevInstance);\n if (renderFnWithContext._d) {\n setBlockTracking(1);\n }\n }\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentUpdated(ctx);\n }\n return res;\n };\n renderFnWithContext._n = true;\n renderFnWithContext._c = true;\n renderFnWithContext._d = true;\n return renderFnWithContext;\n}\n\nlet accessedAttrs = false;\nfunction markAttrsAccessed() {\n accessedAttrs = true;\n}\nfunction renderComponentRoot(instance) {\n const {\n type: Component,\n vnode,\n proxy,\n withProxy,\n props,\n propsOptions: [propsOptions],\n slots,\n attrs,\n emit,\n render,\n renderCache,\n data,\n setupState,\n ctx,\n inheritAttrs\n } = instance;\n let result;\n let fallthroughAttrs;\n const prev = setCurrentRenderingInstance(instance);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n accessedAttrs = false;\n }\n try {\n if (vnode.shapeFlag & 4) {\n const proxyToUse = withProxy || proxy;\n const thisProxy = !!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup ? new Proxy(proxyToUse, {\n get(target, key, receiver) {\n warn$1(\n `Property '${String(\n key\n )}' was accessed via 'this'. Avoid using 'this' in templates.`\n );\n return Reflect.get(target, key, receiver);\n }\n }) : proxyToUse;\n result = normalizeVNode(\n render.call(\n thisProxy,\n proxyToUse,\n renderCache,\n props,\n setupState,\n data,\n ctx\n )\n );\n fallthroughAttrs = attrs;\n } else {\n const render2 = Component;\n if (!!(process.env.NODE_ENV !== \"production\") && attrs === props) {\n markAttrsAccessed();\n }\n result = normalizeVNode(\n render2.length > 1 ? render2(\n props,\n !!(process.env.NODE_ENV !== \"production\") ? {\n get attrs() {\n markAttrsAccessed();\n return attrs;\n },\n slots,\n emit\n } : { attrs, slots, emit }\n ) : render2(\n props,\n null\n /* we know it doesn't need it */\n )\n );\n fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);\n }\n } catch (err) {\n blockStack.length = 0;\n handleError(err, instance, 1);\n result = createVNode(Comment);\n }\n let root = result;\n let setRoot = void 0;\n if (!!(process.env.NODE_ENV !== \"production\") && result.patchFlag > 0 && result.patchFlag & 2048) {\n [root, setRoot] = getChildRoot(result);\n }\n if (fallthroughAttrs && inheritAttrs !== false) {\n const keys = Object.keys(fallthroughAttrs);\n const { shapeFlag } = root;\n if (keys.length) {\n if (shapeFlag & (1 | 6)) {\n if (propsOptions && keys.some(isModelListener)) {\n fallthroughAttrs = filterModelListeners(\n fallthroughAttrs,\n propsOptions\n );\n }\n root = cloneVNode(root, fallthroughAttrs);\n } else if (!!(process.env.NODE_ENV !== \"production\") && !accessedAttrs && root.type !== Comment) {\n const allAttrs = Object.keys(attrs);\n const eventAttrs = [];\n const extraAttrs = [];\n for (let i = 0, l = allAttrs.length; i < l; i++) {\n const key = allAttrs[i];\n if (isOn(key)) {\n if (!isModelListener(key)) {\n eventAttrs.push(key[2].toLowerCase() + key.slice(3));\n }\n } else {\n extraAttrs.push(key);\n }\n }\n if (extraAttrs.length) {\n warn$1(\n `Extraneous non-props attributes (${extraAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.`\n );\n }\n if (eventAttrs.length) {\n warn$1(\n `Extraneous non-emits event listeners (${eventAttrs.join(\", \")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the \"emits\" option.`\n );\n }\n }\n }\n }\n if (vnode.dirs) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n warn$1(\n `Runtime directive used on component with non-element root node. The directives will not function as intended.`\n );\n }\n root = cloneVNode(root);\n root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;\n }\n if (vnode.transition) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isElementRoot(root)) {\n warn$1(\n `Component inside renders non-element root node that cannot be animated.`\n );\n }\n root.transition = vnode.transition;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && setRoot) {\n setRoot(root);\n } else {\n result = root;\n }\n setCurrentRenderingInstance(prev);\n return result;\n}\nconst getChildRoot = (vnode) => {\n const rawChildren = vnode.children;\n const dynamicChildren = vnode.dynamicChildren;\n const childRoot = filterSingleRoot(rawChildren, false);\n if (!childRoot) {\n return [vnode, void 0];\n } else if (!!(process.env.NODE_ENV !== \"production\") && childRoot.patchFlag > 0 && childRoot.patchFlag & 2048) {\n return getChildRoot(childRoot);\n }\n const index = rawChildren.indexOf(childRoot);\n const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;\n const setRoot = (updatedRoot) => {\n rawChildren[index] = updatedRoot;\n if (dynamicChildren) {\n if (dynamicIndex > -1) {\n dynamicChildren[dynamicIndex] = updatedRoot;\n } else if (updatedRoot.patchFlag > 0) {\n vnode.dynamicChildren = [...dynamicChildren, updatedRoot];\n }\n }\n };\n return [normalizeVNode(childRoot), setRoot];\n};\nfunction filterSingleRoot(children, recurse = true) {\n let singleRoot;\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (isVNode(child)) {\n if (child.type !== Comment || child.children === \"v-if\") {\n if (singleRoot) {\n return;\n } else {\n singleRoot = child;\n if (!!(process.env.NODE_ENV !== \"production\") && recurse && singleRoot.patchFlag > 0 && singleRoot.patchFlag & 2048) {\n return filterSingleRoot(singleRoot.children);\n }\n }\n }\n } else {\n return;\n }\n }\n return singleRoot;\n}\nconst getFunctionalFallthrough = (attrs) => {\n let res;\n for (const key in attrs) {\n if (key === \"class\" || key === \"style\" || isOn(key)) {\n (res || (res = {}))[key] = attrs[key];\n }\n }\n return res;\n};\nconst filterModelListeners = (attrs, props) => {\n const res = {};\n for (const key in attrs) {\n if (!isModelListener(key) || !(key.slice(9) in props)) {\n res[key] = attrs[key];\n }\n }\n return res;\n};\nconst isElementRoot = (vnode) => {\n return vnode.shapeFlag & (6 | 1) || vnode.type === Comment;\n};\nfunction shouldUpdateComponent(prevVNode, nextVNode, optimized) {\n const { props: prevProps, children: prevChildren, component } = prevVNode;\n const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;\n const emits = component.emitsOptions;\n if (!!(process.env.NODE_ENV !== \"production\") && (prevChildren || nextChildren) && isHmrUpdating) {\n return true;\n }\n if (nextVNode.dirs || nextVNode.transition) {\n return true;\n }\n if (optimized && patchFlag >= 0) {\n if (patchFlag & 1024) {\n return true;\n }\n if (patchFlag & 16) {\n if (!prevProps) {\n return !!nextProps;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n } else if (patchFlag & 8) {\n const dynamicProps = nextVNode.dynamicProps;\n for (let i = 0; i < dynamicProps.length; i++) {\n const key = dynamicProps[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {\n return true;\n }\n }\n }\n } else {\n if (prevChildren || nextChildren) {\n if (!nextChildren || !nextChildren.$stable) {\n return true;\n }\n }\n if (prevProps === nextProps) {\n return false;\n }\n if (!prevProps) {\n return !!nextProps;\n }\n if (!nextProps) {\n return true;\n }\n return hasPropsChanged(prevProps, nextProps, emits);\n }\n return false;\n}\nfunction hasPropsChanged(prevProps, nextProps, emitsOptions) {\n const nextKeys = Object.keys(nextProps);\n if (nextKeys.length !== Object.keys(prevProps).length) {\n return true;\n }\n for (let i = 0; i < nextKeys.length; i++) {\n const key = nextKeys[i];\n if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {\n return true;\n }\n }\n return false;\n}\nfunction updateHOCHostEl({ vnode, parent }, el) {\n while (parent) {\n const root = parent.subTree;\n if (root.suspense && root.suspense.activeBranch === vnode) {\n root.el = vnode.el;\n }\n if (root === vnode) {\n (vnode = parent.vnode).el = el;\n parent = parent.parent;\n } else {\n break;\n }\n }\n}\n\nconst COMPONENTS = \"components\";\nconst DIRECTIVES = \"directives\";\nfunction resolveComponent(name, maybeSelfReference) {\n return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;\n}\nconst NULL_DYNAMIC_COMPONENT = Symbol.for(\"v-ndc\");\nfunction resolveDynamicComponent(component) {\n if (isString(component)) {\n return resolveAsset(COMPONENTS, component, false) || component;\n } else {\n return component || NULL_DYNAMIC_COMPONENT;\n }\n}\nfunction resolveDirective(name) {\n return resolveAsset(DIRECTIVES, name);\n}\nfunction resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {\n const instance = currentRenderingInstance || currentInstance;\n if (instance) {\n const Component = instance.type;\n if (type === COMPONENTS) {\n const selfName = getComponentName(\n Component,\n false\n );\n if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) {\n return Component;\n }\n }\n const res = (\n // local registration\n // check instance[type] first which is resolved for options API\n resolve(instance[type] || Component[type], name) || // global registration\n resolve(instance.appContext[type], name)\n );\n if (!res && maybeSelfReference) {\n return Component;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && warnMissing && !res) {\n const extra = type === COMPONENTS ? `\nIf this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``;\n warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);\n }\n return res;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(\n `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().`\n );\n }\n}\nfunction resolve(registry, name) {\n return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]);\n}\n\nconst isSuspense = (type) => type.__isSuspense;\nlet suspenseId = 0;\nconst SuspenseImpl = {\n name: \"Suspense\",\n // In order to make Suspense tree-shakable, we need to avoid importing it\n // directly in the renderer. The renderer checks for the __isSuspense flag\n // on a vnode's type and calls the `process` method, passing in renderer\n // internals.\n __isSuspense: true,\n process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n if (n1 == null) {\n mountSuspense(\n n2,\n container,\n anchor,\n parentComponent,\n parentSuspense,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n } else {\n if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) {\n n2.suspense = n1.suspense;\n n2.suspense.vnode = n2;\n n2.el = n1.el;\n return;\n }\n patchSuspense(\n n1,\n n2,\n container,\n anchor,\n parentComponent,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n }\n },\n hydrate: hydrateSuspense,\n create: createSuspenseBoundary,\n normalize: normalizeSuspenseChildren\n};\nconst Suspense = SuspenseImpl ;\nfunction triggerEvent(vnode, name) {\n const eventListener = vnode.props && vnode.props[name];\n if (isFunction(eventListener)) {\n eventListener();\n }\n}\nfunction mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {\n const {\n p: patch,\n o: { createElement }\n } = rendererInternals;\n const hiddenContainer = createElement(\"div\");\n const suspense = vnode.suspense = createSuspenseBoundary(\n vnode,\n parentSuspense,\n parentComponent,\n container,\n hiddenContainer,\n anchor,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals\n );\n patch(\n null,\n suspense.pendingBranch = vnode.ssContent,\n hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds\n );\n if (suspense.deps > 0) {\n triggerEvent(vnode, \"onPending\");\n triggerEvent(vnode, \"onFallback\");\n patch(\n null,\n vnode.ssFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds\n );\n setActiveBranch(suspense, vnode.ssFallback);\n } else {\n suspense.resolve(false, true);\n }\n}\nfunction patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {\n const suspense = n2.suspense = n1.suspense;\n suspense.vnode = n2;\n n2.el = n1.el;\n const newBranch = n2.ssContent;\n const newFallback = n2.ssFallback;\n const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;\n if (pendingBranch) {\n suspense.pendingBranch = newBranch;\n if (isSameVNodeType(newBranch, pendingBranch)) {\n patch(\n pendingBranch,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else if (isInFallback) {\n if (!isHydrating) {\n patch(\n activeBranch,\n newFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newFallback);\n }\n }\n } else {\n suspense.pendingId = suspenseId++;\n if (isHydrating) {\n suspense.isHydrating = false;\n suspense.activeBranch = pendingBranch;\n } else {\n unmount(pendingBranch, parentComponent, suspense);\n }\n suspense.deps = 0;\n suspense.effects.length = 0;\n suspense.hiddenContainer = createElement(\"div\");\n if (isInFallback) {\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else {\n patch(\n activeBranch,\n newFallback,\n container,\n anchor,\n parentComponent,\n null,\n // fallback tree will not have suspense context\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newFallback);\n }\n } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n patch(\n activeBranch,\n newBranch,\n container,\n anchor,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n suspense.resolve(true);\n } else {\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n }\n }\n }\n } else {\n if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {\n patch(\n activeBranch,\n newBranch,\n container,\n anchor,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, newBranch);\n } else {\n triggerEvent(n2, \"onPending\");\n suspense.pendingBranch = newBranch;\n if (newBranch.shapeFlag & 512) {\n suspense.pendingId = newBranch.component.suspenseId;\n } else {\n suspense.pendingId = suspenseId++;\n }\n patch(\n null,\n newBranch,\n suspense.hiddenContainer,\n null,\n parentComponent,\n suspense,\n namespace,\n slotScopeIds,\n optimized\n );\n if (suspense.deps <= 0) {\n suspense.resolve();\n } else {\n const { timeout, pendingId } = suspense;\n if (timeout > 0) {\n setTimeout(() => {\n if (suspense.pendingId === pendingId) {\n suspense.fallback(newFallback);\n }\n }, timeout);\n } else if (timeout === 0) {\n suspense.fallback(newFallback);\n }\n }\n }\n }\n}\nlet hasWarned = false;\nfunction createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) {\n if (!!(process.env.NODE_ENV !== \"production\") && true && !hasWarned) {\n hasWarned = true;\n console[console.info ? \"info\" : \"log\"](\n ` is an experimental feature and its API will likely change.`\n );\n }\n const {\n p: patch,\n m: move,\n um: unmount,\n n: next,\n o: { parentNode, remove }\n } = rendererInternals;\n let parentSuspenseId;\n const isSuspensible = isVNodeSuspensible(vnode);\n if (isSuspensible) {\n if (parentSuspense == null ? void 0 : parentSuspense.pendingBranch) {\n parentSuspenseId = parentSuspense.pendingId;\n parentSuspense.deps++;\n }\n }\n const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n assertNumber(timeout, `Suspense timeout`);\n }\n const initialAnchor = anchor;\n const suspense = {\n vnode,\n parent: parentSuspense,\n parentComponent,\n namespace,\n container,\n hiddenContainer,\n deps: 0,\n pendingId: suspenseId++,\n timeout: typeof timeout === \"number\" ? timeout : -1,\n activeBranch: null,\n pendingBranch: null,\n isInFallback: !isHydrating,\n isHydrating,\n isUnmounted: false,\n effects: [],\n resolve(resume = false, sync = false) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n if (!resume && !suspense.pendingBranch) {\n throw new Error(\n `suspense.resolve() is called without a pending branch.`\n );\n }\n if (suspense.isUnmounted) {\n throw new Error(\n `suspense.resolve() is called on an already unmounted suspense boundary.`\n );\n }\n }\n const {\n vnode: vnode2,\n activeBranch,\n pendingBranch,\n pendingId,\n effects,\n parentComponent: parentComponent2,\n container: container2\n } = suspense;\n let delayEnter = false;\n if (suspense.isHydrating) {\n suspense.isHydrating = false;\n } else if (!resume) {\n delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === \"out-in\";\n if (delayEnter) {\n activeBranch.transition.afterLeave = () => {\n if (pendingId === suspense.pendingId) {\n move(\n pendingBranch,\n container2,\n anchor === initialAnchor ? next(activeBranch) : anchor,\n 0\n );\n queuePostFlushCb(effects);\n }\n };\n }\n if (activeBranch) {\n if (parentNode(activeBranch.el) !== suspense.hiddenContainer) {\n anchor = next(activeBranch);\n }\n unmount(activeBranch, parentComponent2, suspense, true);\n }\n if (!delayEnter) {\n move(pendingBranch, container2, anchor, 0);\n }\n }\n setActiveBranch(suspense, pendingBranch);\n suspense.pendingBranch = null;\n suspense.isInFallback = false;\n let parent = suspense.parent;\n let hasUnresolvedAncestor = false;\n while (parent) {\n if (parent.pendingBranch) {\n parent.effects.push(...effects);\n hasUnresolvedAncestor = true;\n break;\n }\n parent = parent.parent;\n }\n if (!hasUnresolvedAncestor && !delayEnter) {\n queuePostFlushCb(effects);\n }\n suspense.effects = [];\n if (isSuspensible) {\n if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {\n parentSuspense.deps--;\n if (parentSuspense.deps === 0 && !sync) {\n parentSuspense.resolve();\n }\n }\n }\n triggerEvent(vnode2, \"onResolve\");\n },\n fallback(fallbackVNode) {\n if (!suspense.pendingBranch) {\n return;\n }\n const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense;\n triggerEvent(vnode2, \"onFallback\");\n const anchor2 = next(activeBranch);\n const mountFallback = () => {\n if (!suspense.isInFallback) {\n return;\n }\n patch(\n null,\n fallbackVNode,\n container2,\n anchor2,\n parentComponent2,\n null,\n // fallback tree will not have suspense context\n namespace2,\n slotScopeIds,\n optimized\n );\n setActiveBranch(suspense, fallbackVNode);\n };\n const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === \"out-in\";\n if (delayEnter) {\n activeBranch.transition.afterLeave = mountFallback;\n }\n suspense.isInFallback = true;\n unmount(\n activeBranch,\n parentComponent2,\n null,\n // no suspense so unmount hooks fire now\n true\n // shouldRemove\n );\n if (!delayEnter) {\n mountFallback();\n }\n },\n move(container2, anchor2, type) {\n suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type);\n suspense.container = container2;\n },\n next() {\n return suspense.activeBranch && next(suspense.activeBranch);\n },\n registerDep(instance, setupRenderEffect) {\n const isInPendingSuspense = !!suspense.pendingBranch;\n if (isInPendingSuspense) {\n suspense.deps++;\n }\n const hydratedEl = instance.vnode.el;\n instance.asyncDep.catch((err) => {\n handleError(err, instance, 0);\n }).then((asyncSetupResult) => {\n if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {\n return;\n }\n instance.asyncResolved = true;\n const { vnode: vnode2 } = instance;\n if (!!(process.env.NODE_ENV !== \"production\")) {\n pushWarningContext(vnode2);\n }\n handleSetupResult(instance, asyncSetupResult, false);\n if (hydratedEl) {\n vnode2.el = hydratedEl;\n }\n const placeholder = !hydratedEl && instance.subTree.el;\n setupRenderEffect(\n instance,\n vnode2,\n // component may have been moved before resolve.\n // if this is not a hydration, instance.subTree will be the comment\n // placeholder.\n parentNode(hydratedEl || instance.subTree.el),\n // anchor will not be used if this is hydration, so only need to\n // consider the comment placeholder case.\n hydratedEl ? null : next(instance.subTree),\n suspense,\n namespace,\n optimized\n );\n if (placeholder) {\n remove(placeholder);\n }\n updateHOCHostEl(instance, vnode2.el);\n if (!!(process.env.NODE_ENV !== \"production\")) {\n popWarningContext();\n }\n if (isInPendingSuspense && --suspense.deps === 0) {\n suspense.resolve();\n }\n });\n },\n unmount(parentSuspense2, doRemove) {\n suspense.isUnmounted = true;\n if (suspense.activeBranch) {\n unmount(\n suspense.activeBranch,\n parentComponent,\n parentSuspense2,\n doRemove\n );\n }\n if (suspense.pendingBranch) {\n unmount(\n suspense.pendingBranch,\n parentComponent,\n parentSuspense2,\n doRemove\n );\n }\n }\n };\n return suspense;\n}\nfunction hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) {\n const suspense = vnode.suspense = createSuspenseBoundary(\n vnode,\n parentSuspense,\n parentComponent,\n node.parentNode,\n // eslint-disable-next-line no-restricted-globals\n document.createElement(\"div\"),\n null,\n namespace,\n slotScopeIds,\n optimized,\n rendererInternals,\n true\n );\n const result = hydrateNode(\n node,\n suspense.pendingBranch = vnode.ssContent,\n parentComponent,\n suspense,\n slotScopeIds,\n optimized\n );\n if (suspense.deps === 0) {\n suspense.resolve(false, true);\n }\n return result;\n}\nfunction normalizeSuspenseChildren(vnode) {\n const { shapeFlag, children } = vnode;\n const isSlotChildren = shapeFlag & 32;\n vnode.ssContent = normalizeSuspenseSlot(\n isSlotChildren ? children.default : children\n );\n vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);\n}\nfunction normalizeSuspenseSlot(s) {\n let block;\n if (isFunction(s)) {\n const trackBlock = isBlockTreeEnabled && s._c;\n if (trackBlock) {\n s._d = false;\n openBlock();\n }\n s = s();\n if (trackBlock) {\n s._d = true;\n block = currentBlock;\n closeBlock();\n }\n }\n if (isArray(s)) {\n const singleChild = filterSingleRoot(s);\n if (!!(process.env.NODE_ENV !== \"production\") && !singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) {\n warn$1(` slots expect a single root node.`);\n }\n s = singleChild;\n }\n s = normalizeVNode(s);\n if (block && !s.dynamicChildren) {\n s.dynamicChildren = block.filter((c) => c !== s);\n }\n return s;\n}\nfunction queueEffectWithSuspense(fn, suspense) {\n if (suspense && suspense.pendingBranch) {\n if (isArray(fn)) {\n suspense.effects.push(...fn);\n } else {\n suspense.effects.push(fn);\n }\n } else {\n queuePostFlushCb(fn);\n }\n}\nfunction setActiveBranch(suspense, branch) {\n suspense.activeBranch = branch;\n const { vnode, parentComponent } = suspense;\n let el = branch.el;\n while (!el && branch.component) {\n branch = branch.component.subTree;\n el = branch.el;\n }\n vnode.el = el;\n if (parentComponent && parentComponent.subTree === vnode) {\n parentComponent.vnode.el = el;\n updateHOCHostEl(parentComponent, el);\n }\n}\nfunction isVNodeSuspensible(vnode) {\n var _a;\n return ((_a = vnode.props) == null ? void 0 : _a.suspensible) != null && vnode.props.suspensible !== false;\n}\n\nconst ssrContextKey = Symbol.for(\"v-scx\");\nconst useSSRContext = () => {\n {\n const ctx = inject(ssrContextKey);\n if (!ctx) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(\n `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.`\n );\n }\n return ctx;\n }\n};\n\nfunction watchEffect(effect, options) {\n return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"post\" }) : { flush: \"post\" }\n );\n}\nfunction watchSyncEffect(effect, options) {\n return doWatch(\n effect,\n null,\n !!(process.env.NODE_ENV !== \"production\") ? extend({}, options, { flush: \"sync\" }) : { flush: \"sync\" }\n );\n}\nconst INITIAL_WATCHER_VALUE = {};\nfunction watch(source, cb, options) {\n if (!!(process.env.NODE_ENV !== \"production\") && !isFunction(cb)) {\n warn$1(\n `\\`watch(fn, options?)\\` signature has been moved to a separate API. Use \\`watchEffect(fn, options?)\\` instead. \\`watch\\` now only supports \\`watch(source, cb, options?) signature.`\n );\n }\n return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, {\n immediate,\n deep,\n flush,\n once,\n onTrack,\n onTrigger\n} = EMPTY_OBJ) {\n if (cb && once) {\n const _cb = cb;\n cb = (...args) => {\n _cb(...args);\n unwatch();\n };\n }\n if (!!(process.env.NODE_ENV !== \"production\") && deep !== void 0 && typeof deep === \"number\") {\n warn$1(\n `watch() \"deep\" option with number value will be used as watch depth in future versions. Please use a boolean instead to avoid potential breakage.`\n );\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !cb) {\n if (immediate !== void 0) {\n warn$1(\n `watch() \"immediate\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (deep !== void 0) {\n warn$1(\n `watch() \"deep\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n if (once !== void 0) {\n warn$1(\n `watch() \"once\" option is only respected when using the watch(source, callback, options?) signature.`\n );\n }\n }\n const warnInvalidSource = (s) => {\n warn$1(\n `Invalid watch source: `,\n s,\n `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`\n );\n };\n const instance = currentInstance;\n const reactiveGetter = (source2) => deep === true ? source2 : (\n // for deep: false, only traverse root-level properties\n traverse(source2, deep === false ? 1 : void 0)\n );\n let getter;\n let forceTrigger = false;\n let isMultiSource = false;\n if (isRef(source)) {\n getter = () => source.value;\n forceTrigger = isShallow(source);\n } else if (isReactive(source)) {\n getter = () => reactiveGetter(source);\n forceTrigger = true;\n } else if (isArray(source)) {\n isMultiSource = true;\n forceTrigger = source.some((s) => isReactive(s) || isShallow(s));\n getter = () => source.map((s) => {\n if (isRef(s)) {\n return s.value;\n } else if (isReactive(s)) {\n return reactiveGetter(s);\n } else if (isFunction(s)) {\n return callWithErrorHandling(s, instance, 2);\n } else {\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(s);\n }\n });\n } else if (isFunction(source)) {\n if (cb) {\n getter = () => callWithErrorHandling(source, instance, 2);\n } else {\n getter = () => {\n if (cleanup) {\n cleanup();\n }\n return callWithAsyncErrorHandling(\n source,\n instance,\n 3,\n [onCleanup]\n );\n };\n }\n } else {\n getter = NOOP;\n !!(process.env.NODE_ENV !== \"production\") && warnInvalidSource(source);\n }\n if (cb && deep) {\n const baseGetter = getter;\n getter = () => traverse(baseGetter());\n }\n let cleanup;\n let onCleanup = (fn) => {\n cleanup = effect.onStop = () => {\n callWithErrorHandling(fn, instance, 4);\n cleanup = effect.onStop = void 0;\n };\n };\n let ssrCleanup;\n if (isInSSRComponentSetup) {\n onCleanup = NOOP;\n if (!cb) {\n getter();\n } else if (immediate) {\n callWithAsyncErrorHandling(cb, instance, 3, [\n getter(),\n isMultiSource ? [] : void 0,\n onCleanup\n ]);\n }\n if (flush === \"sync\") {\n const ctx = useSSRContext();\n ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);\n } else {\n return NOOP;\n }\n }\n let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;\n const job = () => {\n if (!effect.active || !effect.dirty) {\n return;\n }\n if (cb) {\n const newValue = effect.run();\n if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue)) || false) {\n if (cleanup) {\n cleanup();\n }\n callWithAsyncErrorHandling(cb, instance, 3, [\n newValue,\n // pass undefined as the old value when it's changed for the first time\n oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,\n onCleanup\n ]);\n oldValue = newValue;\n }\n } else {\n effect.run();\n }\n };\n job.allowRecurse = !!cb;\n let scheduler;\n if (flush === \"sync\") {\n scheduler = job;\n } else if (flush === \"post\") {\n scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);\n } else {\n job.pre = true;\n if (instance)\n job.id = instance.uid;\n scheduler = () => queueJob(job);\n }\n const effect = new ReactiveEffect(getter, NOOP, scheduler);\n const scope = getCurrentScope();\n const unwatch = () => {\n effect.stop();\n if (scope) {\n remove(scope.effects, effect);\n }\n };\n if (!!(process.env.NODE_ENV !== \"production\")) {\n effect.onTrack = onTrack;\n effect.onTrigger = onTrigger;\n }\n if (cb) {\n if (immediate) {\n job();\n } else {\n oldValue = effect.run();\n }\n } else if (flush === \"post\") {\n queuePostRenderEffect(\n effect.run.bind(effect),\n instance && instance.suspense\n );\n } else {\n effect.run();\n }\n if (ssrCleanup)\n ssrCleanup.push(unwatch);\n return unwatch;\n}\nfunction instanceWatch(source, value, options) {\n const publicThis = this.proxy;\n const getter = isString(source) ? source.includes(\".\") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);\n let cb;\n if (isFunction(value)) {\n cb = value;\n } else {\n cb = value.handler;\n options = value;\n }\n const reset = setCurrentInstance(this);\n const res = doWatch(getter, cb.bind(publicThis), options);\n reset();\n return res;\n}\nfunction createPathGetter(ctx, path) {\n const segments = path.split(\".\");\n return () => {\n let cur = ctx;\n for (let i = 0; i < segments.length && cur; i++) {\n cur = cur[segments[i]];\n }\n return cur;\n };\n}\nfunction traverse(value, depth, currentDepth = 0, seen) {\n if (!isObject(value) || value[\"__v_skip\"]) {\n return value;\n }\n if (depth && depth > 0) {\n if (currentDepth >= depth) {\n return value;\n }\n currentDepth++;\n }\n seen = seen || /* @__PURE__ */ new Set();\n if (seen.has(value)) {\n return value;\n }\n seen.add(value);\n if (isRef(value)) {\n traverse(value.value, depth, currentDepth, seen);\n } else if (isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n traverse(value[i], depth, currentDepth, seen);\n }\n } else if (isSet(value) || isMap(value)) {\n value.forEach((v) => {\n traverse(v, depth, currentDepth, seen);\n });\n } else if (isPlainObject(value)) {\n for (const key in value) {\n traverse(value[key], depth, currentDepth, seen);\n }\n }\n return value;\n}\n\nfunction validateDirectiveName(name) {\n if (isBuiltInDirective(name)) {\n warn$1(\"Do not use built-in directive ids as custom directive id: \" + name);\n }\n}\nfunction withDirectives(vnode, directives) {\n if (currentRenderingInstance === null) {\n !!(process.env.NODE_ENV !== \"production\") && warn$1(`withDirectives can only be used inside render functions.`);\n return vnode;\n }\n const instance = getExposeProxy(currentRenderingInstance) || currentRenderingInstance.proxy;\n const bindings = vnode.dirs || (vnode.dirs = []);\n for (let i = 0; i < directives.length; i++) {\n let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];\n if (dir) {\n if (isFunction(dir)) {\n dir = {\n mounted: dir,\n updated: dir\n };\n }\n if (dir.deep) {\n traverse(value);\n }\n bindings.push({\n dir,\n instance,\n value,\n oldValue: void 0,\n arg,\n modifiers\n });\n }\n }\n return vnode;\n}\nfunction invokeDirectiveHook(vnode, prevVNode, instance, name) {\n const bindings = vnode.dirs;\n const oldBindings = prevVNode && prevVNode.dirs;\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n if (oldBindings) {\n binding.oldValue = oldBindings[i].value;\n }\n let hook = binding.dir[name];\n if (hook) {\n pauseTracking();\n callWithAsyncErrorHandling(hook, instance, 8, [\n vnode.el,\n binding,\n vnode,\n prevVNode\n ]);\n resetTracking();\n }\n }\n}\n\nconst leaveCbKey = Symbol(\"_leaveCb\");\nconst enterCbKey = Symbol(\"_enterCb\");\nfunction useTransitionState() {\n const state = {\n isMounted: false,\n isLeaving: false,\n isUnmounting: false,\n leavingVNodes: /* @__PURE__ */ new Map()\n };\n onMounted(() => {\n state.isMounted = true;\n });\n onBeforeUnmount(() => {\n state.isUnmounting = true;\n });\n return state;\n}\nconst TransitionHookValidator = [Function, Array];\nconst BaseTransitionPropsValidators = {\n mode: String,\n appear: Boolean,\n persisted: Boolean,\n // enter\n onBeforeEnter: TransitionHookValidator,\n onEnter: TransitionHookValidator,\n onAfterEnter: TransitionHookValidator,\n onEnterCancelled: TransitionHookValidator,\n // leave\n onBeforeLeave: TransitionHookValidator,\n onLeave: TransitionHookValidator,\n onAfterLeave: TransitionHookValidator,\n onLeaveCancelled: TransitionHookValidator,\n // appear\n onBeforeAppear: TransitionHookValidator,\n onAppear: TransitionHookValidator,\n onAfterAppear: TransitionHookValidator,\n onAppearCancelled: TransitionHookValidator\n};\nconst BaseTransitionImpl = {\n name: `BaseTransition`,\n props: BaseTransitionPropsValidators,\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const state = useTransitionState();\n return () => {\n const children = slots.default && getTransitionRawChildren(slots.default(), true);\n if (!children || !children.length) {\n return;\n }\n let child = children[0];\n if (children.length > 1) {\n let hasFound = false;\n for (const c of children) {\n if (c.type !== Comment) {\n if (!!(process.env.NODE_ENV !== \"production\") && hasFound) {\n warn$1(\n \" can only be used on a single element or component. Use for lists.\"\n );\n break;\n }\n child = c;\n hasFound = true;\n if (!!!(process.env.NODE_ENV !== \"production\"))\n break;\n }\n }\n }\n const rawProps = toRaw(props);\n const { mode } = rawProps;\n if (!!(process.env.NODE_ENV !== \"production\") && mode && mode !== \"in-out\" && mode !== \"out-in\" && mode !== \"default\") {\n warn$1(`invalid mode: ${mode}`);\n }\n if (state.isLeaving) {\n return emptyPlaceholder(child);\n }\n const innerChild = getKeepAliveChild(child);\n if (!innerChild) {\n return emptyPlaceholder(child);\n }\n const enterHooks = resolveTransitionHooks(\n innerChild,\n rawProps,\n state,\n instance\n );\n setTransitionHooks(innerChild, enterHooks);\n const oldChild = instance.subTree;\n const oldInnerChild = oldChild && getKeepAliveChild(oldChild);\n if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild)) {\n const leavingHooks = resolveTransitionHooks(\n oldInnerChild,\n rawProps,\n state,\n instance\n );\n setTransitionHooks(oldInnerChild, leavingHooks);\n if (mode === \"out-in\") {\n state.isLeaving = true;\n leavingHooks.afterLeave = () => {\n state.isLeaving = false;\n if (instance.update.active !== false) {\n instance.effect.dirty = true;\n instance.update();\n }\n };\n return emptyPlaceholder(child);\n } else if (mode === \"in-out\" && innerChild.type !== Comment) {\n leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {\n const leavingVNodesCache = getLeavingNodesForType(\n state,\n oldInnerChild\n );\n leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;\n el[leaveCbKey] = () => {\n earlyRemove();\n el[leaveCbKey] = void 0;\n delete enterHooks.delayedLeave;\n };\n enterHooks.delayedLeave = delayedLeave;\n };\n }\n }\n return child;\n };\n }\n};\nconst BaseTransition = BaseTransitionImpl;\nfunction getLeavingNodesForType(state, vnode) {\n const { leavingVNodes } = state;\n let leavingVNodesCache = leavingVNodes.get(vnode.type);\n if (!leavingVNodesCache) {\n leavingVNodesCache = /* @__PURE__ */ Object.create(null);\n leavingVNodes.set(vnode.type, leavingVNodesCache);\n }\n return leavingVNodesCache;\n}\nfunction resolveTransitionHooks(vnode, props, state, instance) {\n const {\n appear,\n mode,\n persisted = false,\n onBeforeEnter,\n onEnter,\n onAfterEnter,\n onEnterCancelled,\n onBeforeLeave,\n onLeave,\n onAfterLeave,\n onLeaveCancelled,\n onBeforeAppear,\n onAppear,\n onAfterAppear,\n onAppearCancelled\n } = props;\n const key = String(vnode.key);\n const leavingVNodesCache = getLeavingNodesForType(state, vnode);\n const callHook = (hook, args) => {\n hook && callWithAsyncErrorHandling(\n hook,\n instance,\n 9,\n args\n );\n };\n const callAsyncHook = (hook, args) => {\n const done = args[1];\n callHook(hook, args);\n if (isArray(hook)) {\n if (hook.every((hook2) => hook2.length <= 1))\n done();\n } else if (hook.length <= 1) {\n done();\n }\n };\n const hooks = {\n mode,\n persisted,\n beforeEnter(el) {\n let hook = onBeforeEnter;\n if (!state.isMounted) {\n if (appear) {\n hook = onBeforeAppear || onBeforeEnter;\n } else {\n return;\n }\n }\n if (el[leaveCbKey]) {\n el[leaveCbKey](\n true\n /* cancelled */\n );\n }\n const leavingVNode = leavingVNodesCache[key];\n if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {\n leavingVNode.el[leaveCbKey]();\n }\n callHook(hook, [el]);\n },\n enter(el) {\n let hook = onEnter;\n let afterHook = onAfterEnter;\n let cancelHook = onEnterCancelled;\n if (!state.isMounted) {\n if (appear) {\n hook = onAppear || onEnter;\n afterHook = onAfterAppear || onAfterEnter;\n cancelHook = onAppearCancelled || onEnterCancelled;\n } else {\n return;\n }\n }\n let called = false;\n const done = el[enterCbKey] = (cancelled) => {\n if (called)\n return;\n called = true;\n if (cancelled) {\n callHook(cancelHook, [el]);\n } else {\n callHook(afterHook, [el]);\n }\n if (hooks.delayedLeave) {\n hooks.delayedLeave();\n }\n el[enterCbKey] = void 0;\n };\n if (hook) {\n callAsyncHook(hook, [el, done]);\n } else {\n done();\n }\n },\n leave(el, remove) {\n const key2 = String(vnode.key);\n if (el[enterCbKey]) {\n el[enterCbKey](\n true\n /* cancelled */\n );\n }\n if (state.isUnmounting) {\n return remove();\n }\n callHook(onBeforeLeave, [el]);\n let called = false;\n const done = el[leaveCbKey] = (cancelled) => {\n if (called)\n return;\n called = true;\n remove();\n if (cancelled) {\n callHook(onLeaveCancelled, [el]);\n } else {\n callHook(onAfterLeave, [el]);\n }\n el[leaveCbKey] = void 0;\n if (leavingVNodesCache[key2] === vnode) {\n delete leavingVNodesCache[key2];\n }\n };\n leavingVNodesCache[key2] = vnode;\n if (onLeave) {\n callAsyncHook(onLeave, [el, done]);\n } else {\n done();\n }\n },\n clone(vnode2) {\n return resolveTransitionHooks(vnode2, props, state, instance);\n }\n };\n return hooks;\n}\nfunction emptyPlaceholder(vnode) {\n if (isKeepAlive(vnode)) {\n vnode = cloneVNode(vnode);\n vnode.children = null;\n return vnode;\n }\n}\nfunction getKeepAliveChild(vnode) {\n return isKeepAlive(vnode) ? (\n // #7121 ensure get the child component subtree in case\n // it's been replaced during HMR\n !!(process.env.NODE_ENV !== \"production\") && vnode.component ? vnode.component.subTree : vnode.children ? vnode.children[0] : void 0\n ) : vnode;\n}\nfunction setTransitionHooks(vnode, hooks) {\n if (vnode.shapeFlag & 6 && vnode.component) {\n setTransitionHooks(vnode.component.subTree, hooks);\n } else if (vnode.shapeFlag & 128) {\n vnode.ssContent.transition = hooks.clone(vnode.ssContent);\n vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);\n } else {\n vnode.transition = hooks;\n }\n}\nfunction getTransitionRawChildren(children, keepComment = false, parentKey) {\n let ret = [];\n let keyedFragmentCount = 0;\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);\n if (child.type === Fragment) {\n if (child.patchFlag & 128)\n keyedFragmentCount++;\n ret = ret.concat(\n getTransitionRawChildren(child.children, keepComment, key)\n );\n } else if (keepComment || child.type !== Comment) {\n ret.push(key != null ? cloneVNode(child, { key }) : child);\n }\n }\n if (keyedFragmentCount > 1) {\n for (let i = 0; i < ret.length; i++) {\n ret[i].patchFlag = -2;\n }\n }\n return ret;\n}\n\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineComponent(options, extraOptions) {\n return isFunction(options) ? (\n // #8326: extend call and options.name access are considered side-effects\n // by Rollup, so we have to wrap it in a pure-annotated IIFE.\n /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))()\n ) : options;\n}\n\nconst isAsyncWrapper = (i) => !!i.type.__asyncLoader;\n/*! #__NO_SIDE_EFFECTS__ */\n// @__NO_SIDE_EFFECTS__\nfunction defineAsyncComponent(source) {\n if (isFunction(source)) {\n source = { loader: source };\n }\n const {\n loader,\n loadingComponent,\n errorComponent,\n delay = 200,\n timeout,\n // undefined = never times out\n suspensible = true,\n onError: userOnError\n } = source;\n let pendingRequest = null;\n let resolvedComp;\n let retries = 0;\n const retry = () => {\n retries++;\n pendingRequest = null;\n return load();\n };\n const load = () => {\n let thisRequest;\n return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {\n err = err instanceof Error ? err : new Error(String(err));\n if (userOnError) {\n return new Promise((resolve, reject) => {\n const userRetry = () => resolve(retry());\n const userFail = () => reject(err);\n userOnError(err, userRetry, userFail, retries + 1);\n });\n } else {\n throw err;\n }\n }).then((comp) => {\n if (thisRequest !== pendingRequest && pendingRequest) {\n return pendingRequest;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && !comp) {\n warn$1(\n `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.`\n );\n }\n if (comp && (comp.__esModule || comp[Symbol.toStringTag] === \"Module\")) {\n comp = comp.default;\n }\n if (!!(process.env.NODE_ENV !== \"production\") && comp && !isObject(comp) && !isFunction(comp)) {\n throw new Error(`Invalid async component load result: ${comp}`);\n }\n resolvedComp = comp;\n return comp;\n }));\n };\n return defineComponent({\n name: \"AsyncComponentWrapper\",\n __asyncLoader: load,\n get __asyncResolved() {\n return resolvedComp;\n },\n setup() {\n const instance = currentInstance;\n if (resolvedComp) {\n return () => createInnerComp(resolvedComp, instance);\n }\n const onError = (err) => {\n pendingRequest = null;\n handleError(\n err,\n instance,\n 13,\n !errorComponent\n );\n };\n if (suspensible && instance.suspense || isInSSRComponentSetup) {\n return load().then((comp) => {\n return () => createInnerComp(comp, instance);\n }).catch((err) => {\n onError(err);\n return () => errorComponent ? createVNode(errorComponent, {\n error: err\n }) : null;\n });\n }\n const loaded = ref(false);\n const error = ref();\n const delayed = ref(!!delay);\n if (delay) {\n setTimeout(() => {\n delayed.value = false;\n }, delay);\n }\n if (timeout != null) {\n setTimeout(() => {\n if (!loaded.value && !error.value) {\n const err = new Error(\n `Async component timed out after ${timeout}ms.`\n );\n onError(err);\n error.value = err;\n }\n }, timeout);\n }\n load().then(() => {\n loaded.value = true;\n if (instance.parent && isKeepAlive(instance.parent.vnode)) {\n instance.parent.effect.dirty = true;\n queueJob(instance.parent.update);\n }\n }).catch((err) => {\n onError(err);\n error.value = err;\n });\n return () => {\n if (loaded.value && resolvedComp) {\n return createInnerComp(resolvedComp, instance);\n } else if (error.value && errorComponent) {\n return createVNode(errorComponent, {\n error: error.value\n });\n } else if (loadingComponent && !delayed.value) {\n return createVNode(loadingComponent);\n }\n };\n }\n });\n}\nfunction createInnerComp(comp, parent) {\n const { ref: ref2, props, children, ce } = parent.vnode;\n const vnode = createVNode(comp, props, children);\n vnode.ref = ref2;\n vnode.ce = ce;\n delete parent.vnode.ce;\n return vnode;\n}\n\nconst isKeepAlive = (vnode) => vnode.type.__isKeepAlive;\nconst KeepAliveImpl = {\n name: `KeepAlive`,\n // Marker for special handling inside the renderer. We are not using a ===\n // check directly on KeepAlive in the renderer, because importing it directly\n // would prevent it from being tree-shaken.\n __isKeepAlive: true,\n props: {\n include: [String, RegExp, Array],\n exclude: [String, RegExp, Array],\n max: [String, Number]\n },\n setup(props, { slots }) {\n const instance = getCurrentInstance();\n const sharedContext = instance.ctx;\n if (!sharedContext.renderer) {\n return () => {\n const children = slots.default && slots.default();\n return children && children.length === 1 ? children[0] : children;\n };\n }\n const cache = /* @__PURE__ */ new Map();\n const keys = /* @__PURE__ */ new Set();\n let current = null;\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n instance.__v_cache = cache;\n }\n const parentSuspense = instance.suspense;\n const {\n renderer: {\n p: patch,\n m: move,\n um: _unmount,\n o: { createElement }\n }\n } = sharedContext;\n const storageContainer = createElement(\"div\");\n sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {\n const instance2 = vnode.component;\n move(vnode, container, anchor, 0, parentSuspense);\n patch(\n instance2.vnode,\n vnode,\n container,\n anchor,\n instance2,\n parentSuspense,\n namespace,\n vnode.slotScopeIds,\n optimized\n );\n queuePostRenderEffect(() => {\n instance2.isDeactivated = false;\n if (instance2.a) {\n invokeArrayFns(instance2.a);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeMounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n sharedContext.deactivate = (vnode) => {\n const instance2 = vnode.component;\n move(vnode, storageContainer, null, 1, parentSuspense);\n queuePostRenderEffect(() => {\n if (instance2.da) {\n invokeArrayFns(instance2.da);\n }\n const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;\n if (vnodeHook) {\n invokeVNodeHook(vnodeHook, instance2.parent, vnode);\n }\n instance2.isDeactivated = true;\n }, parentSuspense);\n if (!!(process.env.NODE_ENV !== \"production\") || __VUE_PROD_DEVTOOLS__) {\n devtoolsComponentAdded(instance2);\n }\n };\n function unmount(vnode) {\n resetShapeFlag(vnode);\n _unmount(vnode, instance, parentSuspense, true);\n }\n function pruneCache(filter) {\n cache.forEach((vnode, key) => {\n const name = getComponentName(vnode.type);\n if (name && (!filter || !filter(name))) {\n pruneCacheEntry(key);\n }\n });\n }\n function pruneCacheEntry(key) {\n const cached = cache.get(key);\n if (!current || !isSameVNodeType(cached, current)) {\n unmount(cached);\n } else if (current) {\n resetShapeFlag(current);\n }\n cache.delete(key);\n keys.delete(key);\n }\n watch(\n () => [props.include, props.exclude],\n ([include, exclude]) => {\n include && pruneCache((name) => matches(include, name));\n exclude && pruneCache((name) => !matches(exclude, name));\n },\n // prune post-render after `current` has been updated\n { flush: \"post\", deep: true }\n );\n let pendingCacheKey = null;\n const cacheSubtree = () => {\n if (pendingCacheKey != null) {\n cache.set(pendingCacheKey, getInnerChild(instance.subTree));\n }\n };\n onMounted(cacheSubtree);\n onUpdated(cacheSubtree);\n onBeforeUnmount(() => {\n cache.forEach((cached) => {\n const { subTree, suspense } = instance;\n const vnode = getInnerChild(subTree);\n if (cached.type === vnode.type && cached.key === vnode.key) {\n resetShapeFlag(vnode);\n const da = vnode.component.da;\n da && queuePostRenderEffect(da, suspense);\n return;\n }\n unmount(cached);\n });\n });\n return () => {\n pendingCacheKey = null;\n if (!slots.default) {\n return current = null;\n }\n const children = slots.default();\n const rawVNode = children[0];\n if (children.length > 1) {\n if (!!(process.env.NODE_ENV !== \"production\")) {\n warn$1(`KeepAlive should contain exactly one component child.`);\n }\n current = null;\n return children;\n } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {\n current = null;\n return rawVNode;\n }\n let vnode = getInnerChild(rawVNode);\n const comp = vnode.type;\n const name = getComponentName(\n isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp\n );\n const { include, exclude, max } = props;\n if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {\n current = vnode;\n return rawVNode;\n }\n const key = vnode.key == null ? comp : vnode.key;\n const cachedVNode = cache.get(key);\n if (vnode.el) {\n vnode = cloneVNode(vnode);\n if (rawVNode.shapeFlag & 128) {\n rawVNode.ssContent = vnode;\n }\n }\n pendingCacheKey = key;\n if (cachedVNode) {\n vnode.el = cachedVNode.el;\n vnode.component = cachedVNode.component;\n if (vnode.transition) {\n setTransitionHooks(vnode, vnode.transition);\n }\n vnode.shapeFlag |= 512;\n keys.delete(key);\n keys.add(key);\n } else {\n keys.add(key);\n if (max && keys.size > parseInt(max, 10)) {\n pruneCacheEntry(keys.values().next().value);\n }\n }\n vnode.shapeFlag |= 256;\n current = vnode;\n return isSuspense(rawVNode.type) ? rawVNode : vnode;\n };\n }\n};\nconst KeepAlive = KeepAliveImpl;\nfunction matches(pattern, name) {\n if (isArray(pattern)) {\n return pattern.some((p) => matches(p, name));\n } else if (isString(pattern)) {\n return pattern.split(\",\").includes(name);\n } else if (isRegExp(pattern)) {\n return pattern.test(name);\n }\n return false;\n}\nfunction onActivated(hook, target) {\n registerKeepAliveHook(hook, \"a\", target);\n}\nfunction onDeactivated(hook, target) {\n registerKeepAliveHook(hook, \"da\", target);\n}\nfunction registerKeepAliveHook(hook, type, target = currentInstance) {\n const wrappedHook = hook.__wdc || (hook.__wdc = () => {\n let current = target;\n while (current) {\n if (current.isDeactivated) {\n return;\n }\n current = current.parent;\n }\n return hook();\n });\n injectHook(type, wrappedHook, target);\n if (target) {\n let current = target.parent;\n while (current && current.parent) {\n if (isKeepAlive(current.parent.vnode)) {\n injectToKeepAliveRoot(wrappedHook, type, target, current);\n }\n current = current.parent;\n }\n }\n}\nfunction injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {\n const injected = injectHook(\n type,\n hook,\n keepAliveRoot,\n true\n /* prepend */\n );\n onUnmounted(() => {\n remove(keepAliveRoot[type], injected);\n }, target);\n}\nfunction resetShapeFlag(vnode) {\n vnode.shapeFlag &= ~256;\n vnode.shapeFlag &= ~512;\n}\nfunction getInnerChild(vnode) {\n return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;\n}\n\nfunction injectHook(type, hook, target = currentInstance, prepend = false) {\n if (target) {\n const hooks = target[type] || (target[type] = []);\n const wrappedHook = hook.__weh || (hook.__weh = (...args) => {\n if (target.isUnmounted) {\n return;\n }\n pauseTracking();\n const reset = setCurrentInstance(target);\n const res = callWithAsyncErrorHandling(hook, target, type, args);\n reset();\n resetTracking();\n return res;\n });\n if (prepend) {\n hooks.unshift(wrappedHook);\n } else {\n hooks.push(wrappedHook);\n }\n return wrappedHook;\n } else if (!!(process.env.NODE_ENV !== \"production\")) {\n const apiName = toHandlerKey(ErrorTypeStrings$1[type].replace(/ hook$/, \"\"));\n warn$1(\n `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` )\n );\n }\n}\nconst createHook = (lifecycle) => (hook, target = currentInstance) => (\n // post-create lifecycle registrations are noops during SSR (except for serverPrefetch)\n (!isInSSRComponentSetup || lifecycle === \"sp\") && injectHook(lifecycle, (...args) => hook(...args), target)\n);\nconst onBeforeMount = createHook(\"bm\");\nconst onMounted = createHook(\"m\");\nconst onBeforeUpdate = createHook(\"bu\");\nconst onUpdated = createHook(\"u\");\nconst onBeforeUnmount = createHook(\"bum\");\nconst onUnmounted = createHook(\"um\");\nconst onServerPrefetch = createHook(\"sp\");\nconst onRenderTriggered = createHook(\n \"rtg\"\n);\nconst onRenderTracked = createHook(\n \"rtc\"\n);\nfunction onErrorCaptured(hook, target = currentInstance) {\n injectHook(\"ec\", hook, target);\n}\n\nfunction renderList(source, renderItem, cache, index) {\n let ret;\n const cached = cache && cache[index];\n if (isArray(source) || isString(source)) {\n ret = new Array(source.length);\n for (let i = 0, l = source.length; i < l; i++) {\n ret[i] = renderItem(source[i], i, void 0, cached && cached[i]);\n }\n } else if (typeof source === \"number\") {\n if (!!(process.env.NODE_ENV !== \"production\") && !Number.isInteger(source)) {\n warn$1(`The v-for range expect an integer value but got ${source}.`);\n }\n ret = new Array(source);\n for (let i = 0; i < source; i++) {\n ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);\n }\n } else if (isObject(source)) {\n if (source[Symbol.iterator]) {\n ret = Array.from(\n source,\n (item, i) => renderItem(item, i, void 0, cached && cached[i])\n );\n } else {\n const keys = Object.keys(source);\n ret = new Array(keys.length);\n for (let i = 0, l = keys.length; i < l; i++) {\n const key = keys[i];\n ret[i] = renderItem(source[key], key, i, cached && cached[i]);\n }\n }\n } else {\n ret = [];\n }\n if (cache) {\n cache[index] = ret;\n }\n return ret;\n}\n\nfunction createSlots(slots, dynamicSlots) {\n for (let i = 0; i < dynamicSlots.length; i++) {\n const slot = dynamicSlots[i];\n if (isArray(slot)) {\n for (let j = 0; j < slot.length; j++) {\n slots[slot[j].name] = slot[j].fn;\n }\n } else if (slot) {\n slots[slot.name] = slot.key ? (...args) => {\n const res = slot.fn(...args);\n if (res)\n res.key = slot.key;\n return res;\n } : slot.fn;\n }\n }\n return slots;\n}\n\nfunction renderSlot(slots, name, props = {}, fallback, noSlotted) {\n if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) {\n if (name !== \"default\")\n props.name = name;\n return createVNode(\"slot\", props, fallback && fallback());\n }\n let slot = slots[name];\n if (!!(process.env.NODE_ENV !== \"production\") && slot && slot.length > 1) {\n warn$1(\n `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`\n );\n slot = () => [];\n }\n if (slot && slot._c) {\n slot._d = false;\n }\n openBlock();\n const validSlotContent = slot && ensureValidVNode(slot(props));\n const rendered = createBlock(\n Fragment,\n {\n key: props.key || // slot content array of a dynamic conditional slot may have a branch\n // key attached in the `createSlots` helper, respect that\n validSlotContent && validSlotContent.key || `_${name}`\n },\n validSlotContent || (fallback ? fallback() : []),\n validSlotContent && slots._ === 1 ? 64 : -2\n );\n if (!noSlotted && rendered.scopeId) {\n rendered.slotScopeIds = [rendered.scopeId + \"-s\"];\n }\n if (slot && slot._c) {\n slot._d = true;\n }\n return rendered;\n}\nfunction ensureValidVNode(vnodes) {\n return vnodes.some((child) => {\n if (!isVNode(child))\n return true;\n if (child.type === Comment)\n return false;\n if (child.type === Fragment && !ensureValidVNode(child.children))\n return false;\n return true;\n }) ? vnodes : null;\n}\n\nfunction toHandlers(obj, preserveCaseIfNecessary) {\n const ret = {};\n if (!!(process.env.NODE_ENV !== \"production\") && !isObject(obj)) {\n warn$1(`v-on with no argument expects an object value.`);\n return ret;\n }\n for (const key in obj) {\n ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];\n }\n return ret;\n}\n\nconst getPublicInstance = (i) => {\n if (!i)\n return null;\n if (isStatefulComponent(i))\n return getExposeProxy(i) || i.proxy;\n return getPublicInstance(i.parent);\n};\nconst publicPropertiesMap = (\n // Move PURE marker to new line to workaround compiler discarding it\n // due to type annotation\n /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), {\n $: (i) => i,\n $el: (i) => i.vnode.el,\n $data: (i) => i.data,\n $props: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.props) : i.props,\n $attrs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.attrs) : i.attrs,\n $slots: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.slots) : i.slots,\n $refs: (i) => !!(process.env.NODE_ENV !== \"production\") ? shallowReadonly(i.refs) : i.refs,\n $parent: (i) => getPublicInstance(i.parent),\n $root: (i) => getPublicInstance(i.root),\n $emit: (i) => i.emit,\n $options: (i) => __VUE_OPTIONS_API__ ? resolveMergedOptions(i) : i.type,\n $forceUpdate: (i) => i.f || (i.f = () => {\n i.effect.dirty = true;\n queueJob(i.update);\n }),\n $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)),\n $watch: (i) => __VUE_OPTIONS_API__ ? instanceWatch.bind(i) : NOOP\n })\n);\nconst isReservedPrefix = (key) => key === \"_\" || key === \"$\";\nconst hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);\nconst PublicInstanceProxyHandlers = {\n get({ _: instance }, key) {\n if (key === \"__v_skip\") {\n return true;\n }\n const { ctx, setupState, data, props, accessCache, type, appContext } = instance;\n if (!!(process.env.NODE_ENV !== \"production\") && key === \"__isVue\") {\n return true;\n }\n let normalizedProps;\n if (key[0] !== \"$\") {\n const n = accessCache[key];\n if (n !== void 0) {\n switch (n) {\n case 1 /* SETUP */:\n return setupState[key];\n case 2 /* DATA */:\n return data[key];\n case 4 /* CONTEXT */:\n return ctx[key];\n case 3 /* PROPS */:\n return props[key];\n }\n } else if (hasSetupBinding(setupState, key)) {\n accessCache[key] = 1 /* SETUP */;\n return setupState[key];\n } else if (data !== EMPTY_OBJ && hasOwn(data, key)) {\n accessCache[key] = 2 /* DATA */;\n return data[key];\n } else if (\n // only cache other properties when instance has declared (thus stable)\n // props\n (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key)\n ) {\n accessCache[key] = 3 /* PROPS */;\n return props[key];\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (!__VUE_OPTIONS_API__ || shouldCacheAccess) {\n accessCache[key] = 0 /* OTHER */;\n }\n }\n const publicGetter = publicPropertiesMap[key];\n let cssModule, globalProperties;\n if (publicGetter) {\n if (key === \"$attrs\") {\n track(instance.attrs, \"get\", \"\");\n !!(process.env.NODE_ENV !== \"production\") && markAttrsAccessed();\n } else if (!!(process.env.NODE_ENV !== \"production\") && key === \"$slots\") {\n track(instance, \"get\", key);\n }\n return publicGetter(instance);\n } else if (\n // css module (injected by vue-loader)\n (cssModule = type.__cssModules) && (cssModule = cssModule[key])\n ) {\n return cssModule;\n } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {\n accessCache[key] = 4 /* CONTEXT */;\n return ctx[key];\n } else if (\n // global properties\n globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key)\n ) {\n {\n return globalProperties[key];\n }\n } else if (!!(process.env.NODE_ENV !== \"production\") && currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading\n // to infinite warning loop\n key.indexOf(\"__v\") !== 0)) {\n if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {\n warn$1(\n `Property ${JSON.stringify(\n key\n )} must be accessed via $data because it starts with a reserved character (\"$\" or \"_\") and is not proxied on the render context.`\n );\n } else if (instance === currentRenderingInstance) {\n warn$1(\n `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.`\n );\n }\n }\n },\n set({ _: instance }, key, value) {\n const { data, setupState, ctx } = instance;\n if (hasSetupBinding(setupState, key)) {\n setupState[key] = value;\n return true;\n } else if (!!(process.env.NODE_ENV !== \"production\") && setupState.__isScriptSetup && hasOwn(setupState, key)) {\n warn$1(`Cannot mutate \n","import Model from './model';\n\n\nexport default class Sound extends Model {\n constructor({sound={}, ...data}={}, options={}) {\n // flatten EpisodeSound and sound data\n super({...sound, ...data}, options)\n }\n\n get name() { return this.data.name }\n get src() { return this.data.url }\n}\n","\n\n","/**\n * Run function with provided args only if document is not hidden\n */\nexport function setEcoTimeout(func, ...args) {\n return setTimeout((...args) => {\n !document.hidden && func(...args)\n }, ...args)\n}\n\n/**\n * Run function at specific interval only if document is not hidden\n */\nexport function setEcoInterval(func, ...args) {\n return setInterval((...args) => {\n !document.hidden && func(...args)\n }, ...args)\n}\n","import {setEcoInterval} from './utils';\nimport Model from './model';\n\nexport default class Live {\n constructor({url,timeout=10,src=\"\"}={}) {\n this.url = url;\n this.timeout = timeout;\n this.src = src;\n\n this.interval = null\n this.promise = null\n this.items = []\n this.current = null\n }\n\n //-- data refreshing\n drop() {\n this.promise = null;\n }\n\n /**\n * Fetch data from server.\n *\n * @param {Object} options\n * @param {Function} options.then: call this method on fetch, `this` passed as argument.\n * @return {Promise} Promise resolving to fetched items.\n */\n fetch({then=null}={}) {\n const promise = fetch(this.url).then(response =>\n response.ok ? response.json()\n : Promise.reject(response)\n ).then(data => {\n data = data.results\n data.forEach(item => {\n if(item.start) item.start = new Date(item.start)\n if(item.end) item.end = new Date(item.end)\n })\n this.items = data\n\n const now = new Date()\n let item = data.find(it => it.start && (it.start <= now < it.end)) ||\n data.length ? data[0] : null;\n if(item) {\n item.src = this.src\n this.current = new Model(item)\n }\n else\n this.current = null\n if(then)\n then(this)\n return this.items\n })\n\n this.promise = promise;\n return promise;\n }\n\n _refresh(options={}) {\n const promise = this.fetch(options);\n promise.then(() => {\n if(promise != this.promise)\n return [];\n })\n return promise\n }\n\n /**\n * Refresh live info every `this.timeout`.\n * @param {Object} options: arguments passed to `this.fetch`.\n */\n refresh(options={}) {\n if(this.interval !== null)\n return\n\n this._refresh(options)\n this.interval = setEcoInterval(() => this._refresh(options), this.timeout*1000)\n return this.interval\n }\n\n stopRefresh() {\n this.interval !== null && clearInterval(this.interval)\n }\n}\n","\n\n","\n\n","\n\n\n","\n\n\n","\n\n","\n\n","\n\n","\n\n\n","import Model from './model';\nimport {setEcoInterval} from './utils';\n\n\nexport class Streamer extends Model {\n get playlists() { return this.data ? this.data.playlists : []; }\n get queues() { return this.data ? this.data.queues : []; }\n get sources() { return [...this.queues, ...this.playlists]; }\n get source() { return this.sources.find(o => o.id == this.data.source) }\n\n commit(data) {\n if(!this.data)\n this.data = { id: data.id, playlists: [], queues: [] }\n\n data.playlists = Playlist.fromList(data.playlists, {streamer: this});\n data.queues = Queue.fromList(data.queues, {streamer: this});\n super.commit(data)\n }\n}\n\nexport default Streamer;\n\nexport class Request extends Model {\n static getId(data) { return data.rid; }\n}\n\nexport class Source extends Model {\n constructor(data, {streamer=null, ...options}={}) {\n super(data, options);\n this.streamer = streamer;\n setEcoInterval(() => this.tick(), 1000)\n }\n\n get isQueue() { return false; }\n get isPlaylist() { return false; }\n get isPlaying() { return this.data.status == 'playing' }\n get isPaused() { return this.data.status == 'paused' }\n\n get remainingString() {\n if(!this.remaining)\n return '00:00';\n\n const seconds = Math.floor(this.remaining % 60);\n const minutes = Math.floor(this.remaining / 60);\n return String(minutes).padStart(2, '0') + ':' +\n String(seconds).padStart(2, '0');\n }\n\n sync() { return this.action('sync/', {method: 'POST'}, true); }\n skip() { return this.action('skip/', {method: 'POST'}, true); }\n restart() { return this.action('restart/', {method: 'POST'}, true); }\n\n seek(count) {\n return this.action('seek/', {\n method: 'POST',\n body: JSON.stringify({count: count})\n }, true)\n }\n\n tick() {\n if(!this.data.remaining || !this.isPlaying)\n return;\n const delta = (Date.now() - this.commitDate) / 1000;\n this.remaining = this.data.remaining - delta\n }\n\n commit(data) {\n if(data.air_time)\n data.air_time = new Date(data.air_time);\n\n this.commitDate = Date.now()\n super.commit(data)\n this.remaining = data.remaining\n }\n}\n\n\nexport class Playlist extends Source {\n get isPlaylist() { return true; }\n}\n\n\nexport class Queue extends Source {\n get isQueue() { return true; }\n get queue() { return this.data && this.data.queue; }\n\n commit(data) {\n data.queue = Request.fromList(data.queue);\n super.commit(data)\n }\n\n push(soundId) {\n return this.action('push/', {\n method: 'POST',\n body: JSON.stringify({'sound_id': parseInt(soundId)})\n }, true);\n }\n}\n","\n\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '\n","\n\n","\n\n","