{"version":3,"sources":["webpack:///./node_modules/bootstrap-vue/esm/components/spinner/spinner.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/td.js","webpack:///./node_modules/bootstrap-vue/esm/components/skeleton/skeleton.js","webpack:///./node_modules/bootstrap-vue/esm/components/skeleton/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/thead.js","webpack:///./node_modules/bootstrap-vue/esm/components/skeleton/skeleton-icon.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/table-simple.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/tfoot.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-bottom-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-busy.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-empty.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/sanitize-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/stringify-record-values.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-filtering.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-pagination.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-provider.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-selectable.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-sorting.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/default-sort-compare.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-top-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/table.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/tr.js","webpack:///./node_modules/bootstrap-vue/esm/components/skeleton/skeleton-img.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tbody-row.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tbody.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-caption.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-stacked.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/normalize-fields.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-items.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/th.js","webpack:///./node_modules/bootstrap-vue/esm/components/skeleton/skeleton-wrapper.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-table-renderer.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/constants.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-tfoot.js","webpack:///./node_modules/bootstrap-vue/esm/components/sidebar/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/tbody.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/filter-event.js","webpack:///./node_modules/bootstrap-vue/esm/components/spinner/index.js","webpack:///./node_modules/bootstrap-vue/esm/components/sidebar/sidebar.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-thead.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/table-lite.js","webpack:///./node_modules/bootstrap-vue/esm/components/skeleton/skeleton-table.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/text-selection-active.js","webpack:///./node_modules/bootstrap-vue/esm/components/table/helpers/mixin-colgroup.js"],"names":["_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","props","label","role","small","tag","type","variant","BSpinner","name","functional","render","h","_ref","_class","data","slots","scopedSlots","$slots","$scopedSlots","$label","staticClass","attrs","class","concat","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","apply","_objectSpread","target","i","arguments","length","source","forEach","getOwnPropertyDescriptors","defineProperties","parseSpan","spanValidator","colspan","rowspan","stackedHeading","stickyColumn","BTd","mixins","inject","getBvTableTr","default","inheritAttrs","computed","bvTableTr","this","inTbody","inThead","inTfoot","isDark","isStacked","isStackedCell","isResponsive","isStickyHeader","hasStickyHeader","isStickyColumn","rowVariant","headVariant","footVariant","tableVariant","computedColspan","computedRowspan","cellClasses","cellAttrs","headOrFoot","scope","bvAttrs","$content","normalizeSlot","on","bvListeners","animation","height","size","width","BSkeleton","style","SkeletonPlugin","components","BSkeletonIcon","BSkeletonImg","BSkeletonTable","BSkeletonWrapper","BThead","provide","_this","getBvTableRowGroup","getBvTable","bvTable","isThead","dark","stickyHeader","theadClasses","theadAttrs","icon","iconProps","$icon","BTableSimple","isTableSimple","TableLitePlugin","BTableLite","TableSimplePlugin","BTbody","BTfoot","BTr","BTh","TablePlugin","BTable","plugins","isTfoot","tfootClasses","tfootAttrs","bottomRowMixin","methods","renderBottomRow","fields","computedFields","stacked","tbodyTrClass","tbodyTrAttr","$createElement","hasNormalizedSlot","columns","MODEL_PROP_NAME_BUSY","MODEL_EVENT_NAME_BUSY","busyMixin","localBusy","computedBusy","watch","newValue","oldValue","$emit","stopIfBusy","event","renderBusy","emptyFilteredHtml","emptyFilteredText","emptyHtml","emptyText","showEmpty","emptyMixin","renderEmpty","_safeVueInstance","items","computedItems","$empty","isFiltered","domProps","html","row","ignoreFields","includeFields","fieldsObj","undefined","formattedRow","reduce","result","field","filterByFormatted","formatter","allowedKeys","array","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","o","minLen","_arrayLikeToArray","n","prototype","toString","call","slice","constructor","Array","from","test","iter","Symbol","iterator","isArray","len","arr2","DEBOUNCE_DEPRECATED_MSG","filterDebounce","String","filterFunction","filterIgnoredFields","filterIncludedFields","filteringMixin","localFilter","filterSanitize","computedFilterIgnored","identity","computedFilterIncluded","computedFilterDebounce","ms","warn","localFiltering","hasProvider","noProviderFiltering","filteredCheck","filteredItems","localItems","localFilterFn","criteria","filterFn","filterFnFactory","defaultFilterFnFactory","$_filterTimer","clearFilterTimer","deep","handler","newCriteria","timeout","setTimeout","created","_this2","$nextTick","Boolean","beforeDestroy","clearTimeout","fn","item","_this3","regExp","pattern","replace","RegExp","lastIndex","computedFieldsObj","currentPage","perPage","paginationMixin","localPaging","noProviderPaging","paginatedItems","sortedItems","math","ROOT_EVENT_NAME_REFRESHED","ROOT_ACTION_EVENT_NAME_REFRESH","apiUrl","noProviderSorting","providerMixin","providerTriggerContext","ctx","sortBy","sortDesc","localSortBy","localSortDesc","_providerUpdate","mounted","listenOnRoot","id","refresh","$off","$on","clearSelected","_providerSetLocal","emitOnRoot","context","then","e","message","_props","_watch","SELECT_MODES","ROLE_GRID","noSelectOnClick","selectMode","selectable","selectedVariant","selectableMixin","selectedRows","selectedLastRow","isSelectable","hasSelectableRowClick","supportsSelectableRows","selectableHasSelection","some","selectableIsMultiSelect","selectableTableClasses","selectableTableAttrs","equal","setSelectionHandlers","_selectedRows","v","idx","beforeMount","selectRow","index","isRowSelected","selectedLastClicked","unselectRow","selectAllRows","selectableRowClasses","selectableRowAttrs","method","selectionHandler","selected","shiftKey","ctrlKey","metaKey","a","b","_ref$sortBy","_ref$formatter","_ref$locale","locale","_ref$localeOptions","localeOptions","_ref$nullLast","nullLast","aa","get","bb","localeCompare","MODEL_PROP_NAME_SORT_BY","MODEL_EVENT_NAME_SORT_BY","MODEL_PROP_NAME_SORT_DESC","MODEL_EVENT_NAME_SORT_DESC","SORT_DIRECTION_ASC","SORT_DIRECTION_DESC","SORT_DIRECTION_LAST","SORT_DIRECTIONS","labelSortAsc","labelSortClear","labelSortDesc","noFooterSorting","noLocalSorting","noSortReset","numeric","sortingMixin","localSorting","isSortable","f","sortable","sortCompareLocale","sortNullLast","sortCompare","sortCompareOptions","usage","sortByFormatted","getFieldFormatter","handleSort","isFoot","sortChanged","toggleLocalSortDesc","sortDirection","sortKey","sortTheadThClasses","sortIconLeft","sortTheadThAttrs","_field$sortKey","ariaSort","sortTheadThLabel","labelSorting","topRowMixin","renderTopRow","LIGHT","DARK","bvTableRowGroup","isTbody","isRowDark","trClasses","trAttrs","aspect","cardImg","noAspect","$img","detailsTdClass","tbodyRowMixin","getTdValues","tdValue","defaultValue","bvParent","getThValues","thValue","getFormattedValue","toggleDetailsFactory","hasDetailsSlot","$set","rowHovered","tbodyRowEventStopped","emitTbodyRowEvent","rowUnhovered","renderTbodyRowCell","colIndex","rowIndex","isRowHeader","formatted","cellTag","cellVariant","tdClass","thAttr","tdAttr","slotScope","unformatted","toggleDetails","detailsShowing","rowSelected","slotName","$_bodyFieldSlotNameCache","$childNodes","renderTbodyRow","striped","primaryKey","rowShowDetails","hasRowClickHandler","$listeners","$rows","detailsId","safeId","$tds","map","ariaRowIndex","primaryKeyValue","rowKey","rowId","selectableClasses","selectableAttrs","userTrClasses","userTrAttrs","tabindex","mouseenter","mouseleave","ref","detailsScope","$details","userDetailsTrClasses","userDetailsTrAttrs","getCellSlotName","tbodyClass","tbodyMixin","getTbodyTrs","$refs","tbody","$el","trs","tr","children","getTbodyTrIndex","el","tagName","indexOf","hasListener","onTbodyRowKeydown","keyCode","tabIndex","onTBodyRowClicked","shift","onTbodyRowMiddleMouseRowClicked","which","onTbodyRowContextmenu","onTbodyRowDblClicked","renderTbody","$busy","cache","defaultSlotName","lowercaseSlotName","toLowerCase","handlers","auxclick","contextmenu","dblclick","click","keydown","$tbody","$props","caption","captionHtml","captionMixin","captionId","renderCaption","$caption","hasCaptionSlot","stackedMixin","isStackedAlways","stackedTableClasses","origFields","sample","k","memo","_makeModelMixin","modelMixin","mixin","modelProps","MODEL_PROP_NAME","prop","MODEL_EVENT_NAME","itemsMixin","_safeVueInstance2","extends","loading","bordered","borderless","captionTop","fixed","hover","noBorderCollapse","outlined","responsive","tableClass","tableRendererMixin","wrapperClasses","wrapperStyles","maxHeight","tableClasses","border","tableAttrs","ariaAttrs","rowCount","_safeVueInstance3","renderColgroup","renderThead","renderTfoot","$table","FIELD_KEY_CELL_VARIANT","FIELD_KEY_ROW_VARIANT","FIELD_KEY_SHOW_DETAILS","IGNORED_FIELD_KEYS","EVENT_FILTER","join","footClone","footRowVariant","tfootClass","tfootTrClass","tfootMixin","renderTFootCustom","SidebarPlugin","BSidebar","VBTogglePlugin","tbodyTransitionHandlers","tbodyTransitionProps","isTransitionGroup","tbodyAttrs","tbodyProps","nativeOn","TABLE_TAG_NAMES","filterEvent","disabled","labelFor","input","SpinnerPlugin","CLASS_NAME","ROOT_ACTION_EVENT_NAME_REQUEST_STATE","ROOT_ACTION_EVENT_NAME_TOGGLE","ROOT_EVENT_NAME_STATE","ROOT_EVENT_NAME_SYNC_STATE","ariaLabel","ariaLabelledby","backdrop","backdropVariant","bgVariant","bodyClass","closeLabel","footerClass","footerTag","headerClass","headerTag","lazy","noCloseOnBackdrop","noCloseOnEsc","noCloseOnRouteChange","noEnforceFocus","noHeader","noHeaderClose","noSlide","right","shadow","sidebarClass","textVariant","title","zIndex","renderHeaderTitle","renderHeaderClose","hide","renderHeader","$title","$close","renderBody","renderFooter","$footer","renderContent","$header","isOpen","renderBackdrop","directives","localShow","onBackdropClick","visible","transitionProps","css","enterClass","enterActiveClass","enterToClass","leaveClass","leaveActiveClass","leaveToClass","hasTitle","titleId","computedAttrs","emitState","fullPath","$_returnFocusEl","handleToggle","handleSync","activated","emitSync","state","onKeydown","onTopTrapFocus","tabables","content","enforceFocus","reverse","onBottomTrapFocus","onBeforeEnter","document","body","onAfterEnter","onAfterLeave","$sidebar","beforeEnter","afterEnter","afterLeave","$backdrop","noFade","$tabTrapTop","$tabTrapBottom","focus","getHeadSlotName","getFootSlotName","headRowVariant","theadClass","theadTrClass","theadMixin","fieldClasses","thClass","headClicked","hasHeadClickListener","makeCell","labelHtml","trim","headerTitle","sortAttrs","sortClass","sortLabel","thStyle","abbr","headerAbbr","slotNames","column","$srLabel","$cells","$trs","isPositiveNumber","hideHeader","rows","showFooter","tableProps","$th","$thTr","$td","$tdTr","$thead","$tfoot","textSelectionActive","sel","containsNode","colgroupMixin","$colgroup"],"mappings":"oHAAA,mIAASA,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EASpM,IAAIQ,EAAQ,eAAsB,CACvCC,MAAO,eAAS,QAChBC,KAAM,eAAS,OAAkB,UACjCC,MAAO,eAAS,QAAmB,GACnCC,IAAK,eAAS,OAAkB,QAChCC,KAAM,eAAS,OAAkB,UACjCC,QAAS,eAAS,SACjB,SAGQC,EAAwB,eAAO,CACxCC,KAAM,QACNC,YAAY,EACZT,MAAOA,EACPU,OAAQ,SAAgBC,EAAGC,GACzB,IAAIC,EAEAb,EAAQY,EAAKZ,MACbc,EAAOF,EAAKE,KACZC,EAAQH,EAAKG,MACbC,EAAcJ,EAAKI,YACnBC,EAASF,IACTG,EAAeF,GAAe,GAC9BG,EAAS,eAAc,OAAiB,GAAID,EAAcD,IAAWjB,EAAMC,MAQ/E,OANIkB,IACFA,EAASR,EAAE,OAAQ,CACjBS,YAAa,WACZD,IAGER,EAAEX,EAAMI,IAAK,eAAUU,EAAM,CAClCO,MAAO,CACLnB,KAAMiB,EAASnB,EAAME,MAAQ,SAAW,KACxC,cAAeiB,EAAS,KAAO,QAEjCG,OAAQT,EAAS,GAAItB,EAAgBsB,EAAQ,WAAWU,OAAOvB,EAAMK,MAAOL,EAAMK,MAAOd,EAAgBsB,EAAQ,WAAWU,OAAOvB,EAAMK,KAAM,OAAQL,EAAMG,OAAQZ,EAAgBsB,EAAQ,QAAQU,OAAOvB,EAAMM,SAAUN,EAAMM,SAAUO,KAC1O,CAACM,GAAUR,U,oCC9CnB,qNAASa,EAAQC,EAAQC,GAAkB,IAAIC,EAAOhC,OAAOgC,KAAKF,GAAS,GAAI9B,OAAOiC,sBAAuB,CAAE,IAAIC,EAAUlC,OAAOiC,sBAAsBH,GAASC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOpC,OAAOqC,yBAAyBP,EAAQM,GAAKlC,eAAiB8B,EAAKM,KAAKC,MAAMP,EAAME,GAAY,OAAOF,EAE9U,SAASQ,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,GAAIA,EAAI,EAAIb,EAAQ7B,OAAO6C,IAAS,GAAIC,SAAQ,SAAUhD,GAAOF,EAAgB6C,EAAQ3C,EAAK+C,EAAO/C,OAAYE,OAAO+C,0BAA4B/C,OAAOgD,iBAAiBP,EAAQzC,OAAO+C,0BAA0BF,IAAWhB,EAAQ7B,OAAO6C,IAASC,SAAQ,SAAUhD,GAAOE,OAAOC,eAAewC,EAAQ3C,EAAKE,OAAOqC,yBAAyBQ,EAAQ/C,OAAa,OAAO2C,EAEjf,SAAS7C,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAe3M,IAAIoD,EAAY,SAAmBlD,GAEjC,OADAA,EAAQ,eAAUA,EAAO,GAClBA,EAAQ,EAAIA,EAAQ,MAKzBmD,EAAgB,SAAuBnD,GACzC,OAAO,eAAkBA,IAAUkD,EAAUlD,GAAS,GAI7CM,EAAQ,eAAsB,CACvC8C,QAAS,eAAS,OAAyB,KAAMD,GACjDE,QAAS,eAAS,OAAyB,KAAMF,GACjDG,eAAgB,eAAS,QACzBC,aAAc,eAAS,QAAmB,GAC1C3C,QAAS,eAAS,SACjB,SAMQ4C,EAAmB,eAAO,CACnC1C,KAAM,QAEN2C,OAAQ,CAAC,OAAY,OAAgB,QACrCC,OAAQ,CACNC,aAAc,CACZC,QAEA,WACE,OAAO,WACL,MAAO,OAKfC,cAAc,EACdvD,MAAOA,EACPwD,SAAU,CACRC,UAAW,WACT,OAAOC,KAAKL,gBAGdjD,IAAK,WACH,MAAO,MAETuD,QAAS,WACP,OAAOD,KAAKD,UAAUE,SAExBC,QAAS,WACP,OAAOF,KAAKD,UAAUG,SAExBC,QAAS,WACP,OAAOH,KAAKD,UAAUI,SAExBC,OAAQ,WACN,OAAOJ,KAAKD,UAAUK,QAExBC,UAAW,WACT,OAAOL,KAAKD,UAAUM,WAGxBC,cAAe,WACb,OAAON,KAAKC,SAAWD,KAAKK,WAE9BE,aAAc,WACZ,OAAOP,KAAKD,UAAUQ,cAKxBC,eAAgB,WACd,OAAOR,KAAKD,UAAUS,gBAIxBC,gBAAiB,WACf,OAAOT,KAAKD,UAAUU,iBAOxBC,eAAgB,WACd,OAAQV,KAAKK,YAAcL,KAAKO,cAAgBP,KAAKS,kBAAoBT,KAAKT,cAEhFoB,WAAY,WACV,OAAOX,KAAKD,UAAUnD,SAExBgE,YAAa,WACX,OAAOZ,KAAKD,UAAUa,aAExBC,YAAa,WACX,OAAOb,KAAKD,UAAUc,aAExBC,aAAc,WACZ,OAAOd,KAAKD,UAAUe,cAExBC,gBAAiB,WACf,OAAO7B,EAAUc,KAAKZ,UAExB4B,gBAAiB,WACf,OAAO9B,EAAUc,KAAKX,UAIxB4B,YAAa,WACX,IAAIrE,EAAUoD,KAAKpD,QACfgE,EAAcZ,KAAKY,YACnBF,EAAiBV,KAAKU,eAQ1B,QANK9D,GAAWoD,KAAKQ,iBAAmBI,IAAgBhE,GAAW8D,GAAkBV,KAAKG,UAAYH,KAAKa,cAAgBjE,GAAW8D,GAAkBV,KAAKE,UAAYU,IAAgBhE,GAAW8D,GAAkBV,KAAKC,WAGzNrD,EAAUoD,KAAKW,YAAcX,KAAKc,cAAgB,mBAG7C,CAAClE,EAAU,GAAGiB,OAAOmC,KAAKI,OAAS,KAAO,QAAS,KAAKvC,OAAOjB,GAAW,KAAM8D,EAAiB,wBAA0B,OAEpIQ,UAAW,WACT,IAAI5B,EAAiBU,KAAKV,eAGtB6B,EAAanB,KAAKE,SAAWF,KAAKG,QAElCf,EAAUY,KAAKe,gBACf1B,EAAUW,KAAKgB,gBAEfxE,EAAO,OACP4E,EAAQ,KAaZ,OAVID,GAEF3E,EAAO,eACP4E,EAAQhC,EAAU,EAAI,UAAY,OACzB,eAAMY,KAAKtD,IAAK,QAEzBF,EAAO,YACP4E,EAAQ/B,EAAU,EAAI,WAAa,OAG9BZ,EAAcA,EAAc,CACjCW,QAASA,EACTC,QAASA,EACT7C,KAAMA,EACN4E,MAAOA,GACNpB,KAAKqB,SAAU,GAAI,CAGpB,aAAcrB,KAAKM,gBAAkB,eAAkBhB,GAEvD,eAASA,GAAkB,SAIjCtC,OAAQ,SAAgBC,GACtB,IAAIqE,EAAW,CAACtB,KAAKuB,iBACrB,OAAOtE,EAAE+C,KAAKtD,IAAK,CACjBkB,MAAOoC,KAAKiB,YACZtD,MAAOqC,KAAKkB,UAEZM,GAAIxB,KAAKyB,aACR,CAACzB,KAAKM,cAAgBrD,EAAE,MAAO,CAACqE,IAAaA,Q,oCC1LpD,2GAASzF,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAOpM,IAAIQ,EAAQ,eAAsB,CACvCoF,UAAW,eAAS,OAAkB,QACtCC,OAAQ,eAAS,QACjBC,KAAM,eAAS,QACfjF,KAAM,eAAS,OAAkB,QACjCC,QAAS,eAAS,QAClBiF,MAAO,eAAS,SACf,SAGQC,EAAyB,eAAO,CACzChF,KAAM,QACNC,YAAY,EACZT,MAAOA,EACPU,OAAQ,SAAgBC,EAAGC,GACzB,IAAIC,EAEAC,EAAOF,EAAKE,KACZd,EAAQY,EAAKZ,MACbsF,EAAOtF,EAAMsF,KACbF,EAAYpF,EAAMoF,UAClB9E,EAAUN,EAAMM,QACpB,OAAOK,EAAE,MAAO,eAAUG,EAAM,CAC9BM,YAAa,aACbqE,MAAO,CACLF,MAAOD,GAAQtF,EAAMuF,MACrBF,OAAQC,GAAQtF,EAAMqF,QAExB/D,OAAQT,EAAS,GAAItB,EAAgBsB,EAAQ,cAAcU,OAAOvB,EAAMK,OAAO,GAAOd,EAAgBsB,EAAQ,sBAAsBU,OAAO6D,GAAYA,GAAY7F,EAAgBsB,EAAQ,MAAMU,OAAOjB,GAAUA,GAAUO,U,oCCnClO,8GAMI6E,EAA8B,eAAc,CAC9CC,WAAY,CACVH,UAAW,OACXI,cAAe,OACfC,aAAc,OACdC,eAAgB,OAChBC,iBAAkB,W,oCCZtB,mIAASvE,EAAQC,EAAQC,GAAkB,IAAIC,EAAOhC,OAAOgC,KAAKF,GAAS,GAAI9B,OAAOiC,sBAAuB,CAAE,IAAIC,EAAUlC,OAAOiC,sBAAsBH,GAASC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOpC,OAAOqC,yBAAyBP,EAAQM,GAAKlC,eAAiB8B,EAAKM,KAAKC,MAAMP,EAAME,GAAY,OAAOF,EAE9U,SAASQ,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,GAAIA,EAAI,EAAIb,EAAQ7B,OAAO6C,IAAS,GAAIC,SAAQ,SAAUhD,GAAOF,EAAgB6C,EAAQ3C,EAAK+C,EAAO/C,OAAYE,OAAO+C,0BAA4B/C,OAAOgD,iBAAiBP,EAAQzC,OAAO+C,0BAA0BF,IAAWhB,EAAQ7B,OAAO6C,IAASC,SAAQ,SAAUhD,GAAOE,OAAOC,eAAewC,EAAQ3C,EAAKE,OAAOqC,yBAAyBQ,EAAQ/C,OAAa,OAAO2C,EAEjf,SAAS7C,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAUpM,IAAIQ,EAAQ,eAAsB,CAGvCsE,YAAa,eAAS,SACrB,SAMQ0B,EAAsB,eAAO,CACtCxF,KAAM,QACN2C,OAAQ,CAAC,OAAY,OAAgB,QACrC8C,QAAS,WACP,IAAIC,EAAQxC,KAEZ,MAAO,CACLyC,mBAAoB,WAClB,OAAOD,KAIb9C,OAAQ,CAENgD,WAAY,CACV9C,QAEA,WACE,OAAO,WACL,MAAO,OAKfC,cAAc,EACdvD,MAAOA,EACPwD,SAAU,CACR6C,QAAS,WACP,OAAO3C,KAAK0C,cAGdE,QAAS,WACP,OAAO,GAGTxC,OAAQ,WACN,OAAOJ,KAAK2C,QAAQE,MAGtBxC,UAAW,WACT,OAAOL,KAAK2C,QAAQtC,WAGtBE,aAAc,WACZ,OAAOP,KAAK2C,QAAQpC,cAMtBC,eAAgB,WACd,OAAQR,KAAKK,WAAaL,KAAK2C,QAAQG,cAKzCrC,gBAAiB,WACf,OAAQT,KAAKK,WAAaL,KAAK2C,QAAQG,cAGzChC,aAAc,WACZ,OAAOd,KAAK2C,QAAQ7B,cAEtBiC,aAAc,WACZ,MAAO,CAAC/C,KAAKY,YAAc,SAAS/C,OAAOmC,KAAKY,aAAe,OAEjEoC,WAAY,WACV,OAAOvE,EAAc,CACnBjC,KAAM,YACLwD,KAAKqB,WAGZrE,OAAQ,SAAgBC,GACtB,OAAOA,EAAE,QAAS,CAChBW,MAAOoC,KAAK+C,aACZpF,MAAOqC,KAAKgD,WAEZxB,GAAIxB,KAAKyB,aACRzB,KAAKuB,qB,oCCtGZ,uHAASzD,EAAQC,EAAQC,GAAkB,IAAIC,EAAOhC,OAAOgC,KAAKF,GAAS,GAAI9B,OAAOiC,sBAAuB,CAAE,IAAIC,EAAUlC,OAAOiC,sBAAsBH,GAASC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOpC,OAAOqC,yBAAyBP,EAAQM,GAAKlC,eAAiB8B,EAAKM,KAAKC,MAAMP,EAAME,GAAY,OAAOF,EAE9U,SAASQ,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,GAAIA,EAAI,EAAIb,EAAQ7B,OAAO6C,IAAS,GAAIC,SAAQ,SAAUhD,GAAOF,EAAgB6C,EAAQ3C,EAAK+C,EAAO/C,OAAYE,OAAO+C,0BAA4B/C,OAAOgD,iBAAiBP,EAAQzC,OAAO+C,0BAA0BF,IAAWhB,EAAQ7B,OAAO6C,IAASC,SAAQ,SAAUhD,GAAOE,OAAOC,eAAewC,EAAQ3C,EAAKE,OAAOqC,yBAAyBQ,EAAQ/C,OAAa,OAAO2C,EAEjf,SAAS7C,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAQpM,IAAIQ,EAAQ,eAAsB,CACvCoF,UAAW,eAAS,OAAkB,QACtCuB,KAAM,eAAS,QACfC,UAAW,eAAS,OAAkB,KACrC,SAGQhB,EAA6B,eAAO,CAC7CpF,KAAM,QACNC,YAAY,EACZT,MAAOA,EACPU,OAAQ,SAAgBC,EAAGC,GACzB,IAAIE,EAAOF,EAAKE,KACZd,EAAQY,EAAKZ,MACb2G,EAAO3G,EAAM2G,KACbvB,EAAYpF,EAAMoF,UAClByB,EAAQlG,EAAE,OAAO,CACnBS,YAAa,kBACbpB,MAAOmC,EAAcA,EAAc,GAAInC,EAAM4G,WAAY,GAAI,CAC3DD,KAAMA,MAGV,OAAOhG,EAAE,MAAO,eAAUG,EAAM,CAC9BM,YAAa,2EACbE,MAAO/B,EAAgB,GAAI,sBAAsBgC,OAAO6D,GAAYA,KAClE,CAACyB,Q,oCCrCT,uKAASrF,EAAQC,EAAQC,GAAkB,IAAIC,EAAOhC,OAAOgC,KAAKF,GAAS,GAAI9B,OAAOiC,sBAAuB,CAAE,IAAIC,EAAUlC,OAAOiC,sBAAsBH,GAASC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOpC,OAAOqC,yBAAyBP,EAAQM,GAAKlC,eAAiB8B,EAAKM,KAAKC,MAAMP,EAAME,GAAY,OAAOF,EAE9U,SAASQ,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,GAAIA,EAAI,EAAIb,EAAQ7B,OAAO6C,IAAS,GAAIC,SAAQ,SAAUhD,GAAOF,EAAgB6C,EAAQ3C,EAAK+C,EAAO/C,OAAYE,OAAO+C,0BAA4B/C,OAAOgD,iBAAiBP,EAAQzC,OAAO+C,0BAA0BF,IAAWhB,EAAQ7B,OAAO6C,IAASC,SAAQ,SAAUhD,GAAOE,OAAOC,eAAewC,EAAQ3C,EAAKE,OAAOqC,yBAAyBQ,EAAQ/C,OAAa,OAAO2C,EAEjf,SAAS7C,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAapM,IAAIQ,EAAQ,eAAsB,eAASmC,EAAcA,EAAcA,EAAc,GAAI,QAAU,QAAe,SAAsB,SAGpI2E,EAA4B,eAAO,CAC5CtG,KAAM,QAGN2C,OAAQ,CACR,OAAY,OAAkB,OAAS,OACvC,OAGA,QACAnD,MAAOA,EACPwD,SAAU,CACRuD,cAAe,WACb,OAAO,O,oCCjCb,8JAUIC,EAA+B,eAAc,CAC/CrB,WAAY,CACVsB,WAAY,UAGZC,EAAiC,eAAc,CACjDvB,WAAY,CACVmB,aAAc,OACdK,OAAQ,OACRnB,OAAQ,OACRoB,OAAQ,OACRC,IAAK,OACLnE,IAAK,OACLoE,IAAK,UAGLC,EAA2B,eAAc,CAC3C5B,WAAY,CACV6B,OAAQ,QAEVC,QAAS,CACPT,gBAAiBA,EACjBE,kBAAmBA,M,kCChCvB,mIAAS1F,EAAQC,EAAQC,GAAkB,IAAIC,EAAOhC,OAAOgC,KAAKF,GAAS,GAAI9B,OAAOiC,sBAAuB,CAAE,IAAIC,EAAUlC,OAAOiC,sBAAsBH,GAASC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOpC,OAAOqC,yBAAyBP,EAAQM,GAAKlC,eAAiB8B,EAAKM,KAAKC,MAAMP,EAAME,GAAY,OAAOF,EAE9U,SAASQ,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,GAAIA,EAAI,EAAIb,EAAQ7B,OAAO6C,IAAS,GAAIC,SAAQ,SAAUhD,GAAOF,EAAgB6C,EAAQ3C,EAAK+C,EAAO/C,OAAYE,OAAO+C,0BAA4B/C,OAAOgD,iBAAiBP,EAAQzC,OAAO+C,0BAA0BF,IAAWhB,EAAQ7B,OAAO6C,IAASC,SAAQ,SAAUhD,GAAOE,OAAOC,eAAewC,EAAQ3C,EAAKE,OAAOqC,yBAAyBQ,EAAQ/C,OAAa,OAAO2C,EAEjf,SAAS7C,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAUpM,IAAIQ,EAAQ,eAAsB,CAEvCuE,YAAa,eAAS,SACrB,SAMQ6C,EAAsB,eAAO,CACtC5G,KAAM,QACN2C,OAAQ,CAAC,OAAY,OAAgB,QACrC8C,QAAS,WACP,IAAIC,EAAQxC,KAEZ,MAAO,CACLyC,mBAAoB,WAClB,OAAOD,KAIb9C,OAAQ,CAENgD,WAAY,CACV9C,QAEA,WACE,OAAO,WACL,MAAO,OAKfC,cAAc,EACdvD,MAAOA,EACPwD,SAAU,CACR6C,QAAS,WACP,OAAO3C,KAAK0C,cAGdsB,QAAS,WACP,OAAO,GAGT5D,OAAQ,WACN,OAAOJ,KAAK2C,QAAQE,MAGtBxC,UAAW,WACT,OAAOL,KAAK2C,QAAQtC,WAGtBE,aAAc,WACZ,OAAOP,KAAK2C,QAAQpC,cAItBC,eAAgB,WACd,OAAO,GAKTC,gBAAiB,WACf,OAAQT,KAAKK,WAAaL,KAAK2C,QAAQG,cAGzChC,aAAc,WACZ,OAAOd,KAAK2C,QAAQ7B,cAEtBmD,aAAc,WACZ,MAAO,CAACjE,KAAKa,YAAc,SAAShD,OAAOmC,KAAKa,aAAe,OAEjEqD,WAAY,WACV,OAAOzF,EAAcA,EAAc,GAAIuB,KAAKqB,SAAU,GAAI,CACxD7E,KAAM,eAIZQ,OAAQ,SAAgBC,GACtB,OAAOA,EAAE,QAAS,CAChBW,MAAOoC,KAAKiE,aACZtG,MAAOqC,KAAKkE,WAEZ1C,GAAIxB,KAAKyB,aACRzB,KAAKuB,qB,+MC9FD,EAAQ,GAGR4C,EAAiB,eAAO,CACjC7H,MAAO,EACP8H,QAAS,CACPC,gBAAiB,WACf,IAAIC,EAAStE,KAAKuE,eACdC,EAAUxE,KAAKwE,QACfC,EAAezE,KAAKyE,aACpBC,EAAc1E,KAAK0E,YACnBzH,EAAI+C,KAAK2E,eAGb,OAAK3E,KAAK4E,kBAAkB,UAAqC,IAAZJ,GAAgC,KAAZA,EAIlEvH,EAAE,OAAK,CACZS,YAAa,qBACbE,MAAO,CAAC,eAAW6G,GAEnBA,EAAa,KAAM,cAAgBA,GACnC9G,MAAO,eAAW+G,GAElBA,EAAY,KAAM,cAAgBA,EAClC3I,IAAK,gBACJiE,KAAKuB,cAAc,OAAsB,CAC1CsD,QAASP,EAAOzF,OAChByF,OAAQA,KAdDrH,Q,gDCpBf,SAASpB,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAY3M,IAAIgJ,EAAuB,OACvBC,EAAwB,QAA0BD,EAE3C,EAAQjJ,EAAgB,GAAIiJ,EAAsB,eAAS,QAAmB,IAG9EE,EAAY,eAAO,CAC5B1I,MAAO,EACPc,KAAM,WACJ,MAAO,CACL6H,WAAW,IAGfnF,SAAU,CACRoF,aAAc,WACZ,OAAOlF,KAAK8E,IAAyB9E,KAAKiF,YAG9CE,MAAO,CACLF,UAAW,SAAmBG,EAAUC,GAClCD,IAAaC,GACfrF,KAAKsF,MAAMP,EAAuBK,KAIxChB,QAAS,CAEPmB,WAAY,SAAoBC,GAE9B,QAAIxF,KAAKkF,eACP,eAAUM,IACH,IAMXC,WAAY,WACV,IAAIhB,EAAezE,KAAKyE,aACpBC,EAAc1E,KAAK0E,YACnBzH,EAAI+C,KAAK2E,eAEb,OAAI3E,KAAKkF,cAAgBlF,KAAK4E,kBAAkB,SACvC3H,EAAE,OAAK,CACZS,YAAa,oBACbE,MAAO,CAAC,eAAW6G,GAEnBA,EAAa,KAAM,SAAwBA,GAC3C9G,MAAO,eAAW+G,GAElBA,EAAY,KAAM,SAAwBA,EAC1C3I,IAAK,mBACJ,CAACkB,EAAE,OAAK,CACTX,MAAO,CACL8C,QAASY,KAAKuE,eAAe1F,QAAU,OAExC,CAACmB,KAAKuB,cAAc,aAKlB,S,gDC/DF,EAAQ,CACjBmE,kBAAmB,eAAS,QAC5BC,kBAAmB,eAAS,OAAkB,8CAC9CC,UAAW,eAAS,QACpBC,UAAW,eAAS,OAAkB,gCACtCC,UAAW,eAAS,QAAmB,IAI9BC,EAAa,eAAO,CAC7BzJ,MAAO,EACP8H,QAAS,CACP4B,YAAa,WACX,IAAIC,EAAmB,eAAgBjG,MACnCkG,EAAQD,EAAiBE,cACzBjB,EAAee,EAAiBf,aAEhCjI,EAAI+C,KAAK2E,eACTyB,EAASnJ,IAEb,GAAI+C,KAAK8F,aAAeI,GAA0B,IAAjBA,EAAMrH,WAAmBqG,IAAgBlF,KAAK4E,kBAAkB,UAAwB,CACvH,IAAIN,EAAStE,KAAKuE,eACd8B,EAAarG,KAAKqG,WAClBR,EAAY7F,KAAK6F,UACjBD,EAAY5F,KAAK4F,UACjBD,EAAoB3F,KAAK2F,kBACzBD,EAAoB1F,KAAK0F,kBACzBjB,EAAezE,KAAKyE,aACpBC,EAAc1E,KAAK0E,YACvB0B,EAASpG,KAAKuB,cAAc8E,EAAa,OAA0B,OAAiB,CAClFX,kBAAmBA,EACnBC,kBAAmBA,EACnBC,UAAWA,EACXC,UAAWA,EACXvB,OAAQA,EAER4B,MAAOA,IAGJE,IACHA,EAASnJ,EAAE,MAAO,CAChBW,MAAO,CAAC,cAAe,QACvB0I,SAAUD,EAAa,OAAAE,EAAA,MAAWb,EAAmBC,GAAqB,OAAAY,EAAA,MAAWX,EAAWC,MAIpGO,EAASnJ,EAAE,OAAK,CACdX,MAAO,CACL8C,QAASkF,EAAOzF,QAAU,OAE3B,CAAC5B,EAAE,MAAO,CACXU,MAAO,CACLnB,KAAM,QACN,YAAa,WAEd,CAAC4J,MACJA,EAASnJ,EAAE,OAAK,CACdS,YAAa,oBACbE,MAAO,CAAC,eAAW6G,GAEnBA,EAAa,KAAM,aAAeA,GAClC9G,MAAO,eAAW+G,GAElBA,EAAY,KAAM,aAAeA,EACjC3I,IAAKsK,EAAa,uBAAyB,eAC1C,CAACD,IAGN,OAAOA,M,wHCzEF,EAAc,SAAqBI,EAAKC,EAAcC,GAC/D,IAAIC,EAAY/H,UAAUC,OAAS,QAAsB+H,IAAjBhI,UAAU,GAAmBA,UAAU,GAAK,GAIhFiI,EAAe,eAAKF,GAAWG,QAAO,SAAUC,EAAQhL,GAC1D,IAAIiL,EAAQL,EAAU5K,GAClBkL,EAAoBD,EAAMC,kBAC1BC,EAAY,eAAWD,GAE3BA,EAAoBA,EAEpBD,EAAME,UAAY,KAMlB,OAJI,eAAWA,KACbH,EAAOhL,GAAOmL,EAAUV,EAAIzK,GAAMA,EAAKyK,IAGlCO,IACN,eAAMP,IAKLW,EAAc,eAAKN,GAAczI,QAAO,SAAUrC,GACpD,OAAQ,OAAmBA,MAAU,eAAQ0K,IAAiBA,EAAa5H,OAAS,GAAK,OAAAuI,EAAA,MAAcX,EAAc1K,OAAW,eAAQ2K,IAAkBA,EAAc7H,OAAS,IAAM,OAAAuI,EAAA,MAAcV,EAAe3K,OAEtN,OAAO,eAAK8K,EAAcM,IC3BjB,EAAwB,SAA+BX,EAAKC,EAAcC,EAAeC,GAClG,OAAO,eAASH,GAAO,eAAsB,EAAYA,EAAKC,EAAcC,EAAeC,IAE3F,ICRF,SAASU,EAAmBC,GAAO,OAAOC,EAAmBD,IAAQE,EAAiBF,IAAQG,EAA4BH,IAAQI,IAElI,SAASA,IAAuB,MAAM,IAAIC,UAAU,wIAEpD,SAASF,EAA4BG,EAAGC,GAAU,GAAKD,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAOE,EAAkBF,EAAGC,GAAS,IAAIE,EAAI9L,OAAO+L,UAAUC,SAASC,KAAKN,GAAGO,MAAM,GAAI,GAAiE,MAAnD,WAANJ,GAAkBH,EAAEQ,cAAaL,EAAIH,EAAEQ,YAAYtL,MAAgB,QAANiL,GAAqB,QAANA,EAAoBM,MAAMC,KAAKV,GAAc,cAANG,GAAqB,2CAA2CQ,KAAKR,GAAWD,EAAkBF,EAAGC,QAAzG,GAE7S,SAASL,EAAiBgB,GAAQ,GAAsB,qBAAXC,QAAmD,MAAzBD,EAAKC,OAAOC,WAA2C,MAAtBF,EAAK,cAAuB,OAAOH,MAAMC,KAAKE,GAEtJ,SAASjB,EAAmBD,GAAO,GAAIe,MAAMM,QAAQrB,GAAM,OAAOQ,EAAkBR,GAEpF,SAASQ,EAAkBR,EAAKsB,IAAkB,MAAPA,GAAeA,EAAMtB,EAAIzI,UAAQ+J,EAAMtB,EAAIzI,QAAQ,IAAK,IAAIF,EAAI,EAAGkK,EAAO,IAAIR,MAAMO,GAAMjK,EAAIiK,EAAKjK,IAAOkK,EAAKlK,GAAK2I,EAAI3I,GAAM,OAAOkK,EAkBhL,IAAIC,EAA0B,8FAEnB,EAAQ,CACjB1K,OAAQ,eAAS,GAAGP,OAAOwJ,EAAmB,QAAgC,CAAC,UAC/E0B,eAAgB,eAAS,OAAyB,GAAG,SAAU/M,GAC7D,OAAO,OAAUuM,KAAKS,OAAOhN,OAE/BiN,eAAgB,eAAS,QACzBC,oBAAqB,eAAS,OAAiB,IAC/CC,qBAAsB,eAAS,OAAiB,KAIvCC,EAAiB,eAAO,CACjC9M,MAAO,EACPc,KAAM,WACJ,MAAO,CAELiJ,YAAY,EAGZgD,YAAarJ,KAAKsJ,eAAetJ,KAAK5B,UAG1C0B,SAAU,CACRyJ,sBAAuB,WACrB,OAAO,eAAOvJ,KAAKkJ,qBAAuB,IAAI9K,OAAOoL,EAAA,OAEvDC,uBAAwB,WACtB,OAAO,eAAOzJ,KAAKmJ,sBAAwB,IAAI/K,OAAOoL,EAAA,OAExDE,uBAAwB,WACtB,IAAIC,EAAK,eAAU3J,KAAK+I,eAAgB,GAOxC,OAJIY,EAAK,GACP,OAAAC,EAAA,MAAKd,EAAyB,SAGzBa,GAETE,eAAgB,WACd,OAAO7J,KAAK8J,eAAgB9J,KAAK+J,qBAGnCC,cAAe,WACb,IAAIC,EAAgBjK,KAAKiK,cACrBC,EAAalK,KAAKkK,WAClBb,EAAcrJ,KAAKqJ,YACvB,MAAO,CACLY,cAAeA,EACfC,WAAYA,EACZb,YAAaA,IAIjBc,cAAe,WAEb,IAAIlB,EAAiBjJ,KAAKiJ,eAC1B,OAAO,eAAgBA,GAAkBA,EAAiB,MAI5DgB,cAAe,WAEb,IAAI/D,EAAQlG,KAAKkK,WACbE,EAAWpK,KAAKqJ,YAIhBgB,EAAWrK,KAAK6J,eAAiB7J,KAAKsK,gBAAgBtK,KAAKmK,cAAeC,IAAapK,KAAKuK,uBAAuBH,GAAY,KAEnI,OAAOC,GAAYnE,EAAMrH,OAAS,EAAIqH,EAAM9H,OAAOiM,GAAYnE,IAGnEf,MAAO,CAELuE,uBAAwB,SAAgCtE,IACjDA,GAAYpF,KAAKwK,gBACpBxK,KAAKyK,mBACLzK,KAAKqJ,YAAcrJ,KAAKsJ,eAAetJ,KAAK5B,UAIhDA,OAAQ,CAGNsM,MAAM,EACNC,QAAS,SAAiBC,GACxB,IAAIpI,EAAQxC,KAER6K,EAAU7K,KAAK0J,uBACnB1J,KAAKyK,mBAEDI,GAAWA,EAAU,EAEvB7K,KAAKwK,cAAgBM,YAAW,WAC9BtI,EAAM6G,YAAc7G,EAAM8G,eAAesB,KACxCC,GAGH7K,KAAKqJ,YAAcrJ,KAAKsJ,eAAesB,KAM7CZ,cAAe,SAAuB9M,GACpC,IAAI+M,EAAgB/M,EAAK+M,cACrBZ,EAAcnM,EAAKmM,YAEnBhD,GAAa,EAEZgD,EAGM,eAAWA,EAAa,KAAO,eAAWA,EAAa,IAEhEhD,GAAa,EACJgD,IAEThD,GAAa,GANbA,GAAa,EASXA,GACFrG,KAAKsF,MAAM,OAAqB2E,EAAeA,EAAcpL,QAG/DmB,KAAKqG,WAAaA,GAEpBA,WAAY,SAAoBjB,EAAUC,GACxC,IAAiB,IAAbD,IAAmC,IAAbC,EAAmB,CAG3C,IAAI6E,EAAalK,KAAKkK,WACtBlK,KAAKsF,MAAM,OAAqB4E,EAAYA,EAAWrL,WAI7DkM,QAAS,WACP,IAAIC,EAAShL,KAGbA,KAAKwK,cAAgB,KAMrBxK,KAAKiL,WAAU,WACbD,EAAO3E,WAAa6E,QAAQF,EAAO3B,iBAGvC8B,cAAe,WACbnL,KAAKyK,oBAEPrG,QAAS,CACPqG,iBAAkB,WAChBW,aAAapL,KAAKwK,eAClBxK,KAAKwK,cAAgB,MAEvBlB,eAAgB,SAAwBc,GAEtC,OAAIpK,KAAK6J,gBAAmB7J,KAAKmK,eAAmB,eAASC,IAAa,eAASA,GAS5E,eAAUA,GANR,IASXE,gBAAiB,SAAyBD,EAAUD,GAOlD,IAAKC,IAAa,eAAWA,KAAcD,GAAY,eAAWA,EAAU,KAAO,eAAWA,EAAU,IACtG,OAAO,KAIT,IAAIiB,EAAK,SAAYC,GAGnB,OAAOjB,EAASiB,EAAMlB,IAIxB,OAAOiB,GAETd,uBAAwB,SAAgCH,GACtD,IAAImB,EAASvL,KAIb,IAAKoK,IAAc,eAASA,KAAa,eAASA,GAEhD,OAAO,KAIT,IAAIoB,EAASpB,EAEb,GAAI,eAASoB,GAAS,CAGpB,IAAIC,EAAU,eAAarB,GAAUsB,QAAQ,OAAW,QAGxDF,EAAS,IAAIG,OAAO,KAAK9N,OAAO4N,EAAS,MAAO,KAIlD,IAAIJ,EAAK,SAAYC,GAenB,OADAE,EAAOI,UAAY,EACZJ,EAAOjD,KAAK,EAAsB+C,EAAMC,EAAOhC,sBAAuBgC,EAAO9B,uBAAwB8B,EAAOM,qBAIrH,OAAOR,M,wBCnQF,GAAQ,CACjBS,YAAa,eAAS,OAAyB,GAC/CC,QAAS,eAAS,OAAyB,IAIlCC,GAAkB,eAAO,CAClC1P,MAAO,GACPwD,SAAU,CACRmM,YAAa,WACX,OAAOjM,KAAK8J,eAAgB9J,KAAKkM,kBAEnCC,eAAgB,WACd,IAAIlG,EAAmB,eAAgBjG,MACnCoM,EAAcnG,EAAiBmG,YAC/BnC,EAAgBhE,EAAiBgE,cACjCC,EAAajE,EAAiBiE,WAE9BhE,EAAQkG,GAAenC,GAAiBC,GAAc,GACtD4B,EAAc,OAAAO,EAAA,MAAQ,eAAUrM,KAAK8L,YAAa,GAAI,GACtDC,EAAU,OAAAM,EAAA,MAAQ,eAAUrM,KAAK+L,QAAS,GAAI,GAQlD,OANI/L,KAAKiM,aAAeF,IAEtB7F,EAAQA,EAAMiC,OAAO2D,EAAc,GAAKC,EAASD,EAAcC,IAI1D7F,M,aCtBToG,GAA4B,eAAiB,QAAY,QACzDC,GAAiC,eAAuB,QAAY,QAE7D,GAAQ,CAGjBC,OAAQ,eAAS,QAEjBtG,MAAO,eAAS,OAA0B,IAC1C6D,oBAAqB,eAAS,QAAmB,GACjDmC,iBAAkB,eAAS,QAAmB,GAC9CO,kBAAmB,eAAS,QAAmB,IAItCC,GAAgB,eAAO,CAChCjN,OAAQ,CAAC,SACTnD,MAAO,GACPwD,SAAU,CACRgK,YAAa,WACX,OAAO,eAAW9J,KAAKkG,QAEzByG,uBAAwB,WAKtB,IAAIC,EAAM,CACRJ,OAAQxM,KAAKwM,OACbpO,OAAQ,KACRyO,OAAQ,KACRC,SAAU,KACVf,QAAS,KACTD,YAAa,MAkBf,OAfK9L,KAAK+J,sBAER6C,EAAIxO,OAAS4B,KAAKqJ,aAGfrJ,KAAKyM,oBACRG,EAAIC,OAAS7M,KAAK+M,YAClBH,EAAIE,SAAW9M,KAAKgN,eAGjBhN,KAAKkM,mBACRU,EAAIb,QAAU/L,KAAK+L,QACnBa,EAAId,YAAc9L,KAAK8L,aAGlB,eAAMc,KAGjBzH,MAAO,CAELe,MAAO,SAAed,IAEhBpF,KAAK8J,aAAe,eAAW1E,KACjCpF,KAAKiL,UAAUjL,KAAKiN,kBAGxBN,uBAAwB,SAAgCvH,EAAUC,GAE3D,eAAWD,EAAUC,IACxBrF,KAAKiL,UAAUjL,KAAKiN,mBAI1BC,QAAS,WACP,IAAI1K,EAAQxC,MAGRA,KAAK8J,aAAiB9J,KAAKkK,YAAyC,IAA3BlK,KAAKkK,WAAWrL,QAE3DmB,KAAKiN,kBAIPjN,KAAKmN,aAAaZ,IAAgC,SAAUa,GACtDA,IAAO5K,EAAM4K,IAAMA,IAAO5K,GAC5BA,EAAM6K,cAIZjJ,QAAS,CACPiJ,QAAS,WACP,IAAIpH,EAAmB,eAAgBjG,MACnCkG,EAAQD,EAAiBC,MACzBmH,EAAUpH,EAAiBoH,QAC3BnI,EAAee,EAAiBf,aAGpClF,KAAKsN,KAAK,OAAsBD,GAE5BnI,EAEElF,KAAKiF,WAAajF,KAAK8J,aAEzB9J,KAAKuN,IAAI,OAAsBF,IAGjCrN,KAAKwN,gBAEDxN,KAAK8J,YACP9J,KAAKiL,UAAUjL,KAAKiN,iBAGpBjN,KAAKkK,WAAa,eAAQhE,GAASA,EAAMiC,QAAU,KAKzDsF,kBAAmB,SAA2BvH,GAC5ClG,KAAKkK,WAAa,eAAQhE,GAASA,EAAMiC,QAAU,GACnDnI,KAAKiF,WAAY,EACjBjF,KAAKsF,MAAM,QAEPtF,KAAKoN,IACPpN,KAAK0N,WAAWpB,GAA2BtM,KAAKoN,KAGpDH,gBAAiB,WACf,IAAIjC,EAAShL,KAGRA,KAAK8J,cAMN,eAAgB9J,MAAMkF,aAExBlF,KAAKiL,UAAUjL,KAAKqN,UAKtBrN,KAAKiF,WAAY,EAEjBjF,KAAKiL,WAAU,WACb,IAEE,IAAI7N,EAAO4N,EAAO9E,MAAM8E,EAAO2C,QAAS3C,EAAOyC,mBAE3C,eAAUrQ,GAEZA,EAAKwQ,MAAK,SAAU1H,GAElB8E,EAAOyC,kBAAkBvH,MAElB,eAAQ9I,GAEjB4N,EAAOyC,kBAAkBrQ,GAGG,IAAxB4N,EAAO9E,MAAMrH,SAMf,OAAA+K,EAAA,MAAK,kFAAmF,SACxFoB,EAAO/F,WAAY,GAGvB,MAAO4I,GAKP,OAAAjE,EAAA,MAAK,4BAA4B/L,OAAOgQ,EAAE/Q,KAAM,MAAMe,OAAOgQ,EAAEC,QAAS,KAAM,SAC9E9C,EAAO/F,WAAY,EAEnB+F,EAAOsC,KAAK,OAAsBtC,EAAOqC,mBC5LnD,SAAS,GAAgBvR,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAc3M,ICdIiS,GAAQC,GDcRC,GAAe,CAAC,QAAS,QAAS,UAClCC,GAAY,OAEL,GAAQ,CAEjBC,gBAAiB,eAAS,QAAmB,GAC7CC,WAAY,eAAS,OAAkB,SAAS,SAAUpS,GACxD,OAAO,OAAAoL,EAAA,MAAc6G,GAAcjS,MAErCqS,WAAY,eAAS,QAAmB,GACxCC,gBAAiB,eAAS,OAAkB,WAInCC,GAAkB,eAAO,CAClCjS,MAAO,GACPc,KAAM,WACJ,MAAO,CACLoR,aAAc,GACdC,iBAAkB,IAGtB3O,SAAU,CACR4O,aAAc,WACZ,OAAO1O,KAAKqO,YAAcrO,KAAKoO,YAEjCO,sBAAuB,WACrB,OAAO3O,KAAK0O,eAAiB1O,KAAKmO,iBAEpCS,uBAAwB,WACtB,OAAO,GAETC,uBAAwB,WACtB,IAAIL,EAAexO,KAAKwO,aACxB,OAAOxO,KAAK0O,cAAgBF,GAAgBA,EAAa3P,OAAS,GAAK2P,EAAaM,KAAKtF,EAAA,OAE3FuF,wBAAyB,WACvB,OAAO/O,KAAK0O,cAAgB,OAAAtH,EAAA,MAAc,CAAC,QAAS,SAAUpH,KAAKoO,aAErEY,uBAAwB,WACtB,IAAI9R,EAEAwR,EAAe1O,KAAK0O,aACxB,OAAOxR,EAAO,CACZ,qBAAsBwR,GACrB,GAAgBxR,EAAM,kBAAkBW,OAAOmC,KAAKoO,YAAaM,GAAe,GAAgBxR,EAAM,oBAAqB8C,KAAK6O,wBAAyB,GAAgB3R,EAAM,8BAA+BwR,IAAiB1O,KAAK2O,uBAAwBzR,GAEjQ+R,qBAAsB,WACpB,IAAKjP,KAAK0O,aACR,MAAO,GAGT,IAAIlS,EAAOwD,KAAKqB,QAAQ7E,MAAQ0R,GAChC,MAAO,CACL1R,KAAMA,EAIN,uBAAwBA,IAAS0R,GAAY,eAASlO,KAAK+O,yBAA2B,QAI5F5J,MAAO,CACLgB,cAAe,SAAuBf,EAAUC,GAE9C,IAAI6J,GAAQ,EAEZ,GAAIlP,KAAK0O,cAAgB1O,KAAKwO,aAAa3P,OAAS,EAAG,CAErDqQ,EAAQ,eAAQ9J,IAAa,eAAQC,IAAaD,EAASvG,SAAWwG,EAASxG,OAE/E,IAAK,IAAIF,EAAI,EAAGuQ,GAASvQ,EAAIyG,EAASvG,OAAQF,IAE5CuQ,EAAQ,eAAW,EAAY9J,EAASzG,IAAK,EAAY0G,EAAS1G,KAIjEuQ,GACHlP,KAAKwN,iBAGTa,WAAY,SAAoBjJ,GAC9BpF,KAAKwN,gBACLxN,KAAKmP,qBAAqB/J,IAE5BgJ,WAAY,WACVpO,KAAKwN,iBAEPmB,sBAAuB,SAA+BvJ,GACpDpF,KAAKwN,gBACLxN,KAAKmP,sBAAsB/J,IAE7BoJ,aAAc,SAAsBY,EAAe/J,GACjD,IAAI7C,EAAQxC,KAEZ,GAAIA,KAAK0O,eAAiB,eAAWU,EAAe/J,GAAW,CAC7D,IAAIa,EAAQ,GAEZkJ,EAAcrQ,SAAQ,SAAUsQ,EAAGC,GAC7BD,GACFnJ,EAAM3H,KAAKiE,EAAM2D,cAAcmJ,OAInCtP,KAAKsF,MAAM,OAAyBY,MAI1CqJ,YAAa,WAEPvP,KAAK0O,cACP1O,KAAKmP,sBAAqB,IAG9B/K,QAAS,CAEPoL,UAAW,SAAmBC,GAE5B,GAAIzP,KAAK0O,cAAgB,eAASe,IAAUA,GAAS,GAAKA,EAAQzP,KAAKmG,cAActH,SAAWmB,KAAK0P,cAAcD,GAAQ,CACzH,IAAIjB,EAAexO,KAAK+O,wBAA0B/O,KAAKwO,aAAarG,QAAU,GAC9EqG,EAAaiB,IAAS,EACtBzP,KAAK2P,qBAAuB,EAC5B3P,KAAKwO,aAAeA,IAGxBoB,YAAa,SAAqBH,GAEhC,GAAIzP,KAAK0O,cAAgB,eAASe,IAAUzP,KAAK0P,cAAcD,GAAQ,CACrE,IAAIjB,EAAexO,KAAKwO,aAAarG,QACrCqG,EAAaiB,IAAS,EACtBzP,KAAK2P,qBAAuB,EAC5B3P,KAAKwO,aAAeA,IAGxBqB,cAAe,WACb,IAAIhR,EAASmB,KAAKmG,cAActH,OAE5BmB,KAAK0O,cAAgB7P,EAAS,IAChCmB,KAAK2P,qBAAuB,EAC5B3P,KAAKwO,aAAexO,KAAK+O,wBAA0B,eAAYlQ,GAAQ,GAAQ,EAAC,KAGpF6Q,cAAe,SAAuBD,GAEpC,SAAU,eAASA,KAAUzP,KAAKwO,aAAaiB,KAEjDjC,cAAe,WAEbxN,KAAK2P,qBAAuB,EAC5B3P,KAAKwO,aAAe,IAGtBsB,qBAAsB,SAA8BL,GAClD,GAAIzP,KAAK0O,cAAgB1O,KAAK0P,cAAcD,GAAQ,CAClD,IAAI7S,EAAUoD,KAAKsO,gBACnB,OAAO,GAAgB,CACrB,wBAAwB,GACvB,GAAGzQ,OAAOmC,KAAK6C,KAAO,KAAO,QAAS,KAAKhF,OAAOjB,GAAUA,GAGjE,MAAO,IAETmT,mBAAoB,SAA4BN,GAC9C,MAAO,CACL,gBAAkBzP,KAAK0O,aAAsB1O,KAAK0P,cAAcD,GAAS,OAAS,QAA5C,OAG1CN,qBAAsB,SAA8B3N,GAClD,IAAIwO,EAASxO,IAAOxB,KAAKmO,gBAAkB,MAAQ,OAEnDnO,KAAKgQ,GAAQ,OAAwBhQ,KAAKiQ,kBAE1CjQ,KAAKgQ,GAAQ,OAAqBhQ,KAAKwN,eACvCxN,KAAKgQ,GAAQ,OAA4BhQ,KAAKwN,gBAEhDyC,iBAAkB,SAA0B3E,EAAMmE,EAAOjK,GAEvD,GAAKxF,KAAK0O,eAAgB1O,KAAKmO,gBAA/B,CAMA,IAAIC,EAAapO,KAAKoO,WAClBK,EAAkBzO,KAAKyO,gBACvBD,EAAexO,KAAKwO,aAAarG,QACjC+H,GAAY1B,EAAaiB,GAE7B,GAAmB,WAAfrB,EACFI,EAAe,QACV,GAAmB,UAAfJ,EACT,GAAIK,GAAmB,GAAKjJ,EAAM2K,SAAU,CAE1C,IAAK,IAAIb,EAAM,OAAAjD,EAAA,MAAQoC,EAAiBgB,GAAQH,GAAO,OAAAjD,EAAA,MAAQoC,EAAiBgB,GAAQH,IACtFd,EAAac,IAAO,EAGtBY,GAAW,OAEL1K,EAAM4K,SAAW5K,EAAM6K,UAE3B7B,EAAe,GACf0B,GAAW,GAGTA,IAAUlQ,KAAKyO,gBAAkBgB,GAIzCjB,EAAaiB,GAASS,EACtBlQ,KAAKwO,aAAeA,OA/BlBxO,KAAKwN,oB,0BE5LT,GAAiB,SAAwBxR,GAC3C,OAAI,eAAkBA,GACb,GAGL,eAAUA,GACL,eAAQA,EAAOA,GAGjBA,GAYE,GAAqB,SAA4BsU,EAAGC,GAC7D,IAAIrT,EAAO0B,UAAUC,OAAS,QAAsB+H,IAAjBhI,UAAU,GAAmBA,UAAU,GAAK,GAC3E4R,EAActT,EAAK2P,OACnBA,OAAyB,IAAhB2D,EAAyB,KAAOA,EACzCC,EAAiBvT,EAAKgK,UACtBA,OAA+B,IAAnBuJ,EAA4B,KAAOA,EAC/CC,EAAcxT,EAAKyT,OACnBA,OAAyB,IAAhBD,OAAyB9J,EAAY8J,EAC9CE,EAAqB1T,EAAK2T,cAC1BA,OAAuC,IAAvBD,EAAgC,GAAKA,EACrDE,EAAgB5T,EAAK6T,SACrBA,OAA6B,IAAlBD,GAAmCA,EAG9CE,EAAK,OAAAC,GAAA,MAAIX,EAAGzD,EAAQ,MACpBqE,EAAK,OAAAD,GAAA,MAAIV,EAAG1D,EAAQ,MAaxB,OAXI,eAAW3F,KACb8J,EAAK9J,EAAU8J,EAAInE,EAAQyD,GAC3BY,EAAKhK,EAAUgK,EAAIrE,EAAQ0D,IAM7BS,EAAK,GAAeA,GACpBE,EAAK,GAAeA,GAEhB,eAAOF,IAAO,eAAOE,IAAO,eAASF,IAAO,eAASE,GAGhDF,EAAKE,GAAM,EAAIF,EAAKE,EAAK,EAAI,EAC3BH,GAAmB,KAAPC,GAAoB,KAAPE,EAE3B,EACEH,GAAmB,KAAPC,GAAoB,KAAPE,GAE1B,EAIH,eAAsBF,GAAIG,cAAc,eAAsBD,GAAKP,EAAQE,IDjEpF,SAAS/S,GAAQC,EAAQC,GAAkB,IAAIC,EAAOhC,OAAOgC,KAAKF,GAAS,GAAI9B,OAAOiC,sBAAuB,CAAE,IAAIC,EAAUlC,OAAOiC,sBAAsBH,GAASC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOpC,OAAOqC,yBAAyBP,EAAQM,GAAKlC,eAAiB8B,EAAKM,KAAKC,MAAMP,EAAME,GAAY,OAAOF,EAE9U,SAASQ,GAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,GAAIA,EAAI,EAAIb,GAAQ7B,OAAO6C,IAAS,GAAIC,SAAQ,SAAUhD,GAAO,GAAgB2C,EAAQ3C,EAAK+C,EAAO/C,OAAYE,OAAO+C,0BAA4B/C,OAAOgD,iBAAiBP,EAAQzC,OAAO+C,0BAA0BF,IAAWhB,GAAQ7B,OAAO6C,IAASC,SAAQ,SAAUhD,GAAOE,OAAOC,eAAewC,EAAQ3C,EAAKE,OAAOqC,yBAAyBQ,EAAQ/C,OAAa,OAAO2C,EAEjf,SAAS,GAAgB5C,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAa3M,IAAIsV,GAA0B,SAC1BC,GAA2B,QAA0BD,GACrDE,GAA4B,WAC5BC,GAA6B,QAA0BD,GACvDE,GAAqB,MACrBC,GAAsB,OACtBC,GAAsB,OACtBC,GAAkB,CAACH,GAAoBC,GAAqBC,IAErD,IAAS3D,GAAS,CAC3B6D,aAAc,eAAS,OAAkB,2BACzCC,eAAgB,eAAS,OAAkB,0BAC3CC,cAAe,eAAS,OAAkB,4BAC1CC,gBAAiB,eAAS,QAAmB,GAC7CC,eAAgB,eAAS,QAAmB,GAK5CC,YAAa,eAAS,QAAmB,IACxC,GAAgBlE,GAAQqD,GAAyB,eAAS,SAAoB,GAAgBrD,GAAQ,cAAe,eAAS,SAAsB,GAAgBA,GAAQ,oBAAqB,eAAS,SAA0B,GAAgBA,GAAQ,qBAAsB,eAAS,OAAkB,CAC9SmE,SAAS,KACN,GAAgBnE,GAAQuD,GAA2B,eAAS,QAAmB,IAAS,GAAgBvD,GAAQ,gBAAiB,eAAS,OAAkByD,IAAoB,SAAUxV,GAC7L,OAAO,OAAAoL,EAAA,MAAcuK,GAAiB3V,OACnC,GAAgB+R,GAAQ,eAAgB,eAAS,QAAmB,IAAS,GAAgBA,GAAQ,eAAgB,eAAS,QAAmB,IAASA,IAGpJoE,GAAe,eAAO,CAC/B7V,MAAO,GACPc,KAAM,WACJ,MAAO,CACL2P,YAAa/M,KAAKoR,KAA4B,GAC9CpE,cAAehN,KAAKsR,MAA8B,IAGtDxR,SAAU,CACRsS,aAAc,WACZ,OAAOpS,KAAK8J,cAAgB9J,KAAKyM,mBAAqBzM,KAAKgS,gBAE7DK,WAAY,WACV,OAAOrS,KAAKuE,eAAeuK,MAAK,SAAUwD,GACxC,OAAOA,EAAEC,aAKbnG,YAAa,WACX,IAAInG,EAAmB,eAAgBjG,MACnC6M,EAAS5G,EAAiB8G,YAC1BD,EAAW7G,EAAiB+G,cAC5B2D,EAAS1K,EAAiBuM,kBAC1BzB,EAAW9K,EAAiBwM,aAC5BC,EAAczM,EAAiByM,YAC/BN,EAAenM,EAAiBmM,aAChCnI,EAAgBhE,EAAiBgE,cACjCC,EAAajE,EAAiBiE,WAE9BhE,GAAS+D,GAAiBC,GAAc,IAAI/B,QAE5C0I,EAAgBpS,GAAcA,GAAc,GAAIuB,KAAK2S,oBAAqB,GAAI,CAChFC,MAAO,SAGT,GAAI/F,GAAUuF,EAAc,CAC1B,IAAIpL,EAAQhH,KAAK6L,kBAAkBgB,IAAW,GAC1CgG,EAAkB7L,EAAM6L,gBACxB3L,EAAY,eAAW2L,GAE3BA,EAAkBA,EAAkB7S,KAAK8S,kBAAkBjG,QAAUjG,EAErE,OAAO,gBAAWV,GAAO,SAAUoK,EAAGC,GACpC,IAAIxJ,EAAS,KAsBb,OApBI,eAAW2L,KAIb3L,EAAS2L,EAAYpC,EAAGC,EAAG1D,EAAQC,EAAU5F,EAAW2J,EAAeF,KAKrE,eAAkB5J,KAAsB,IAAXA,KAC/BA,EAAS,GAAmBuJ,EAAGC,EAAG,CAChC1D,OAAQA,EACR3F,UAAWA,EACXyJ,OAAQA,EACRE,cAAeA,EACfE,SAAUA,MAKNhK,GAAU,IAAM+F,GAAY,EAAI,MAI5C,OAAO5G,IAGXf,OAAQ6I,GAAS,CAEfqE,WAAY,SAAoBjN,GAC1BA,EACEpF,KAAKqS,YACPrS,KAAKuN,IAAI,OAAyBvN,KAAK+S,YAGzC/S,KAAKsN,KAAK,OAAyBtN,KAAK+S,cAG3C,GAAgB/E,GAAQsD,IAA2B,SAAUlM,GAE1DA,IAAapF,KAAKgN,gBAItBhN,KAAKgN,cAAgB5H,IAAY,MAC/B,GAAgB4I,GAAQoD,IAAyB,SAAUhM,GAEzDA,IAAapF,KAAK+M,cAItB/M,KAAK+M,YAAc3H,GAAY,OAC7B,GAAgB4I,GAAQ,iBAAiB,SAAuB5I,EAAUC,GAExED,IAAaC,GACfrF,KAAKsF,MAAMiM,GAA4BnM,MAEvC,GAAgB4I,GAAQ,eAAe,SAAqB5I,EAAUC,GACpED,IAAaC,GACfrF,KAAKsF,MAAM+L,GAA0BjM,MAErC4I,IACJjD,QAAS,WACH/K,KAAKqS,YACPrS,KAAKuN,IAAI,OAAyBvN,KAAK+S,aAG3C3O,QAAS,CAGP2O,WAAY,SAAoBhX,EAAKiL,EAAOxB,EAAOwN,GACjD,IAAIxQ,EAAQxC,KAEZ,GAAKA,KAAKqS,cAKNW,IAAUhT,KAAK+R,iBAAnB,CAMA,IAAIkB,GAAc,EAEdC,EAAsB,WACxB,IAAIC,EAAgBnM,EAAMmM,eAAiB3Q,EAAM2Q,cAE7CA,IAAkB3B,GACpBhP,EAAMwK,eAAgB,EACbmG,IAAkB1B,KAC3BjP,EAAMwK,eAAgB,IAM1B,GAAIhG,EAAMuL,SAAU,CAClB,IAAIa,GAAWpT,KAAKoS,cAAgBpL,EAAMoM,QAAUpM,EAAMoM,QAAUrX,EAEhEiE,KAAK+M,cAAgBqG,EAEvBpT,KAAKgN,eAAiBhN,KAAKgN,eAG3BhN,KAAK+M,YAAcqG,EAEnBF,KAGFD,GAAc,OACLjT,KAAK+M,cAAgB/M,KAAKiS,cACnCjS,KAAK+M,YAAc,GACnBmG,IACAD,GAAc,GAGZA,GAEFjT,KAAKsF,MAAM,OAAyBtF,KAAK2N,WAI7C0F,mBAAoB,SAA4BtX,EAAKiL,EAAOgM,GAC1D,MAAO,CAEL,yBAA0BhM,EAAMuL,UAAYvS,KAAKsT,gBAAkBN,GAAUhT,KAAK+R,mBAGtFwB,iBAAkB,SAA0BxX,EAAKiL,EAAOgM,GACtD,IAAIQ,EAEAnB,EAAarS,KAAKqS,WAClBN,EAAkB/R,KAAK+R,gBACvB/E,EAAgBhN,KAAKgN,cACrBD,EAAc/M,KAAK+M,YACnBqF,EAAepS,KAAKoS,aAExB,IAAKC,GAAcW,GAAUjB,EAE3B,MAAO,GAGT,IAAIQ,EAAWvL,EAAMuL,SACjBa,EAAWhB,EAA+GrW,EAA3D,QAApCyX,EAAiBxM,EAAMoM,eAAwC,IAAnBI,EAA4BA,EAAiBzX,EAEpH0X,EAAWlB,GAAYxF,IAAgBqG,EAAUpG,EAAgB,aAAe,YAAcuF,EAAW,OAAS,KAEtH,MAAO,CACL,YAAakB,IAIjBC,iBAAkB,SAA0B3X,EAAKiL,EAAOgM,GAEtD,IAAKhT,KAAKqS,YAAcW,GAAUhT,KAAK+R,gBACrC,OAAO,KAGT,IAAIhF,EAAc/M,KAAK+M,YACnBC,EAAgBhN,KAAKgN,cACrB4E,EAAe5R,KAAK4R,aACpBE,EAAgB9R,KAAK8R,cACrBS,EAAWvL,EAAMuL,SAEjBoB,EAAe,GAEnB,GAAIpB,EACF,GAAIxF,IAAgBhR,EAElB4X,EAAe3G,EAAgB4E,EAAeE,MACzC,CAIL6B,EAAe3G,EAAgB8E,EAAgBF,EAE/C,IAAIuB,EAAgBnT,KAAKmT,eAAiBnM,EAAMmM,cAE5CA,IAAkB3B,GACpBmC,EAAe/B,EACNuB,IAAkB1B,KAC3BkC,EAAe7B,QAGT9R,KAAKiS,cAEf0B,EAAe5G,EAAc/M,KAAK6R,eAAiB,IAIrD,OAAO,eAAK8B,IAAiB,S,iEEvRxB,GAAQ,GAGRC,GAAc,eAAO,CAC9BxP,QAAS,CACPyP,aAAc,WACZ,IAAIvP,EAAStE,KAAKuE,eACdC,EAAUxE,KAAKwE,QACfC,EAAezE,KAAKyE,aACpBC,EAAc1E,KAAK0E,YACnBzH,EAAI+C,KAAK2E,eAGb,OAAK3E,KAAK4E,kBAAkB,WAAkC,IAAZJ,GAAgC,KAAZA,EAI/DvH,EAAE,OAAK,CACZS,YAAa,kBACbE,MAAO,CAAC,eAAW6G,GAAgBA,EAAa,KAAM,WAAaA,GACnE9G,MAAO,eAAW+G,GAAeA,EAAY,KAAM,WAAaA,EAChE3I,IAAK,aACJ,CAACiE,KAAKuB,cAAc,QAAmB,CACxCsD,QAASP,EAAOzF,OAChByF,OAAQA,MAVDrH,QCnBf,SAAS,GAAQc,EAAQC,GAAkB,IAAIC,EAAOhC,OAAOgC,KAAKF,GAAS,GAAI9B,OAAOiC,sBAAuB,CAAE,IAAIC,EAAUlC,OAAOiC,sBAAsBH,GAASC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOpC,OAAOqC,yBAAyBP,EAAQM,GAAKlC,eAAiB8B,EAAKM,KAAKC,MAAMP,EAAME,GAAY,OAAOF,EAE9U,SAAS,GAAcS,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,GAAIA,EAAI,EAAI,GAAQ1C,OAAO6C,IAAS,GAAIC,SAAQ,SAAUhD,GAAO,GAAgB2C,EAAQ3C,EAAK+C,EAAO/C,OAAYE,OAAO+C,0BAA4B/C,OAAOgD,iBAAiBP,EAAQzC,OAAO+C,0BAA0BF,IAAW,GAAQ7C,OAAO6C,IAASC,SAAQ,SAAUhD,GAAOE,OAAOC,eAAewC,EAAQ3C,EAAKE,OAAOqC,yBAAyBQ,EAAQ/C,OAAa,OAAO2C,EAEjf,SAAS,GAAgB5C,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EA4BpM,IAAI,GAAQ,eAAsB,eAAS,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAc,GAAIsR,EAAA,MAAU,GAAiB,GAAY,QAAe,QAAgB,GAAa,GAAiB,QAAa,IAAkB,IAAgB,IAAkB,IAAe,SAAe,SAAqB,SAAa,SAAa,SAAa,KAAe,SAGrjBtJ,GAAsB,eAAO,CACtChH,KAAM,QAGN2C,OAAQ,CACR9B,EAAA,KAAY,OAAkByP,EAAA,KAAS,OACvC,OAAY,QAAoB,QAAc,QAAY,QAAY,QACtE,QAAchE,EAAgB+I,GAAcnG,GAAiB,OAAc,OAAeuC,GAAiBxI,EAAY6N,GAAazP,EAAgBa,EAAW0H,IAC/JpQ,MAAO,M,oCC3CT,mIAASwB,EAAQC,EAAQC,GAAkB,IAAIC,EAAOhC,OAAOgC,KAAKF,GAAS,GAAI9B,OAAOiC,sBAAuB,CAAE,IAAIC,EAAUlC,OAAOiC,sBAAsBH,GAASC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOpC,OAAOqC,yBAAyBP,EAAQM,GAAKlC,eAAiB8B,EAAKM,KAAKC,MAAMP,EAAME,GAAY,OAAOF,EAE9U,SAASQ,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,GAAIA,EAAI,EAAIb,EAAQ7B,OAAO6C,IAAS,GAAIC,SAAQ,SAAUhD,GAAOF,EAAgB6C,EAAQ3C,EAAK+C,EAAO/C,OAAYE,OAAO+C,0BAA4B/C,OAAOgD,iBAAiBP,EAAQzC,OAAO+C,0BAA0BF,IAAWhB,EAAQ7B,OAAO6C,IAASC,SAAQ,SAAUhD,GAAOE,OAAOC,eAAewC,EAAQ3C,EAAKE,OAAOqC,yBAAyBQ,EAAQ/C,OAAa,OAAO2C,EAEjf,SAAS7C,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAU3M,IAAIgY,EAAQ,QACRC,EAAO,OAEAzX,EAAQ,eAAsB,CACvCM,QAAS,eAAS,SACjB,SAMQ+G,EAAmB,eAAO,CACnC7G,KAAM,QACN2C,OAAQ,CAAC,OAAY,OAAgB,QACrC8C,QAAS,WACP,IAAIC,EAAQxC,KAEZ,MAAO,CACLL,aAAc,WACZ,OAAO6C,KAIb9C,OAAQ,CACN+C,mBAAoB,CAClB7C,QAEA,WACE,OAAO,WACL,MAAO,OAKfC,cAAc,EACdvD,MAAOA,EACPwD,SAAU,CACRkU,gBAAiB,WACf,OAAOhU,KAAKyC,sBAGdxC,QAAS,WACP,OAAOD,KAAKgU,gBAAgBC,SAG9B/T,QAAS,WACP,OAAOF,KAAKgU,gBAAgBpR,SAG9BzC,QAAS,WACP,OAAOH,KAAKgU,gBAAgBhQ,SAG9B5D,OAAQ,WACN,OAAOJ,KAAKgU,gBAAgB5T,QAG9BC,UAAW,WACT,OAAOL,KAAKgU,gBAAgB3T,WAG9BE,aAAc,WACZ,OAAOP,KAAKgU,gBAAgBzT,cAI9BC,eAAgB,WACd,OAAOR,KAAKgU,gBAAgBxT,gBAK9BC,gBAAiB,WACf,OAAQT,KAAKK,WAAaL,KAAKgU,gBAAgBvT,iBAGjDK,aAAc,WACZ,OAAOd,KAAKgU,gBAAgBlT,cAG9BF,YAAa,WACX,OAAOZ,KAAKE,QAAUF,KAAKgU,gBAAgBpT,YAAc,MAG3DC,YAAa,WACX,OAAOb,KAAKG,QAAUH,KAAKgU,gBAAgBnT,YAAc,MAE3DqT,UAAW,WACT,OAAOlU,KAAKY,cAAgBkT,GAAS9T,KAAKa,cAAgBiT,IAElD9T,KAAKY,cAAgBmT,GAAQ/T,KAAKa,cAAgBkT,GAEnD/T,KAAKI,SAEd+T,UAAW,WACT,IAAIvX,EAAUoD,KAAKpD,QACnB,MAAO,CAACA,EAAU,GAAGiB,OAAOmC,KAAKkU,UAAY,KAAO,QAAS,KAAKrW,OAAOjB,GAAW,OAEtFwX,QAAS,WACP,OAAO3V,EAAc,CACnBjC,KAAM,OACLwD,KAAKqB,WAGZrE,OAAQ,SAAgBC,GACtB,OAAOA,EAAE,KAAM,CACbW,MAAOoC,KAAKmU,UACZxW,MAAOqC,KAAKoU,QAEZ5S,GAAIxB,KAAKyB,aACRzB,KAAKuB,qB,kCC5HZ,mIAAS1F,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EASpM,IAAIQ,EAAQ,eAAsB,CACvCoF,UAAW,eAAS,QACpB2S,OAAQ,eAAS,OAAkB,QACnCC,QAAS,eAAS,QAClB3S,OAAQ,eAAS,QACjB4S,SAAU,eAAS,QAAmB,GACtC3X,QAAS,eAAS,QAClBiF,MAAO,eAAS,SACf,SAGQM,EAA4B,eAAO,CAC5CrF,KAAM,QACNC,YAAY,EACZT,MAAOA,EACPU,OAAQ,SAAgBC,EAAGC,GACzB,IAAIE,EAAOF,EAAKE,KACZd,EAAQY,EAAKZ,MACb+X,EAAS/X,EAAM+X,OACfxS,EAAQvF,EAAMuF,MACdF,EAASrF,EAAMqF,OACfD,EAAYpF,EAAMoF,UAClB9E,EAAUN,EAAMM,QAChB0X,EAAUhY,EAAMgY,QAChBE,EAAOvX,EAAE,OAAW,eAAUG,EAAM,CACtCd,MAAO,CACLK,KAAM,MACNkF,MAAOA,EACPF,OAAQA,EACRD,UAAWA,EACX9E,QAASA,GAEXgB,MAAO/B,EAAgB,GAAI,YAAYgC,OAAOyW,GAAUA,MAE1D,OAAOhY,EAAMiY,SAAWC,EAAOvX,EAAE,OAAS,CACxCX,MAAO,CACL+X,OAAQA,IAET,CAACG,Q,oXC/CR,SAAS1W,EAAQC,EAAQC,GAAkB,IAAIC,EAAOhC,OAAOgC,KAAKF,GAAS,GAAI9B,OAAOiC,sBAAuB,CAAE,IAAIC,EAAUlC,OAAOiC,sBAAsBH,GAASC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOpC,OAAOqC,yBAAyBP,EAAQM,GAAKlC,eAAiB8B,EAAKM,KAAKC,MAAMP,EAAME,GAAY,OAAOF,EAE9U,SAASQ,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,GAAIA,EAAI,EAAIb,EAAQ7B,OAAO6C,IAAS,GAAIC,SAAQ,SAAUhD,GAAOF,EAAgB6C,EAAQ3C,EAAK+C,EAAO/C,OAAYE,OAAO+C,0BAA4B/C,OAAOgD,iBAAiBP,EAAQzC,OAAO+C,0BAA0BF,IAAWhB,EAAQ7B,OAAO6C,IAASC,SAAQ,SAAUhD,GAAOE,OAAOC,eAAewC,EAAQ3C,EAAKE,OAAOqC,yBAAyBQ,EAAQ/C,OAAa,OAAO2C,EAEjf,SAAS7C,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAE3M,SAASuL,EAAmBC,GAAO,OAAOC,EAAmBD,IAAQE,EAAiBF,IAAQG,EAA4BH,IAAQI,IAElI,SAASA,IAAuB,MAAM,IAAIC,UAAU,wIAEpD,SAASF,EAA4BG,EAAGC,GAAU,GAAKD,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAOE,EAAkBF,EAAGC,GAAS,IAAIE,EAAI9L,OAAO+L,UAAUC,SAASC,KAAKN,GAAGO,MAAM,GAAI,GAAiE,MAAnD,WAANJ,GAAkBH,EAAEQ,cAAaL,EAAIH,EAAEQ,YAAYtL,MAAgB,QAANiL,GAAqB,QAANA,EAAoBM,MAAMC,KAAKV,GAAc,cAANG,GAAqB,2CAA2CQ,KAAKR,GAAWD,EAAkBF,EAAGC,QAAzG,GAE7S,SAASL,EAAiBgB,GAAQ,GAAsB,qBAAXC,QAAmD,MAAzBD,EAAKC,OAAOC,WAA2C,MAAtBF,EAAK,cAAuB,OAAOH,MAAMC,KAAKE,GAEtJ,SAASjB,EAAmBD,GAAO,GAAIe,MAAMM,QAAQrB,GAAM,OAAOQ,EAAkBR,GAEpF,SAASQ,EAAkBR,EAAKsB,IAAkB,MAAPA,GAAeA,EAAMtB,EAAIzI,UAAQ+J,EAAMtB,EAAIzI,QAAQ,IAAK,IAAIF,EAAI,EAAGkK,EAAO,IAAIR,MAAMO,GAAMjK,EAAIiK,EAAKjK,IAAOkK,EAAKlK,GAAK2I,EAAI3I,GAAM,OAAOkK,EAiBzK,IAAI,EAAQ,CACjB4L,eAAgB,eAAS,QACzB/P,YAAa,eAAS,QACtBD,aAAc,eAAS,GAAG5G,OAAOwJ,EAAmB,QAAgC,CAAC,WAI5EqN,EAAgB,eAAO,CAChCjV,OAAQ,CAAC,QACTnD,MAAO,EACP8H,QAAS,CAEPuQ,YAAa,SAAqBrJ,EAAMvP,EAAK6Y,EAASC,GACpD,IAAIC,EAAW9U,KAAK8U,SAEpB,GAAIF,EAAS,CACX,IAAI5Y,EAAQ,OAAAiV,EAAA,MAAI3F,EAAMvP,EAAK,IAE3B,OAAI,eAAW6Y,GACNA,EAAQ5Y,EAAOD,EAAKuP,GAClB,eAASsJ,IAAY,eAAWE,EAASF,IAC3CE,EAASF,GAAS5Y,EAAOD,EAAKuP,GAGhCsJ,EAGT,OAAOC,GAETE,YAAa,SAAqBzJ,EAAMvP,EAAKiZ,EAASrY,EAAMkY,GAC1D,IAAIC,EAAW9U,KAAK8U,SAEpB,GAAIE,EAAS,CACX,IAAIhZ,EAAQ,OAAAiV,EAAA,MAAI3F,EAAMvP,EAAK,IAE3B,OAAI,eAAWiZ,GACNA,EAAQhZ,EAAOD,EAAKuP,EAAM3O,GACxB,eAASqY,IAAY,eAAWF,EAASE,IAC3CF,EAASE,GAAShZ,EAAOD,EAAKuP,EAAM3O,GAGtCqY,EAGT,OAAOH,GAGTI,kBAAmB,SAA2B3J,EAAMtE,GAClD,IAAIjL,EAAMiL,EAAMjL,IACZmL,EAAYlH,KAAK8S,kBAAkB/W,GACnCC,EAAQ,OAAAiV,EAAA,MAAI3F,EAAMvP,EAAK,MAM3B,OAJI,eAAWmL,KACblL,EAAQkL,EAAUlL,EAAOD,EAAKuP,IAGzB,eAAkBtP,GAAS,GAAKA,GAGzCkZ,qBAAsB,SAA8BC,EAAgB7J,GAClE,IAAI9I,EAAQxC,KAGZ,OAAO,WACDmV,GACF3S,EAAM4S,KAAK9J,EAAM,QAAyBA,EAAK,WAKrD+J,WAAY,SAAoB7P,GAGzBxF,KAAKsV,qBAAqB9P,IAE7BxF,KAAKuV,kBAAkB,OAAwB/P,IAGnDgQ,aAAc,SAAsBhQ,GAG7BxF,KAAKsV,qBAAqB9P,IAE7BxF,KAAKuV,kBAAkB,OAA0B/P,IAIrDiQ,mBAAoB,SAA4BzO,EAAO0O,EAAUpK,EAAMqK,GACrE,IAAI3K,EAAShL,KAETK,EAAYL,KAAKK,UACjBtE,EAAMiL,EAAMjL,IACZQ,EAAQyK,EAAMzK,MACdqZ,EAAc5O,EAAM4O,YACpB3Y,EAAI+C,KAAK2E,eACTwQ,EAAiBnV,KAAK4E,kBAAkB,SACxCiR,EAAY7V,KAAKiV,kBAAkB3J,EAAMtE,GACzCzH,GAAgBc,IAAcL,KAAKO,cAAgBP,KAAK8C,eAAiBkE,EAAMzH,aAI/EuW,EAAUvW,EAAeqW,EAAc,OAAM,OAAMA,EAAc,KAAO,KACxEG,EAAczK,EAAK,SAA2BA,EAAK,QAAwBvP,GAAOuP,EAAK,QAAwBvP,GAAOiL,EAAMpK,SAAW,KACvIQ,EAAO,CAKTQ,MAAO,CAACoJ,EAAMpJ,MAAQoJ,EAAMpJ,MAAQ,GAAIoC,KAAK2U,YAAYrJ,EAAMvP,EAAKiL,EAAMgP,QAAS,KACnF1Z,MAAO,GACPqB,MAAOc,EAAc,CACnB,gBAAiBuK,OAAO0M,EAAW,IAClCE,EAAc5V,KAAK+U,YAAYzJ,EAAMvP,EAAKiL,EAAMiP,OAAQ,MAAO,IAAMjW,KAAK2U,YAAYrJ,EAAMvP,EAAKiL,EAAMkP,OAAQ,KAClHna,IAAK,OAAO8B,OAAO8X,EAAU,UAAU9X,OAAO6X,EAAU,KAAK7X,OAAO9B,IAGlEwD,EAEFnC,EAAKd,MAAQ,CACXgD,eAAgBe,EAAY9D,EAAQ,KACpCgD,cAAc,EACd3C,QAASmZ,IAKX3Y,EAAKO,MAAM,cAAgB0C,IAAc,eAAkB9D,GAAS,eAASA,GAAS,KACtFa,EAAKO,MAAMnB,KAAOoZ,EAAc,YAAc,OAC9CxY,EAAKO,MAAMyD,MAAQwU,EAAc,MAAQ,KAErCG,GACF3Y,EAAKQ,MAAMW,KAAK,GAAGV,OAAOmC,KAAK6C,KAAO,KAAO,QAAS,KAAKhF,OAAOkY,KAItE,IAAII,EAAY,CACd7K,KAAMA,EACNmE,MAAOkG,EACP3O,MAAOA,EACPoP,YAAa,OAAAnF,EAAA,MAAI3F,EAAMvP,EAAK,IAC5BC,MAAO6Z,EACPQ,cAAerW,KAAKkV,qBAAqBC,EAAgB7J,GACzDgL,eAAgBpL,QAAQI,EAAK,UAI3B,eAAgBtL,MAAM4O,yBACxBuH,EAAUI,YAAcvW,KAAK0P,cAAciG,GAE3CQ,EAAU3G,UAAY,WACpB,OAAOxE,EAAOwE,UAAUmG,IAG1BQ,EAAUvG,YAAc,WACtB,OAAO5E,EAAO4E,YAAY+F,KAY9B,IAAIa,EAAWxW,KAAKyW,yBAAyB1a,GACzC2a,EAAcF,EAAWxW,KAAKuB,cAAciV,EAAUL,GAAa,eAASN,GAQhF,OANI7V,KAAKK,YAEPqW,EAAc,CAACzZ,EAAE,MAAO,CAACyZ,MAIpBzZ,EAAE6Y,EAAS1Y,EAAM,CAACsZ,KAG3BC,eAAgB,SAAwBrL,EAAMqK,GAC5C,IAAIpK,EAASvL,KAETiG,EAAmB,eAAgBjG,MACnCsE,EAAS2B,EAAiB1B,eAC1BqS,EAAU3Q,EAAiB2Q,QAC3BC,EAAa5Q,EAAiB4Q,WAC9B/K,EAAc7F,EAAiB6F,YAC/BC,EAAU9F,EAAiB8F,QAC3BtH,EAAewB,EAAiBxB,aAChCC,EAAcuB,EAAiBvB,YAC/BiK,EAAwB1I,EAAiB0I,sBAEzC1R,EAAI+C,KAAK2E,eACTwQ,EAAiBnV,KAAK4E,kBAAkB,SACxCkS,EAAiBxL,EAAK,SAA2B6J,EACjD4B,EAAqB/W,KAAKgX,WAAW,SAA2BrI,EAEhEsI,EAAQ,GAIRC,EAAYJ,EAAiB9W,KAAKmX,OAAO,YAAYtZ,OAAO8X,EAAU,MAAQ,KAE9EyB,EAAO9S,EAAO+S,KAAI,SAAUrQ,EAAO0O,GACrC,OAAOnK,EAAOkK,mBAAmBzO,EAAO0O,EAAUpK,EAAMqK,MAGtD2B,EAAe,KAEfxL,GAAeC,GAAWA,EAAU,IACtCuL,EAAetO,QAAQ8C,EAAc,GAAKC,EAAU4J,EAAW,IAOjE,IAAI4B,EAAkB,eAAS,OAAAtG,EAAA,MAAI3F,EAAMuL,KAAgB,KACrDW,EAASD,GAAmB,eAAS5B,GAGrC8B,EAAQF,EAAkBvX,KAAKmX,OAAO,QAAQtZ,OAAO0Z,IAAoB,KAEzEG,EAAoB,eAAgB1X,MAAM8P,qBAAuB9P,KAAK8P,qBAAqB6F,GAAY,GACvGgC,EAAkB,eAAgB3X,MAAM+P,mBAAqB/P,KAAK+P,mBAAmB4F,GAAY,GAEjGiC,EAAgB,eAAWnT,GAAgBA,EAAa6G,EAAM,OAAS7G,EACvEoT,EAAc,eAAWnT,GAE7BA,EAAY4G,EAAM,OAAS5G,EA0B3B,GAxBAuS,EAAM1Y,KAAKtB,EAAE,OAAKpB,EAAgB,CAChC+B,MAAO,CAACga,EAAeF,EAAmBZ,EAAiB,sBAAwB,IACnFxa,MAAO,CACLM,QAAS0O,EAAK,SAA0B,MAE1C3N,MAAOc,EAAcA,EAAc,CACjC2O,GAAIqK,GACHI,GAAc,GAAI,CAEnBC,SAAUf,EAAqB,IAAM,KACrC,UAAWQ,GAAmB,KAC9B,eAAgBL,EAChB,YAAaA,EACb,gBAAiBI,GAChBK,GACHnW,GAAI,CAEFuW,WAAY/X,KAAKqV,WACjB2C,WAAYhY,KAAKwV,cAEnBzZ,IAAK,iBAAiB8B,OAAO2Z,EAAQ,MACrCS,IAAK,aACJ,QAAa,GAAOb,IAEnBN,EAAgB,CAClB,IAAIoB,EAAe,CACjB5M,KAAMA,EACNmE,MAAOkG,EACPrR,OAAQA,EACR+R,cAAerW,KAAKkV,qBAAqBC,EAAgB7J,IAIvD,eAAgBtL,MAAM4O,yBACxBsJ,EAAa3B,YAAcvW,KAAK0P,cAAciG,GAE9CuC,EAAa1I,UAAY,WACvB,OAAOjE,EAAOiE,UAAUmG,IAG1BuC,EAAatI,YAAc,WACzB,OAAOrE,EAAOqE,YAAY+F,KAK9B,IAAIwC,EAAWlb,EAAE,OAAK,CACpBX,MAAO,CACL8C,QAASkF,EAAOzF,QAElBjB,MAAOoC,KAAKyU,gBACX,CAACzU,KAAKuB,cAAc,QAAuB2W,KAG1CtB,GACFK,EAAM1Y,KACNtB,EAAE,KAAM,CACNS,YAAa,SACbC,MAAO,CACL,cAAe,OACfnB,KAAM,gBAERT,IAAK,6BAA6B8B,OAAO2Z,MAK7C,IAAIY,EAAuB,eAAWpY,KAAKyE,cAE3CzE,KAAKyE,aAAa6G,EAAM,SAAyBtL,KAAKyE,aAClD4T,EAAqB,eAAWrY,KAAK0E,aAEzC1E,KAAK0E,YAAY4G,EAAM,SAAyBtL,KAAK0E,YACrDuS,EAAM1Y,KAAKtB,EAAE,OAAK,CAChBS,YAAa,kBACbE,MAAO,CAACwa,GACR9b,MAAO,CACLM,QAAS0O,EAAK,SAA0B,MAE1C3N,MAAOc,EAAcA,EAAc,GAAI4Z,GAAqB,GAAI,CAE9DjL,GAAI8J,EACJY,SAAU,OAEZ/b,IAAK,sBAAsB8B,OAAO2Z,IACjC,CAACW,UACKhD,IAET8B,EAAM1Y,KAAKtB,KAEP2Z,GAEFK,EAAM1Y,KAAKtB,MAKf,OAAOga,MCxWb,SAAS,EAAQlZ,EAAQC,GAAkB,IAAIC,EAAOhC,OAAOgC,KAAKF,GAAS,GAAI9B,OAAOiC,sBAAuB,CAAE,IAAIC,EAAUlC,OAAOiC,sBAAsBH,GAASC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOpC,OAAOqC,yBAAyBP,EAAQM,GAAKlC,eAAiB8B,EAAKM,KAAKC,MAAMP,EAAME,GAAY,OAAOF,EAE9U,SAAS,EAAcS,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,GAAIA,EAAI,EAAI,EAAQ1C,OAAO6C,IAAS,GAAIC,SAAQ,SAAUhD,GAAO,EAAgB2C,EAAQ3C,EAAK+C,EAAO/C,OAAYE,OAAO+C,0BAA4B/C,OAAOgD,iBAAiBP,EAAQzC,OAAO+C,0BAA0BF,IAAW,EAAQ7C,OAAO6C,IAASC,SAAQ,SAAUhD,GAAOE,OAAOC,eAAewC,EAAQ3C,EAAKE,OAAOqC,yBAAyBQ,EAAQ/C,OAAa,OAAO2C,EAEjf,SAAS,EAAgB5C,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAiB3M,IAAIwc,EAAkB,SAAyBtc,GAC7C,MAAO,QAAQ6B,OAAO7B,GAAS,GAAI,MAI1B,EAAQ,eAAS,EAAc,EAAc,EAAc,GAAI,QAAc,GAAgB,GAAI,CAC1Guc,WAAY,eAAS,WAIZC,EAAa,eAAO,CAC7B/Y,OAAQ,CAACiV,GACTpY,MAAO,EACP6O,cAAe,WACbnL,KAAKyW,yBAA2B,MAElCrS,QAAS,CAKPqU,YAAa,WACX,IAAIC,EAAQ1Y,KAAK0Y,MACbC,EAAQD,EAAMC,MAAQD,EAAMC,MAAMC,KAAOF,EAAMC,MAAQ,KACvDE,GAAOH,EAAM,cAAgB,IAAIrB,KAAI,SAAUyB,GACjD,OAAOA,EAAGF,KAAOE,KAEnB,OAAOH,GAASA,EAAMI,UAAYJ,EAAMI,SAASla,OAAS,GAAKga,GAAOA,EAAIha,OAAS,EAAI,OAAAuI,EAAA,MAAUuR,EAAMI,UAAU3a,QAAO,SAAU0a,GAChI,OAAO,OAAA1R,EAAA,MAAcyR,EAAKC,MAG5B,IAIFE,gBAAiB,SAAyBC,GAExC,IAAK,eAAUA,GACb,OAAQ,EAGV,IAAIH,EAAoB,OAAfG,EAAGC,QAAmBD,EAAK,eAAQ,KAAMA,GAAI,GACtD,OAAOH,EAAK9Y,KAAKyY,cAAcU,QAAQL,IAAO,GAGhDvD,kBAAmB,SAA2B5Y,EAAM6I,GAClD,GAAI7I,GAAQqD,KAAKoZ,YAAYzc,IAAS6I,GAASA,EAAM9G,OAAQ,CAC3D,IAAIiX,EAAW3V,KAAKgZ,gBAAgBxT,EAAM9G,QAE1C,GAAIiX,GAAY,EAAG,CAEjB,IAAIrK,EAAOtL,KAAKmG,cAAcwP,GAC9B3V,KAAKsF,MAAM3I,EAAM2O,EAAMqK,EAAUnQ,MAIvC8P,qBAAsB,SAA8B9P,GAClD,OAAOxF,KAAKuF,YAAcvF,KAAKuF,WAAWC,IAG5C6T,kBAAmB,SAA2B7T,GAE5C,IAAI9G,EAAS8G,EAAM9G,OACf4a,EAAU9T,EAAM8T,QAEpB,IAAItZ,KAAKsV,qBAAqB9P,IAA6B,OAAnB9G,EAAOwa,SAAqB,eAAgBxa,IAA+B,IAApBA,EAAO6a,SAKtG,GAAI,OAAAnS,EAAA,MAAc,CAAC,OAAY,QAAakS,GAE1C,eAAU9T,GACVxF,KAAKwZ,kBAAkBhU,QAClB,GAAI,OAAA4B,EAAA,MAAc,CAAC,OAAS,OAAW,OAAW,QAAWkS,GAAU,CAE5E,IAAI3D,EAAW3V,KAAKgZ,gBAAgBta,GAEpC,GAAIiX,GAAY,EAAG,CACjB,eAAUnQ,GACV,IAAIqT,EAAM7Y,KAAKyY,cACXgB,EAAQjU,EAAM2K,SAEdmJ,IAAY,QAAaG,GAASH,IAAY,OAEhD,eAAaT,EAAI,IACRS,IAAY,QAAYG,GAASH,IAAY,OAEtD,eAAaT,EAAIA,EAAIha,OAAS,IACrBya,IAAY,QAAW3D,EAAW,EAE3C,eAAakD,EAAIlD,EAAW,IACnB2D,IAAY,QAAa3D,EAAWkD,EAAIha,OAAS,GAE1D,eAAaga,EAAIlD,EAAW,OAKpC6D,kBAAmB,SAA2BhU,GAC5C,IAAIkT,EAAQ1Y,KAAK0Y,MACbC,EAAQD,EAAMC,MAAQD,EAAMC,MAAMC,KAAOF,EAAMC,MAAQ,KAGvD3Y,KAAKsV,qBAAqB9P,IAAU,eAAYA,IAAU,eAAoBmT,GAAS3Y,KAAK4Y,MAIhG5Y,KAAKuV,kBAAkB,OAAwB/P,IAEjDkU,gCAAiC,SAAyClU,GACnExF,KAAKsV,qBAAqB9P,IAA0B,IAAhBA,EAAMmU,OAC7C3Z,KAAKuV,kBAAkB,OAA+B/P,IAG1DoU,sBAAuB,SAA+BpU,GAC/CxF,KAAKsV,qBAAqB9P,IAC7BxF,KAAKuV,kBAAkB,OAA4B/P,IAGvDqU,qBAAsB,SAA8BrU,GAC7CxF,KAAKsV,qBAAqB9P,IAAW,eAAYA,IACpDxF,KAAKuV,kBAAkB,OAA2B/P,IAOtDsU,YAAa,WACX,IAAItX,EAAQxC,KAERiG,EAAmB,eAAgBjG,MACnCkG,EAAQD,EAAiBE,cACzBV,EAAaQ,EAAiBR,WAC9BoO,EAAe5N,EAAiB4N,aAChC7N,EAAcC,EAAiBD,YAC/B3B,EAAkB4B,EAAiB5B,gBACnCsK,EAAwB1I,EAAiB0I,sBAEzC1R,EAAI+C,KAAK2E,eACToS,EAAqB/W,KAAKoZ,YAAY,SAA2BzK,EAEjEsI,EAAQ,GAER8C,EAAQtU,EAAaA,IAAe,KAExC,GAAIsU,EAEF9C,EAAM1Y,KAAKwb,OACN,CAML,IAAIC,EAAQ,GACRC,EAAkB3B,IACtB2B,EAAkBja,KAAK4E,kBAAkBqV,GAAmBA,EAAkB,KAC9Eja,KAAKuE,eAAexF,SAAQ,SAAUiI,GACpC,IAAIjL,EAAMiL,EAAMjL,IACZya,EAAW8B,EAAgBvc,GAC3Bme,EAAoB5B,EAAgBvc,EAAIoe,eAC5CH,EAAMje,GAAOyG,EAAMoC,kBAAkB4R,GAAYA,EAAWhU,EAAMoC,kBAAkBsV,GAEpFA,EAAoBD,KAItBja,KAAKyW,yBAA2BuD,EAGhC/C,EAAM1Y,KAAKsV,EAAeA,IAAiB5W,KAE3CiJ,EAAMnH,SAAQ,SAAUuM,EAAMqK,GAE5BsB,EAAM1Y,KAAKiE,EAAMmU,eAAerL,EAAMqK,OAGxCsB,EAAM1Y,KAAKyH,EAAcA,IAAgB/I,KAGzCga,EAAM1Y,KAAK8F,EAAkBA,IAAoBpH,KAInD,IAAImd,EAAW,CACbC,SAAUra,KAAK0Z,gCAKfY,YAAata,KAAK4Z,sBAElBW,SAAUva,KAAK6Z,sBAIb9C,IACFqD,EAASI,MAAQxa,KAAKwZ,kBACtBY,EAASK,QAAUza,KAAKqZ,mBAI1B,IAAIqB,EAASzd,EAAE,OAAQ,CACrBW,MAAOoC,KAAKuY,YAAc,KAC1Bjc,MAAO,eAAW,OAAa0D,KAAK2a,QAGpCnZ,GAAI4Y,EACJnC,IAAK,SACJhB,GAEH,OAAOyD,O,oCC1Ob,oIAMWpe,EAAQ,CACjBse,QAAS,eAAS,QAClBC,YAAa,eAAS,SAMbC,EAAe,eAAO,CAC/Bxe,MAAOA,EACPwD,SAAU,CACRib,UAAW,WACT,OAAO/a,KAAKK,UAAYL,KAAKmX,OAAO,aAAe,OAGvD/S,QAAS,CACP4W,cAAe,WACb,IAAIJ,EAAU5a,KAAK4a,QACfC,EAAc7a,KAAK6a,YACnB5d,EAAI+C,KAAK2E,eACTsW,EAAWhe,IACXie,EAAiBlb,KAAK4E,kBAAkB,SAa5C,OAXIsW,GAAkBN,GAAWC,KAC/BI,EAAWhe,EAAE,UAAW,CACtBU,MAAO,CACLyP,GAAIpN,KAAK+a,WAEXzU,SAAU4U,EAAiB,GAAK,eAAWL,EAAaD,GACxD7e,IAAK,UACLkc,IAAK,WACJjY,KAAKuB,cAAc,WAGjB0Z,O,oCCxCb,qHAASpf,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAMpM,IAAIQ,EAAQ,CACjBkI,QAAS,eAAS,QAA0B,IAInC2W,EAAe,eAAO,CAC/B7e,MAAOA,EACPwD,SAAU,CACRO,UAAW,WACT,IAAImE,EAAUxE,KAAKwE,QAEnB,MAAmB,KAAZA,GAAwBA,GAEjC4W,gBAAiB,WACf,OAA0B,IAAnBpb,KAAKK,WAEdgb,oBAAqB,WACnB,IAAID,EAAkBpb,KAAKob,gBAC3B,OAAOvf,EAAgB,CACrB,kBAAmBuf,GAClB,mBAAmBvd,OAAOmC,KAAKwE,UAAW4W,GAAmBpb,KAAKK,gB,gSCpBvE,EAAe,SAAsBtE,EAAKC,GAC5C,IAAIgL,EAAQ,KA0BZ,OAxBI,eAAShL,GAEXgL,EAAQ,CACNjL,IAAKA,EACLQ,MAAOP,GAEA,eAAWA,GAEpBgL,EAAQ,CACNjL,IAAKA,EACLmL,UAAWlL,GAEJ,eAASA,IAClBgL,EAAQ,eAAMhL,GACdgL,EAAMjL,IAAMiL,EAAMjL,KAAOA,IACN,IAAVC,IAITgL,EAAQ,CACNjL,IAAKA,IAIFiL,GAKE,EAAkB,SAAyBsU,EAAYpV,GAChE,IAAI5B,EAAS,GA0Bb,GAxBI,eAAQgX,IAEVA,EAAWld,OAAOoL,EAAA,MAAUzK,SAAQ,SAAUuT,GAC5C,GAAI,eAASA,GACXhO,EAAO/F,KAAK,CACVxC,IAAKuW,EACL/V,MAAO,eAAU+V,UAEd,GAAI,eAASA,IAAMA,EAAEvW,KAAO,eAASuW,EAAEvW,KAE5CuI,EAAO/F,KAAK,eAAM+T,SACb,GAAI,eAASA,IAAyB,IAAnB,eAAKA,GAAGzT,OAAc,CAE9C,IAAI9C,EAAM,eAAKuW,GAAG,GACdtL,EAAQ,EAAajL,EAAKuW,EAAEvW,IAE5BiL,GACF1C,EAAO/F,KAAKyI,OAOE,IAAlB1C,EAAOzF,QAAgB,eAAQqH,IAAUA,EAAMrH,OAAS,EAAG,CAC7D,IAAI0c,EAASrV,EAAM,GACnB,eAAKqV,GAAQxc,SAAQ,SAAUyc,GACxB,OAAmBA,IACtBlX,EAAO/F,KAAK,CACVxC,IAAKyf,EACLjf,MAAO,eAAUif,QAOzB,IAAIC,EAAO,GACX,OAAOnX,EAAOlG,QAAO,SAAUkU,GAC7B,OAAKmJ,EAAKnJ,EAAEvW,OACV0f,EAAKnJ,EAAEvW,MAAO,EACduW,EAAE/V,MAAQ,eAAS+V,EAAE/V,OAAS+V,EAAE/V,MAAQ,eAAU+V,EAAEvW,MAC7C,OCnFb,SAAS+B,EAAQC,EAAQC,GAAkB,IAAIC,EAAOhC,OAAOgC,KAAKF,GAAS,GAAI9B,OAAOiC,sBAAuB,CAAE,IAAIC,EAAUlC,OAAOiC,sBAAsBH,GAASC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOpC,OAAOqC,yBAAyBP,EAAQM,GAAKlC,eAAiB8B,EAAKM,KAAKC,MAAMP,EAAME,GAAY,OAAOF,EAE9U,SAASQ,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,GAAIA,EAAI,EAAIb,EAAQ7B,OAAO6C,IAAS,GAAIC,SAAQ,SAAUhD,GAAOF,EAAgB6C,EAAQ3C,EAAK+C,EAAO/C,OAAYE,OAAO+C,0BAA4B/C,OAAOgD,iBAAiBP,EAAQzC,OAAO+C,0BAA0BF,IAAWhB,EAAQ7B,OAAO6C,IAASC,SAAQ,SAAUhD,GAAOE,OAAOC,eAAewC,EAAQ3C,EAAKE,OAAOqC,yBAAyBQ,EAAQ/C,OAAa,OAAO2C,EAEjf,SAAS7C,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAgB3M,IAAI4f,EAAkB,eAAe,QAAS,CAC5C/e,KAAM,OACNkY,aAAc,KAEZ8G,EAAaD,EAAgBE,MAC7BC,EAAaH,EAAgBpf,MAC7Bwf,EAAkBJ,EAAgBK,KAClCC,EAAmBN,EAAgBlW,MAI5B,EAAQ,eAAS/G,EAAcA,EAAc,GAAIod,GAAa,GAAIhgB,EAAgB,CAC3FyI,OAAQ,eAAS,OAAiB,MAElC4B,MAAO,eAAS,OAAiB,IAGjC2Q,WAAY,eAAS,SACpBiF,EAAiB,eAAS,OAAiB,OAGnCG,EAAa,eAAO,CAC7Bxc,OAAQ,CAACkc,EAAY,QACrBrf,MAAO,EACPc,KAAM,WACJ,IAAI8I,EAAQlG,KAAKkG,MACjB,MAAO,CAGLgE,WAAY,eAAQhE,GAASA,EAAMiC,QAAU,KAGjDrI,SAAU,CACRyE,eAAgB,WAGd,OAAO,EAAgBvE,KAAKsE,OAAQtE,KAAKkK,aAE3C2B,kBAAmB,WAKjB,IAAIiJ,EAAW9U,KAAK8U,SACpB,OAAO9U,KAAKuE,eAAeuC,QAAO,SAAUhL,EAAKwW,GAI/C,GAFAxW,EAAIwW,EAAEvW,KAAO,eAAMuW,GAEfA,EAAEpL,UAAW,CAEf,IAAIA,EAAYoL,EAAEpL,UAEd,eAASA,IAAc,eAAW4N,EAAS5N,IAC7CA,EAAY4N,EAAS5N,GACX,eAAWA,KAErBA,OAAYN,GAId9K,EAAIwW,EAAEvW,KAAKmL,UAAYA,EAGzB,OAAOpL,IACN,KAELqK,cAAe,WACb,IAAIF,EAAmB,eAAgBjG,MACnCmM,EAAiBlG,EAAiBkG,eAClCC,EAAcnG,EAAiBmG,YAC/BnC,EAAgBhE,EAAiBgE,cACjCC,EAAajE,EAAiBiE,WAGlC,OAAQiC,GAAkBC,GAAenC,GAAiBC,GAE1D,IAAI/B,SAENwF,QAAS,WACP,IAAIuO,EAAoB,eAAgBlc,MACpC+L,EAAUmQ,EAAkBnQ,QAC5BD,EAAcoQ,EAAkBpQ,YAGpC,MAAO,CACL1N,OAAQ4B,KAAKqJ,YACbwD,OAAQ7M,KAAK+M,YACbD,SAAU9M,KAAKgN,cACfjB,QAAS,OAAAM,EAAA,MAAQ,eAAUN,EAAS,GAAI,GACxCD,YAAa,OAAAO,EAAA,MAAQ,eAAUP,EAAa,GAAI,GAChDU,OAAQxM,KAAKwM,UAInBrH,MAAO,CACLe,MAAO,SAAed,GAEpBpF,KAAKkK,WAAa,eAAQ9E,GAAYA,EAAS+C,QAAU,IAG3DhC,cAAe,SAAuBf,EAAUC,GACzC,eAAWD,EAAUC,IACxBrF,KAAKsF,MAAM0W,EAAkB5W,IAIjCuI,QAAS,SAAiBvI,EAAUC,GAE7B,eAAWD,EAAUC,IACxBrF,KAAKsF,MAAM,OAA4BF,KAI7C8H,QAAS,WAEPlN,KAAKsF,MAAM0W,EAAkBhc,KAAKmG,gBAEpC/B,QAAS,CAEP0O,kBAAmB,SAA2B/W,GAC5C,IAAIiL,EAAQhH,KAAK6L,kBAAkB9P,GAGnC,OAAOiL,EAAQA,EAAME,eAAYN,O,oCC/IvC,sFAKWtK,EAAQ,eAAsB,OAAU,SAMxCsH,EAAmB,eAAO,CACnC9G,KAAM,QACNqf,QAAS,OACT7f,MAAOA,EACPwD,SAAU,CACRpD,IAAK,WACH,MAAO,U,kCCjBb,0HAOWJ,EAAQ,eAAsB,CACvC8f,QAAS,eAAS,QAAmB,IACpC,SAGQ/Z,EAAgC,eAAO,CAChDvF,KAAM,QACNC,YAAY,EACZT,MAAOA,EACPU,OAAQ,SAAgBC,EAAGC,GACzB,IAAIE,EAAOF,EAAKE,KACZd,EAAQY,EAAKZ,MACbe,EAAQH,EAAKG,MACbC,EAAcJ,EAAKI,YACnBC,EAASF,IACTG,EAAeF,GAAe,GAC9B6Y,EAAY,GAEhB,OAAI7Z,EAAM8f,QACDnf,EAAE,MAAO,eAAUG,EAAM,CAC9BO,MAAO,CACLnB,KAAM,QACN,YAAa,SACb,aAAa,GAEfkB,YAAa,qBACb3B,IAAK,YACH,eAAc,OAAmBoa,EAAW3Y,EAAcD,IAGzD,eAAc,OAAmB4Y,EAAW3Y,EAAcD,O,oCCrCrE,iLAASO,EAAQC,EAAQC,GAAkB,IAAIC,EAAOhC,OAAOgC,KAAKF,GAAS,GAAI9B,OAAOiC,sBAAuB,CAAE,IAAIC,EAAUlC,OAAOiC,sBAAsBH,GAASC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOpC,OAAOqC,yBAAyBP,EAAQM,GAAKlC,eAAiB8B,EAAKM,KAAKC,MAAMP,EAAME,GAAY,OAAOF,EAE9U,SAASQ,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,GAAIA,EAAI,EAAIb,EAAQ7B,OAAO6C,IAAS,GAAIC,SAAQ,SAAUhD,GAAOF,EAAgB6C,EAAQ3C,EAAK+C,EAAO/C,OAAYE,OAAO+C,0BAA4B/C,OAAOgD,iBAAiBP,EAAQzC,OAAO+C,0BAA0BF,IAAWhB,EAAQ7B,OAAO6C,IAASC,SAAQ,SAAUhD,GAAOE,OAAOC,eAAewC,EAAQ3C,EAAKE,OAAOqC,yBAAyBQ,EAAQ/C,OAAa,OAAO2C,EAEjf,SAAS7C,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAapM,IAAIQ,EAAQ,CACjB+f,SAAU,eAAS,QAAmB,GACtCC,WAAY,eAAS,QAAmB,GACxCC,WAAY,eAAS,QAAmB,GACxC1Z,KAAM,eAAS,QAAmB,GAClC2Z,MAAO,eAAS,QAAmB,GACnCC,MAAO,eAAS,QAAmB,GACnCC,iBAAkB,eAAS,QAAmB,GAC9CC,SAAU,eAAS,QAAmB,GACtCC,WAAY,eAAS,QAA0B,GAC/CngB,MAAO,eAAS,QAAmB,GAEnCqG,aAAc,eAAS,QAA0B,GACjD8T,QAAS,eAAS,QAAmB,GACrCiG,WAAY,eAAS,QACrB/b,aAAc,eAAS,SAIdgc,EAAqB,eAAO,CACrCrd,OAAQ,CAAC,QACT8C,QAAS,WACP,IAAIC,EAAQxC,KAEZ,MAAO,CACL0C,WAAY,WACV,OAAOF,KAMb3C,cAAc,EACdvD,MAAOA,EACPwD,SAAU,CACRuD,cAAe,WACb,OAAO,GAGT9C,aAAc,WACZ,IAAIqc,EAAa5c,KAAK4c,WACtB,MAAsB,KAAfA,GAA2BA,GAEpCpc,eAAgB,WACd,IAAIsC,EAAe9C,KAAK8C,aAExB,OADAA,EAAgC,KAAjBA,GAA6BA,GACrC9C,KAAKK,WAAoByC,GAElCia,eAAgB,WACd,IAAIxc,EAAeP,KAAKO,aACxB,MAAO,CAACP,KAAKQ,eAAiB,wBAA0B,IAAqB,IAAjBD,EAAwB,mBAAqBA,EAAe,oBAAoB1C,OAAOmC,KAAK4c,YAAc,IAAIxe,OAAO,SAEnL4e,cAAe,WACb,IAAIxc,EAAiBR,KAAKQ,eAC1B,OAAOA,IAAmB,eAAUA,GAAkB,CACpDyc,UAAWzc,GACT,IAEN0c,aAAc,WACZ,IAAIjX,EAAmB,eAAgBjG,MACnCyc,EAAQxW,EAAiBwW,MACzB3b,EAAemF,EAAiBnF,aAChCkO,EAAyB/I,EAAiB+I,uBAC1CqM,EAAsBpV,EAAiBoV,oBACvCwB,EAAa5W,EAAiB4W,WAC9B3X,EAAee,EAAiBf,aAGpC,OADAuX,EAAQzc,KAAKqD,cAAgBoZ,EAAQA,GAASzc,KAAKmG,cAActH,OAAS,IAAMqG,EACzE,CACP2X,EACA,CACE,gBAAiB7c,KAAK4W,QACtB,cAAe6F,EACf,aAAczc,KAAK6C,KACnB,iBAAkB7C,KAAKqc,SACvB,mBAAoBrc,KAAKsc,WACzB,WAAYtc,KAAKvD,MAEjB0gB,OAAQnd,KAAK2c,SACb,gBAAiB3c,KAAKwc,MACtB,sBAAuBxc,KAAKuc,WAC5B,6BAA8Bvc,KAAK0c,kBAClC5b,EAAe,GAAGjD,OAAOmC,KAAK6C,KAAO,KAAO,QAAS,KAAKhF,OAAOiD,GAAgB,GACpFua,EACArM,IAEFoO,WAAY,WACV,IAAIlB,EAAoB,eAAgBlc,MACpCkG,EAAQgW,EAAkB/V,cAC1B8D,EAAgBiS,EAAkBjS,cAClC3F,EAAS4X,EAAkB3X,eAC3B0K,EAAuBiN,EAAkBjN,qBACzC/J,EAAegX,EAAkBhX,aAEjCmY,EAAYrd,KAAKqD,cAAgB,GAAK,CACxC,YAAa,eAAS6B,GACtB,gBAAiB,eAASZ,EAAOzF,QAEjC,mBAAoBmB,KAAKqB,QAAQ,qBAAuBrB,KAAK0Y,MAAMkC,QAAU5a,KAAK+a,UAAY,MAE5FuC,EAAWpX,GAAS+D,GAAiBA,EAAcpL,OAASqH,EAAMrH,OAAS,eAASoL,EAAcpL,QAAU,KAChH,OAAOJ,EAAcA,EAAcA,EAAc,CAG/C,gBAAiB6e,GAChBtd,KAAKqB,SAAU,GAAI,CAEpB+L,GAAIpN,KAAKmX,SACT3a,KAAMwD,KAAKqB,QAAQ7E,MAAQ,SAC1B6gB,GAAYpO,KAGnBjS,OAAQ,SAAgBC,GACtB,IAAIsgB,EAAoB,eAAgBvd,MACpC+c,EAAiBQ,EAAkBR,eACnC/B,EAAgBuC,EAAkBvC,cAClCwC,EAAiBD,EAAkBC,eACnCC,EAAcF,EAAkBE,YAChC3D,EAAcyD,EAAkBzD,YAChC4D,EAAcH,EAAkBG,YAEhCpc,EAAW,GAEXtB,KAAKqD,cACP/B,EAAS/C,KAAKyB,KAAKuB,kBAGnBD,EAAS/C,KAAKyc,EAAgBA,IAAkB,MAEhD1Z,EAAS/C,KAAKif,EAAiBA,IAAmB,MAElDlc,EAAS/C,KAAKkf,EAAcA,IAAgB,MAE5Cnc,EAAS/C,KAAKub,EAAcA,IAAgB,MAE5CxY,EAAS/C,KAAKmf,EAAcA,IAAgB,OAI9C,IAAIC,EAAS1gB,EAAE,QAAS,CACtBS,YAAa,gBACbE,MAAOoC,KAAKkd,aACZvf,MAAOqC,KAAKod,WACZrhB,IAAK,WACJuF,EAASlD,OAAO,SAEnB,OAAO2e,EAAele,OAAS,EAAI5B,EAAE,MAAO,CAC1CW,MAAOmf,EACPhb,MAAO/B,KAAKgd,cACZjhB,IAAK,QACJ,CAAC4hB,IAAWA,M,kCCvKnB,SAAS7f,EAAQC,EAAQC,GAAkB,IAAIC,EAAOhC,OAAOgC,KAAKF,GAAS,GAAI9B,OAAOiC,sBAAuB,CAAE,IAAIC,EAAUlC,OAAOiC,sBAAsBH,GAASC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOpC,OAAOqC,yBAAyBP,EAAQM,GAAKlC,eAAiB8B,EAAKM,KAAKC,MAAMP,EAAME,GAAY,OAAOF,EAE9U,SAASQ,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,GAAIA,EAAI,EAAIb,EAAQ7B,OAAO6C,IAAS,GAAIC,SAAQ,SAAUhD,GAAOF,EAAgB6C,EAAQ3C,EAAK+C,EAAO/C,OAAYE,OAAO+C,0BAA4B/C,OAAOgD,iBAAiBP,EAAQzC,OAAO+C,0BAA0BF,IAAWhB,EAAQ7B,OAAO6C,IAASC,SAAQ,SAAUhD,GAAOE,OAAOC,eAAewC,EAAQ3C,EAAKE,OAAOqC,yBAAyBQ,EAAQ/C,OAAa,OAAO2C,EAEjf,SAAS7C,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAJ3M,0KAOO,IAAI8hB,EAAyB,gBACzBC,EAAwB,cACxBC,EAAyB,eAGzBC,EAAqB,CAACH,EAAwBC,EAAuBC,GAAwBhX,QAAO,SAAUC,EAAQhL,GAC/H,OAAO0C,EAAcA,EAAc,GAAIsI,GAAS,GAAIlL,EAAgB,GAAIE,GAAK,MAC5E,IAGQiiB,EAAe,CAAC,IAAK,MAChC,SAAU,WACV,uCAAwC,wCAAyC,0CAA2C,gBAAiB,kBAAmB,kBAAmB,oBAAqB,6CAA6CC,KAAK,M,oCCnB1P,oIAMW3hB,EAAQ,CACjB4hB,UAAW,eAAS,QAAmB,GAGvCC,eAAgB,eAAS,QAEzBtd,YAAa,eAAS,QACtBud,WAAY,eAAS,QACrBC,aAAc,eAAS,SAIdC,EAAa,eAAO,CAC7BhiB,MAAOA,EACP8H,QAAS,CACPma,kBAAmB,WACjB,IAAIthB,EAAI+C,KAAK2E,eAEb,OAAI3E,KAAK4E,kBAAkB,QAClB3H,EAAE,OAAQ,CACfW,MAAOoC,KAAKoe,YAAc,KAC1B9hB,MAAO,CACLuE,YAAab,KAAKa,aAAeb,KAAKY,aAAe,MAEvD7E,IAAK,mBACJiE,KAAKuB,cAAc,OAAuB,CAC3C2E,MAAOlG,KAAKmG,cAAcgC,QAC1B7D,OAAQtE,KAAKuE,eAAe4D,QAC5BtD,QAAS7E,KAAKuE,eAAe1F,UAI1B5B,KAETygB,YAAa,WAEX,OAAO1d,KAAKke,UAAYle,KAAKyd,aAAY,GAAQzd,KAAKue,yB,oCC1C5D,0EAGIC,EAA6B,eAAc,CAC7Cvc,WAAY,CACVwc,SAAU,QAEZ1a,QAAS,CACP2a,eAAgB,W,kCCRpB,qKAAS5gB,EAAQC,EAAQC,GAAkB,IAAIC,EAAOhC,OAAOgC,KAAKF,GAAS,GAAI9B,OAAOiC,sBAAuB,CAAE,IAAIC,EAAUlC,OAAOiC,sBAAsBH,GAASC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOpC,OAAOqC,yBAAyBP,EAAQM,GAAKlC,eAAiB8B,EAAKM,KAAKC,MAAMP,EAAME,GAAY,OAAOF,EAE9U,SAASQ,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,GAAIA,EAAI,EAAIb,EAAQ7B,OAAO6C,IAAS,GAAIC,SAAQ,SAAUhD,GAAOF,EAAgB6C,EAAQ3C,EAAK+C,EAAO/C,OAAYE,OAAO+C,0BAA4B/C,OAAOgD,iBAAiBP,EAAQzC,OAAO+C,0BAA0BF,IAAWhB,EAAQ7B,OAAO6C,IAASC,SAAQ,SAAUhD,GAAOE,OAAOC,eAAewC,EAAQ3C,EAAKE,OAAOqC,yBAAyBQ,EAAQ/C,OAAa,OAAO2C,EAEjf,SAAS7C,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAUpM,IAAIQ,EAAQ,eAAsB,CACvCqiB,wBAAyB,eAAS,QAClCC,qBAAsB,eAAS,SAC9B,SAMQnb,EAAsB,eAAO,CACtC3G,KAAM,QACN2C,OAAQ,CAAC,OAAY,OAAgB,QACrC8C,QAAS,WACP,IAAIC,EAAQxC,KAEZ,MAAO,CACLyC,mBAAoB,WAClB,OAAOD,KAIb9C,OAAQ,CAENgD,WAAY,CACV9C,QAEA,WACE,OAAO,WACL,MAAO,OAKfC,cAAc,EACdvD,MAAOA,EACPwD,SAAU,CACR6C,QAAS,WACP,OAAO3C,KAAK0C,cAGduR,QAAS,WACP,OAAO,GAGT7T,OAAQ,WACN,OAAOJ,KAAK2C,QAAQE,MAGtBxC,UAAW,WACT,OAAOL,KAAK2C,QAAQtC,WAGtBE,aAAc,WACZ,OAAOP,KAAK2C,QAAQpC,cAItBC,eAAgB,WACd,OAAO,GAKTC,gBAAiB,WACf,OAAQT,KAAKK,WAAaL,KAAK2C,QAAQG,cAGzChC,aAAc,WACZ,OAAOd,KAAK2C,QAAQ7B,cAEtB+d,kBAAmB,WACjB,OAAO7e,KAAK4e,sBAAwB5e,KAAK2e,yBAE3CG,WAAY,WACV,OAAOrgB,EAAc,CACnBjC,KAAM,YACLwD,KAAKqB,UAEV0d,WAAY,WACV,IAAIH,EAAuB5e,KAAK4e,qBAChC,OAAOA,EAAuBngB,EAAcA,EAAc,GAAImgB,GAAuB,GAAI,CACvFliB,IAAK,UACF,KAGTM,OAAQ,SAAgBC,GACtB,IAAIG,EAAO,CACTd,MAAO0D,KAAK+e,WACZphB,MAAOqC,KAAK8e,YAYd,OATI9e,KAAK6e,mBAEPzhB,EAAKoE,GAAKxB,KAAK2e,yBAA2B,GAC1CvhB,EAAK4hB,SAAWhf,KAAKyB,aAGrBrE,EAAKoE,GAAKxB,KAAKyB,YAGVxE,EAAE+C,KAAK6e,kBAAoB,mBAAqB,QAASzhB,EAAM4C,KAAKuB,qB,kCClH/E,8DAEI0d,EAAkB,CAAC,KAAM,KAAM,MAGxBC,EAAc,SAAqB1Z,GAE5C,IAAKA,IAAUA,EAAM9G,OAEnB,OAAO,EAGT,IAAIua,EAAKzT,EAAM9G,OAEf,GAAIua,EAAGkG,WAAqD,IAAzCF,EAAgB9F,QAAQF,EAAGC,SAC5C,OAAO,EAIT,GAAI,eAAQ,iBAAkBD,GAC5B,OAAO,EAGT,IAAI1c,EAAuB,UAAf0c,EAAGC,QAAsBD,EAAK,eAAQ,QAASA,GAI3D,GAAI1c,EAAO,CACT,IAAI6iB,EAAW,eAAQ7iB,EAAO,OAC1B8iB,EAAQD,EAAW,eAAQA,GAAY,eAAO,0BAA2B7iB,GAE7E,GAAI8iB,IAAUA,EAAMF,SAClB,OAAO,EAOX,OAAO,eAAQlG,EAAI,U,kCCvCrB,8DAEIqG,EAA6B,eAAc,CAC7Crd,WAAY,CACVpF,SAAU,W,kCCJd,sCAAImR,EAAJ,oOAEA,SAASlQ,EAAQC,EAAQC,GAAkB,IAAIC,EAAOhC,OAAOgC,KAAKF,GAAS,GAAI9B,OAAOiC,sBAAuB,CAAE,IAAIC,EAAUlC,OAAOiC,sBAAsBH,GAASC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOpC,OAAOqC,yBAAyBP,EAAQM,GAAKlC,eAAiB8B,EAAKM,KAAKC,MAAMP,EAAME,GAAY,OAAOF,EAE9U,SAASQ,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,GAAIA,EAAI,EAAIb,EAAQ7B,OAAO6C,IAAS,GAAIC,SAAQ,SAAUhD,GAAOF,EAAgB6C,EAAQ3C,EAAK+C,EAAO/C,OAAYE,OAAO+C,0BAA4B/C,OAAOgD,iBAAiBP,EAAQzC,OAAO+C,0BAA0BF,IAAWhB,EAAQ7B,OAAO6C,IAASC,SAAQ,SAAUhD,GAAOE,OAAOC,eAAewC,EAAQ3C,EAAKE,OAAOqC,yBAAyBQ,EAAQ/C,OAAa,OAAO2C,EAEjf,SAAS7C,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAsB3M,IAAIyjB,EAAa,YACbC,EAAuC,eAAuB,OAAe,iBAC7EC,EAAgC,eAAuB,OAAe,UACtEC,EAAwB,eAAiB,OAAe,SACxDC,EAA6B,eAAiB,OAAe,cAE7DjE,EAAkB,eAAe,UAAW,CAC9C/e,KAAM,OACNkY,cAAc,EACdrP,MAAO,SAELmW,EAAaD,EAAgBE,MAC7BC,EAAaH,EAAgBpf,MAC7Bwf,EAAkBJ,EAAgBK,KAClCC,EAAmBN,EAAgBlW,MAG5BlJ,EAAQ,eAAsB,eAASmC,EAAcA,EAAcA,EAAc,GAAI,QAAUod,GAAa,GAAI,CACzH+D,UAAW,eAAS,QACpBC,eAAgB,eAAS,QAEzBC,SAAU,eAAS,QAAmB,GACtCC,gBAAiB,eAAS,OAAkB,QAC5CC,UAAW,eAAS,OAAkB,SACtCC,UAAW,eAAS,QAEpBC,WAAY,eAAS,QACrBC,YAAa,eAAS,QACtBC,UAAW,eAAS,OAAkB,UACtCC,YAAa,eAAS,QACtBC,UAAW,eAAS,OAAkB,UACtCC,KAAM,eAAS,QAAmB,GAClCC,kBAAmB,eAAS,QAAmB,GAC/CC,aAAc,eAAS,QAAmB,GAC1CC,qBAAsB,eAAS,QAAmB,GAClDC,eAAgB,eAAS,QAAmB,GAC5CC,SAAU,eAAS,QAAmB,GACtCC,cAAe,eAAS,QAAmB,GAC3CC,QAAS,eAAS,QAAmB,GACrCC,MAAO,eAAS,QAAmB,GACnCC,OAAQ,eAAS,QAA0B,GAC3CC,aAAc,eAAS,QACvBvkB,IAAK,eAAS,OAAkB,OAChCwkB,YAAa,eAAS,OAAkB,QACxCC,MAAO,eAAS,QAChBtf,MAAO,eAAS,QAChBuf,OAAQ,eAAS,WACd,SAEDC,EAAoB,SAA2BpkB,EAAG2P,GAEpD,IAAIuU,EAAQvU,EAAIrL,cAAc,QAAiBqL,EAAIuJ,YAAcvJ,EAAIuU,MAErE,OAAKA,EAIElkB,EAAE,SAAU,CACjBU,MAAO,CACLyP,GAAIR,EAAIuK,OAAO,eAEhB,CAACgK,IAPKlkB,EAAE,SAUTqkB,EAAoB,SAA2BrkB,EAAG2P,GACpD,GAAIA,EAAIiU,cACN,OAAO5jB,IAGT,IAAIijB,EAAatT,EAAIsT,WACjBgB,EAActU,EAAIsU,YAClBK,EAAO3U,EAAI2U,KACf,OAAOtkB,EAAE,OAAc,CACrBX,MAAO,CACLsjB,UAAWM,EACXgB,YAAaA,GAEf1f,GAAI,CACFgZ,MAAO+G,GAETtJ,IAAK,gBACJ,CAACrL,EAAIrL,cAAc,SAA2BtE,EAAE,YAGjDukB,EAAe,SAAsBvkB,EAAG2P,GAC1C,GAAIA,EAAIgU,SACN,OAAO3jB,IAGT,IAAIqE,EAAWsL,EAAIrL,cAAc,OAAkBqL,EAAIuJ,WAEvD,IAAK7U,EAAU,CACb,IAAImgB,EAASJ,EAAkBpkB,EAAG2P,GAC9B8U,EAASJ,EAAkBrkB,EAAG2P,GAClCtL,EAAWsL,EAAImU,MAAQ,CAACW,EAAQD,GAAU,CAACA,EAAQC,GAGrD,OAAOzkB,EAAE2P,EAAI0T,UAAW,CACtB5iB,YAAa,GAAGG,OAAO0hB,EAAY,WACnC3hB,MAAOgP,EAAIyT,YACXtkB,IAAK,UACJuF,IAGDqgB,EAAa,SAAoB1kB,EAAG2P,GACtC,OAAO3P,EAAE,MAAO,CACdS,YAAa,GAAGG,OAAO0hB,EAAY,SACnC3hB,MAAOgP,EAAIqT,UACXlkB,IAAK,QACJ,CAAC6Q,EAAIrL,cAAc,OAAmBqL,EAAIuJ,cAG3CyL,EAAe,SAAsB3kB,EAAG2P,GAC1C,IAAIiV,EAAUjV,EAAIrL,cAAc,OAAkBqL,EAAIuJ,WAEtD,OAAK0L,EAIE5kB,EAAE2P,EAAIwT,UAAW,CACtB1iB,YAAa,GAAGG,OAAO0hB,EAAY,WACnC3hB,MAAOgP,EAAIuT,YACXpkB,IAAK,UACJ,CAAC8lB,IAPK5kB,KAUP6kB,EAAgB,SAAuB7kB,EAAG2P,GAG5C,IAAImV,EAAUP,EAAavkB,EAAG2P,GAE9B,OAAIA,EAAI2T,OAAS3T,EAAIoV,OACZD,EAGF,CAACA,EAASJ,EAAW1kB,EAAG2P,GAAMgV,EAAa3kB,EAAG2P,KAGnDqV,EAAiB,SAAwBhlB,EAAG2P,GAC9C,IAAKA,EAAIkT,SACP,OAAO7iB,IAGT,IAAI8iB,EAAkBnT,EAAImT,gBAC1B,OAAO9iB,EAAE,MAAO,CACdilB,WAAY,CAAC,CACXplB,KAAM,OACNd,MAAO4Q,EAAIuV,YAEbzkB,YAAa,qBACbE,MAAO/B,EAAgB,GAAI,MAAMgC,OAAOkiB,GAAkBA,GAC1Dve,GAAI,CACFgZ,MAAO5N,EAAIwV,oBAON3D,EAAwB,eAAO,CACxC3hB,KAAM,QACN2C,OAAQ,CAAC,OAAY,OAASkc,EAAY,OAAmB,QAC7D9b,cAAc,EACdvD,MAAOA,EACPc,KAAM,WACJ,IAAIilB,IAAYriB,KAAK8b,GACrB,MAAO,CAELqG,UAAWE,EAEXL,OAAQK,IAGZviB,SAAU,CACRwiB,gBAAiB,WACf,OAAOtiB,KAAK8gB,QAEZ,CACEyB,KAAK,GACH,CACFA,KAAK,EACLC,WAAY,GACZC,iBAAkB,QAClBC,aAAc,OACdC,WAAY,OACZC,iBAAkB,QAClBC,aAAc,KAGlB1M,UAAW,WACT,IAAIoL,EAAOvhB,KAAKuhB,KACZR,EAAQ/gB,KAAK+gB,MACbsB,EAAUriB,KAAKmiB,UACnB,MAAO,CACLZ,KAAMA,EACNR,MAAOA,EACPsB,QAASA,IAGbS,SAAU,WACR,IAAItlB,EAAewC,KAAKxC,aACpBD,EAASyC,KAAKzC,OAClB,OAAQyC,KAAK4gB,WAAa5gB,KAAK4E,kBAAkB,YAAwB5E,KAAKuB,cAAc,QAAiBvB,KAAKmW,UAAW3Y,EAAcD,KAAWyC,KAAKmhB,QAE7J4B,QAAS,WACP,OAAO/iB,KAAK8iB,SAAW9iB,KAAKmX,OAAO,aAAe,MAEpD6L,cAAe,WACb,OAAOvkB,EAAcA,EAAc,GAAIuB,KAAKqB,SAAU,GAAI,CACxD+L,GAAIpN,KAAKmX,SACTW,SAAU,KACVtb,KAAM,SACN,aAAcwD,KAAK8f,SAAW,OAAS,QACvC,cAAe9f,KAAKmiB,UAAY,KAAO,OACvC,aAAcniB,KAAK4f,WAAa,KAChC,kBAAmB5f,KAAK6f,gBAAkB7f,KAAK+iB,SAAW,SAIhE5d,OAAQ6I,EAAS,GAAInS,EAAgBmS,EAAQ8N,GAAiB,SAAU1W,EAAUC,GAC5ED,IAAaC,IACfrF,KAAKmiB,UAAY/c,MAEjBvJ,EAAgBmS,EAAQ,aAAa,SAAmB5I,EAAUC,GAChED,IAAaC,IACfrF,KAAKijB,UAAU7d,GACfpF,KAAKsF,MAAM0W,EAAkB5W,OAE7BvJ,EAAgBmS,EAAQ,UAAU,WACpC,IAAI5I,EAAWxG,UAAUC,OAAS,QAAsB+H,IAAjBhI,UAAU,GAAmBA,UAAU,GAAK,GAC/EyG,EAAWzG,UAAUC,OAAS,QAAsB+H,IAAjBhI,UAAU,GAAmBA,UAAU,GAAK,GAE9EoB,KAAK0gB,sBAAwBtb,EAAS8d,WAAa7d,EAAS6d,UAC/DljB,KAAKuhB,UAELvT,GACJjD,QAAS,WAEP/K,KAAKmjB,gBAAkB,MAEzBjW,QAAS,WACP,IAAI1K,EAAQxC,KAGZA,KAAKmN,aAAasS,EAA+Bzf,KAAKojB,cACtDpjB,KAAKmN,aAAaqS,EAAsCxf,KAAKqjB,YAE7DrjB,KAAKiL,WAAU,WACbzI,EAAMygB,UAAUzgB,EAAM2f,eAK1BmB,UAAW,WACTtjB,KAAKujB,YAEPpY,cAAe,WACbnL,KAAKmiB,WAAY,EACjBniB,KAAKmjB,gBAAkB,MAEzB/e,QAAS,CACPmd,KAAM,WACJvhB,KAAKmiB,WAAY,GAEnBc,UAAW,WACT,IAAIO,EAAQ5kB,UAAUC,OAAS,QAAsB+H,IAAjBhI,UAAU,GAAmBA,UAAU,GAAKoB,KAAKmiB,UACrFniB,KAAK0N,WAAWgS,EAAuB1f,KAAKmX,SAAUqM,IAExDD,SAAU,WACR,IAAIC,EAAQ5kB,UAAUC,OAAS,QAAsB+H,IAAjBhI,UAAU,GAAmBA,UAAU,GAAKoB,KAAKmiB,UACrFniB,KAAK0N,WAAWiS,EAA4B3f,KAAKmX,SAAUqM,IAE7DJ,aAAc,SAAsBhW,GAE9BA,GAAMA,IAAOpN,KAAKmX,WACpBnX,KAAKmiB,WAAaniB,KAAKmiB,YAG3BkB,WAAY,SAAoBjW,GAC9B,IAAIpC,EAAShL,KAGToN,GAAMA,IAAOpN,KAAKmX,UACpBnX,KAAKiL,WAAU,WACbD,EAAOuY,SAASvY,EAAOmX,eAI7BsB,UAAW,SAAmBje,GAC5B,IAAI8T,EAAU9T,EAAM8T,SAEftZ,KAAKygB,cAAgBnH,IAAY,QAAYtZ,KAAKmiB,WACrDniB,KAAKuhB,QAGTa,gBAAiB,WACXpiB,KAAKmiB,YAAcniB,KAAKwgB,mBAC1BxgB,KAAKuhB,QAKTmC,eAAgB,WACd,IAAIC,EAAW,eAAY3jB,KAAK0Y,MAAMkL,SACtC5jB,KAAK6jB,aAAaF,EAASG,UAAU,KAIvCC,kBAAmB,WACjB,IAAIJ,EAAW,eAAY3jB,KAAK0Y,MAAMkL,SACtC5jB,KAAK6jB,aAAaF,EAAS,KAE7BK,cAAe,WAGbhkB,KAAKmjB,gBAAkB,eAAiB,OAAa,CAACc,SAASC,MAAQ,IAEvElkB,KAAKgiB,QAAS,GAEhBmC,aAAc,SAAsBlL,GAC7B,eAASA,EAAI,mBAChBjZ,KAAK6jB,aAAa5K,GAGpBjZ,KAAKsF,MAAM,SAEb8e,aAAc,WACZpkB,KAAK6jB,aAAa7jB,KAAKmjB,iBACvBnjB,KAAKmjB,gBAAkB,KAEvBnjB,KAAKgiB,QAAS,EACdhiB,KAAKsF,MAAM,SAEbue,aAAc,SAAsB5K,GAC7BjZ,KAAK2gB,gBACR,eAAa1H,KAInBjc,OAAQ,SAAgBC,GACtB,IAAIC,EAEA8iB,EAAYhgB,KAAKggB,UACjBne,EAAQ7B,KAAK6B,MACbqf,EAAclhB,KAAKkhB,YACnBiB,EAAYniB,KAAKmiB,UACjBnB,EAAyB,KAAhBhhB,KAAKghB,QAAuBhhB,KAAKghB,OAC1CqD,EAAWpnB,EAAE+C,KAAKtD,IAAK,CACzBgB,YAAa6hB,EACb3hB,MAAO,EAAEV,EAAO,CACd8jB,QAAmB,IAAXA,GACPnlB,EAAgBqB,EAAM,UAAUW,OAAOmjB,GAASA,IAAqB,IAAXA,GAAkBnlB,EAAgBqB,EAAM,GAAGW,OAAO0hB,EAAY,UAAWvf,KAAK+gB,OAAQllB,EAAgBqB,EAAM,MAAMW,OAAOmiB,GAAYA,GAAYnkB,EAAgBqB,EAAM,QAAQW,OAAOqjB,GAAcA,GAAchkB,GAAO8C,KAAKihB,cAC3Rlf,MAAO,CACLF,MAAOA,GAETlE,MAAOqC,KAAKgjB,cACZd,WAAY,CAAC,CACXplB,KAAM,OACNd,MAAOmmB,IAETlK,IAAK,WACJ,CAAC6J,EAAc7kB,EAAG+C,QACrBqkB,EAAWpnB,EAAE,aAAc,CACzBX,MAAO0D,KAAKsiB,gBACZ9gB,GAAI,CACF8iB,YAAatkB,KAAKgkB,cAClBO,WAAYvkB,KAAKmkB,aACjBK,WAAYxkB,KAAKokB,eAElB,CAACC,IACJ,IAAII,EAAYxnB,EAAE,OAAc,CAC9BX,MAAO,CACLooB,OAAQ1kB,KAAK8gB,UAEd,CAACmB,EAAehlB,EAAG+C,QAClB2kB,EAAc1nB,IACd2nB,EAAiB3nB,IAqBrB,OAnBI+C,KAAK8f,UAAYqC,IACnBwC,EAAc1nB,EAAE,MAAO,CACrBU,MAAO,CACLma,SAAU,KAEZtW,GAAI,CACFqjB,MAAO7kB,KAAK0jB,kBAGhBkB,EAAiB3nB,EAAE,MAAO,CACxBU,MAAO,CACLma,SAAU,KAEZtW,GAAI,CACFqjB,MAAO7kB,KAAK+jB,sBAKX9mB,EAAE,MAAO,CACdS,YAAa,kBACbqE,MAAO,CACLqf,OAAQphB,KAAKohB,QAEfzjB,MAAO,CACLma,SAAU,MAEZtW,GAAI,CACFiZ,QAASza,KAAKyjB,YAEf,CAACkB,EAAaN,EAAUO,EAAgBH,Q,kCCpb/C,qTAASpd,EAAmBC,GAAO,OAAOC,EAAmBD,IAAQE,EAAiBF,IAAQG,EAA4BH,IAAQI,IAElI,SAASA,IAAuB,MAAM,IAAIC,UAAU,wIAEpD,SAASF,EAA4BG,EAAGC,GAAU,GAAKD,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAOE,EAAkBF,EAAGC,GAAS,IAAIE,EAAI9L,OAAO+L,UAAUC,SAASC,KAAKN,GAAGO,MAAM,GAAI,GAAiE,MAAnD,WAANJ,GAAkBH,EAAEQ,cAAaL,EAAIH,EAAEQ,YAAYtL,MAAgB,QAANiL,GAAqB,QAANA,EAAoBM,MAAMC,KAAKV,GAAc,cAANG,GAAqB,2CAA2CQ,KAAKR,GAAWD,EAAkBF,EAAGC,QAAzG,GAE7S,SAASL,EAAiBgB,GAAQ,GAAsB,qBAAXC,QAAmD,MAAzBD,EAAKC,OAAOC,WAA2C,MAAtBF,EAAK,cAAuB,OAAOH,MAAMC,KAAKE,GAEtJ,SAASjB,EAAmBD,GAAO,GAAIe,MAAMM,QAAQrB,GAAM,OAAOQ,EAAkBR,GAEpF,SAASQ,EAAkBR,EAAKsB,IAAkB,MAAPA,GAAeA,EAAMtB,EAAIzI,UAAQ+J,EAAMtB,EAAIzI,QAAQ,IAAK,IAAIF,EAAI,EAAGkK,EAAO,IAAIR,MAAMO,GAAMjK,EAAIiK,EAAKjK,IAAOkK,EAAKlK,GAAK2I,EAAI3I,GAAM,OAAOkK,EAEhL,SAAS/K,EAAQC,EAAQC,GAAkB,IAAIC,EAAOhC,OAAOgC,KAAKF,GAAS,GAAI9B,OAAOiC,sBAAuB,CAAE,IAAIC,EAAUlC,OAAOiC,sBAAsBH,GAASC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOpC,OAAOqC,yBAAyBP,EAAQM,GAAKlC,eAAiB8B,EAAKM,KAAKC,MAAMP,EAAME,GAAY,OAAOF,EAE9U,SAASQ,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,GAAIA,EAAI,EAAIb,EAAQ7B,OAAO6C,IAAS,GAAIC,SAAQ,SAAUhD,GAAOF,EAAgB6C,EAAQ3C,EAAK+C,EAAO/C,OAAYE,OAAO+C,0BAA4B/C,OAAOgD,iBAAiBP,EAAQzC,OAAO+C,0BAA0BF,IAAWhB,EAAQ7B,OAAO6C,IAASC,SAAQ,SAAUhD,GAAOE,OAAOC,eAAewC,EAAQ3C,EAAKE,OAAOqC,yBAAyBQ,EAAQ/C,OAAa,OAAO2C,EAEjf,SAAS7C,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAsB3M,IAAIgpB,EAAkB,SAAyB9oB,GAC7C,MAAO,QAAQ6B,OAAO7B,GAAS,GAAI,MAGjC+oB,EAAkB,SAAyB/oB,GAC7C,MAAO,QAAQ6B,OAAO7B,GAAS,GAAI,MAI1BM,EAAQ,CAEjB0oB,eAAgB,eAAS,QAEzBpkB,YAAa,eAAS,QACtBqkB,WAAY,eAAS,QACrBC,aAAc,eAAS,SAIdC,EAAa,eAAO,CAC7B7oB,MAAOA,EACP8H,QAAS,CACPghB,aAAc,SAAsBpe,GAElC,MAAO,CAACA,EAAMpJ,MAAQoJ,EAAMpJ,MAAQ,GAAIoJ,EAAMqe,QAAUre,EAAMqe,QAAU,KAE1EC,YAAa,SAAqB9f,EAAOwB,EAAOgM,GAC1ChT,KAAKuF,YAAcvF,KAAKuF,WAAWC,IAG5B,eAAYA,IAGZ,eAAoBxF,KAAK4Y,OAOpC,eAAUpT,GACVxF,KAAKsF,MAAM,OAAyB0B,EAAMjL,IAAKiL,EAAOxB,EAAOwN,KAE/DyK,YAAa,WACX,IAAIjb,EAAQxC,KAERgT,EAASpU,UAAUC,OAAS,QAAsB+H,IAAjBhI,UAAU,IAAmBA,UAAU,GAExEqH,EAAmB,eAAgBjG,MACnCsE,EAAS2B,EAAiB1B,eAC1B8N,EAAapM,EAAiBoM,WAC9B3D,EAAezI,EAAiByI,aAChC9N,EAAcqF,EAAiBrF,YAC/BC,EAAcoF,EAAiBpF,YAC/BmkB,EAAiB/e,EAAiB+e,eAClC7G,EAAiBlY,EAAiBkY,eAElClhB,EAAI+C,KAAK2E,eAGb,GAAI3E,KAAKob,iBAAqC,IAAlB9W,EAAOzF,OACjC,OAAO5B,IAGT,IAAIsoB,EAAuBlT,GAAcrS,KAAKoZ,YAAY,QAEtDvJ,EAAgBnB,EAAe1O,KAAK6P,cAAgB,OACpDrC,EAAgBkB,EAAe1O,KAAKwN,cAAgB,OAEpDgY,EAAW,SAAkBxe,EAAO0O,GACtC,IAAInZ,EAAQyK,EAAMzK,MACdkpB,EAAYze,EAAMye,UAClB7oB,EAAUoK,EAAMpK,QAChB2C,EAAeyH,EAAMzH,aACrBxD,EAAMiL,EAAMjL,IACZ6jB,EAAY,KAEX5Y,EAAMzK,MAAMmpB,QAAW1e,EAAM2e,cAKhC/F,EAAY,eAAU5Y,EAAMjL,MAG9B,IAAIyF,EAAK,GAEL+jB,IACF/jB,EAAGgZ,MAAQ,SAAUhV,GACnBhD,EAAM8iB,YAAY9f,EAAOwB,EAAOgM,IAGlCxR,EAAGiZ,QAAU,SAAUjV,GACrB,IAAI8T,EAAU9T,EAAM8T,QAEhBA,IAAY,QAAcA,IAAY,QACxC9W,EAAM8iB,YAAY9f,EAAOwB,EAAOgM,KAKtC,IAAI4S,EAAYvT,EAAa7P,EAAM+Q,iBAAiBxX,EAAKiL,EAAOgM,GAAU,GACtE6S,EAAYxT,EAAa7P,EAAM6Q,mBAAmBtX,EAAKiL,EAAOgM,GAAU,KACxE8S,EAAYzT,EAAa7P,EAAMkR,iBAAiB3X,EAAKiL,EAAOgM,GAAU,KACtE5V,EAAO,CACTQ,MAAO,CAAC,CAGN,oBAAqBkoB,GACpBtjB,EAAM4iB,aAAape,GAAQ6e,GAC9BvpB,MAAO,CACLM,QAASA,EACT2C,aAAcA,GAEhBwC,MAAOiF,EAAM+e,SAAW,GACxBpoB,MAAOc,EAAcA,EAAc,CAGjCqZ,SAAUyN,GAAwBve,EAAMuL,SAAW,IAAM,KACzDyT,KAAMhf,EAAMif,YAAc,KAC1B9E,MAAOna,EAAM2e,aAAe,KAC5B,gBAAiBjQ,EAAW,EAC5B,aAAckK,GACbpd,EAAMuS,YAAY,KAAMhZ,EAAKiL,EAAMiP,OAAQjD,EAAS,OAAS,OAAQ,KAAM4S,GAC9EpkB,GAAIA,EACJzF,IAAKA,GAOHmqB,EAAY,CAACpB,EAAgB/oB,GAAM+oB,EAAgB/oB,EAAIoe,eAAgB2K,KAEvE9R,IACFkT,EAAY,CAACnB,EAAgBhpB,GAAMgpB,EAAgBhpB,EAAIoe,eAAgB4K,KAAmBlnB,OAAOwJ,EAAmB6e,KAGtH,IAAI9kB,EAAQ,CACV7E,MAAOA,EACP4pB,OAAQpqB,EACRiL,MAAOA,EACPgM,OAAQA,EAERnD,cAAeA,EACfrC,cAAeA,GAEblM,EAAWkB,EAAMjB,cAAc2kB,EAAW9kB,IAAUnE,EAAE,MAAO,CAC/DqJ,SAAU,eAAWmf,EAAWlpB,KAE9B6pB,EAAWN,EAAY7oB,EAAE,OAAQ,CACnCS,YAAa,WACZ,KAAKG,OAAOioB,EAAW,MAAQ,KAElC,OAAO7oB,EAAE,OAAKG,EAAM,CAACkE,EAAU8kB,GAAUhoB,OAAO,UAI9CioB,EAAS/hB,EAAO+S,IAAImO,GAAUpnB,OAAO,QAErCkoB,EAAO,GAEX,GAAItT,EACFsT,EAAK/nB,KAAKtB,EAAE,OAAK,CACfW,MAAOoC,KAAKqe,aACZ/hB,MAAO,CACLM,QAAS,eAAkBuhB,GAAkB6G,EAE7C7G,IAEDkI,QACE,CACL,IAAIjlB,EAAQ,CACVyD,QAASP,EAAOzF,OAChByF,OAAQA,EAERuL,cAAeA,EACfrC,cAAeA,GAEjB8Y,EAAK/nB,KAAKyB,KAAKuB,cAAc,QAAqBH,IAAUnE,KAC5DqpB,EAAK/nB,KAAKtB,EAAE,OAAK,CACfW,MAAOoC,KAAKklB,aACZ5oB,MAAO,CACLM,QAASooB,IAEVqB,IAGL,OAAOppB,EAAE+V,EAAS,OAAS,OAAQ,CACjCpV,OAAQoV,EAAShT,KAAKoe,WAAape,KAAKilB,aAAe,KACvD3oB,MAAO0W,EAAS,CACdnS,YAAaA,GAAeD,GAAe,MACzC,CACFA,YAAaA,GAAe,MAE9B7E,IAAKiX,EAAS,WAAa,YAC1BsT,Q,kCC1OT,+OAASxoB,EAAQC,EAAQC,GAAkB,IAAIC,EAAOhC,OAAOgC,KAAKF,GAAS,GAAI9B,OAAOiC,sBAAuB,CAAE,IAAIC,EAAUlC,OAAOiC,sBAAsBH,GAASC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOpC,OAAOqC,yBAAyBP,EAAQM,GAAKlC,eAAiB8B,EAAKM,KAAKC,MAAMP,EAAME,GAAY,OAAOF,EAE9U,SAASQ,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,GAAIA,EAAI,EAAIb,EAAQ7B,OAAO6C,IAAS,GAAIC,SAAQ,SAAUhD,GAAOF,EAAgB6C,EAAQ3C,EAAK+C,EAAO/C,OAAYE,OAAO+C,0BAA4B/C,OAAOgD,iBAAiBP,EAAQzC,OAAO+C,0BAA0BF,IAAWhB,EAAQ7B,OAAO6C,IAASC,SAAQ,SAAUhD,GAAOE,OAAOC,eAAewC,EAAQ3C,EAAKE,OAAOqC,yBAAyBQ,EAAQ/C,OAAa,OAAO2C,EAEjf,SAAS7C,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAmBpM,IAAIQ,EAAQ,eAAsB,eAASmC,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAc,GAAI,QAAU,QAAe,QAAgB,QAAa,QAAe,QAAqB,QAAa,QAAa,SAAc,SAG3S8E,EAA0B,eAAO,CAC1CzG,KAAM,QAGN2C,OAAQ,CACR,OAAY,OAAkB,OAAS,OACvC,OAAY,OAAoB,OAAc,OAAY,OAAY,OAEtE,OAAc,QACdnD,MAAOA,K,kCCnCT,+IAASwB,EAAQC,EAAQC,GAAkB,IAAIC,EAAOhC,OAAOgC,KAAKF,GAAS,GAAI9B,OAAOiC,sBAAuB,CAAE,IAAIC,EAAUlC,OAAOiC,sBAAsBH,GAASC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GAAO,OAAOpC,OAAOqC,yBAAyBP,EAAQM,GAAKlC,eAAiB8B,EAAKM,KAAKC,MAAMP,EAAME,GAAY,OAAOF,EAE9U,SAASQ,EAAcC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAAS,MAAQF,UAAUD,GAAKC,UAAUD,GAAK,GAAIA,EAAI,EAAIb,EAAQ7B,OAAO6C,IAAS,GAAIC,SAAQ,SAAUhD,GAAOF,EAAgB6C,EAAQ3C,EAAK+C,EAAO/C,OAAYE,OAAO+C,0BAA4B/C,OAAOgD,iBAAiBP,EAAQzC,OAAO+C,0BAA0BF,IAAWhB,EAAQ7B,OAAO6C,IAASC,SAAQ,SAAUhD,GAAOE,OAAOC,eAAewC,EAAQ3C,EAAKE,OAAOqC,yBAAyBQ,EAAQ/C,OAAa,OAAO2C,EAEjf,SAAS7C,EAAgBC,EAAKC,EAAKC,GAAiK,OAApJD,KAAOD,EAAOG,OAAOC,eAAeJ,EAAKC,EAAK,CAAEC,MAAOA,EAAOG,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBP,EAAIC,GAAOC,EAAgBF,EAU3M,IAAIyqB,EAAmB,SAA0BvqB,GAC/C,OAAOA,EAAQ,GAINM,EAAQ,eAAsB,CACvCoF,UAAW,eAAS,QACpBmD,QAAS,eAAS,OAAkB,EAAG0hB,GACvCC,WAAY,eAAS,QAAmB,GACxCC,KAAM,eAAS,OAAkB,EAAGF,GACpCG,WAAY,eAAS,QAAmB,GACxCC,WAAY,eAAS,OAAkB,KACtC,SAGQvkB,EAA8B,eAAO,CAC9CtF,KAAM,QACNC,YAAY,EACZT,MAAOA,EACPU,OAAQ,SAAgBC,EAAGC,GACzB,IAAIE,EAAOF,EAAKE,KACZd,EAAQY,EAAKZ,MACboF,EAAYpF,EAAMoF,UAClBmD,EAAUvI,EAAMuI,QAChB+hB,EAAM3pB,EAAE,KAAM,CAACA,EAAE,OAAW,CAC9BX,MAAO,CACLoF,UAAWA,OAGXmlB,EAAQ5pB,EAAE,KAAM,eAAY4H,EAAS+hB,IACrCE,EAAM7pB,EAAE,KAAM,CAACA,EAAE,OAAW,CAC9BX,MAAO,CACLuF,MAAO,MACPH,UAAWA,OAGXqlB,EAAQ9pB,EAAE,KAAM,eAAY4H,EAASiiB,IACrCpM,EAASzd,EAAE,QAAS,eAAYX,EAAMmqB,KAAMM,IAC5CC,EAAU1qB,EAAMkqB,WAAmCvpB,IAAtBA,EAAE,QAAS,CAAC4pB,IACzCI,EAAS3qB,EAAMoqB,WAAazpB,EAAE,QAAS,CAAC4pB,IAAU5pB,IACtD,OAAOA,EAAE,OAAc,eAAUG,EAAM,CACrCd,MAAOmC,EAAc,GAAInC,EAAMqqB,cAC7B,CAACK,EAAQtM,EAAQuM,Q,kCCxDzB,kDAMWC,EAAsB,WAC/B,IAAIjO,EAAKra,UAAUC,OAAS,QAAsB+H,IAAjBhI,UAAU,GAAmBA,UAAU,GAAKqlB,SACzEkD,EAAM,iBACV,SAAOA,GAAiC,KAA1BA,EAAIlf,WAAWyd,QAAiByB,EAAIC,cAAgB,eAAUnO,KAE5EkO,EAAIC,aAAanO,GAAI,K,kCCXvB,gGAGW3c,EAAQ,GAGR+qB,EAAgB,eAAO,CAChCjjB,QAAS,CACPoZ,eAAgB,WACd,IAAIlZ,EAAStE,KAAKuE,eACdtH,EAAI+C,KAAK2E,eACT2iB,EAAYrqB,IAWhB,OATI+C,KAAK4E,kBAAkB,WACzB0iB,EAAYrqB,EAAE,WAAY,CACxBlB,IAAK,YACJ,CAACiE,KAAKuB,cAAc,QAA0B,CAC/CsD,QAASP,EAAOzF,OAChByF,OAAQA,OAILgjB","file":"js/vendors-ae606773.c93bd5f8.js","sourcesContent":["function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_SPINNER } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_LABEL } from '../../constants/slots';\nimport { normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n label: makeProp(PROP_TYPE_STRING),\n role: makeProp(PROP_TYPE_STRING, 'status'),\n small: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'span'),\n type: makeProp(PROP_TYPE_STRING, 'border'),\n variant: makeProp(PROP_TYPE_STRING)\n}, NAME_SPINNER); // --- Main component ---\n// @vue/component\n\nexport var BSpinner = /*#__PURE__*/extend({\n name: NAME_SPINNER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var props = _ref.props,\n data = _ref.data,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var $label = normalizeSlot(SLOT_NAME_LABEL, {}, $scopedSlots, $slots) || props.label;\n\n if ($label) {\n $label = h('span', {\n staticClass: 'sr-only'\n }, $label);\n }\n\n return h(props.tag, mergeData(data, {\n attrs: {\n role: $label ? props.role || 'status' : null,\n 'aria-hidden': $label ? null : 'true'\n },\n class: (_class = {}, _defineProperty(_class, \"spinner-\".concat(props.type), props.type), _defineProperty(_class, \"spinner-\".concat(props.type, \"-sm\"), props.small), _defineProperty(_class, \"text-\".concat(props.variant), props.variant), _class)\n }), [$label || h()]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_TABLE_CELL } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { isTag } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Helper methods ---\n// Parse a rowspan or colspan into a digit (or `null` if < `1` )\n\nvar parseSpan = function parseSpan(value) {\n value = toInteger(value, 0);\n return value > 0 ? value : null;\n};\n/* istanbul ignore next */\n\n\nvar spanValidator = function spanValidator(value) {\n return isUndefinedOrNull(value) || parseSpan(value) > 0;\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable({\n colspan: makeProp(PROP_TYPE_NUMBER_STRING, null, spanValidator),\n rowspan: makeProp(PROP_TYPE_NUMBER_STRING, null, spanValidator),\n stackedHeading: makeProp(PROP_TYPE_STRING),\n stickyColumn: makeProp(PROP_TYPE_BOOLEAN, false),\n variant: makeProp(PROP_TYPE_STRING)\n}, NAME_TABLE_CELL); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTd = /*#__PURE__*/extend({\n name: NAME_TABLE_CELL,\n // Mixin order is important!\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n inject: {\n getBvTableTr: {\n default:\n /* istanbul ignore next */\n function _default() {\n return function () {\n return {};\n };\n }\n }\n },\n inheritAttrs: false,\n props: props,\n computed: {\n bvTableTr: function bvTableTr() {\n return this.getBvTableTr();\n },\n // Overridden by ``\n tag: function tag() {\n return 'td';\n },\n inTbody: function inTbody() {\n return this.bvTableTr.inTbody;\n },\n inThead: function inThead() {\n return this.bvTableTr.inThead;\n },\n inTfoot: function inTfoot() {\n return this.bvTableTr.inTfoot;\n },\n isDark: function isDark() {\n return this.bvTableTr.isDark;\n },\n isStacked: function isStacked() {\n return this.bvTableTr.isStacked;\n },\n // We only support stacked-heading in tbody in stacked mode\n isStackedCell: function isStackedCell() {\n return this.inTbody && this.isStacked;\n },\n isResponsive: function isResponsive() {\n return this.bvTableTr.isResponsive;\n },\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n // Sticky headers only apply to cells in table `thead`\n isStickyHeader: function isStickyHeader() {\n return this.bvTableTr.isStickyHeader;\n },\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return this.bvTableTr.hasStickyHeader;\n },\n // Needed to handle background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n // Sticky column cells are only available in responsive\n // mode (horizontal scrolling) or when sticky header mode\n // Applies to cells in `thead`, `tbody` and `tfoot`\n isStickyColumn: function isStickyColumn() {\n return !this.isStacked && (this.isResponsive || this.hasStickyHeader) && this.stickyColumn;\n },\n rowVariant: function rowVariant() {\n return this.bvTableTr.variant;\n },\n headVariant: function headVariant() {\n return this.bvTableTr.headVariant;\n },\n footVariant: function footVariant() {\n return this.bvTableTr.footVariant;\n },\n tableVariant: function tableVariant() {\n return this.bvTableTr.tableVariant;\n },\n computedColspan: function computedColspan() {\n return parseSpan(this.colspan);\n },\n computedRowspan: function computedRowspan() {\n return parseSpan(this.rowspan);\n },\n // We use computed props here for improved performance by caching\n // the results of the string interpolation\n cellClasses: function cellClasses() {\n var variant = this.variant,\n headVariant = this.headVariant,\n isStickyColumn = this.isStickyColumn;\n\n if (!variant && this.isStickyHeader && !headVariant || !variant && isStickyColumn && this.inTfoot && !this.footVariant || !variant && isStickyColumn && this.inThead && !headVariant || !variant && isStickyColumn && this.inTbody) {\n // Needed for sticky-header mode as Bootstrap v4 table cells do\n // not inherit parent's `background-color`\n variant = this.rowVariant || this.tableVariant || 'b-table-default';\n }\n\n return [variant ? \"\".concat(this.isDark ? 'bg' : 'table', \"-\").concat(variant) : null, isStickyColumn ? 'b-table-sticky-column' : null];\n },\n cellAttrs: function cellAttrs() {\n var stackedHeading = this.stackedHeading; // We use computed props here for improved performance by caching\n // the results of the object spread (Object.assign)\n\n var headOrFoot = this.inThead || this.inTfoot; // Make sure col/rowspan's are > 0 or null\n\n var colspan = this.computedColspan;\n var rowspan = this.computedRowspan; // Default role and scope\n\n var role = 'cell';\n var scope = null; // Compute role and scope\n // We only add scopes with an explicit span of 1 or greater\n\n if (headOrFoot) {\n // Header or footer cells\n role = 'columnheader';\n scope = colspan > 0 ? 'colspan' : 'col';\n } else if (isTag(this.tag, 'th')) {\n // th's in tbody\n role = 'rowheader';\n scope = rowspan > 0 ? 'rowgroup' : 'row';\n }\n\n return _objectSpread(_objectSpread({\n colspan: colspan,\n rowspan: rowspan,\n role: role,\n scope: scope\n }, this.bvAttrs), {}, {\n // Add in the stacked cell label data-attribute if in\n // stacked mode (if a stacked heading label is provided)\n 'data-label': this.isStackedCell && !isUndefinedOrNull(stackedHeading) ?\n /* istanbul ignore next */\n toString(stackedHeading) : null\n });\n }\n },\n render: function render(h) {\n var $content = [this.normalizeSlot()];\n return h(this.tag, {\n class: this.cellClasses,\n attrs: this.cellAttrs,\n // Transfer any native listeners\n on: this.bvListeners\n }, [this.isStackedCell ? h('div', [$content]) : $content]);\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_SKELETON } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n animation: makeProp(PROP_TYPE_STRING, 'wave'),\n height: makeProp(PROP_TYPE_STRING),\n size: makeProp(PROP_TYPE_STRING),\n type: makeProp(PROP_TYPE_STRING, 'text'),\n variant: makeProp(PROP_TYPE_STRING),\n width: makeProp(PROP_TYPE_STRING)\n}, NAME_SKELETON); // --- Main component ---\n// @vue/component\n\nexport var BSkeleton = /*#__PURE__*/extend({\n name: NAME_SKELETON,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var _class;\n\n var data = _ref.data,\n props = _ref.props;\n var size = props.size,\n animation = props.animation,\n variant = props.variant;\n return h('div', mergeData(data, {\n staticClass: 'b-skeleton',\n style: {\n width: size || props.width,\n height: size || props.height\n },\n class: (_class = {}, _defineProperty(_class, \"b-skeleton-\".concat(props.type), true), _defineProperty(_class, \"b-skeleton-animate-\".concat(animation), animation), _defineProperty(_class, \"bg-\".concat(variant), variant), _class)\n }));\n }\n});","import { pluginFactory } from '../../utils/plugins';\nimport { BSkeleton } from './skeleton';\nimport { BSkeletonIcon } from './skeleton-icon';\nimport { BSkeletonImg } from './skeleton-img';\nimport { BSkeletonTable } from './skeleton-table';\nimport { BSkeletonWrapper } from './skeleton-wrapper';\nvar SkeletonPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BSkeleton: BSkeleton,\n BSkeletonIcon: BSkeletonIcon,\n BSkeletonImg: BSkeletonImg,\n BSkeletonTable: BSkeletonTable,\n BSkeletonWrapper: BSkeletonWrapper\n }\n});\nexport { SkeletonPlugin, BSkeleton, BSkeletonIcon, BSkeletonImg, BSkeletonTable, BSkeletonWrapper };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_THEAD } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n // Also sniffed by `` / `` / ``\n // Supported values: 'lite', 'dark', or `null`\n headVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_THEAD); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BThead = /*#__PURE__*/extend({\n name: NAME_THEAD,\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n provide: function provide() {\n var _this = this;\n\n return {\n getBvTableRowGroup: function getBvTableRowGroup() {\n return _this;\n }\n };\n },\n inject: {\n // Sniffed by `` / `` / ``\n getBvTable: {\n default:\n /* istanbul ignore next */\n function _default() {\n return function () {\n return {};\n };\n }\n }\n },\n inheritAttrs: false,\n props: props,\n computed: {\n bvTable: function bvTable() {\n return this.getBvTable();\n },\n // Sniffed by `` / `` / ``\n isThead: function isThead() {\n return true;\n },\n // Sniffed by `` / `` / ``\n isDark: function isDark() {\n return this.bvTable.dark;\n },\n // Sniffed by `` / `` / ``\n isStacked: function isStacked() {\n return this.bvTable.isStacked;\n },\n // Sniffed by `` / `` / ``\n isResponsive: function isResponsive() {\n return this.bvTable.isResponsive;\n },\n // Sniffed by `` / `` / ``\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n // Sticky headers only apply to cells in table `thead`\n isStickyHeader: function isStickyHeader() {\n return !this.isStacked && this.bvTable.stickyHeader;\n },\n // Sniffed by `` / `` / ``\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return !this.isStacked && this.bvTable.stickyHeader;\n },\n // Sniffed by `` / `` / ``\n tableVariant: function tableVariant() {\n return this.bvTable.tableVariant;\n },\n theadClasses: function theadClasses() {\n return [this.headVariant ? \"thead-\".concat(this.headVariant) : null];\n },\n theadAttrs: function theadAttrs() {\n return _objectSpread({\n role: 'rowgroup'\n }, this.bvAttrs);\n }\n },\n render: function render(h) {\n return h('thead', {\n class: this.theadClasses,\n attrs: this.theadAttrs,\n // Pass down any native listeners\n on: this.bvListeners\n }, this.normalizeSlot());\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_SKELETON_ICON } from '../../constants/components';\nimport { PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BIcon } from '../../icons'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n animation: makeProp(PROP_TYPE_STRING, 'wave'),\n icon: makeProp(PROP_TYPE_STRING),\n iconProps: makeProp(PROP_TYPE_OBJECT, {})\n}, NAME_SKELETON_ICON); // --- Main component ---\n// @vue/component\n\nexport var BSkeletonIcon = /*#__PURE__*/extend({\n name: NAME_SKELETON_ICON,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var data = _ref.data,\n props = _ref.props;\n var icon = props.icon,\n animation = props.animation;\n var $icon = h(BIcon, {\n staticClass: 'b-skeleton-icon',\n props: _objectSpread(_objectSpread({}, props.iconProps), {}, {\n icon: icon\n })\n });\n return h('div', mergeData(data, {\n staticClass: 'b-skeleton-icon-wrapper position-relative d-inline-block overflow-hidden',\n class: _defineProperty({}, \"b-skeleton-animate-\".concat(animation), animation)\n }), [$icon]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_TABLE_SIMPLE } from '../../constants/components';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { hasListenerMixin } from '../../mixins/has-listener';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { stackedMixin, props as stackedProps } from './helpers/mixin-stacked';\nimport { tableRendererMixin, props as tableRendererProps } from './helpers/mixin-table-renderer'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), stackedProps), tableRendererProps)), NAME_TABLE_SIMPLE); // --- Main component ---\n// @vue/component\n\nexport var BTableSimple = /*#__PURE__*/extend({\n name: NAME_TABLE_SIMPLE,\n // Order of mixins is important!\n // They are merged from first to last, followed by this component\n mixins: [// General mixins\n attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin, // Required table mixins\n tableRendererMixin, // Table features mixins\n // Stacked requires extra handling by users via\n // the table cell `stacked-heading` prop\n stackedMixin],\n props: props,\n computed: {\n isTableSimple: function isTableSimple() {\n return true;\n }\n } // Render function is provided by `tableRendererMixin`\n\n});","import { BTable } from './table';\nimport { BTableLite } from './table-lite';\nimport { BTableSimple } from './table-simple';\nimport { BTbody } from './tbody';\nimport { BThead } from './thead';\nimport { BTfoot } from './tfoot';\nimport { BTr } from './tr';\nimport { BTd } from './td';\nimport { BTh } from './th';\nimport { pluginFactory } from '../../utils/plugins';\nvar TableLitePlugin = /*#__PURE__*/pluginFactory({\n components: {\n BTableLite: BTableLite\n }\n});\nvar TableSimplePlugin = /*#__PURE__*/pluginFactory({\n components: {\n BTableSimple: BTableSimple,\n BTbody: BTbody,\n BThead: BThead,\n BTfoot: BTfoot,\n BTr: BTr,\n BTd: BTd,\n BTh: BTh\n }\n});\nvar TablePlugin = /*#__PURE__*/pluginFactory({\n components: {\n BTable: BTable\n },\n plugins: {\n TableLitePlugin: TableLitePlugin,\n TableSimplePlugin: TableSimplePlugin\n }\n});\nexport { // Plugins\nTablePlugin, TableLitePlugin, TableSimplePlugin, // Table components\nBTable, BTableLite, BTableSimple, // Helper components\nBTbody, BThead, BTfoot, BTr, BTd, BTh };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_TFOOT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n // Supported values: 'lite', 'dark', or null\n footVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_TFOOT); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTfoot = /*#__PURE__*/extend({\n name: NAME_TFOOT,\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n provide: function provide() {\n var _this = this;\n\n return {\n getBvTableRowGroup: function getBvTableRowGroup() {\n return _this;\n }\n };\n },\n inject: {\n // Sniffed by `` / `` / ``\n getBvTable: {\n default:\n /* istanbul ignore next */\n function _default() {\n return function () {\n return {};\n };\n }\n }\n },\n inheritAttrs: false,\n props: props,\n computed: {\n bvTable: function bvTable() {\n return this.getBvTable();\n },\n // Sniffed by `` / `` / ``\n isTfoot: function isTfoot() {\n return true;\n },\n // Sniffed by `` / `` / ``\n isDark: function isDark() {\n return this.bvTable.dark;\n },\n // Sniffed by `` / `` / ``\n isStacked: function isStacked() {\n return this.bvTable.isStacked;\n },\n // Sniffed by `` / `` / ``\n isResponsive: function isResponsive() {\n return this.bvTable.isResponsive;\n },\n // Sniffed by `` / `` / ``\n // Sticky headers are only supported in thead\n isStickyHeader: function isStickyHeader() {\n return false;\n },\n // Sniffed by `` / `` / ``\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return !this.isStacked && this.bvTable.stickyHeader;\n },\n // Sniffed by `` / `` / ``\n tableVariant: function tableVariant() {\n return this.bvTable.tableVariant;\n },\n tfootClasses: function tfootClasses() {\n return [this.footVariant ? \"thead-\".concat(this.footVariant) : null];\n },\n tfootAttrs: function tfootAttrs() {\n return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n role: 'rowgroup'\n });\n }\n },\n render: function render(h) {\n return h('tfoot', {\n class: this.tfootClasses,\n attrs: this.tfootAttrs,\n // Pass down any native listeners\n on: this.bvListeners\n }, this.normalizeSlot());\n }\n});","import { extend } from '../../../vue';\nimport { SLOT_NAME_BOTTOM_ROW } from '../../../constants/slots';\nimport { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var bottomRowMixin = extend({\n props: props,\n methods: {\n renderBottomRow: function renderBottomRow() {\n var fields = this.computedFields,\n stacked = this.stacked,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Static bottom row slot (hidden in visibly stacked mode as we can't control the data-label)\n // If in *always* stacked mode, we don't bother rendering the row\n\n if (!this.hasNormalizedSlot(SLOT_NAME_BOTTOM_ROW) || stacked === true || stacked === '') {\n return h();\n }\n\n return h(BTr, {\n staticClass: 'b-table-bottom-row',\n class: [isFunction(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, 'row-bottom') : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, 'row-bottom') : tbodyTrAttr,\n key: 'b-bottom-row'\n }, this.normalizeSlot(SLOT_NAME_BOTTOM_ROW, {\n columns: fields.length,\n fields: fields\n }));\n }\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../../vue';\nimport { MODEL_EVENT_NAME_PREFIX } from '../../../constants/events';\nimport { PROP_TYPE_BOOLEAN } from '../../../constants/props';\nimport { SLOT_NAME_TABLE_BUSY } from '../../../constants/slots';\nimport { stopEvent } from '../../../utils/events';\nimport { isFunction } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { BTr } from '../tr';\nimport { BTd } from '../td'; // --- Constants ---\n\nvar MODEL_PROP_NAME_BUSY = 'busy';\nvar MODEL_EVENT_NAME_BUSY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_BUSY; // --- Props ---\n\nexport var props = _defineProperty({}, MODEL_PROP_NAME_BUSY, makeProp(PROP_TYPE_BOOLEAN, false)); // --- Mixin ---\n// @vue/component\n\nexport var busyMixin = extend({\n props: props,\n data: function data() {\n return {\n localBusy: false\n };\n },\n computed: {\n computedBusy: function computedBusy() {\n return this[MODEL_PROP_NAME_BUSY] || this.localBusy;\n }\n },\n watch: {\n localBusy: function localBusy(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_BUSY, newValue);\n }\n }\n },\n methods: {\n // Event handler helper\n stopIfBusy: function stopIfBusy(event) {\n // If table is busy (via provider) then don't propagate\n if (this.computedBusy) {\n stopEvent(event);\n return true;\n }\n\n return false;\n },\n // Render the busy indicator or return `null` if not busy\n renderBusy: function renderBusy() {\n var tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Return a busy indicator row, or `null` if not busy\n\n if (this.computedBusy && this.hasNormalizedSlot(SLOT_NAME_TABLE_BUSY)) {\n return h(BTr, {\n staticClass: 'b-table-busy-slot',\n class: [isFunction(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, SLOT_NAME_TABLE_BUSY) : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, SLOT_NAME_TABLE_BUSY) : tbodyTrAttr,\n key: 'table-busy-slot'\n }, [h(BTd, {\n props: {\n colspan: this.computedFields.length || null\n }\n }, [this.normalizeSlot(SLOT_NAME_TABLE_BUSY)])]);\n } // We return `null` here so that we can determine if we need to\n // render the table items rows or not\n\n\n return null;\n }\n }\n});","import { extend } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_EMPTY, SLOT_NAME_EMPTYFILTERED, SLOT_NAME_TABLE_BUSY } from '../../../constants/slots';\nimport { htmlOrText } from '../../../utils/html';\nimport { isFunction } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { BTr } from '../tr';\nimport { BTd } from '../td'; // --- Props ---\n\nexport var props = {\n emptyFilteredHtml: makeProp(PROP_TYPE_STRING),\n emptyFilteredText: makeProp(PROP_TYPE_STRING, 'There are no records matching your request'),\n emptyHtml: makeProp(PROP_TYPE_STRING),\n emptyText: makeProp(PROP_TYPE_STRING, 'There are no records to show'),\n showEmpty: makeProp(PROP_TYPE_BOOLEAN, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var emptyMixin = extend({\n props: props,\n methods: {\n renderEmpty: function renderEmpty() {\n var _safeVueInstance = safeVueInstance(this),\n items = _safeVueInstance.computedItems,\n computedBusy = _safeVueInstance.computedBusy;\n\n var h = this.$createElement;\n var $empty = h();\n\n if (this.showEmpty && (!items || items.length === 0) && !(computedBusy && this.hasNormalizedSlot(SLOT_NAME_TABLE_BUSY))) {\n var fields = this.computedFields,\n isFiltered = this.isFiltered,\n emptyText = this.emptyText,\n emptyHtml = this.emptyHtml,\n emptyFilteredText = this.emptyFilteredText,\n emptyFilteredHtml = this.emptyFilteredHtml,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n $empty = this.normalizeSlot(isFiltered ? SLOT_NAME_EMPTYFILTERED : SLOT_NAME_EMPTY, {\n emptyFilteredHtml: emptyFilteredHtml,\n emptyFilteredText: emptyFilteredText,\n emptyHtml: emptyHtml,\n emptyText: emptyText,\n fields: fields,\n // Not sure why this is included, as it will always be an empty array\n items: items\n });\n\n if (!$empty) {\n $empty = h('div', {\n class: ['text-center', 'my-2'],\n domProps: isFiltered ? htmlOrText(emptyFilteredHtml, emptyFilteredText) : htmlOrText(emptyHtml, emptyText)\n });\n }\n\n $empty = h(BTd, {\n props: {\n colspan: fields.length || null\n }\n }, [h('div', {\n attrs: {\n role: 'alert',\n 'aria-live': 'polite'\n }\n }, [$empty])]);\n $empty = h(BTr, {\n staticClass: 'b-table-empty-row',\n class: [isFunction(tbodyTrClass) ?\n /* istanbul ignore next */\n tbodyTrClass(null, 'row-empty') : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(null, 'row-empty') : tbodyTrAttr,\n key: isFiltered ? 'b-empty-filtered-row' : 'b-empty-row'\n }, [$empty]);\n }\n\n return $empty;\n }\n }\n});","import { arrayIncludes } from '../../../utils/array';\nimport { isArray, isFunction } from '../../../utils/inspect';\nimport { clone, keys, pick } from '../../../utils/object';\nimport { IGNORED_FIELD_KEYS } from './constants'; // Return a copy of a row after all reserved fields have been filtered out\n\nexport var sanitizeRow = function sanitizeRow(row, ignoreFields, includeFields) {\n var fieldsObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n // We first need to format the row based on the field configurations\n // This ensures that we add formatted values for keys that may not\n // exist in the row itself\n var formattedRow = keys(fieldsObj).reduce(function (result, key) {\n var field = fieldsObj[key];\n var filterByFormatted = field.filterByFormatted;\n var formatter = isFunction(filterByFormatted) ?\n /* istanbul ignore next */\n filterByFormatted : filterByFormatted ?\n /* istanbul ignore next */\n field.formatter : null;\n\n if (isFunction(formatter)) {\n result[key] = formatter(row[key], key, row);\n }\n\n return result;\n }, clone(row)); // Determine the allowed keys:\n // - Ignore special fields that start with `_`\n // - Ignore fields in the `ignoreFields` array\n // - Include only fields in the `includeFields` array\n\n var allowedKeys = keys(formattedRow).filter(function (key) {\n return !IGNORED_FIELD_KEYS[key] && !(isArray(ignoreFields) && ignoreFields.length > 0 && arrayIncludes(ignoreFields, key)) && !(isArray(includeFields) && includeFields.length > 0 && !arrayIncludes(includeFields, key));\n });\n return pick(formattedRow, allowedKeys);\n};","import { isObject } from '../../../utils/inspect';\nimport { stringifyObjectValues } from '../../../utils/stringify-object-values';\nimport { sanitizeRow } from './sanitize-row'; // Stringifies the values of a record, ignoring any special top level field keys\n// TODO: Add option to stringify `scopedSlot` items\n\nexport var stringifyRecordValues = function stringifyRecordValues(row, ignoreFields, includeFields, fieldsObj) {\n return isObject(row) ? stringifyObjectValues(sanitizeRow(row, ignoreFields, includeFields, fieldsObj)) :\n /* istanbul ignore next */\n '';\n};","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { extend } from '../../../vue';\nimport { NAME_TABLE } from '../../../constants/components';\nimport { EVENT_NAME_FILTERED } from '../../../constants/events';\nimport { PROP_TYPE_REG_EXP, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_ARRAY, PROP_TYPE_NUMBER_STRING } from '../../../constants/props';\nimport { RX_DIGITS, RX_SPACES } from '../../../constants/regex';\nimport { concat } from '../../../utils/array';\nimport { cloneDeep } from '../../../utils/clone-deep';\nimport { identity } from '../../../utils/identity';\nimport { isFunction, isString, isRegExp } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { toInteger } from '../../../utils/number';\nimport { hasPropFunction, makeProp } from '../../../utils/props';\nimport { escapeRegExp } from '../../../utils/string';\nimport { warn } from '../../../utils/warn';\nimport { stringifyRecordValues } from './stringify-record-values'; // --- Constants ---\n\nvar DEBOUNCE_DEPRECATED_MSG = 'Prop \"filter-debounce\" is deprecated. Use the debounce feature of \"\" instead.'; // --- Props ---\n\nexport var props = {\n filter: makeProp([].concat(_toConsumableArray(PROP_TYPE_ARRAY_OBJECT_STRING), [PROP_TYPE_REG_EXP])),\n filterDebounce: makeProp(PROP_TYPE_NUMBER_STRING, 0, function (value) {\n return RX_DIGITS.test(String(value));\n }),\n filterFunction: makeProp(PROP_TYPE_FUNCTION),\n filterIgnoredFields: makeProp(PROP_TYPE_ARRAY, []),\n filterIncludedFields: makeProp(PROP_TYPE_ARRAY, [])\n}; // --- Mixin ---\n// @vue/component\n\nexport var filteringMixin = extend({\n props: props,\n data: function data() {\n return {\n // Flag for displaying which empty slot to show and some event triggering\n isFiltered: false,\n // Where we store the copy of the filter criteria after debouncing\n // We pre-set it with the sanitized filter value\n localFilter: this.filterSanitize(this.filter)\n };\n },\n computed: {\n computedFilterIgnored: function computedFilterIgnored() {\n return concat(this.filterIgnoredFields || []).filter(identity);\n },\n computedFilterIncluded: function computedFilterIncluded() {\n return concat(this.filterIncludedFields || []).filter(identity);\n },\n computedFilterDebounce: function computedFilterDebounce() {\n var ms = toInteger(this.filterDebounce, 0);\n /* istanbul ignore next */\n\n if (ms > 0) {\n warn(DEBOUNCE_DEPRECATED_MSG, NAME_TABLE);\n }\n\n return ms;\n },\n localFiltering: function localFiltering() {\n return this.hasProvider ? !!this.noProviderFiltering : true;\n },\n // For watching changes to `filteredItems` vs `localItems`\n filteredCheck: function filteredCheck() {\n var filteredItems = this.filteredItems,\n localItems = this.localItems,\n localFilter = this.localFilter;\n return {\n filteredItems: filteredItems,\n localItems: localItems,\n localFilter: localFilter\n };\n },\n // Sanitized/normalize filter-function prop\n localFilterFn: function localFilterFn() {\n // Return `null` to signal to use internal filter function\n var filterFunction = this.filterFunction;\n return hasPropFunction(filterFunction) ? filterFunction : null;\n },\n // Returns the records in `localItems` that match the filter criteria\n // Returns the original `localItems` array if not sorting\n filteredItems: function filteredItems() {\n // Note the criteria is debounced and sanitized\n var items = this.localItems,\n criteria = this.localFilter; // Resolve the filtering function, when requested\n // We prefer the provided filtering function and fallback to the internal one\n // When no filtering criteria is specified the filtering factories will return `null`\n\n var filterFn = this.localFiltering ? this.filterFnFactory(this.localFilterFn, criteria) || this.defaultFilterFnFactory(criteria) : null; // We only do local filtering when requested and there are records to filter\n\n return filterFn && items.length > 0 ? items.filter(filterFn) : items;\n }\n },\n watch: {\n // Watch for debounce being set to 0\n computedFilterDebounce: function computedFilterDebounce(newValue) {\n if (!newValue && this.$_filterTimer) {\n this.clearFilterTimer();\n this.localFilter = this.filterSanitize(this.filter);\n }\n },\n // Watch for changes to the filter criteria, and debounce if necessary\n filter: {\n // We need a deep watcher in case the user passes\n // an object when using `filter-function`\n deep: true,\n handler: function handler(newCriteria) {\n var _this = this;\n\n var timeout = this.computedFilterDebounce;\n this.clearFilterTimer();\n\n if (timeout && timeout > 0) {\n // If we have a debounce time, delay the update of `localFilter`\n this.$_filterTimer = setTimeout(function () {\n _this.localFilter = _this.filterSanitize(newCriteria);\n }, timeout);\n } else {\n // Otherwise, immediately update `localFilter` with `newFilter` value\n this.localFilter = this.filterSanitize(newCriteria);\n }\n }\n },\n // Watch for changes to the filter criteria and filtered items vs `localItems`\n // Set visual state and emit events as required\n filteredCheck: function filteredCheck(_ref) {\n var filteredItems = _ref.filteredItems,\n localFilter = _ref.localFilter;\n // Determine if the dataset is filtered or not\n var isFiltered = false;\n\n if (!localFilter) {\n // If filter criteria is falsey\n isFiltered = false;\n } else if (looseEqual(localFilter, []) || looseEqual(localFilter, {})) {\n // If filter criteria is an empty array or object\n isFiltered = false;\n } else if (localFilter) {\n // If filter criteria is truthy\n isFiltered = true;\n }\n\n if (isFiltered) {\n this.$emit(EVENT_NAME_FILTERED, filteredItems, filteredItems.length);\n }\n\n this.isFiltered = isFiltered;\n },\n isFiltered: function isFiltered(newValue, oldValue) {\n if (newValue === false && oldValue === true) {\n // We need to emit a filtered event if `isFiltered` transitions from `true` to\n // `false` so that users can update their pagination controls\n var localItems = this.localItems;\n this.$emit(EVENT_NAME_FILTERED, localItems, localItems.length);\n }\n }\n },\n created: function created() {\n var _this2 = this;\n\n // Create private non-reactive props\n this.$_filterTimer = null; // If filter is \"pre-set\", set the criteria\n // This will trigger any watchers/dependents\n // this.localFilter = this.filterSanitize(this.filter)\n // Set the initial filtered state in a `$nextTick()` so that\n // we trigger a filtered event if needed\n\n this.$nextTick(function () {\n _this2.isFiltered = Boolean(_this2.localFilter);\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.clearFilterTimer();\n },\n methods: {\n clearFilterTimer: function clearFilterTimer() {\n clearTimeout(this.$_filterTimer);\n this.$_filterTimer = null;\n },\n filterSanitize: function filterSanitize(criteria) {\n // Sanitizes filter criteria based on internal or external filtering\n if (this.localFiltering && !this.localFilterFn && !(isString(criteria) || isRegExp(criteria))) {\n // If using internal filter function, which only accepts string or RegExp,\n // return '' to signify no filter\n return '';\n } // Could be a string, object or array, as needed by external filter function\n // We use `cloneDeep` to ensure we have a new copy of an object or array\n // without Vue's reactive observers\n\n\n return cloneDeep(criteria);\n },\n // Filter Function factories\n filterFnFactory: function filterFnFactory(filterFn, criteria) {\n // Wrapper factory for external filter functions\n // Wrap the provided filter-function and return a new function\n // Returns `null` if no filter-function defined or if criteria is falsey\n // Rather than directly grabbing `this.computedLocalFilterFn` or `this.filterFunction`\n // we have it passed, so that the caller computed prop will be reactive to changes\n // in the original filter-function (as this routine is a method)\n if (!filterFn || !isFunction(filterFn) || !criteria || looseEqual(criteria, []) || looseEqual(criteria, {})) {\n return null;\n } // Build the wrapped filter test function, passing the criteria to the provided function\n\n\n var fn = function fn(item) {\n // Generated function returns true if the criteria matches part\n // of the serialized data, otherwise false\n return filterFn(item, criteria);\n }; // Return the wrapped function\n\n\n return fn;\n },\n defaultFilterFnFactory: function defaultFilterFnFactory(criteria) {\n var _this3 = this;\n\n // Generates the default filter function, using the given filter criteria\n // Returns `null` if no criteria or criteria format not supported\n if (!criteria || !(isString(criteria) || isRegExp(criteria))) {\n // Built in filter can only support strings or RegExp criteria (at the moment)\n return null;\n } // Build the RegExp needed for filtering\n\n\n var regExp = criteria;\n\n if (isString(regExp)) {\n // Escape special RegExp characters in the string and convert contiguous\n // whitespace to \\s+ matches\n var pattern = escapeRegExp(criteria).replace(RX_SPACES, '\\\\s+'); // Build the RegExp (no need for global flag, as we only need\n // to find the value once in the string)\n\n regExp = new RegExp(\".*\".concat(pattern, \".*\"), 'i');\n } // Generate the wrapped filter test function to use\n\n\n var fn = function fn(item) {\n // This searches all row values (and sub property values) in the entire (excluding\n // special `_` prefixed keys), because we convert the record to a space-separated\n // string containing all the value properties (recursively), even ones that are\n // not visible (not specified in this.fields)\n // Users can ignore filtering on specific fields, or on only certain fields,\n // and can optionall specify searching results of fields with formatter\n //\n // TODO: Enable searching on scoped slots (optional, as it will be SLOW)\n //\n // Generated function returns true if the criteria matches part of\n // the serialized data, otherwise false\n //\n // We set `lastIndex = 0` on the `RegExp` in case someone specifies the `/g` global flag\n regExp.lastIndex = 0;\n return regExp.test(stringifyRecordValues(item, _this3.computedFilterIgnored, _this3.computedFilterIncluded, _this3.computedFieldsObj));\n }; // Return the generated function\n\n\n return fn;\n }\n }\n});","import { extend } from '../../../vue';\nimport { PROP_TYPE_NUMBER_STRING } from '../../../constants/props';\nimport { mathMax } from '../../../utils/math';\nimport { toInteger } from '../../../utils/number';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance'; // --- Props ---\n\nexport var props = {\n currentPage: makeProp(PROP_TYPE_NUMBER_STRING, 1),\n perPage: makeProp(PROP_TYPE_NUMBER_STRING, 0)\n}; // --- Mixin ---\n// @vue/component\n\nexport var paginationMixin = extend({\n props: props,\n computed: {\n localPaging: function localPaging() {\n return this.hasProvider ? !!this.noProviderPaging : true;\n },\n paginatedItems: function paginatedItems() {\n var _safeVueInstance = safeVueInstance(this),\n sortedItems = _safeVueInstance.sortedItems,\n filteredItems = _safeVueInstance.filteredItems,\n localItems = _safeVueInstance.localItems;\n\n var items = sortedItems || filteredItems || localItems || [];\n var currentPage = mathMax(toInteger(this.currentPage, 1), 1);\n var perPage = mathMax(toInteger(this.perPage, 0), 0); // Apply local pagination\n\n if (this.localPaging && perPage) {\n // Grab the current page of data (which may be past filtered items limit)\n items = items.slice((currentPage - 1) * perPage, currentPage * perPage);\n } // Return the items to display in the table\n\n\n return items;\n }\n }\n});","import { extend } from '../../../vue';\nimport { NAME_TABLE } from '../../../constants/components';\nimport { EVENT_NAME_REFRESH, EVENT_NAME_REFRESHED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_FUNCTION, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { getRootActionEventName, getRootEventName } from '../../../utils/events';\nimport { isArray, isFunction, isPromise } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { clone } from '../../../utils/object';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { warn } from '../../../utils/warn';\nimport { listenOnRootMixin } from '../../../mixins/listen-on-root'; // --- Constants ---\n\nvar ROOT_EVENT_NAME_REFRESHED = getRootEventName(NAME_TABLE, EVENT_NAME_REFRESHED);\nvar ROOT_ACTION_EVENT_NAME_REFRESH = getRootActionEventName(NAME_TABLE, EVENT_NAME_REFRESH); // --- Props ---\n\nexport var props = {\n // Passed to the context object\n // Not used by `` directly\n apiUrl: makeProp(PROP_TYPE_STRING),\n // Adds in 'Function' support\n items: makeProp(PROP_TYPE_ARRAY_FUNCTION, []),\n noProviderFiltering: makeProp(PROP_TYPE_BOOLEAN, false),\n noProviderPaging: makeProp(PROP_TYPE_BOOLEAN, false),\n noProviderSorting: makeProp(PROP_TYPE_BOOLEAN, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var providerMixin = extend({\n mixins: [listenOnRootMixin],\n props: props,\n computed: {\n hasProvider: function hasProvider() {\n return isFunction(this.items);\n },\n providerTriggerContext: function providerTriggerContext() {\n // Used to trigger the provider function via a watcher. Only the fields that\n // are needed for triggering a provider update are included. Note that the\n // regular this.context is sent to the provider during fetches though, as they\n // may need all the prop info.\n var ctx = {\n apiUrl: this.apiUrl,\n filter: null,\n sortBy: null,\n sortDesc: null,\n perPage: null,\n currentPage: null\n };\n\n if (!this.noProviderFiltering) {\n // Either a string, or could be an object or array.\n ctx.filter = this.localFilter;\n }\n\n if (!this.noProviderSorting) {\n ctx.sortBy = this.localSortBy;\n ctx.sortDesc = this.localSortDesc;\n }\n\n if (!this.noProviderPaging) {\n ctx.perPage = this.perPage;\n ctx.currentPage = this.currentPage;\n }\n\n return clone(ctx);\n }\n },\n watch: {\n // Provider update triggering\n items: function items(newValue) {\n // If a new provider has been specified, trigger an update\n if (this.hasProvider || isFunction(newValue)) {\n this.$nextTick(this._providerUpdate);\n }\n },\n providerTriggerContext: function providerTriggerContext(newValue, oldValue) {\n // Trigger the provider to update as the relevant context values have changed.\n if (!looseEqual(newValue, oldValue)) {\n this.$nextTick(this._providerUpdate);\n }\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n // Call the items provider if necessary\n if (this.hasProvider && (!this.localItems || this.localItems.length === 0)) {\n // Fetch on mount if localItems is empty\n this._providerUpdate();\n } // Listen for global messages to tell us to force refresh the table\n\n\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REFRESH, function (id) {\n if (id === _this.id || id === _this) {\n _this.refresh();\n }\n });\n },\n methods: {\n refresh: function refresh() {\n var _safeVueInstance = safeVueInstance(this),\n items = _safeVueInstance.items,\n refresh = _safeVueInstance.refresh,\n computedBusy = _safeVueInstance.computedBusy; // Public Method: Force a refresh of the provider function\n\n\n this.$off(EVENT_NAME_REFRESHED, refresh);\n\n if (computedBusy) {\n // Can't force an update when forced busy by user (busy prop === true)\n if (this.localBusy && this.hasProvider) {\n // But if provider running (localBusy), re-schedule refresh once `refreshed` emitted\n this.$on(EVENT_NAME_REFRESHED, refresh);\n }\n } else {\n this.clearSelected();\n\n if (this.hasProvider) {\n this.$nextTick(this._providerUpdate);\n } else {\n /* istanbul ignore next */\n this.localItems = isArray(items) ? items.slice() : [];\n }\n }\n },\n // Provider related methods\n _providerSetLocal: function _providerSetLocal(items) {\n this.localItems = isArray(items) ? items.slice() : [];\n this.localBusy = false;\n this.$emit(EVENT_NAME_REFRESHED); // New root emit\n\n if (this.id) {\n this.emitOnRoot(ROOT_EVENT_NAME_REFRESHED, this.id);\n }\n },\n _providerUpdate: function _providerUpdate() {\n var _this2 = this;\n\n // Refresh the provider function items.\n if (!this.hasProvider) {\n // Do nothing if no provider\n return;\n } // If table is busy, wait until refreshed before calling again\n\n\n if (safeVueInstance(this).computedBusy) {\n // Schedule a new refresh once `refreshed` is emitted\n this.$nextTick(this.refresh);\n return;\n } // Set internal busy state\n\n\n this.localBusy = true; // Call provider function with context and optional callback after DOM is fully updated\n\n this.$nextTick(function () {\n try {\n // Call provider function passing it the context and optional callback\n var data = _this2.items(_this2.context, _this2._providerSetLocal);\n\n if (isPromise(data)) {\n // Provider returned Promise\n data.then(function (items) {\n // Provider resolved with items\n _this2._providerSetLocal(items);\n });\n } else if (isArray(data)) {\n // Provider returned Array data\n _this2._providerSetLocal(data);\n } else {\n /* istanbul ignore if */\n if (_this2.items.length !== 2) {\n // Check number of arguments provider function requested\n // Provider not using callback (didn't request second argument), so we clear\n // busy state as most likely there was an error in the provider function\n\n /* istanbul ignore next */\n warn(\"Provider function didn't request callback and did not return a promise or data.\", NAME_TABLE);\n _this2.localBusy = false;\n }\n }\n } catch (e)\n /* istanbul ignore next */\n {\n // Provider function borked on us, so we spew out a warning\n // and clear the busy state\n warn(\"Provider function error [\".concat(e.name, \"] \").concat(e.message, \".\"), NAME_TABLE);\n _this2.localBusy = false;\n\n _this2.$off(EVENT_NAME_REFRESHED, _this2.refresh);\n }\n });\n }\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../../vue';\nimport { EVENT_NAME_CONTEXT_CHANGED, EVENT_NAME_FILTERED, EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_SELECTED } from '../../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { arrayIncludes, createArray } from '../../../utils/array';\nimport { identity } from '../../../utils/identity';\nimport { isArray, isNumber } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax, mathMin } from '../../../utils/math';\nimport { makeProp } from '../../../utils/props';\nimport { toString } from '../../../utils/string';\nimport { sanitizeRow } from './sanitize-row'; // --- Constants ---\n\nvar SELECT_MODES = ['range', 'multi', 'single'];\nvar ROLE_GRID = 'grid'; // --- Props ---\n\nexport var props = {\n // Disable use of click handlers for row selection\n noSelectOnClick: makeProp(PROP_TYPE_BOOLEAN, false),\n selectMode: makeProp(PROP_TYPE_STRING, 'multi', function (value) {\n return arrayIncludes(SELECT_MODES, value);\n }),\n selectable: makeProp(PROP_TYPE_BOOLEAN, false),\n selectedVariant: makeProp(PROP_TYPE_STRING, 'active')\n}; // --- Mixin ---\n// @vue/component\n\nexport var selectableMixin = extend({\n props: props,\n data: function data() {\n return {\n selectedRows: [],\n selectedLastRow: -1\n };\n },\n computed: {\n isSelectable: function isSelectable() {\n return this.selectable && this.selectMode;\n },\n hasSelectableRowClick: function hasSelectableRowClick() {\n return this.isSelectable && !this.noSelectOnClick;\n },\n supportsSelectableRows: function supportsSelectableRows() {\n return true;\n },\n selectableHasSelection: function selectableHasSelection() {\n var selectedRows = this.selectedRows;\n return this.isSelectable && selectedRows && selectedRows.length > 0 && selectedRows.some(identity);\n },\n selectableIsMultiSelect: function selectableIsMultiSelect() {\n return this.isSelectable && arrayIncludes(['range', 'multi'], this.selectMode);\n },\n selectableTableClasses: function selectableTableClasses() {\n var _ref;\n\n var isSelectable = this.isSelectable;\n return _ref = {\n 'b-table-selectable': isSelectable\n }, _defineProperty(_ref, \"b-table-select-\".concat(this.selectMode), isSelectable), _defineProperty(_ref, 'b-table-selecting', this.selectableHasSelection), _defineProperty(_ref, 'b-table-selectable-no-click', isSelectable && !this.hasSelectableRowClick), _ref;\n },\n selectableTableAttrs: function selectableTableAttrs() {\n if (!this.isSelectable) {\n return {};\n }\n\n var role = this.bvAttrs.role || ROLE_GRID;\n return {\n role: role,\n // TODO:\n // Should this attribute not be included when `no-select-on-click` is set\n // since this attribute implies keyboard navigation?\n 'aria-multiselectable': role === ROLE_GRID ? toString(this.selectableIsMultiSelect) : null\n };\n }\n },\n watch: {\n computedItems: function computedItems(newValue, oldValue) {\n // Reset for selectable\n var equal = false;\n\n if (this.isSelectable && this.selectedRows.length > 0) {\n // Quick check against array length\n equal = isArray(newValue) && isArray(oldValue) && newValue.length === oldValue.length;\n\n for (var i = 0; equal && i < newValue.length; i++) {\n // Look for the first non-loosely equal row, after ignoring reserved fields\n equal = looseEqual(sanitizeRow(newValue[i]), sanitizeRow(oldValue[i]));\n }\n }\n\n if (!equal) {\n this.clearSelected();\n }\n },\n selectable: function selectable(newValue) {\n this.clearSelected();\n this.setSelectionHandlers(newValue);\n },\n selectMode: function selectMode() {\n this.clearSelected();\n },\n hasSelectableRowClick: function hasSelectableRowClick(newValue) {\n this.clearSelected();\n this.setSelectionHandlers(!newValue);\n },\n selectedRows: function selectedRows(_selectedRows, oldValue) {\n var _this = this;\n\n if (this.isSelectable && !looseEqual(_selectedRows, oldValue)) {\n var items = []; // `.forEach()` skips over non-existent indices (on sparse arrays)\n\n _selectedRows.forEach(function (v, idx) {\n if (v) {\n items.push(_this.computedItems[idx]);\n }\n });\n\n this.$emit(EVENT_NAME_ROW_SELECTED, items);\n }\n }\n },\n beforeMount: function beforeMount() {\n // Set up handlers if needed\n if (this.isSelectable) {\n this.setSelectionHandlers(true);\n }\n },\n methods: {\n // Public methods\n selectRow: function selectRow(index) {\n // Select a particular row (indexed based on computedItems)\n if (this.isSelectable && isNumber(index) && index >= 0 && index < this.computedItems.length && !this.isRowSelected(index)) {\n var selectedRows = this.selectableIsMultiSelect ? this.selectedRows.slice() : [];\n selectedRows[index] = true;\n this.selectedLastClicked = -1;\n this.selectedRows = selectedRows;\n }\n },\n unselectRow: function unselectRow(index) {\n // Un-select a particular row (indexed based on `computedItems`)\n if (this.isSelectable && isNumber(index) && this.isRowSelected(index)) {\n var selectedRows = this.selectedRows.slice();\n selectedRows[index] = false;\n this.selectedLastClicked = -1;\n this.selectedRows = selectedRows;\n }\n },\n selectAllRows: function selectAllRows() {\n var length = this.computedItems.length;\n\n if (this.isSelectable && length > 0) {\n this.selectedLastClicked = -1;\n this.selectedRows = this.selectableIsMultiSelect ? createArray(length, true) : [true];\n }\n },\n isRowSelected: function isRowSelected(index) {\n // Determine if a row is selected (indexed based on `computedItems`)\n return !!(isNumber(index) && this.selectedRows[index]);\n },\n clearSelected: function clearSelected() {\n // Clear any active selected row(s)\n this.selectedLastClicked = -1;\n this.selectedRows = [];\n },\n // Internal private methods\n selectableRowClasses: function selectableRowClasses(index) {\n if (this.isSelectable && this.isRowSelected(index)) {\n var variant = this.selectedVariant;\n return _defineProperty({\n 'b-table-row-selected': true\n }, \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(variant), variant);\n }\n\n return {};\n },\n selectableRowAttrs: function selectableRowAttrs(index) {\n return {\n 'aria-selected': !this.isSelectable ? null : this.isRowSelected(index) ? 'true' : 'false'\n };\n },\n setSelectionHandlers: function setSelectionHandlers(on) {\n var method = on && !this.noSelectOnClick ? '$on' : '$off'; // Handle row-clicked event\n\n this[method](EVENT_NAME_ROW_CLICKED, this.selectionHandler); // Clear selection on filter, pagination, and sort changes\n\n this[method](EVENT_NAME_FILTERED, this.clearSelected);\n this[method](EVENT_NAME_CONTEXT_CHANGED, this.clearSelected);\n },\n selectionHandler: function selectionHandler(item, index, event) {\n /* istanbul ignore if: should never happen */\n if (!this.isSelectable || this.noSelectOnClick) {\n // Don't do anything if table is not in selectable mode\n this.clearSelected();\n return;\n }\n\n var selectMode = this.selectMode,\n selectedLastRow = this.selectedLastRow;\n var selectedRows = this.selectedRows.slice();\n var selected = !selectedRows[index]; // Note 'multi' mode needs no special event handling\n\n if (selectMode === 'single') {\n selectedRows = [];\n } else if (selectMode === 'range') {\n if (selectedLastRow > -1 && event.shiftKey) {\n // range\n for (var idx = mathMin(selectedLastRow, index); idx <= mathMax(selectedLastRow, index); idx++) {\n selectedRows[idx] = true;\n }\n\n selected = true;\n } else {\n if (!(event.ctrlKey || event.metaKey)) {\n // Clear range selection if any\n selectedRows = [];\n selected = true;\n }\n\n if (selected) this.selectedLastRow = index;\n }\n }\n\n selectedRows[index] = selected;\n this.selectedRows = selectedRows;\n }\n }\n});","var _props, _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../../vue';\nimport { EVENT_NAME_HEAD_CLICKED, EVENT_NAME_SORT_CHANGED, MODEL_EVENT_NAME_PREFIX } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_FUNCTION, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../../constants/props';\nimport { arrayIncludes } from '../../../utils/array';\nimport { isFunction, isUndefinedOrNull } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { stableSort } from '../../../utils/stable-sort';\nimport { trim } from '../../../utils/string';\nimport { defaultSortCompare } from './default-sort-compare'; // --- Constants ---\n\nvar MODEL_PROP_NAME_SORT_BY = 'sortBy';\nvar MODEL_EVENT_NAME_SORT_BY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SORT_BY;\nvar MODEL_PROP_NAME_SORT_DESC = 'sortDesc';\nvar MODEL_EVENT_NAME_SORT_DESC = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_SORT_DESC;\nvar SORT_DIRECTION_ASC = 'asc';\nvar SORT_DIRECTION_DESC = 'desc';\nvar SORT_DIRECTION_LAST = 'last';\nvar SORT_DIRECTIONS = [SORT_DIRECTION_ASC, SORT_DIRECTION_DESC, SORT_DIRECTION_LAST]; // --- Props ---\n\nexport var props = (_props = {\n labelSortAsc: makeProp(PROP_TYPE_STRING, 'Click to sort ascending'),\n labelSortClear: makeProp(PROP_TYPE_STRING, 'Click to clear sorting'),\n labelSortDesc: makeProp(PROP_TYPE_STRING, 'Click to sort descending'),\n noFooterSorting: makeProp(PROP_TYPE_BOOLEAN, false),\n noLocalSorting: makeProp(PROP_TYPE_BOOLEAN, false),\n // Another prop that should have had a better name\n // It should be `noSortClear` (on non-sortable headers)\n // We will need to make sure the documentation is clear on what\n // this prop does (as well as in the code for future reference)\n noSortReset: makeProp(PROP_TYPE_BOOLEAN, false)\n}, _defineProperty(_props, MODEL_PROP_NAME_SORT_BY, makeProp(PROP_TYPE_STRING)), _defineProperty(_props, \"sortCompare\", makeProp(PROP_TYPE_FUNCTION)), _defineProperty(_props, \"sortCompareLocale\", makeProp(PROP_TYPE_ARRAY_STRING)), _defineProperty(_props, \"sortCompareOptions\", makeProp(PROP_TYPE_OBJECT, {\n numeric: true\n})), _defineProperty(_props, MODEL_PROP_NAME_SORT_DESC, makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_props, \"sortDirection\", makeProp(PROP_TYPE_STRING, SORT_DIRECTION_ASC, function (value) {\n return arrayIncludes(SORT_DIRECTIONS, value);\n})), _defineProperty(_props, \"sortIconLeft\", makeProp(PROP_TYPE_BOOLEAN, false)), _defineProperty(_props, \"sortNullLast\", makeProp(PROP_TYPE_BOOLEAN, false)), _props); // --- Mixin ---\n// @vue/component\n\nexport var sortingMixin = extend({\n props: props,\n data: function data() {\n return {\n localSortBy: this[MODEL_PROP_NAME_SORT_BY] || '',\n localSortDesc: this[MODEL_PROP_NAME_SORT_DESC] || false\n };\n },\n computed: {\n localSorting: function localSorting() {\n return this.hasProvider ? !!this.noProviderSorting : !this.noLocalSorting;\n },\n isSortable: function isSortable() {\n return this.computedFields.some(function (f) {\n return f.sortable;\n });\n },\n // Sorts the filtered items and returns a new array of the sorted items\n // When not sorted, the original items array will be returned\n sortedItems: function sortedItems() {\n var _safeVueInstance = safeVueInstance(this),\n sortBy = _safeVueInstance.localSortBy,\n sortDesc = _safeVueInstance.localSortDesc,\n locale = _safeVueInstance.sortCompareLocale,\n nullLast = _safeVueInstance.sortNullLast,\n sortCompare = _safeVueInstance.sortCompare,\n localSorting = _safeVueInstance.localSorting,\n filteredItems = _safeVueInstance.filteredItems,\n localItems = _safeVueInstance.localItems;\n\n var items = (filteredItems || localItems || []).slice();\n\n var localeOptions = _objectSpread(_objectSpread({}, this.sortCompareOptions), {}, {\n usage: 'sort'\n });\n\n if (sortBy && localSorting) {\n var field = this.computedFieldsObj[sortBy] || {};\n var sortByFormatted = field.sortByFormatted;\n var formatter = isFunction(sortByFormatted) ?\n /* istanbul ignore next */\n sortByFormatted : sortByFormatted ? this.getFieldFormatter(sortBy) : undefined; // `stableSort` returns a new array, and leaves the original array intact\n\n return stableSort(items, function (a, b) {\n var result = null; // Call user provided `sortCompare` routine first\n\n if (isFunction(sortCompare)) {\n // TODO:\n // Change the `sortCompare` signature to the one of `defaultSortCompare`\n // with the next major version bump\n result = sortCompare(a, b, sortBy, sortDesc, formatter, localeOptions, locale);\n } // Fallback to built-in `defaultSortCompare` if `sortCompare`\n // is not defined or returns `null`/`false`\n\n\n if (isUndefinedOrNull(result) || result === false) {\n result = defaultSortCompare(a, b, {\n sortBy: sortBy,\n formatter: formatter,\n locale: locale,\n localeOptions: localeOptions,\n nullLast: nullLast\n });\n } // Negate result if sorting in descending order\n\n\n return (result || 0) * (sortDesc ? -1 : 1);\n });\n }\n\n return items;\n }\n },\n watch: (_watch = {\n /* istanbul ignore next: pain in the butt to test */\n isSortable: function isSortable(newValue) {\n if (newValue) {\n if (this.isSortable) {\n this.$on(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n } else {\n this.$off(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n }\n }, _defineProperty(_watch, MODEL_PROP_NAME_SORT_DESC, function (newValue) {\n /* istanbul ignore next */\n if (newValue === this.localSortDesc) {\n return;\n }\n\n this.localSortDesc = newValue || false;\n }), _defineProperty(_watch, MODEL_PROP_NAME_SORT_BY, function (newValue) {\n /* istanbul ignore next */\n if (newValue === this.localSortBy) {\n return;\n }\n\n this.localSortBy = newValue || '';\n }), _defineProperty(_watch, \"localSortDesc\", function localSortDesc(newValue, oldValue) {\n // Emit update to sort-desc.sync\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_SORT_DESC, newValue);\n }\n }), _defineProperty(_watch, \"localSortBy\", function localSortBy(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.$emit(MODEL_EVENT_NAME_SORT_BY, newValue);\n }\n }), _watch),\n created: function created() {\n if (this.isSortable) {\n this.$on(EVENT_NAME_HEAD_CLICKED, this.handleSort);\n }\n },\n methods: {\n // Handlers\n // Need to move from thead-mixin\n handleSort: function handleSort(key, field, event, isFoot) {\n var _this = this;\n\n if (!this.isSortable) {\n /* istanbul ignore next */\n return;\n }\n\n if (isFoot && this.noFooterSorting) {\n return;\n } // TODO: make this tri-state sorting\n // cycle desc => asc => none => desc => ...\n\n\n var sortChanged = false;\n\n var toggleLocalSortDesc = function toggleLocalSortDesc() {\n var sortDirection = field.sortDirection || _this.sortDirection;\n\n if (sortDirection === SORT_DIRECTION_ASC) {\n _this.localSortDesc = false;\n } else if (sortDirection === SORT_DIRECTION_DESC) {\n _this.localSortDesc = true;\n } else {// sortDirection === 'last'\n // Leave at last sort direction from previous column\n }\n };\n\n if (field.sortable) {\n var sortKey = !this.localSorting && field.sortKey ? field.sortKey : key;\n\n if (this.localSortBy === sortKey) {\n // Change sorting direction on current column\n this.localSortDesc = !this.localSortDesc;\n } else {\n // Start sorting this column ascending\n this.localSortBy = sortKey; // this.localSortDesc = false\n\n toggleLocalSortDesc();\n }\n\n sortChanged = true;\n } else if (this.localSortBy && !this.noSortReset) {\n this.localSortBy = '';\n toggleLocalSortDesc();\n sortChanged = true;\n }\n\n if (sortChanged) {\n // Sorting parameters changed\n this.$emit(EVENT_NAME_SORT_CHANGED, this.context);\n }\n },\n // methods to compute classes and attrs for thead>th cells\n sortTheadThClasses: function sortTheadThClasses(key, field, isFoot) {\n return {\n // If sortable and sortIconLeft are true, then place sort icon on the left\n 'b-table-sort-icon-left': field.sortable && this.sortIconLeft && !(isFoot && this.noFooterSorting)\n };\n },\n sortTheadThAttrs: function sortTheadThAttrs(key, field, isFoot) {\n var _field$sortKey;\n\n var isSortable = this.isSortable,\n noFooterSorting = this.noFooterSorting,\n localSortDesc = this.localSortDesc,\n localSortBy = this.localSortBy,\n localSorting = this.localSorting;\n\n if (!isSortable || isFoot && noFooterSorting) {\n // No attributes if not a sortable table\n return {};\n }\n\n var sortable = field.sortable;\n var sortKey = !localSorting ? (_field$sortKey = field.sortKey) !== null && _field$sortKey !== void 0 ? _field$sortKey : key : key; // Assemble the aria-sort attribute value\n\n var ariaSort = sortable && localSortBy === sortKey ? localSortDesc ? 'descending' : 'ascending' : sortable ? 'none' : null; // Return the attribute\n\n return {\n 'aria-sort': ariaSort\n };\n },\n // A label to be placed in an `.sr-only` element in the header cell\n sortTheadThLabel: function sortTheadThLabel(key, field, isFoot) {\n // No label if not a sortable table\n if (!this.isSortable || isFoot && this.noFooterSorting) {\n return null;\n }\n\n var localSortBy = this.localSortBy,\n localSortDesc = this.localSortDesc,\n labelSortAsc = this.labelSortAsc,\n labelSortDesc = this.labelSortDesc;\n var sortable = field.sortable; // The correctness of these labels is very important for screen reader users\n\n var labelSorting = '';\n\n if (sortable) {\n if (localSortBy === key) {\n // Currently sorted sortable column\n labelSorting = localSortDesc ? labelSortAsc : labelSortDesc;\n } else {\n // Not currently sorted sortable column\n // Not using nested ternary's here for clarity/readability\n // Default for `aria-label`\n labelSorting = localSortDesc ? labelSortDesc : labelSortAsc; // Handle `sortDirection` setting\n\n var sortDirection = this.sortDirection || field.sortDirection;\n\n if (sortDirection === SORT_DIRECTION_ASC) {\n labelSorting = labelSortAsc;\n } else if (sortDirection === SORT_DIRECTION_DESC) {\n labelSorting = labelSortDesc;\n }\n }\n } else if (!this.noSortReset) {\n // Non sortable column\n labelSorting = localSortBy ? this.labelSortClear : '';\n } // Return the `.sr-only` sort label or `null` if no label\n\n\n return trim(labelSorting) || null;\n }\n }\n});","import { get } from '../../../utils/get';\nimport { isDate, isFunction, isNumber, isNumeric, isUndefinedOrNull } from '../../../utils/inspect';\nimport { toFloat } from '../../../utils/number';\nimport { stringifyObjectValues } from '../../../utils/stringify-object-values';\n\nvar normalizeValue = function normalizeValue(value) {\n if (isUndefinedOrNull(value)) {\n return '';\n }\n\n if (isNumeric(value)) {\n return toFloat(value, value);\n }\n\n return value;\n}; // Default sort compare routine\n//\n// TODO:\n// Add option to sort by multiple columns (tri-state per column,\n// plus order of columns in sort) where `sortBy` could be an array\n// of objects `[ {key: 'foo', sortDir: 'asc'}, {key:'bar', sortDir: 'desc'} ...]`\n// or an array of arrays `[ ['foo','asc'], ['bar','desc'] ]`\n// Multisort will most likely be handled in `mixin-sort.js` by\n// calling this method for each sortBy\n\n\nexport var defaultSortCompare = function defaultSortCompare(a, b) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref$sortBy = _ref.sortBy,\n sortBy = _ref$sortBy === void 0 ? null : _ref$sortBy,\n _ref$formatter = _ref.formatter,\n formatter = _ref$formatter === void 0 ? null : _ref$formatter,\n _ref$locale = _ref.locale,\n locale = _ref$locale === void 0 ? undefined : _ref$locale,\n _ref$localeOptions = _ref.localeOptions,\n localeOptions = _ref$localeOptions === void 0 ? {} : _ref$localeOptions,\n _ref$nullLast = _ref.nullLast,\n nullLast = _ref$nullLast === void 0 ? false : _ref$nullLast;\n\n // Get the value by `sortBy`\n var aa = get(a, sortBy, null);\n var bb = get(b, sortBy, null); // Apply user-provided formatter\n\n if (isFunction(formatter)) {\n aa = formatter(aa, sortBy, a);\n bb = formatter(bb, sortBy, b);\n } // Internally normalize value\n // `null` / `undefined` => ''\n // `'0'` => `0`\n\n\n aa = normalizeValue(aa);\n bb = normalizeValue(bb);\n\n if (isDate(aa) && isDate(bb) || isNumber(aa) && isNumber(bb)) {\n // Special case for comparing dates and numbers\n // Internally dates are compared via their epoch number values\n return aa < bb ? -1 : aa > bb ? 1 : 0;\n } else if (nullLast && aa === '' && bb !== '') {\n // Special case when sorting `null` / `undefined` / '' last\n return 1;\n } else if (nullLast && aa !== '' && bb === '') {\n // Special case when sorting `null` / `undefined` / '' last\n return -1;\n } // Do localized string comparison\n\n\n return stringifyObjectValues(aa).localeCompare(stringifyObjectValues(bb), locale, localeOptions);\n};","import { extend } from '../../../vue';\nimport { SLOT_NAME_TOP_ROW } from '../../../constants/slots';\nimport { isFunction } from '../../../utils/inspect';\nimport { BTr } from '../tr'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var topRowMixin = extend({\n methods: {\n renderTopRow: function renderTopRow() {\n var fields = this.computedFields,\n stacked = this.stacked,\n tbodyTrClass = this.tbodyTrClass,\n tbodyTrAttr = this.tbodyTrAttr;\n var h = this.$createElement; // Add static Top Row slot (hidden in visibly stacked mode as we can't control the data-label)\n // If in *always* stacked mode, we don't bother rendering the row\n\n if (!this.hasNormalizedSlot(SLOT_NAME_TOP_ROW) || stacked === true || stacked === '') {\n return h();\n }\n\n return h(BTr, {\n staticClass: 'b-table-top-row',\n class: [isFunction(tbodyTrClass) ? tbodyTrClass(null, 'row-top') : tbodyTrClass],\n attrs: isFunction(tbodyTrAttr) ? tbodyTrAttr(null, 'row-top') : tbodyTrAttr,\n key: 'b-top-row'\n }, [this.normalizeSlot(SLOT_NAME_TOP_ROW, {\n columns: fields.length,\n fields: fields\n })]);\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_TABLE } from '../../constants/components';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { hasListenerMixin } from '../../mixins/has-listener';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { bottomRowMixin, props as bottomRowProps } from './helpers/mixin-bottom-row';\nimport { busyMixin, props as busyProps } from './helpers/mixin-busy';\nimport { captionMixin, props as captionProps } from './helpers/mixin-caption';\nimport { colgroupMixin, props as colgroupProps } from './helpers/mixin-colgroup';\nimport { emptyMixin, props as emptyProps } from './helpers/mixin-empty';\nimport { filteringMixin, props as filteringProps } from './helpers/mixin-filtering';\nimport { itemsMixin, props as itemsProps } from './helpers/mixin-items';\nimport { paginationMixin, props as paginationProps } from './helpers/mixin-pagination';\nimport { providerMixin, props as providerProps } from './helpers/mixin-provider';\nimport { selectableMixin, props as selectableProps } from './helpers/mixin-selectable';\nimport { sortingMixin, props as sortingProps } from './helpers/mixin-sorting';\nimport { stackedMixin, props as stackedProps } from './helpers/mixin-stacked';\nimport { tableRendererMixin, props as tableRendererProps } from './helpers/mixin-table-renderer';\nimport { tbodyMixin, props as tbodyProps } from './helpers/mixin-tbody';\nimport { tfootMixin, props as tfootProps } from './helpers/mixin-tfoot';\nimport { theadMixin, props as theadProps } from './helpers/mixin-thead';\nimport { topRowMixin, props as topRowProps } from './helpers/mixin-top-row'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), bottomRowProps), busyProps), captionProps), colgroupProps), emptyProps), filteringProps), itemsProps), paginationProps), providerProps), selectableProps), sortingProps), stackedProps), tableRendererProps), tbodyProps), tfootProps), theadProps), topRowProps)), NAME_TABLE); // --- Main component ---\n// @vue/component\n\nexport var BTable = /*#__PURE__*/extend({\n name: NAME_TABLE,\n // Order of mixins is important!\n // They are merged from first to last, followed by this component\n mixins: [// General mixins\n attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin, // Required table mixins\n itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin, // Table features mixins\n stackedMixin, filteringMixin, sortingMixin, paginationMixin, captionMixin, colgroupMixin, selectableMixin, emptyMixin, topRowMixin, bottomRowMixin, busyMixin, providerMixin],\n props: props // Render function is provided by `tableRendererMixin`\n\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_TR } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Constants ---\n\nvar LIGHT = 'light';\nvar DARK = 'dark'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n variant: makeProp(PROP_TYPE_STRING)\n}, NAME_TR); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTr = /*#__PURE__*/extend({\n name: NAME_TR,\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n provide: function provide() {\n var _this = this;\n\n return {\n getBvTableTr: function getBvTableTr() {\n return _this;\n }\n };\n },\n inject: {\n getBvTableRowGroup: {\n default:\n /* istanbul ignore next */\n function _default() {\n return function () {\n return {};\n };\n }\n }\n },\n inheritAttrs: false,\n props: props,\n computed: {\n bvTableRowGroup: function bvTableRowGroup() {\n return this.getBvTableRowGroup();\n },\n // Sniffed by `` / ``\n inTbody: function inTbody() {\n return this.bvTableRowGroup.isTbody;\n },\n // Sniffed by `` / ``\n inThead: function inThead() {\n return this.bvTableRowGroup.isThead;\n },\n // Sniffed by `` / ``\n inTfoot: function inTfoot() {\n return this.bvTableRowGroup.isTfoot;\n },\n // Sniffed by `` / ``\n isDark: function isDark() {\n return this.bvTableRowGroup.isDark;\n },\n // Sniffed by `` / ``\n isStacked: function isStacked() {\n return this.bvTableRowGroup.isStacked;\n },\n // Sniffed by `` / ``\n isResponsive: function isResponsive() {\n return this.bvTableRowGroup.isResponsive;\n },\n // Sniffed by `` / ``\n // Sticky headers are only supported in thead\n isStickyHeader: function isStickyHeader() {\n return this.bvTableRowGroup.isStickyHeader;\n },\n // Sniffed by / `` / ``\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return !this.isStacked && this.bvTableRowGroup.hasStickyHeader;\n },\n // Sniffed by `` / ``\n tableVariant: function tableVariant() {\n return this.bvTableRowGroup.tableVariant;\n },\n // Sniffed by `` / ``\n headVariant: function headVariant() {\n return this.inThead ? this.bvTableRowGroup.headVariant : null;\n },\n // Sniffed by `` / ``\n footVariant: function footVariant() {\n return this.inTfoot ? this.bvTableRowGroup.footVariant : null;\n },\n isRowDark: function isRowDark() {\n return this.headVariant === LIGHT || this.footVariant === LIGHT ?\n /* istanbul ignore next */\n false : this.headVariant === DARK || this.footVariant === DARK ?\n /* istanbul ignore next */\n true : this.isDark;\n },\n trClasses: function trClasses() {\n var variant = this.variant;\n return [variant ? \"\".concat(this.isRowDark ? 'bg' : 'table', \"-\").concat(variant) : null];\n },\n trAttrs: function trAttrs() {\n return _objectSpread({\n role: 'row'\n }, this.bvAttrs);\n }\n },\n render: function render(h) {\n return h('tr', {\n class: this.trClasses,\n attrs: this.trAttrs,\n // Pass native listeners to child\n on: this.bvListeners\n }, this.normalizeSlot());\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_SKELETON_IMG } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BAspect } from '../aspect';\nimport { BSkeleton } from './skeleton'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n animation: makeProp(PROP_TYPE_STRING),\n aspect: makeProp(PROP_TYPE_STRING, '16:9'),\n cardImg: makeProp(PROP_TYPE_STRING),\n height: makeProp(PROP_TYPE_STRING),\n noAspect: makeProp(PROP_TYPE_BOOLEAN, false),\n variant: makeProp(PROP_TYPE_STRING),\n width: makeProp(PROP_TYPE_STRING)\n}, NAME_SKELETON_IMG); // --- Main component ---\n// @vue/component\n\nexport var BSkeletonImg = /*#__PURE__*/extend({\n name: NAME_SKELETON_IMG,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var data = _ref.data,\n props = _ref.props;\n var aspect = props.aspect,\n width = props.width,\n height = props.height,\n animation = props.animation,\n variant = props.variant,\n cardImg = props.cardImg;\n var $img = h(BSkeleton, mergeData(data, {\n props: {\n type: 'img',\n width: width,\n height: height,\n animation: animation,\n variant: variant\n },\n class: _defineProperty({}, \"card-img-\".concat(cardImg), cardImg)\n }));\n return props.noAspect ? $img : h(BAspect, {\n props: {\n aspect: aspect\n }\n }, [$img]);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { extend, REF_FOR_KEY } from '../../../vue';\nimport { EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_HOVERED, EVENT_NAME_ROW_UNHOVERED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION, PROP_TYPE_OBJECT_FUNCTION } from '../../../constants/props';\nimport { SLOT_NAME_ROW_DETAILS } from '../../../constants/slots';\nimport { useParentMixin } from '../../../mixins/use-parent';\nimport { get } from '../../../utils/get';\nimport { isFunction, isString, isUndefinedOrNull } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { toString } from '../../../utils/string';\nimport { BTr } from '../tr';\nimport { BTd } from '../td';\nimport { BTh } from '../th';\nimport { FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS } from './constants'; // --- Props ---\n\nexport var props = {\n detailsTdClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tbodyTrAttr: makeProp(PROP_TYPE_OBJECT_FUNCTION),\n tbodyTrClass: makeProp([].concat(_toConsumableArray(PROP_TYPE_ARRAY_OBJECT_STRING), [PROP_TYPE_FUNCTION]))\n}; // --- Mixin ---\n// @vue/component\n\nexport var tbodyRowMixin = extend({\n mixins: [useParentMixin],\n props: props,\n methods: {\n // Methods for computing classes, attributes and styles for table cells\n getTdValues: function getTdValues(item, key, tdValue, defaultValue) {\n var bvParent = this.bvParent;\n\n if (tdValue) {\n var value = get(item, key, '');\n\n if (isFunction(tdValue)) {\n return tdValue(value, key, item);\n } else if (isString(tdValue) && isFunction(bvParent[tdValue])) {\n return bvParent[tdValue](value, key, item);\n }\n\n return tdValue;\n }\n\n return defaultValue;\n },\n getThValues: function getThValues(item, key, thValue, type, defaultValue) {\n var bvParent = this.bvParent;\n\n if (thValue) {\n var value = get(item, key, '');\n\n if (isFunction(thValue)) {\n return thValue(value, key, item, type);\n } else if (isString(thValue) && isFunction(bvParent[thValue])) {\n return bvParent[thValue](value, key, item, type);\n }\n\n return thValue;\n }\n\n return defaultValue;\n },\n // Method to get the value for a field\n getFormattedValue: function getFormattedValue(item, field) {\n var key = field.key;\n var formatter = this.getFieldFormatter(key);\n var value = get(item, key, null);\n\n if (isFunction(formatter)) {\n value = formatter(value, key, item);\n }\n\n return isUndefinedOrNull(value) ? '' : value;\n },\n // Factory function methods\n toggleDetailsFactory: function toggleDetailsFactory(hasDetailsSlot, item) {\n var _this = this;\n\n // Returns a function to toggle a row's details slot\n return function () {\n if (hasDetailsSlot) {\n _this.$set(item, FIELD_KEY_SHOW_DETAILS, !item[FIELD_KEY_SHOW_DETAILS]);\n }\n };\n },\n // Row event handlers\n rowHovered: function rowHovered(event) {\n // `mouseenter` handler (non-bubbling)\n // `this.tbodyRowEventStopped` from tbody mixin\n if (!this.tbodyRowEventStopped(event)) {\n // `this.emitTbodyRowEvent` from tbody mixin\n this.emitTbodyRowEvent(EVENT_NAME_ROW_HOVERED, event);\n }\n },\n rowUnhovered: function rowUnhovered(event) {\n // `mouseleave` handler (non-bubbling)\n // `this.tbodyRowEventStopped` from tbody mixin\n if (!this.tbodyRowEventStopped(event)) {\n // `this.emitTbodyRowEvent` from tbody mixin\n this.emitTbodyRowEvent(EVENT_NAME_ROW_UNHOVERED, event);\n }\n },\n // Renders a TD or TH for a row's field\n renderTbodyRowCell: function renderTbodyRowCell(field, colIndex, item, rowIndex) {\n var _this2 = this;\n\n var isStacked = this.isStacked;\n var key = field.key,\n label = field.label,\n isRowHeader = field.isRowHeader;\n var h = this.$createElement;\n var hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n var formatted = this.getFormattedValue(item, field);\n var stickyColumn = !isStacked && (this.isResponsive || this.stickyHeader) && field.stickyColumn; // We only uses the helper components for sticky columns to\n // improve performance of BTable/BTableLite by reducing the\n // total number of vue instances created during render\n\n var cellTag = stickyColumn ? isRowHeader ? BTh : BTd : isRowHeader ? 'th' : 'td';\n var cellVariant = item[FIELD_KEY_CELL_VARIANT] && item[FIELD_KEY_CELL_VARIANT][key] ? item[FIELD_KEY_CELL_VARIANT][key] : field.variant || null;\n var data = {\n // For the Vue key, we concatenate the column index and\n // field key (as field keys could be duplicated)\n // TODO: Although we do prevent duplicate field keys...\n // So we could change this to: `row-${rowIndex}-cell-${key}`\n class: [field.class ? field.class : '', this.getTdValues(item, key, field.tdClass, '')],\n props: {},\n attrs: _objectSpread({\n 'aria-colindex': String(colIndex + 1)\n }, isRowHeader ? this.getThValues(item, key, field.thAttr, 'row', {}) : this.getTdValues(item, key, field.tdAttr, {})),\n key: \"row-\".concat(rowIndex, \"-cell-\").concat(colIndex, \"-\").concat(key)\n };\n\n if (stickyColumn) {\n // We are using the helper BTd or BTh\n data.props = {\n stackedHeading: isStacked ? label : null,\n stickyColumn: true,\n variant: cellVariant\n };\n } else {\n // Using native TD or TH element, so we need to\n // add in the attributes and variant class\n data.attrs['data-label'] = isStacked && !isUndefinedOrNull(label) ? toString(label) : null;\n data.attrs.role = isRowHeader ? 'rowheader' : 'cell';\n data.attrs.scope = isRowHeader ? 'row' : null; // Add in the variant class\n\n if (cellVariant) {\n data.class.push(\"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(cellVariant));\n }\n }\n\n var slotScope = {\n item: item,\n index: rowIndex,\n field: field,\n unformatted: get(item, key, ''),\n value: formatted,\n toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item),\n detailsShowing: Boolean(item[FIELD_KEY_SHOW_DETAILS])\n }; // If table supports selectable mode, then add in the following scope\n // this.supportsSelectableRows will be undefined if mixin isn't loaded\n\n if (safeVueInstance(this).supportsSelectableRows) {\n slotScope.rowSelected = this.isRowSelected(rowIndex);\n\n slotScope.selectRow = function () {\n return _this2.selectRow(rowIndex);\n };\n\n slotScope.unselectRow = function () {\n return _this2.unselectRow(rowIndex);\n };\n } // The new `v-slot` syntax doesn't like a slot name starting with\n // a square bracket and if using in-document HTML templates, the\n // v-slot attributes are lower-cased by the browser.\n // Switched to round bracket syntax to prevent confusion with\n // dynamic slot name syntax.\n // We look for slots in this order: `cell(${key})`, `cell(${key.toLowerCase()})`, 'cell()'\n // Slot names are now cached by mixin tbody in `this.$_bodyFieldSlotNameCache`\n // Will be `null` if no slot (or fallback slot) exists\n\n\n var slotName = this.$_bodyFieldSlotNameCache[key];\n var $childNodes = slotName ? this.normalizeSlot(slotName, slotScope) : toString(formatted);\n\n if (this.isStacked) {\n // We wrap in a DIV to ensure rendered as a single cell when visually stacked!\n $childNodes = [h('div', [$childNodes])];\n } // Render either a td or th cell\n\n\n return h(cellTag, data, [$childNodes]);\n },\n // Renders an item's row (or rows if details supported)\n renderTbodyRow: function renderTbodyRow(item, rowIndex) {\n var _this3 = this;\n\n var _safeVueInstance = safeVueInstance(this),\n fields = _safeVueInstance.computedFields,\n striped = _safeVueInstance.striped,\n primaryKey = _safeVueInstance.primaryKey,\n currentPage = _safeVueInstance.currentPage,\n perPage = _safeVueInstance.perPage,\n tbodyTrClass = _safeVueInstance.tbodyTrClass,\n tbodyTrAttr = _safeVueInstance.tbodyTrAttr,\n hasSelectableRowClick = _safeVueInstance.hasSelectableRowClick;\n\n var h = this.$createElement;\n var hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n var rowShowDetails = item[FIELD_KEY_SHOW_DETAILS] && hasDetailsSlot;\n var hasRowClickHandler = this.$listeners[EVENT_NAME_ROW_CLICKED] || hasSelectableRowClick; // We can return more than one TR if rowDetails enabled\n\n var $rows = []; // Details ID needed for `aria-details` when details showing\n // We set it to `null` when not showing so that attribute\n // does not appear on the element\n\n var detailsId = rowShowDetails ? this.safeId(\"_details_\".concat(rowIndex, \"_\")) : null; // For each item data field in row\n\n var $tds = fields.map(function (field, colIndex) {\n return _this3.renderTbodyRowCell(field, colIndex, item, rowIndex);\n }); // Calculate the row number in the dataset (indexed from 1)\n\n var ariaRowIndex = null;\n\n if (currentPage && perPage && perPage > 0) {\n ariaRowIndex = String((currentPage - 1) * perPage + rowIndex + 1);\n } // Create a unique :key to help ensure that sub components are re-rendered rather than\n // re-used, which can cause issues. If a primary key is not provided we use the rendered\n // rows index within the tbody.\n // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/2410\n\n\n var primaryKeyValue = toString(get(item, primaryKey)) || null;\n var rowKey = primaryKeyValue || toString(rowIndex); // If primary key is provided, use it to generate a unique ID on each tbody > tr\n // In the format of '{tableId}__row_{primaryKeyValue}'\n\n var rowId = primaryKeyValue ? this.safeId(\"_row_\".concat(primaryKeyValue)) : null; // Selectable classes and attributes\n\n var selectableClasses = safeVueInstance(this).selectableRowClasses ? this.selectableRowClasses(rowIndex) : {};\n var selectableAttrs = safeVueInstance(this).selectableRowAttrs ? this.selectableRowAttrs(rowIndex) : {}; // Additional classes and attributes\n\n var userTrClasses = isFunction(tbodyTrClass) ? tbodyTrClass(item, 'row') : tbodyTrClass;\n var userTrAttrs = isFunction(tbodyTrAttr) ?\n /* istanbul ignore next */\n tbodyTrAttr(item, 'row') : tbodyTrAttr; // Add the item row\n\n $rows.push(h(BTr, _defineProperty({\n class: [userTrClasses, selectableClasses, rowShowDetails ? 'b-table-has-details' : ''],\n props: {\n variant: item[FIELD_KEY_ROW_VARIANT] || null\n },\n attrs: _objectSpread(_objectSpread({\n id: rowId\n }, userTrAttrs), {}, {\n // Users cannot override the following attributes\n tabindex: hasRowClickHandler ? '0' : null,\n 'data-pk': primaryKeyValue || null,\n 'aria-details': detailsId,\n 'aria-owns': detailsId,\n 'aria-rowindex': ariaRowIndex\n }, selectableAttrs),\n on: {\n // Note: These events are not A11Y friendly!\n mouseenter: this.rowHovered,\n mouseleave: this.rowUnhovered\n },\n key: \"__b-table-row-\".concat(rowKey, \"__\"),\n ref: 'item-rows'\n }, REF_FOR_KEY, true), $tds)); // Row Details slot\n\n if (rowShowDetails) {\n var detailsScope = {\n item: item,\n index: rowIndex,\n fields: fields,\n toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item)\n }; // If table supports selectable mode, then add in the following scope\n // this.supportsSelectableRows will be undefined if mixin isn't loaded\n\n if (safeVueInstance(this).supportsSelectableRows) {\n detailsScope.rowSelected = this.isRowSelected(rowIndex);\n\n detailsScope.selectRow = function () {\n return _this3.selectRow(rowIndex);\n };\n\n detailsScope.unselectRow = function () {\n return _this3.unselectRow(rowIndex);\n };\n } // Render the details slot in a TD\n\n\n var $details = h(BTd, {\n props: {\n colspan: fields.length\n },\n class: this.detailsTdClass\n }, [this.normalizeSlot(SLOT_NAME_ROW_DETAILS, detailsScope)]); // Add a hidden row to keep table row striping consistent when details showing\n // Only added if the table is striped\n\n if (striped) {\n $rows.push( // We don't use `BTr` here as we don't need the extra functionality\n h('tr', {\n staticClass: 'd-none',\n attrs: {\n 'aria-hidden': 'true',\n role: 'presentation'\n },\n key: \"__b-table-details-stripe__\".concat(rowKey)\n }));\n } // Add the actual details row\n\n\n var userDetailsTrClasses = isFunction(this.tbodyTrClass) ?\n /* istanbul ignore next */\n this.tbodyTrClass(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrClass;\n var userDetailsTrAttrs = isFunction(this.tbodyTrAttr) ?\n /* istanbul ignore next */\n this.tbodyTrAttr(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrAttr;\n $rows.push(h(BTr, {\n staticClass: 'b-table-details',\n class: [userDetailsTrClasses],\n props: {\n variant: item[FIELD_KEY_ROW_VARIANT] || null\n },\n attrs: _objectSpread(_objectSpread({}, userDetailsTrAttrs), {}, {\n // Users cannot override the following attributes\n id: detailsId,\n tabindex: '-1'\n }),\n key: \"__b-table-details__\".concat(rowKey)\n }, [$details]));\n } else if (hasDetailsSlot) {\n // Only add the placeholder if a the table has a row-details slot defined (but not shown)\n $rows.push(h());\n\n if (striped) {\n // Add extra placeholder if table is striped\n $rows.push(h());\n }\n } // Return the row(s)\n\n\n return $rows;\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../../vue';\nimport { EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_CONTEXTMENU, EVENT_NAME_ROW_DBLCLICKED, EVENT_NAME_ROW_MIDDLE_CLICKED } from '../../../constants/events';\nimport { CODE_DOWN, CODE_END, CODE_ENTER, CODE_HOME, CODE_SPACE, CODE_UP } from '../../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING } from '../../../constants/props';\nimport { arrayIncludes, from as arrayFrom } from '../../../utils/array';\nimport { attemptFocus, closest, isActiveElement, isElement } from '../../../utils/dom';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { stopEvent } from '../../../utils/events';\nimport { sortKeys } from '../../../utils/object';\nimport { makeProp, pluckProps } from '../../../utils/props';\nimport { BTbody, props as BTbodyProps } from '../tbody';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active';\nimport { tbodyRowMixin, props as tbodyRowProps } from './mixin-tbody-row'; // --- Helper methods ---\n\nvar getCellSlotName = function getCellSlotName(value) {\n return \"cell(\".concat(value || '', \")\");\n}; // --- Props ---\n\n\nexport var props = sortKeys(_objectSpread(_objectSpread(_objectSpread({}, BTbodyProps), tbodyRowProps), {}, {\n tbodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n})); // --- Mixin ---\n// @vue/component\n\nexport var tbodyMixin = extend({\n mixins: [tbodyRowMixin],\n props: props,\n beforeDestroy: function beforeDestroy() {\n this.$_bodyFieldSlotNameCache = null;\n },\n methods: {\n // Returns all the item TR elements (excludes detail and spacer rows)\n // `this.$refs['item-rows']` is an array of item TR components/elements\n // Rows should all be `` components, but we map to TR elements\n // Also note that `this.$refs['item-rows']` may not always be in document order\n getTbodyTrs: function getTbodyTrs() {\n var $refs = this.$refs;\n var tbody = $refs.tbody ? $refs.tbody.$el || $refs.tbody : null;\n var trs = ($refs['item-rows'] || []).map(function (tr) {\n return tr.$el || tr;\n });\n return tbody && tbody.children && tbody.children.length > 0 && trs && trs.length > 0 ? arrayFrom(tbody.children).filter(function (tr) {\n return arrayIncludes(trs, tr);\n }) :\n /* istanbul ignore next */\n [];\n },\n // Returns index of a particular TBODY item TR\n // We set `true` on closest to include self in result\n getTbodyTrIndex: function getTbodyTrIndex(el) {\n /* istanbul ignore next: should not normally happen */\n if (!isElement(el)) {\n return -1;\n }\n\n var tr = el.tagName === 'TR' ? el : closest('tr', el, true);\n return tr ? this.getTbodyTrs().indexOf(tr) : -1;\n },\n // Emits a row event, with the item object, row index and original event\n emitTbodyRowEvent: function emitTbodyRowEvent(type, event) {\n if (type && this.hasListener(type) && event && event.target) {\n var rowIndex = this.getTbodyTrIndex(event.target);\n\n if (rowIndex > -1) {\n // The array of TRs correlate to the `computedItems` array\n var item = this.computedItems[rowIndex];\n this.$emit(type, item, rowIndex, event);\n }\n }\n },\n tbodyRowEventStopped: function tbodyRowEventStopped(event) {\n return this.stopIfBusy && this.stopIfBusy(event);\n },\n // Delegated row event handlers\n onTbodyRowKeydown: function onTbodyRowKeydown(event) {\n // Keyboard navigation and row click emulation\n var target = event.target,\n keyCode = event.keyCode;\n\n if (this.tbodyRowEventStopped(event) || target.tagName !== 'TR' || !isActiveElement(target) || target.tabIndex !== 0) {\n // Early exit if not an item row TR\n return;\n }\n\n if (arrayIncludes([CODE_ENTER, CODE_SPACE], keyCode)) {\n // Emulated click for keyboard users, transfer to click handler\n stopEvent(event);\n this.onTBodyRowClicked(event);\n } else if (arrayIncludes([CODE_UP, CODE_DOWN, CODE_HOME, CODE_END], keyCode)) {\n // Keyboard navigation\n var rowIndex = this.getTbodyTrIndex(target);\n\n if (rowIndex > -1) {\n stopEvent(event);\n var trs = this.getTbodyTrs();\n var shift = event.shiftKey;\n\n if (keyCode === CODE_HOME || shift && keyCode === CODE_UP) {\n // Focus first row\n attemptFocus(trs[0]);\n } else if (keyCode === CODE_END || shift && keyCode === CODE_DOWN) {\n // Focus last row\n attemptFocus(trs[trs.length - 1]);\n } else if (keyCode === CODE_UP && rowIndex > 0) {\n // Focus previous row\n attemptFocus(trs[rowIndex - 1]);\n } else if (keyCode === CODE_DOWN && rowIndex < trs.length - 1) {\n // Focus next row\n attemptFocus(trs[rowIndex + 1]);\n }\n }\n }\n },\n onTBodyRowClicked: function onTBodyRowClicked(event) {\n var $refs = this.$refs;\n var tbody = $refs.tbody ? $refs.tbody.$el || $refs.tbody : null; // Don't emit event when the table is busy, the user clicked\n // on a non-disabled control or is selecting text\n\n if (this.tbodyRowEventStopped(event) || filterEvent(event) || textSelectionActive(tbody || this.$el)) {\n return;\n }\n\n this.emitTbodyRowEvent(EVENT_NAME_ROW_CLICKED, event);\n },\n onTbodyRowMiddleMouseRowClicked: function onTbodyRowMiddleMouseRowClicked(event) {\n if (!this.tbodyRowEventStopped(event) && event.which === 2) {\n this.emitTbodyRowEvent(EVENT_NAME_ROW_MIDDLE_CLICKED, event);\n }\n },\n onTbodyRowContextmenu: function onTbodyRowContextmenu(event) {\n if (!this.tbodyRowEventStopped(event)) {\n this.emitTbodyRowEvent(EVENT_NAME_ROW_CONTEXTMENU, event);\n }\n },\n onTbodyRowDblClicked: function onTbodyRowDblClicked(event) {\n if (!this.tbodyRowEventStopped(event) && !filterEvent(event)) {\n this.emitTbodyRowEvent(EVENT_NAME_ROW_DBLCLICKED, event);\n }\n },\n // Render the tbody element and children\n // Note:\n // Row hover handlers are handled by the tbody-row mixin\n // As mouseenter/mouseleave events do not bubble\n renderTbody: function renderTbody() {\n var _this = this;\n\n var _safeVueInstance = safeVueInstance(this),\n items = _safeVueInstance.computedItems,\n renderBusy = _safeVueInstance.renderBusy,\n renderTopRow = _safeVueInstance.renderTopRow,\n renderEmpty = _safeVueInstance.renderEmpty,\n renderBottomRow = _safeVueInstance.renderBottomRow,\n hasSelectableRowClick = _safeVueInstance.hasSelectableRowClick;\n\n var h = this.$createElement;\n var hasRowClickHandler = this.hasListener(EVENT_NAME_ROW_CLICKED) || hasSelectableRowClick; // Prepare the tbody rows\n\n var $rows = []; // Add the item data rows or the busy slot\n\n var $busy = renderBusy ? renderBusy() : null;\n\n if ($busy) {\n // If table is busy and a busy slot, then return only the busy \"row\" indicator\n $rows.push($busy);\n } else {\n // Table isn't busy, or we don't have a busy slot\n // Create a slot cache for improved performance when looking up cell slot names\n // Values will be keyed by the field's `key` and will store the slot's name\n // Slots could be dynamic (i.e. `v-if`), so we must compute on each render\n // Used by tbody-row mixin render helper\n var cache = {};\n var defaultSlotName = getCellSlotName();\n defaultSlotName = this.hasNormalizedSlot(defaultSlotName) ? defaultSlotName : null;\n this.computedFields.forEach(function (field) {\n var key = field.key;\n var slotName = getCellSlotName(key);\n var lowercaseSlotName = getCellSlotName(key.toLowerCase());\n cache[key] = _this.hasNormalizedSlot(slotName) ? slotName : _this.hasNormalizedSlot(lowercaseSlotName) ?\n /* istanbul ignore next */\n lowercaseSlotName : defaultSlotName;\n }); // Created as a non-reactive property so to not trigger component updates\n // Must be a fresh object each render\n\n this.$_bodyFieldSlotNameCache = cache; // Add static top row slot (hidden in visibly stacked mode\n // as we can't control `data-label` attr)\n\n $rows.push(renderTopRow ? renderTopRow() : h()); // Render the rows\n\n items.forEach(function (item, rowIndex) {\n // Render the individual item row (rows if details slot)\n $rows.push(_this.renderTbodyRow(item, rowIndex));\n }); // Empty items / empty filtered row slot (only shows if `items.length < 1`)\n\n $rows.push(renderEmpty ? renderEmpty() : h()); // Static bottom row slot (hidden in visibly stacked mode\n // as we can't control `data-label` attr)\n\n $rows.push(renderBottomRow ? renderBottomRow() : h());\n } // Note: these events will only emit if a listener is registered\n\n\n var handlers = {\n auxclick: this.onTbodyRowMiddleMouseRowClicked,\n // TODO:\n // Perhaps we do want to automatically prevent the\n // default context menu from showing if there is a\n // `row-contextmenu` listener registered\n contextmenu: this.onTbodyRowContextmenu,\n // The following event(s) is not considered A11Y friendly\n dblclick: this.onTbodyRowDblClicked // Hover events (`mouseenter`/`mouseleave`) are handled by `tbody-row` mixin\n\n }; // Add in click/keydown listeners if needed\n\n if (hasRowClickHandler) {\n handlers.click = this.onTBodyRowClicked;\n handlers.keydown = this.onTbodyRowKeydown;\n } // Assemble rows into the tbody\n\n\n var $tbody = h(BTbody, {\n class: this.tbodyClass || null,\n props: pluckProps(BTbodyProps, this.$props),\n // BTbody transfers all native event listeners to the root element\n // TODO: Only set the handlers if the table is not busy\n on: handlers,\n ref: 'tbody'\n }, $rows); // Return the assembled tbody\n\n return $tbody;\n }\n }\n});","import { extend } from '../../../vue';\nimport { PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_TABLE_CAPTION } from '../../../constants/slots';\nimport { htmlOrText } from '../../../utils/html';\nimport { makeProp } from '../../../utils/props'; // --- Props ---\n\nexport var props = {\n caption: makeProp(PROP_TYPE_STRING),\n captionHtml: makeProp(PROP_TYPE_STRING) // `caption-top` is part of table-render mixin (styling)\n // captionTop: makeProp(PROP_TYPE_BOOLEAN, false)\n\n}; // --- Mixin ---\n// @vue/component\n\nexport var captionMixin = extend({\n props: props,\n computed: {\n captionId: function captionId() {\n return this.isStacked ? this.safeId('_caption_') : null;\n }\n },\n methods: {\n renderCaption: function renderCaption() {\n var caption = this.caption,\n captionHtml = this.captionHtml;\n var h = this.$createElement;\n var $caption = h();\n var hasCaptionSlot = this.hasNormalizedSlot(SLOT_NAME_TABLE_CAPTION);\n\n if (hasCaptionSlot || caption || captionHtml) {\n $caption = h('caption', {\n attrs: {\n id: this.captionId\n },\n domProps: hasCaptionSlot ? {} : htmlOrText(captionHtml, caption),\n key: 'caption',\n ref: 'caption'\n }, this.normalizeSlot(SLOT_NAME_TABLE_CAPTION));\n }\n\n return $caption;\n }\n }\n});","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN_STRING } from '../../../constants/props';\nimport { makeProp } from '../../../utils/props'; // --- Props ---\n\nexport var props = {\n stacked: makeProp(PROP_TYPE_BOOLEAN_STRING, false)\n}; // --- Mixin ---\n// @vue/component\n\nexport var stackedMixin = extend({\n props: props,\n computed: {\n isStacked: function isStacked() {\n var stacked = this.stacked; // `true` when always stacked, or returns breakpoint specified\n\n return stacked === '' ? true : stacked;\n },\n isStackedAlways: function isStackedAlways() {\n return this.isStacked === true;\n },\n stackedTableClasses: function stackedTableClasses() {\n var isStackedAlways = this.isStackedAlways;\n return _defineProperty({\n 'b-table-stacked': isStackedAlways\n }, \"b-table-stacked-\".concat(this.stacked), !isStackedAlways && this.isStacked);\n }\n }\n});","import { identity } from '../../../utils/identity';\nimport { isArray, isFunction, isObject, isString } from '../../../utils/inspect';\nimport { clone, keys } from '../../../utils/object';\nimport { startCase } from '../../../utils/string';\nimport { IGNORED_FIELD_KEYS } from './constants'; // Private function to massage field entry into common object format\n\nvar processField = function processField(key, value) {\n var field = null;\n\n if (isString(value)) {\n // Label shortcut\n field = {\n key: key,\n label: value\n };\n } else if (isFunction(value)) {\n // Formatter shortcut\n field = {\n key: key,\n formatter: value\n };\n } else if (isObject(value)) {\n field = clone(value);\n field.key = field.key || key;\n } else if (value !== false) {\n // Fallback to just key\n\n /* istanbul ignore next */\n field = {\n key: key\n };\n }\n\n return field;\n}; // We normalize fields into an array of objects\n// [ { key:..., label:..., ...}, {...}, ..., {..}]\n\n\nexport var normalizeFields = function normalizeFields(origFields, items) {\n var fields = [];\n\n if (isArray(origFields)) {\n // Normalize array Form\n origFields.filter(identity).forEach(function (f) {\n if (isString(f)) {\n fields.push({\n key: f,\n label: startCase(f)\n });\n } else if (isObject(f) && f.key && isString(f.key)) {\n // Full object definition. We use assign so that we don't mutate the original\n fields.push(clone(f));\n } else if (isObject(f) && keys(f).length === 1) {\n // Shortcut object (i.e. { 'foo_bar': 'This is Foo Bar' }\n var key = keys(f)[0];\n var field = processField(key, f[key]);\n\n if (field) {\n fields.push(field);\n }\n }\n });\n } // If no field provided, take a sample from first record (if exits)\n\n\n if (fields.length === 0 && isArray(items) && items.length > 0) {\n var sample = items[0];\n keys(sample).forEach(function (k) {\n if (!IGNORED_FIELD_KEYS[k]) {\n fields.push({\n key: k,\n label: startCase(k)\n });\n }\n });\n } // Ensure we have a unique array of fields and that they have String labels\n\n\n var memo = {};\n return fields.filter(function (f) {\n if (!memo[f.key]) {\n memo[f.key] = true;\n f.label = isString(f.label) ? f.label : startCase(f.key);\n return true;\n }\n\n return false;\n });\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../../vue';\nimport { EVENT_NAME_CONTEXT_CHANGED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY, PROP_TYPE_STRING } from '../../../constants/props';\nimport { useParentMixin } from '../../../mixins/use-parent';\nimport { isArray, isFunction, isString } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax } from '../../../utils/math';\nimport { makeModelMixin } from '../../../utils/model';\nimport { toInteger } from '../../../utils/number';\nimport { clone, sortKeys } from '../../../utils/object';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { normalizeFields } from './normalize-fields'; // --- Constants ---\n\nvar _makeModelMixin = makeModelMixin('value', {\n type: PROP_TYPE_ARRAY,\n defaultValue: []\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event;\n\nexport { MODEL_PROP_NAME, MODEL_EVENT_NAME }; // --- Props ---\n\nexport var props = sortKeys(_objectSpread(_objectSpread({}, modelProps), {}, _defineProperty({\n fields: makeProp(PROP_TYPE_ARRAY, null),\n // Provider mixin adds in `Function` type\n items: makeProp(PROP_TYPE_ARRAY, []),\n // Primary key for record\n // If provided the value in each row must be unique!\n primaryKey: makeProp(PROP_TYPE_STRING)\n}, MODEL_PROP_NAME, makeProp(PROP_TYPE_ARRAY, [])))); // --- Mixin ---\n// @vue/component\n\nexport var itemsMixin = extend({\n mixins: [modelMixin, useParentMixin],\n props: props,\n data: function data() {\n var items = this.items;\n return {\n // Our local copy of the items\n // Must be an array\n localItems: isArray(items) ? items.slice() : []\n };\n },\n computed: {\n computedFields: function computedFields() {\n // We normalize fields into an array of objects\n // `[ { key:..., label:..., ...}, {...}, ..., {..}]`\n return normalizeFields(this.fields, this.localItems);\n },\n computedFieldsObj: function computedFieldsObj() {\n // Fields as a simple lookup hash object\n // Mainly for formatter lookup and use in `scopedSlots` for convenience\n // If the field has a formatter, it normalizes formatter to a\n // function ref or `undefined` if no formatter\n var bvParent = this.bvParent;\n return this.computedFields.reduce(function (obj, f) {\n // We use object spread here so we don't mutate the original field object\n obj[f.key] = clone(f);\n\n if (f.formatter) {\n // Normalize formatter to a function ref or `undefined`\n var formatter = f.formatter;\n\n if (isString(formatter) && isFunction(bvParent[formatter])) {\n formatter = bvParent[formatter];\n } else if (!isFunction(formatter)) {\n /* istanbul ignore next */\n formatter = undefined;\n } // Return formatter function or `undefined` if none\n\n\n obj[f.key].formatter = formatter;\n }\n\n return obj;\n }, {});\n },\n computedItems: function computedItems() {\n var _safeVueInstance = safeVueInstance(this),\n paginatedItems = _safeVueInstance.paginatedItems,\n sortedItems = _safeVueInstance.sortedItems,\n filteredItems = _safeVueInstance.filteredItems,\n localItems = _safeVueInstance.localItems; // Fallback if various mixins not provided\n\n\n return (paginatedItems || sortedItems || filteredItems || localItems ||\n /* istanbul ignore next */\n []).slice();\n },\n context: function context() {\n var _safeVueInstance2 = safeVueInstance(this),\n perPage = _safeVueInstance2.perPage,\n currentPage = _safeVueInstance2.currentPage; // Current state of sorting, filtering and pagination props/values\n\n\n return {\n filter: this.localFilter,\n sortBy: this.localSortBy,\n sortDesc: this.localSortDesc,\n perPage: mathMax(toInteger(perPage, 0), 0),\n currentPage: mathMax(toInteger(currentPage, 0), 1),\n apiUrl: this.apiUrl\n };\n }\n },\n watch: {\n items: function items(newValue) {\n // Set `localItems`/`filteredItems` to a copy of the provided array\n this.localItems = isArray(newValue) ? newValue.slice() : [];\n },\n // Watch for changes on `computedItems` and update the `v-model`\n computedItems: function computedItems(newValue, oldValue) {\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n },\n // Watch for context changes\n context: function context(newValue, oldValue) {\n // Emit context information for external paging/filtering/sorting handling\n if (!looseEqual(newValue, oldValue)) {\n this.$emit(EVENT_NAME_CONTEXT_CHANGED, newValue);\n }\n }\n },\n mounted: function mounted() {\n // Initially update the `v-model` of displayed items\n this.$emit(MODEL_EVENT_NAME, this.computedItems);\n },\n methods: {\n // Method to get the formatter method for a given field key\n getFieldFormatter: function getFieldFormatter(key) {\n var field = this.computedFieldsObj[key]; // `this.computedFieldsObj` has pre-normalized the formatter to a\n // function ref if present, otherwise `undefined`\n\n return field ? field.formatter : undefined;\n }\n }\n});","import { extend } from '../../vue';\nimport { NAME_TH } from '../../constants/components';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { BTd, props as BTdProps } from './td'; // --- Props ---\n\nexport var props = makePropsConfigurable(BTdProps, NAME_TH); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTh = /*#__PURE__*/extend({\n name: NAME_TH,\n extends: BTd,\n props: props,\n computed: {\n tag: function tag() {\n return 'th';\n }\n }\n});","import { extend, mergeData } from '../../vue';\nimport { NAME_SKELETON_WRAPPER } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_LOADING } from '../../constants/slots';\nimport { normalizeSlot } from '../../utils/normalize-slot';\nimport { makeProp, makePropsConfigurable } from '../../utils/props'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n loading: makeProp(PROP_TYPE_BOOLEAN, false)\n}, NAME_SKELETON_WRAPPER); // --- Main component ---\n// @vue/component\n\nexport var BSkeletonWrapper = /*#__PURE__*/extend({\n name: NAME_SKELETON_WRAPPER,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var data = _ref.data,\n props = _ref.props,\n slots = _ref.slots,\n scopedSlots = _ref.scopedSlots;\n var $slots = slots();\n var $scopedSlots = scopedSlots || {};\n var slotScope = {};\n\n if (props.loading) {\n return h('div', mergeData(data, {\n attrs: {\n role: 'alert',\n 'aria-live': 'polite',\n 'aria-busy': true\n },\n staticClass: 'b-skeleton-wrapper',\n key: 'loading'\n }), normalizeSlot(SLOT_NAME_LOADING, slotScope, $scopedSlots, $slots));\n }\n\n return normalizeSlot(SLOT_NAME_DEFAULT, slotScope, $scopedSlots, $slots);\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../../vue';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_STRING } from '../../../constants/props';\nimport { identity } from '../../../utils/identity';\nimport { isBoolean } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { toString } from '../../../utils/string';\nimport { attrsMixin } from '../../../mixins/attrs'; // Main `` render mixin\n// Includes all main table styling options\n// --- Props ---\n\nexport var props = {\n bordered: makeProp(PROP_TYPE_BOOLEAN, false),\n borderless: makeProp(PROP_TYPE_BOOLEAN, false),\n captionTop: makeProp(PROP_TYPE_BOOLEAN, false),\n dark: makeProp(PROP_TYPE_BOOLEAN, false),\n fixed: makeProp(PROP_TYPE_BOOLEAN, false),\n hover: makeProp(PROP_TYPE_BOOLEAN, false),\n noBorderCollapse: makeProp(PROP_TYPE_BOOLEAN, false),\n outlined: makeProp(PROP_TYPE_BOOLEAN, false),\n responsive: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n small: makeProp(PROP_TYPE_BOOLEAN, false),\n // If a string, it is assumed to be the table `max-height` value\n stickyHeader: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n striped: makeProp(PROP_TYPE_BOOLEAN, false),\n tableClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tableVariant: makeProp(PROP_TYPE_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var tableRendererMixin = extend({\n mixins: [attrsMixin],\n provide: function provide() {\n var _this = this;\n\n return {\n getBvTable: function getBvTable() {\n return _this;\n }\n };\n },\n // Don't place attributes on root element automatically,\n // as table could be wrapped in responsive `
`\n inheritAttrs: false,\n props: props,\n computed: {\n isTableSimple: function isTableSimple() {\n return false;\n },\n // Layout related computed props\n isResponsive: function isResponsive() {\n var responsive = this.responsive;\n return responsive === '' ? true : responsive;\n },\n isStickyHeader: function isStickyHeader() {\n var stickyHeader = this.stickyHeader;\n stickyHeader = stickyHeader === '' ? true : stickyHeader;\n return this.isStacked ? false : stickyHeader;\n },\n wrapperClasses: function wrapperClasses() {\n var isResponsive = this.isResponsive;\n return [this.isStickyHeader ? 'b-table-sticky-header' : '', isResponsive === true ? 'table-responsive' : isResponsive ? \"table-responsive-\".concat(this.responsive) : ''].filter(identity);\n },\n wrapperStyles: function wrapperStyles() {\n var isStickyHeader = this.isStickyHeader;\n return isStickyHeader && !isBoolean(isStickyHeader) ? {\n maxHeight: isStickyHeader\n } : {};\n },\n tableClasses: function tableClasses() {\n var _safeVueInstance = safeVueInstance(this),\n hover = _safeVueInstance.hover,\n tableVariant = _safeVueInstance.tableVariant,\n selectableTableClasses = _safeVueInstance.selectableTableClasses,\n stackedTableClasses = _safeVueInstance.stackedTableClasses,\n tableClass = _safeVueInstance.tableClass,\n computedBusy = _safeVueInstance.computedBusy;\n\n hover = this.isTableSimple ? hover : hover && this.computedItems.length > 0 && !computedBusy;\n return [// User supplied classes\n tableClass, // Styling classes\n {\n 'table-striped': this.striped,\n 'table-hover': hover,\n 'table-dark': this.dark,\n 'table-bordered': this.bordered,\n 'table-borderless': this.borderless,\n 'table-sm': this.small,\n // The following are b-table custom styles\n border: this.outlined,\n 'b-table-fixed': this.fixed,\n 'b-table-caption-top': this.captionTop,\n 'b-table-no-border-collapse': this.noBorderCollapse\n }, tableVariant ? \"\".concat(this.dark ? 'bg' : 'table', \"-\").concat(tableVariant) : '', // Stacked table classes\n stackedTableClasses, // Selectable classes\n selectableTableClasses];\n },\n tableAttrs: function tableAttrs() {\n var _safeVueInstance2 = safeVueInstance(this),\n items = _safeVueInstance2.computedItems,\n filteredItems = _safeVueInstance2.filteredItems,\n fields = _safeVueInstance2.computedFields,\n selectableTableAttrs = _safeVueInstance2.selectableTableAttrs,\n computedBusy = _safeVueInstance2.computedBusy;\n\n var ariaAttrs = this.isTableSimple ? {} : {\n 'aria-busy': toString(computedBusy),\n 'aria-colcount': toString(fields.length),\n // Preserve user supplied `aria-describedby`, if provided\n 'aria-describedby': this.bvAttrs['aria-describedby'] || this.$refs.caption ? this.captionId : null\n };\n var rowCount = items && filteredItems && filteredItems.length > items.length ? toString(filteredItems.length) : null;\n return _objectSpread(_objectSpread(_objectSpread({\n // We set `aria-rowcount` before merging in `$attrs`,\n // in case user has supplied their own\n 'aria-rowcount': rowCount\n }, this.bvAttrs), {}, {\n // Now we can override any `$attrs` here\n id: this.safeId(),\n role: this.bvAttrs.role || 'table'\n }, ariaAttrs), selectableTableAttrs);\n }\n },\n render: function render(h) {\n var _safeVueInstance3 = safeVueInstance(this),\n wrapperClasses = _safeVueInstance3.wrapperClasses,\n renderCaption = _safeVueInstance3.renderCaption,\n renderColgroup = _safeVueInstance3.renderColgroup,\n renderThead = _safeVueInstance3.renderThead,\n renderTbody = _safeVueInstance3.renderTbody,\n renderTfoot = _safeVueInstance3.renderTfoot;\n\n var $content = [];\n\n if (this.isTableSimple) {\n $content.push(this.normalizeSlot());\n } else {\n // Build the `
`\n\n $content.push(renderColgroup ? renderColgroup() : null); // Build the ``\n\n $content.push(renderThead ? renderThead() : null); // Build the ``\n\n $content.push(renderTbody ? renderTbody() : null); // Build the ``\n\n $content.push(renderTfoot ? renderTfoot() : null);\n } // Assemble `
` (from caption mixin)\n $content.push(renderCaption ? renderCaption() : null); // Build the `
`\n\n\n var $table = h('table', {\n staticClass: 'table b-table',\n class: this.tableClasses,\n attrs: this.tableAttrs,\n key: 'b-table'\n }, $content.filter(identity)); // Add responsive/sticky wrapper if needed and return table\n\n return wrapperClasses.length > 0 ? h('div', {\n class: wrapperClasses,\n style: this.wrapperStyles,\n key: 'wrap'\n }, [$table]) : $table;\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// Constants used by table helpers\nexport var FIELD_KEY_CELL_VARIANT = '_cellVariants';\nexport var FIELD_KEY_ROW_VARIANT = '_rowVariant';\nexport var FIELD_KEY_SHOW_DETAILS = '_showDetails'; // Object of item keys that should be ignored for headers and\n// stringification and filter events\n\nexport var IGNORED_FIELD_KEYS = [FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS].reduce(function (result, key) {\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, key, true));\n}, {}); // Filter CSS selector for click/dblclick/etc. events\n// If any of these selectors match the clicked element, we ignore the event\n\nexport var EVENT_FILTER = ['a', 'a *', // Include content inside links\n'button', 'button *', // Include content inside buttons\n'input:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'textarea:not(.disabled):not([disabled])', '[role=\"link\"]', '[role=\"link\"] *', '[role=\"button\"]', '[role=\"button\"] *', '[tabindex]:not(.disabled):not([disabled])'].join(',');","import { extend } from '../../../vue';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_CUSTOM_FOOT } from '../../../constants/slots';\nimport { makeProp } from '../../../utils/props';\nimport { BTfoot } from '../tfoot'; // --- Props ---\n\nexport var props = {\n footClone: makeProp(PROP_TYPE_BOOLEAN, false),\n // Any Bootstrap theme variant (or custom)\n // Falls back to `headRowVariant`\n footRowVariant: makeProp(PROP_TYPE_STRING),\n // 'dark', 'light', or `null` (or custom)\n footVariant: makeProp(PROP_TYPE_STRING),\n tfootClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tfootTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var tfootMixin = extend({\n props: props,\n methods: {\n renderTFootCustom: function renderTFootCustom() {\n var h = this.$createElement;\n\n if (this.hasNormalizedSlot(SLOT_NAME_CUSTOM_FOOT)) {\n return h(BTfoot, {\n class: this.tfootClass || null,\n props: {\n footVariant: this.footVariant || this.headVariant || null\n },\n key: 'bv-tfoot-custom'\n }, this.normalizeSlot(SLOT_NAME_CUSTOM_FOOT, {\n items: this.computedItems.slice(),\n fields: this.computedFields.slice(),\n columns: this.computedFields.length\n }));\n }\n\n return h();\n },\n renderTfoot: function renderTfoot() {\n // Passing true to renderThead will make it render a tfoot\n return this.footClone ? this.renderThead(true) : this.renderTFootCustom();\n }\n }\n});","import { BSidebar } from './sidebar';\nimport { VBTogglePlugin } from '../../directives/toggle';\nimport { pluginFactory } from '../../utils/plugins';\nvar SidebarPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BSidebar: BSidebar\n },\n plugins: {\n VBTogglePlugin: VBTogglePlugin\n }\n});\nexport { SidebarPlugin, BSidebar };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_TBODY } from '../../constants/components';\nimport { PROP_TYPE_OBJECT } from '../../constants/props';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot'; // --- Props ---\n\nexport var props = makePropsConfigurable({\n tbodyTransitionHandlers: makeProp(PROP_TYPE_OBJECT),\n tbodyTransitionProps: makeProp(PROP_TYPE_OBJECT)\n}, NAME_TBODY); // --- Main component ---\n// TODO:\n// In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n// to the child elements, so this can be converted to a functional component\n// @vue/component\n\nexport var BTbody = /*#__PURE__*/extend({\n name: NAME_TBODY,\n mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n provide: function provide() {\n var _this = this;\n\n return {\n getBvTableRowGroup: function getBvTableRowGroup() {\n return _this;\n }\n };\n },\n inject: {\n // Sniffed by `` / `` / ``\n getBvTable: {\n default:\n /* istanbul ignore next */\n function _default() {\n return function () {\n return {};\n };\n }\n }\n },\n inheritAttrs: false,\n props: props,\n computed: {\n bvTable: function bvTable() {\n return this.getBvTable();\n },\n // Sniffed by `` / `` / ``\n isTbody: function isTbody() {\n return true;\n },\n // Sniffed by `` / `` / ``\n isDark: function isDark() {\n return this.bvTable.dark;\n },\n // Sniffed by `` / `` / ``\n isStacked: function isStacked() {\n return this.bvTable.isStacked;\n },\n // Sniffed by `` / `` / ``\n isResponsive: function isResponsive() {\n return this.bvTable.isResponsive;\n },\n // Sniffed by `` / `` / ``\n // Sticky headers are only supported in thead\n isStickyHeader: function isStickyHeader() {\n return false;\n },\n // Sniffed by `` / `` / ``\n // Needed to handle header background classes, due to lack of\n // background color inheritance with Bootstrap v4 table CSS\n hasStickyHeader: function hasStickyHeader() {\n return !this.isStacked && this.bvTable.stickyHeader;\n },\n // Sniffed by `` / `` / ``\n tableVariant: function tableVariant() {\n return this.bvTable.tableVariant;\n },\n isTransitionGroup: function isTransitionGroup() {\n return this.tbodyTransitionProps || this.tbodyTransitionHandlers;\n },\n tbodyAttrs: function tbodyAttrs() {\n return _objectSpread({\n role: 'rowgroup'\n }, this.bvAttrs);\n },\n tbodyProps: function tbodyProps() {\n var tbodyTransitionProps = this.tbodyTransitionProps;\n return tbodyTransitionProps ? _objectSpread(_objectSpread({}, tbodyTransitionProps), {}, {\n tag: 'tbody'\n }) : {};\n }\n },\n render: function render(h) {\n var data = {\n props: this.tbodyProps,\n attrs: this.tbodyAttrs\n };\n\n if (this.isTransitionGroup) {\n // We use native listeners if a transition group for any delegated events\n data.on = this.tbodyTransitionHandlers || {};\n data.nativeOn = this.bvListeners;\n } else {\n // Otherwise we place any listeners on the tbody element\n data.on = this.bvListeners;\n }\n\n return h(this.isTransitionGroup ? 'transition-group' : 'tbody', data, this.normalizeSlot());\n }\n});","import { closest, getAttr, getById, matches, select } from '../../../utils/dom';\nimport { EVENT_FILTER } from './constants';\nvar TABLE_TAG_NAMES = ['TD', 'TH', 'TR']; // Returns `true` if we should ignore the click/double-click/keypress event\n// Avoids having the user need to use `@click.stop` on the form control\n\nexport var filterEvent = function filterEvent(event) {\n // Exit early when we don't have a target element\n if (!event || !event.target) {\n /* istanbul ignore next */\n return false;\n }\n\n var el = event.target; // Exit early when element is disabled or a table element\n\n if (el.disabled || TABLE_TAG_NAMES.indexOf(el.tagName) !== -1) {\n return false;\n } // Ignore the click when it was inside a dropdown menu\n\n\n if (closest('.dropdown-menu', el)) {\n return true;\n }\n\n var label = el.tagName === 'LABEL' ? el : closest('label', el); // If the label's form control is not disabled then we don't propagate event\n // Modern browsers have `label.control` that references the associated input, but IE 11\n // does not have this property on the label element, so we resort to DOM lookups\n\n if (label) {\n var labelFor = getAttr(label, 'for');\n var input = labelFor ? getById(labelFor) : select('input, select, textarea', label);\n\n if (input && !input.disabled) {\n return true;\n }\n } // Otherwise check if the event target matches one of the selectors in the\n // event filter (i.e. anchors, non disabled inputs, etc.)\n // Return `true` if we should ignore the event\n\n\n return matches(el, EVENT_FILTER);\n};","import { BSpinner } from './spinner';\nimport { pluginFactory } from '../../utils/plugins';\nvar SpinnerPlugin = /*#__PURE__*/pluginFactory({\n components: {\n BSpinner: BSpinner\n }\n});\nexport { SpinnerPlugin, BSpinner };","var _watch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_COLLAPSE, NAME_SIDEBAR } from '../../constants/components';\nimport { IS_BROWSER } from '../../constants/env';\nimport { EVENT_NAME_CHANGE, EVENT_NAME_HIDDEN, EVENT_NAME_SHOWN } from '../../constants/events';\nimport { CODE_ESC } from '../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT, SLOT_NAME_FOOTER, SLOT_NAME_HEADER, SLOT_NAME_HEADER_CLOSE, SLOT_NAME_TITLE } from '../../constants/slots';\nimport { attemptFocus, contains, getActiveElement, getTabables } from '../../utils/dom';\nimport { getRootActionEventName, getRootEventName } from '../../utils/events';\nimport { makeModelMixin } from '../../utils/model';\nimport { sortKeys } from '../../utils/object';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BIconX } from '../../icons/icons';\nimport { BButtonClose } from '../button/button-close';\nimport { BVTransition } from '../transition/bv-transition'; // --- Constants ---\n\nvar CLASS_NAME = 'b-sidebar';\nvar ROOT_ACTION_EVENT_NAME_REQUEST_STATE = getRootActionEventName(NAME_COLLAPSE, 'request-state');\nvar ROOT_ACTION_EVENT_NAME_TOGGLE = getRootActionEventName(NAME_COLLAPSE, 'toggle');\nvar ROOT_EVENT_NAME_STATE = getRootEventName(NAME_COLLAPSE, 'state');\nvar ROOT_EVENT_NAME_SYNC_STATE = getRootEventName(NAME_COLLAPSE, 'sync-state');\n\nvar _makeModelMixin = makeModelMixin('visible', {\n type: PROP_TYPE_BOOLEAN,\n defaultValue: false,\n event: EVENT_NAME_CHANGE\n}),\n modelMixin = _makeModelMixin.mixin,\n modelProps = _makeModelMixin.props,\n MODEL_PROP_NAME = _makeModelMixin.prop,\n MODEL_EVENT_NAME = _makeModelMixin.event; // --- Props ---\n\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread({}, idProps), modelProps), {}, {\n ariaLabel: makeProp(PROP_TYPE_STRING),\n ariaLabelledby: makeProp(PROP_TYPE_STRING),\n // If `true`, shows a basic backdrop\n backdrop: makeProp(PROP_TYPE_BOOLEAN, false),\n backdropVariant: makeProp(PROP_TYPE_STRING, 'dark'),\n bgVariant: makeProp(PROP_TYPE_STRING, 'light'),\n bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n // `aria-label` for close button\n closeLabel: makeProp(PROP_TYPE_STRING),\n footerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n footerTag: makeProp(PROP_TYPE_STRING, 'footer'),\n headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n headerTag: makeProp(PROP_TYPE_STRING, 'header'),\n lazy: makeProp(PROP_TYPE_BOOLEAN, false),\n noCloseOnBackdrop: makeProp(PROP_TYPE_BOOLEAN, false),\n noCloseOnEsc: makeProp(PROP_TYPE_BOOLEAN, false),\n noCloseOnRouteChange: makeProp(PROP_TYPE_BOOLEAN, false),\n noEnforceFocus: makeProp(PROP_TYPE_BOOLEAN, false),\n noHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n noHeaderClose: makeProp(PROP_TYPE_BOOLEAN, false),\n noSlide: makeProp(PROP_TYPE_BOOLEAN, false),\n right: makeProp(PROP_TYPE_BOOLEAN, false),\n shadow: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n sidebarClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n tag: makeProp(PROP_TYPE_STRING, 'div'),\n textVariant: makeProp(PROP_TYPE_STRING, 'dark'),\n title: makeProp(PROP_TYPE_STRING),\n width: makeProp(PROP_TYPE_STRING),\n zIndex: makeProp(PROP_TYPE_NUMBER_STRING)\n})), NAME_SIDEBAR); // --- Render methods ---\n\nvar renderHeaderTitle = function renderHeaderTitle(h, ctx) {\n // Render a empty `` when to title was provided\n var title = ctx.normalizeSlot(SLOT_NAME_TITLE, ctx.slotScope) || ctx.title;\n\n if (!title) {\n return h('span');\n }\n\n return h('strong', {\n attrs: {\n id: ctx.safeId('__title__')\n }\n }, [title]);\n};\n\nvar renderHeaderClose = function renderHeaderClose(h, ctx) {\n if (ctx.noHeaderClose) {\n return h();\n }\n\n var closeLabel = ctx.closeLabel,\n textVariant = ctx.textVariant,\n hide = ctx.hide;\n return h(BButtonClose, {\n props: {\n ariaLabel: closeLabel,\n textVariant: textVariant\n },\n on: {\n click: hide\n },\n ref: 'close-button'\n }, [ctx.normalizeSlot(SLOT_NAME_HEADER_CLOSE) || h(BIconX)]);\n};\n\nvar renderHeader = function renderHeader(h, ctx) {\n if (ctx.noHeader) {\n return h();\n }\n\n var $content = ctx.normalizeSlot(SLOT_NAME_HEADER, ctx.slotScope);\n\n if (!$content) {\n var $title = renderHeaderTitle(h, ctx);\n var $close = renderHeaderClose(h, ctx);\n $content = ctx.right ? [$close, $title] : [$title, $close];\n }\n\n return h(ctx.headerTag, {\n staticClass: \"\".concat(CLASS_NAME, \"-header\"),\n class: ctx.headerClass,\n key: 'header'\n }, $content);\n};\n\nvar renderBody = function renderBody(h, ctx) {\n return h('div', {\n staticClass: \"\".concat(CLASS_NAME, \"-body\"),\n class: ctx.bodyClass,\n key: 'body'\n }, [ctx.normalizeSlot(SLOT_NAME_DEFAULT, ctx.slotScope)]);\n};\n\nvar renderFooter = function renderFooter(h, ctx) {\n var $footer = ctx.normalizeSlot(SLOT_NAME_FOOTER, ctx.slotScope);\n\n if (!$footer) {\n return h();\n }\n\n return h(ctx.footerTag, {\n staticClass: \"\".concat(CLASS_NAME, \"-footer\"),\n class: ctx.footerClass,\n key: 'footer'\n }, [$footer]);\n};\n\nvar renderContent = function renderContent(h, ctx) {\n // We render the header even if `lazy` is enabled as it\n // acts as the accessible label for the sidebar\n var $header = renderHeader(h, ctx);\n\n if (ctx.lazy && !ctx.isOpen) {\n return $header;\n }\n\n return [$header, renderBody(h, ctx), renderFooter(h, ctx)];\n};\n\nvar renderBackdrop = function renderBackdrop(h, ctx) {\n if (!ctx.backdrop) {\n return h();\n }\n\n var backdropVariant = ctx.backdropVariant;\n return h('div', {\n directives: [{\n name: 'show',\n value: ctx.localShow\n }],\n staticClass: 'b-sidebar-backdrop',\n class: _defineProperty({}, \"bg-\".concat(backdropVariant), backdropVariant),\n on: {\n click: ctx.onBackdropClick\n }\n });\n}; // --- Main component ---\n// @vue/component\n\n\nexport var BSidebar = /*#__PURE__*/extend({\n name: NAME_SIDEBAR,\n mixins: [attrsMixin, idMixin, modelMixin, listenOnRootMixin, normalizeSlotMixin],\n inheritAttrs: false,\n props: props,\n data: function data() {\n var visible = !!this[MODEL_PROP_NAME];\n return {\n // Internal `v-model` state\n localShow: visible,\n // For lazy render triggering\n isOpen: visible\n };\n },\n computed: {\n transitionProps: function transitionProps() {\n return this.noSlide ?\n /* istanbul ignore next */\n {\n css: true\n } : {\n css: true,\n enterClass: '',\n enterActiveClass: 'slide',\n enterToClass: 'show',\n leaveClass: 'show',\n leaveActiveClass: 'slide',\n leaveToClass: ''\n };\n },\n slotScope: function slotScope() {\n var hide = this.hide,\n right = this.right,\n visible = this.localShow;\n return {\n hide: hide,\n right: right,\n visible: visible\n };\n },\n hasTitle: function hasTitle() {\n var $scopedSlots = this.$scopedSlots,\n $slots = this.$slots;\n return !this.noHeader && !this.hasNormalizedSlot(SLOT_NAME_HEADER) && !!(this.normalizeSlot(SLOT_NAME_TITLE, this.slotScope, $scopedSlots, $slots) || this.title);\n },\n titleId: function titleId() {\n return this.hasTitle ? this.safeId('__title__') : null;\n },\n computedAttrs: function computedAttrs() {\n return _objectSpread(_objectSpread({}, this.bvAttrs), {}, {\n id: this.safeId(),\n tabindex: '-1',\n role: 'dialog',\n 'aria-modal': this.backdrop ? 'true' : 'false',\n 'aria-hidden': this.localShow ? null : 'true',\n 'aria-label': this.ariaLabel || null,\n 'aria-labelledby': this.ariaLabelledby || this.titleId || null\n });\n }\n },\n watch: (_watch = {}, _defineProperty(_watch, MODEL_PROP_NAME, function (newValue, oldValue) {\n if (newValue !== oldValue) {\n this.localShow = newValue;\n }\n }), _defineProperty(_watch, \"localShow\", function localShow(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.emitState(newValue);\n this.$emit(MODEL_EVENT_NAME, newValue);\n }\n }), _defineProperty(_watch, \"$route\", function $route() {\n var newValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var oldValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this.noCloseOnRouteChange && newValue.fullPath !== oldValue.fullPath) {\n this.hide();\n }\n }), _watch),\n created: function created() {\n // Define non-reactive properties\n this.$_returnFocusEl = null;\n },\n mounted: function mounted() {\n var _this = this;\n\n // Add `$root` listeners\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_TOGGLE, this.handleToggle);\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REQUEST_STATE, this.handleSync); // Send out a gratuitous state event to ensure toggle button is synced\n\n this.$nextTick(function () {\n _this.emitState(_this.localShow);\n });\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n this.emitSync();\n },\n beforeDestroy: function beforeDestroy() {\n this.localShow = false;\n this.$_returnFocusEl = null;\n },\n methods: {\n hide: function hide() {\n this.localShow = false;\n },\n emitState: function emitState() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.localShow;\n this.emitOnRoot(ROOT_EVENT_NAME_STATE, this.safeId(), state);\n },\n emitSync: function emitSync() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.localShow;\n this.emitOnRoot(ROOT_EVENT_NAME_SYNC_STATE, this.safeId(), state);\n },\n handleToggle: function handleToggle(id) {\n // Note `safeId()` can be null until after mount\n if (id && id === this.safeId()) {\n this.localShow = !this.localShow;\n }\n },\n handleSync: function handleSync(id) {\n var _this2 = this;\n\n // Note `safeId()` can be null until after mount\n if (id && id === this.safeId()) {\n this.$nextTick(function () {\n _this2.emitSync(_this2.localShow);\n });\n }\n },\n onKeydown: function onKeydown(event) {\n var keyCode = event.keyCode;\n\n if (!this.noCloseOnEsc && keyCode === CODE_ESC && this.localShow) {\n this.hide();\n }\n },\n onBackdropClick: function onBackdropClick() {\n if (this.localShow && !this.noCloseOnBackdrop) {\n this.hide();\n }\n },\n\n /* istanbul ignore next */\n onTopTrapFocus: function onTopTrapFocus() {\n var tabables = getTabables(this.$refs.content);\n this.enforceFocus(tabables.reverse()[0]);\n },\n\n /* istanbul ignore next */\n onBottomTrapFocus: function onBottomTrapFocus() {\n var tabables = getTabables(this.$refs.content);\n this.enforceFocus(tabables[0]);\n },\n onBeforeEnter: function onBeforeEnter() {\n // Returning focus to `document.body` may cause unwanted scrolls,\n // so we exclude setting focus on body\n this.$_returnFocusEl = getActiveElement(IS_BROWSER ? [document.body] : []); // Trigger lazy render\n\n this.isOpen = true;\n },\n onAfterEnter: function onAfterEnter(el) {\n if (!contains(el, getActiveElement())) {\n this.enforceFocus(el);\n }\n\n this.$emit(EVENT_NAME_SHOWN);\n },\n onAfterLeave: function onAfterLeave() {\n this.enforceFocus(this.$_returnFocusEl);\n this.$_returnFocusEl = null; // Trigger lazy render\n\n this.isOpen = false;\n this.$emit(EVENT_NAME_HIDDEN);\n },\n enforceFocus: function enforceFocus(el) {\n if (!this.noEnforceFocus) {\n attemptFocus(el);\n }\n }\n },\n render: function render(h) {\n var _ref;\n\n var bgVariant = this.bgVariant,\n width = this.width,\n textVariant = this.textVariant,\n localShow = this.localShow;\n var shadow = this.shadow === '' ? true : this.shadow;\n var $sidebar = h(this.tag, {\n staticClass: CLASS_NAME,\n class: [(_ref = {\n shadow: shadow === true\n }, _defineProperty(_ref, \"shadow-\".concat(shadow), shadow && shadow !== true), _defineProperty(_ref, \"\".concat(CLASS_NAME, \"-right\"), this.right), _defineProperty(_ref, \"bg-\".concat(bgVariant), bgVariant), _defineProperty(_ref, \"text-\".concat(textVariant), textVariant), _ref), this.sidebarClass],\n style: {\n width: width\n },\n attrs: this.computedAttrs,\n directives: [{\n name: 'show',\n value: localShow\n }],\n ref: 'content'\n }, [renderContent(h, this)]);\n $sidebar = h('transition', {\n props: this.transitionProps,\n on: {\n beforeEnter: this.onBeforeEnter,\n afterEnter: this.onAfterEnter,\n afterLeave: this.onAfterLeave\n }\n }, [$sidebar]);\n var $backdrop = h(BVTransition, {\n props: {\n noFade: this.noSlide\n }\n }, [renderBackdrop(h, this)]);\n var $tabTrapTop = h();\n var $tabTrapBottom = h();\n\n if (this.backdrop && localShow) {\n $tabTrapTop = h('div', {\n attrs: {\n tabindex: '0'\n },\n on: {\n focus: this.onTopTrapFocus\n }\n });\n $tabTrapBottom = h('div', {\n attrs: {\n tabindex: '0'\n },\n on: {\n focus: this.onBottomTrapFocus\n }\n });\n }\n\n return h('div', {\n staticClass: 'b-sidebar-outer',\n style: {\n zIndex: this.zIndex\n },\n attrs: {\n tabindex: '-1'\n },\n on: {\n keydown: this.onKeydown\n }\n }, [$tabTrapTop, $sidebar, $tabTrapBottom, $backdrop]);\n }\n});","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../../vue';\nimport { EVENT_NAME_HEAD_CLICKED } from '../../../constants/events';\nimport { CODE_ENTER, CODE_SPACE } from '../../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_THEAD_TOP } from '../../../constants/slots';\nimport { stopEvent } from '../../../utils/events';\nimport { htmlOrText } from '../../../utils/html';\nimport { identity } from '../../../utils/identity';\nimport { isUndefinedOrNull } from '../../../utils/inspect';\nimport { noop } from '../../../utils/noop';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { startCase } from '../../../utils/string';\nimport { BThead } from '../thead';\nimport { BTfoot } from '../tfoot';\nimport { BTr } from '../tr';\nimport { BTh } from '../th';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active'; // --- Helper methods ---\n\nvar getHeadSlotName = function getHeadSlotName(value) {\n return \"head(\".concat(value || '', \")\");\n};\n\nvar getFootSlotName = function getFootSlotName(value) {\n return \"foot(\".concat(value || '', \")\");\n}; // --- Props ---\n\n\nexport var props = {\n // Any Bootstrap theme variant (or custom)\n headRowVariant: makeProp(PROP_TYPE_STRING),\n // 'light', 'dark' or `null` (or custom)\n headVariant: makeProp(PROP_TYPE_STRING),\n theadClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n theadTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n}; // --- Mixin ---\n// @vue/component\n\nexport var theadMixin = extend({\n props: props,\n methods: {\n fieldClasses: function fieldClasses(field) {\n // Header field (
) classes\n return [field.class ? field.class : '', field.thClass ? field.thClass : ''];\n },\n headClicked: function headClicked(event, field, isFoot) {\n if (this.stopIfBusy && this.stopIfBusy(event)) {\n // If table is busy (via provider) then don't propagate\n return;\n } else if (filterEvent(event)) {\n // Clicked on a non-disabled control so ignore\n return;\n } else if (textSelectionActive(this.$el)) {\n // User is selecting text, so ignore\n\n /* istanbul ignore next: JSDOM doesn't support getSelection() */\n return;\n }\n\n stopEvent(event);\n this.$emit(EVENT_NAME_HEAD_CLICKED, field.key, field, event, isFoot);\n },\n renderThead: function renderThead() {\n var _this = this;\n\n var isFoot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var _safeVueInstance = safeVueInstance(this),\n fields = _safeVueInstance.computedFields,\n isSortable = _safeVueInstance.isSortable,\n isSelectable = _safeVueInstance.isSelectable,\n headVariant = _safeVueInstance.headVariant,\n footVariant = _safeVueInstance.footVariant,\n headRowVariant = _safeVueInstance.headRowVariant,\n footRowVariant = _safeVueInstance.footRowVariant;\n\n var h = this.$createElement; // In always stacked mode, we don't bother rendering the head/foot\n // Or if no field headings (empty table)\n\n if (this.isStackedAlways || fields.length === 0) {\n return h();\n }\n\n var hasHeadClickListener = isSortable || this.hasListener(EVENT_NAME_HEAD_CLICKED); // Reference to `selectAllRows` and `clearSelected()`, if table is selectable\n\n var selectAllRows = isSelectable ? this.selectAllRows : noop;\n var clearSelected = isSelectable ? this.clearSelected : noop; // Helper function to generate a field cell\n\n var makeCell = function makeCell(field, colIndex) {\n var label = field.label,\n labelHtml = field.labelHtml,\n variant = field.variant,\n stickyColumn = field.stickyColumn,\n key = field.key;\n var ariaLabel = null;\n\n if (!field.label.trim() && !field.headerTitle) {\n // In case field's label and title are empty/blank\n // We need to add a hint about what the column is about for non-sighted users\n\n /* istanbul ignore next */\n ariaLabel = startCase(field.key);\n }\n\n var on = {};\n\n if (hasHeadClickListener) {\n on.click = function (event) {\n _this.headClicked(event, field, isFoot);\n };\n\n on.keydown = function (event) {\n var keyCode = event.keyCode;\n\n if (keyCode === CODE_ENTER || keyCode === CODE_SPACE) {\n _this.headClicked(event, field, isFoot);\n }\n };\n }\n\n var sortAttrs = isSortable ? _this.sortTheadThAttrs(key, field, isFoot) : {};\n var sortClass = isSortable ? _this.sortTheadThClasses(key, field, isFoot) : null;\n var sortLabel = isSortable ? _this.sortTheadThLabel(key, field, isFoot) : null;\n var data = {\n class: [{\n // We need to make the header cell relative when we have\n // a `.sr-only` sort label to work around overflow issues\n 'position-relative': sortLabel\n }, _this.fieldClasses(field), sortClass],\n props: {\n variant: variant,\n stickyColumn: stickyColumn\n },\n style: field.thStyle || {},\n attrs: _objectSpread(_objectSpread({\n // We only add a `tabindex` of `0` if there is a head-clicked listener\n // and the current field is sortable\n tabindex: hasHeadClickListener && field.sortable ? '0' : null,\n abbr: field.headerAbbr || null,\n title: field.headerTitle || null,\n 'aria-colindex': colIndex + 1,\n 'aria-label': ariaLabel\n }, _this.getThValues(null, key, field.thAttr, isFoot ? 'foot' : 'head', {})), sortAttrs),\n on: on,\n key: key\n }; // Handle edge case where in-document templates are used with new\n // `v-slot:name` syntax where the browser lower-cases the v-slot's\n // name (attributes become lower cased when parsed by the browser)\n // We have replaced the square bracket syntax with round brackets\n // to prevent confusion with dynamic slot names\n\n var slotNames = [getHeadSlotName(key), getHeadSlotName(key.toLowerCase()), getHeadSlotName()]; // Footer will fallback to header slot names\n\n if (isFoot) {\n slotNames = [getFootSlotName(key), getFootSlotName(key.toLowerCase()), getFootSlotName()].concat(_toConsumableArray(slotNames));\n }\n\n var scope = {\n label: label,\n column: key,\n field: field,\n isFoot: isFoot,\n // Add in row select methods\n selectAllRows: selectAllRows,\n clearSelected: clearSelected\n };\n var $content = _this.normalizeSlot(slotNames, scope) || h('div', {\n domProps: htmlOrText(labelHtml, label)\n });\n var $srLabel = sortLabel ? h('span', {\n staticClass: 'sr-only'\n }, \" (\".concat(sortLabel, \")\")) : null; // Return the header cell\n\n return h(BTh, data, [$content, $srLabel].filter(identity));\n }; // Generate the array of cells\n\n\n var $cells = fields.map(makeCell).filter(identity); // Generate the row(s)\n\n var $trs = [];\n\n if (isFoot) {\n $trs.push(h(BTr, {\n class: this.tfootTrClass,\n props: {\n variant: isUndefinedOrNull(footRowVariant) ? headRowVariant :\n /* istanbul ignore next */\n footRowVariant\n }\n }, $cells));\n } else {\n var scope = {\n columns: fields.length,\n fields: fields,\n // Add in row select methods\n selectAllRows: selectAllRows,\n clearSelected: clearSelected\n };\n $trs.push(this.normalizeSlot(SLOT_NAME_THEAD_TOP, scope) || h());\n $trs.push(h(BTr, {\n class: this.theadTrClass,\n props: {\n variant: headRowVariant\n }\n }, $cells));\n }\n\n return h(isFoot ? BTfoot : BThead, {\n class: (isFoot ? this.tfootClass : this.theadClass) || null,\n props: isFoot ? {\n footVariant: footVariant || headVariant || null\n } : {\n headVariant: headVariant || null\n },\n key: isFoot ? 'bv-tfoot' : 'bv-thead'\n }, $trs);\n }\n }\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend } from '../../vue';\nimport { NAME_TABLE_LITE } from '../../constants/components';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { hasListenerMixin } from '../../mixins/has-listener';\nimport { idMixin, props as idProps } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { captionMixin, props as captionProps } from './helpers/mixin-caption';\nimport { colgroupMixin, props as colgroupProps } from './helpers/mixin-colgroup';\nimport { itemsMixin, props as itemsProps } from './helpers/mixin-items';\nimport { stackedMixin, props as stackedProps } from './helpers/mixin-stacked';\nimport { tableRendererMixin, props as tableRendererProps } from './helpers/mixin-table-renderer';\nimport { tbodyMixin, props as tbodyProps } from './helpers/mixin-tbody';\nimport { tfootMixin, props as tfootProps } from './helpers/mixin-tfoot';\nimport { theadMixin, props as theadProps } from './helpers/mixin-thead'; // --- Props ---\n\nexport var props = makePropsConfigurable(sortKeys(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, idProps), captionProps), colgroupProps), itemsProps), stackedProps), tableRendererProps), tbodyProps), tfootProps), theadProps)), NAME_TABLE_LITE); // --- Main component ---\n// @vue/component\n\nexport var BTableLite = /*#__PURE__*/extend({\n name: NAME_TABLE_LITE,\n // Order of mixins is important!\n // They are merged from first to last, followed by this component\n mixins: [// General mixins\n attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin, // Required table mixins\n itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin, // Table features mixins\n // These are pretty lightweight, and are useful for lightweight tables\n captionMixin, colgroupMixin],\n props: props // Render function is provided by `tableRendererMixin`\n\n});","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { extend, mergeData } from '../../vue';\nimport { NAME_SKELETON_TABLE } from '../../constants/components';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../constants/props';\nimport { createArray } from '../../utils/array';\nimport { makeProp, makePropsConfigurable } from '../../utils/props';\nimport { BSkeleton } from './skeleton';\nimport { BTableSimple } from '../table'; // --- Helper methods ---\n\nvar isPositiveNumber = function isPositiveNumber(value) {\n return value > 0;\n}; // --- Props ---\n\n\nexport var props = makePropsConfigurable({\n animation: makeProp(PROP_TYPE_STRING),\n columns: makeProp(PROP_TYPE_NUMBER, 5, isPositiveNumber),\n hideHeader: makeProp(PROP_TYPE_BOOLEAN, false),\n rows: makeProp(PROP_TYPE_NUMBER, 3, isPositiveNumber),\n showFooter: makeProp(PROP_TYPE_BOOLEAN, false),\n tableProps: makeProp(PROP_TYPE_OBJECT, {})\n}, NAME_SKELETON_TABLE); // --- Main component ---\n// @vue/component\n\nexport var BSkeletonTable = /*#__PURE__*/extend({\n name: NAME_SKELETON_TABLE,\n functional: true,\n props: props,\n render: function render(h, _ref) {\n var data = _ref.data,\n props = _ref.props;\n var animation = props.animation,\n columns = props.columns;\n var $th = h('th', [h(BSkeleton, {\n props: {\n animation: animation\n }\n })]);\n var $thTr = h('tr', createArray(columns, $th));\n var $td = h('td', [h(BSkeleton, {\n props: {\n width: '75%',\n animation: animation\n }\n })]);\n var $tdTr = h('tr', createArray(columns, $td));\n var $tbody = h('tbody', createArray(props.rows, $tdTr));\n var $thead = !props.hideHeader ? h('thead', [$thTr]) : h();\n var $tfoot = props.showFooter ? h('tfoot', [$thTr]) : h();\n return h(BTableSimple, mergeData(data, {\n props: _objectSpread({}, props.tableProps)\n }), [$thead, $tbody, $tfoot]);\n }\n});","import { getSel, isElement } from '../../../utils/dom'; // Helper to determine if a there is an active text selection on the document page\n// Used to filter out click events caused by the mouse up at end of selection\n//\n// Accepts an element as only argument to test to see if selection overlaps or is\n// contained within the element\n\nexport var textSelectionActive = function textSelectionActive() {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n var sel = getSel();\n return sel && sel.toString().trim() !== '' && sel.containsNode && isElement(el) ?\n /* istanbul ignore next */\n sel.containsNode(el, true) : false;\n};","import { extend } from '../../../vue';\nimport { SLOT_NAME_TABLE_COLGROUP } from '../../../constants/slots'; // --- Props ---\n\nexport var props = {}; // --- Mixin ---\n// @vue/component\n\nexport var colgroupMixin = extend({\n methods: {\n renderColgroup: function renderColgroup() {\n var fields = this.computedFields;\n var h = this.$createElement;\n var $colgroup = h();\n\n if (this.hasNormalizedSlot(SLOT_NAME_TABLE_COLGROUP)) {\n $colgroup = h('colgroup', {\n key: 'colgroup'\n }, [this.normalizeSlot(SLOT_NAME_TABLE_COLGROUP, {\n columns: fields.length,\n fields: fields\n })]);\n }\n\n return $colgroup;\n }\n }\n});"],"sourceRoot":""}