diff --git a/.eslintignore b/.eslintignore index 5855520002..673cba7722 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,6 +1,5 @@ *.min.* src/lib/markbind/src/lib/markdown-it/* -src/lib/markbind/src/lib/vue-attribute-renderer/* src/lib/markbind/src/lib/markdown-it-shared/* !.eslintrc.js diff --git a/.eslintrc.js b/.eslintrc.js index e5049bf1bf..b7a079c568 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -29,6 +29,7 @@ module.exports = { "lodash/prefer-lodash-method": [0], "lodash/prefer-noop": [0], "max-len": ["error", { "code": 110 }], + "no-param-reassign": ["error", { "props": false }], "operator-linebreak": ["error", "before"], // override airbnb-base dev dependencies, latest version does not white list __mocks__ "import/no-extraneous-dependencies": [ diff --git a/.travis.yml b/.travis.yml index c94dcf0b9b..b54c2ca90f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: node_js node_js: - - '8' + - '10' deploy: # deploy on release, to markbind.org - provider: script diff --git a/README.md b/README.md index 2b707ad4c2..50e157031d 100644 --- a/README.md +++ b/README.md @@ -8,4 +8,6 @@ The website for the latest master branch (not yet released to the public) is at https://markbind-master.netlify.com. -The Developer Guide can be found at https://markbind.org/devdocs/devGuide/index.html \ No newline at end of file +The Developer Guide can be found at https://markbind.org/devdocs/devGuide/index.html + +If you're interested in contributing to MarkBind, we'd love to have you onboard! Check out our [Contribution Guide](https://markbind.org/devdocs/devGuide/contributing) for ideas on contributing and setup steps for getting our repositories up and running on your local machine. \ No newline at end of file diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000000..7b88f24ab9 --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,17 @@ +environment: + nodejs_version: "10" + +# Install scripts +install: + # Install nodejs version + - ps: Install-Product node $env:nodejs_version + # Install modules + - npm ci + +# Post-install test scripts +test_script: + - node --version + - npm --version + - npm run testwin + +build: off diff --git a/asset/css/bootstrap-vue.min.css b/asset/css/bootstrap-vue.min.css index 2ebfa4f1ff..60dd542398 100644 --- a/asset/css/bootstrap-vue.min.css +++ b/asset/css/bootstrap-vue.min.css @@ -1 +1,4 @@ -.fade-enter-active,.fade-leave-active{transition:opacity .15s linear}.fade-enter,.fade-leave-to{opacity:0}.input-group>.input-group-append:last-child>.b-dropdown:not(:last-child):not(.dropdown-toggle)>.btn,.input-group>.input-group-append:not(:last-child)>.b-dropdown>.btn,.input-group>.input-group-prepend>.b-dropdown>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.b-dropdown>.btn,.input-group>.input-group-prepend:first-child>.b-dropdown:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.b-dropdown>.btn{border-top-left-radius:0;border-bottom-left-radius:0}input.form-control[type=range],input.form-control[type=color]{height:2.25rem}input.form-control.form-control-sm[type=range],input.form-control.form-control-sm[type=color]{height:1.9375rem}input.form-control.form-control-lg[type=range],input.form-control.form-control-lg[type=color]{height:3rem}input.form-control[type=color]{padding:.25rem}input.form-control.form-control-sm[type=color]{padding:.125rem}table.b-table.b-table-fixed{table-layout:fixed}table.b-table[aria-busy=false]{opacity:1}table.b-table[aria-busy=true]{opacity:.6}table.b-table>tfoot>tr>th,table.b-table>thead>tr>th{position:relative}table.b-table>tfoot>tr>th.sorting,table.b-table>thead>tr>th.sorting{padding-right:1.5em;cursor:pointer}table.b-table>tfoot>tr>th.sorting::after,table.b-table>tfoot>tr>th.sorting::before,table.b-table>thead>tr>th.sorting::after,table.b-table>thead>tr>th.sorting::before{position:absolute;bottom:0;display:block;opacity:.4;padding-bottom:inherit;font-size:inherit;line-height:180%}table.b-table>tfoot>tr>th.sorting::before,table.b-table>thead>tr>th.sorting::before{right:.75em;content:'\2191'}table.b-table>tfoot>tr>th.sorting::after,table.b-table>thead>tr>th.sorting::after{right:.25em;content:'\2193'}table.b-table>tfoot>tr>th.sorting_asc::after,table.b-table>tfoot>tr>th.sorting_desc::before,table.b-table>thead>tr>th.sorting_asc::after,table.b-table>thead>tr>th.sorting_desc::before{opacity:1}table.b-table.b-table-stacked{width:100%}table.b-table.b-table-stacked,table.b-table.b-table-stacked>caption,table.b-table.b-table-stacked>tbody,table.b-table.b-table-stacked>tbody>tr,table.b-table.b-table-stacked>tbody>tr>td,table.b-table.b-table-stacked>tbody>tr>th{display:block}table.b-table.b-table-stacked>tbody>tr.b-table-bottom-row,table.b-table.b-table-stacked>tbody>tr.b-table-top-row,table.b-table.b-table-stacked>tfoot,table.b-table.b-table-stacked>thead{display:none}table.b-table.b-table-stacked>tbody>tr>:first-child{border-top-width:.4rem}table.b-table.b-table-stacked>tbody>tr>[data-label]{display:grid;grid-template-columns:40% auto;grid-gap:.25rem 1rem}table.b-table.b-table-stacked>tbody>tr>[data-label]::before{content:attr(data-label);display:inline;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal}@media all and (max-width:575.99px){table.b-table.b-table-stacked-sm{width:100%}table.b-table.b-table-stacked-sm,table.b-table.b-table-stacked-sm>caption,table.b-table.b-table-stacked-sm>tbody,table.b-table.b-table-stacked-sm>tbody>tr,table.b-table.b-table-stacked-sm>tbody>tr>td,table.b-table.b-table-stacked-sm>tbody>tr>th{display:block}table.b-table.b-table-stacked-sm>tbody>tr.b-table-bottom-row,table.b-table.b-table-stacked-sm>tbody>tr.b-table-top-row,table.b-table.b-table-stacked-sm>tfoot,table.b-table.b-table-stacked-sm>thead{display:none}table.b-table.b-table-stacked-sm>tbody>tr>:first-child{border-top-width:.4rem}table.b-table.b-table-stacked-sm>tbody>tr>[data-label]{display:grid;grid-template-columns:40% auto;grid-gap:.25rem 1rem}table.b-table.b-table-stacked-sm>tbody>tr>[data-label]::before{content:attr(data-label);display:inline;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal}}@media all and (max-width:767.99px){table.b-table.b-table-stacked-md{width:100%}table.b-table.b-table-stacked-md,table.b-table.b-table-stacked-md>caption,table.b-table.b-table-stacked-md>tbody,table.b-table.b-table-stacked-md>tbody>tr,table.b-table.b-table-stacked-md>tbody>tr>td,table.b-table.b-table-stacked-md>tbody>tr>th{display:block}table.b-table.b-table-stacked-md>tbody>tr.b-table-bottom-row,table.b-table.b-table-stacked-md>tbody>tr.b-table-top-row,table.b-table.b-table-stacked-md>tfoot,table.b-table.b-table-stacked-md>thead{display:none}table.b-table.b-table-stacked-md>tbody>tr>:first-child{border-top-width:.4rem}table.b-table.b-table-stacked-md>tbody>tr>[data-label]{display:grid;grid-template-columns:40% auto;grid-gap:.25rem 1rem}table.b-table.b-table-stacked-md>tbody>tr>[data-label]::before{content:attr(data-label);display:inline;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal}}@media all and (max-width:991.99px){table.b-table.b-table-stacked-lg{width:100%}table.b-table.b-table-stacked-lg,table.b-table.b-table-stacked-lg>caption,table.b-table.b-table-stacked-lg>tbody,table.b-table.b-table-stacked-lg>tbody>tr,table.b-table.b-table-stacked-lg>tbody>tr>td,table.b-table.b-table-stacked-lg>tbody>tr>th{display:block}table.b-table.b-table-stacked-lg>tbody>tr.b-table-bottom-row,table.b-table.b-table-stacked-lg>tbody>tr.b-table-top-row,table.b-table.b-table-stacked-lg>tfoot,table.b-table.b-table-stacked-lg>thead{display:none}table.b-table.b-table-stacked-lg>tbody>tr>:first-child{border-top-width:.4rem}table.b-table.b-table-stacked-lg>tbody>tr>[data-label]{display:grid;grid-template-columns:40% auto;grid-gap:.25rem 1rem}table.b-table.b-table-stacked-lg>tbody>tr>[data-label]::before{content:attr(data-label);display:inline;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal}}@media all and (max-width:1199.99px){table.b-table.b-table-stacked-xl{width:100%}table.b-table.b-table-stacked-xl,table.b-table.b-table-stacked-xl>caption,table.b-table.b-table-stacked-xl>tbody,table.b-table.b-table-stacked-xl>tbody>tr,table.b-table.b-table-stacked-xl>tbody>tr>td,table.b-table.b-table-stacked-xl>tbody>tr>th{display:block}table.b-table.b-table-stacked-xl>tbody>tr.b-table-bottom-row,table.b-table.b-table-stacked-xl>tbody>tr.b-table-top-row,table.b-table.b-table-stacked-xl>tfoot,table.b-table.b-table-stacked-xl>thead{display:none}table.b-table.b-table-stacked-xl>tbody>tr>:first-child{border-top-width:.4rem}table.b-table.b-table-stacked-xl>tbody>tr>[data-label]{display:grid;grid-template-columns:40% auto;grid-gap:.25rem 1rem}table.b-table.b-table-stacked-xl>tbody>tr>[data-label]::before{content:attr(data-label);display:inline;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal}}table.b-table>tbody>tr.b-table-details>td{border-top:none} \ No newline at end of file +/*! + * BootstrapVue Custom CSS (https://bootstrap-vue.js.org) + */.bv-no-focus-ring:focus{outline:0}@media (max-width:575.98px){.bv-d-xs-down-none{display:none!important}}@media (max-width:767.98px){.bv-d-sm-down-none{display:none!important}}@media (max-width:991.98px){.bv-d-md-down-none{display:none!important}}@media (max-width:1199.98px){.bv-d-lg-down-none{display:none!important}}.bv-d-xl-down-none{display:none!important}.b-calendar output.readonly{background-color:#e9ecef;opacity:1}.b-calendar .b-calendar-grid-body .col[data-date] .btn{width:32px;height:32px;font-size:14px;line-height:1;margin:3px auto;padding:9px 0}.b-calendar .btn.disabled,.b-calendar .btn:disabled,.b-calendar .btn[aria-disabled=true]{cursor:default;pointer-events:none}.card-img-left{border-top-left-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-img-right{border-top-right-radius:calc(.25rem - 1px);border-bottom-right-radius:calc(.25rem - 1px)}.dropdown:not(.dropleft) .dropdown-toggle.dropdown-toggle-no-caret::after{display:none!important}.dropdown.dropleft .dropdown-toggle.dropdown-toggle-no-caret::before{display:none!important}.dropdown .dropdown-menu:focus{outline:0}.b-dropdown-form{display:inline-block;padding:.25rem 1.5rem;width:100%;clear:both;font-weight:400}.b-dropdown-form:focus{outline:1px dotted!important;outline:5px auto -webkit-focus-ring-color!important}.b-dropdown-form.disabled,.b-dropdown-form:disabled{outline:0!important;color:#6c757d;pointer-events:none}.b-dropdown-text{display:inline-block;padding:.25rem 1.5rem;margin-bottom:0;width:100%;clear:both;font-weight:lighter}.custom-checkbox.b-custom-control-lg,.input-group-lg .custom-checkbox{font-size:1.25rem;line-height:1.5;padding-left:1.875rem}.custom-checkbox.b-custom-control-lg .custom-control-label::before,.input-group-lg .custom-checkbox .custom-control-label::before{top:.3125rem;left:-1.875rem;width:1.25rem;height:1.25rem;border-radius:.3rem}.custom-checkbox.b-custom-control-lg .custom-control-label::after,.input-group-lg .custom-checkbox .custom-control-label::after{top:.3125rem;left:-1.875rem;width:1.25rem;height:1.25rem;background-size:50% 50%}.custom-checkbox.b-custom-control-sm,.input-group-sm .custom-checkbox{font-size:.875rem;line-height:1.5;padding-left:1.3125rem}.custom-checkbox.b-custom-control-sm .custom-control-label::before,.input-group-sm .custom-checkbox .custom-control-label::before{top:.21875rem;left:-1.3125rem;width:.875rem;height:.875rem;border-radius:.2rem}.custom-checkbox.b-custom-control-sm .custom-control-label::after,.input-group-sm .custom-checkbox .custom-control-label::after{top:.21875rem;left:-1.3125rem;width:.875rem;height:.875rem;background-size:50% 50%}.custom-switch.b-custom-control-lg,.input-group-lg .custom-switch{padding-left:2.8125rem}.custom-switch.b-custom-control-lg .custom-control-label,.input-group-lg .custom-switch .custom-control-label{font-size:1.25rem;line-height:1.5}.custom-switch.b-custom-control-lg .custom-control-label::before,.input-group-lg .custom-switch .custom-control-label::before{top:.3125rem;height:1.25rem;left:-2.8125rem;width:2.1875rem;border-radius:.625rem}.custom-switch.b-custom-control-lg .custom-control-label::after,.input-group-lg .custom-switch .custom-control-label::after{top:calc(.3125rem + 2px);left:calc(-2.8125rem + 2px);width:calc(1.25rem - 4px);height:calc(1.25rem - 4px);border-radius:.625rem;background-size:50% 50%}.custom-switch.b-custom-control-lg .custom-control-input:checked~.custom-control-label::after,.input-group-lg .custom-switch .custom-control-input:checked~.custom-control-label::after{-webkit-transform:translateX(.9375rem);transform:translateX(.9375rem)}.custom-switch.b-custom-control-sm,.input-group-sm .custom-switch{padding-left:1.96875rem}.custom-switch.b-custom-control-sm .custom-control-label,.input-group-sm .custom-switch .custom-control-label{font-size:.875rem;line-height:1.5}.custom-switch.b-custom-control-sm .custom-control-label::before,.input-group-sm .custom-switch .custom-control-label::before{top:.21875rem;left:-1.96875rem;width:1.53125rem;height:.875rem;border-radius:.4375rem}.custom-switch.b-custom-control-sm .custom-control-label::after,.input-group-sm .custom-switch .custom-control-label::after{top:calc(.21875rem + 2px);left:calc(-1.96875rem + 2px);width:calc(.875rem - 4px);height:calc(.875rem - 4px);border-radius:.4375rem;background-size:50% 50%}.custom-switch.b-custom-control-sm .custom-control-input:checked~.custom-control-label::after,.input-group-sm .custom-switch .custom-control-input:checked~.custom-control-label::after{-webkit-transform:translateX(.65625rem);transform:translateX(.65625rem)}.input-group>.input-group-append:last-child>.btn-group:not(:last-child):not(.dropdown-toggle)>.btn,.input-group>.input-group-append:not(:last-child)>.btn-group>.btn,.input-group>.input-group-prepend>.btn-group>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn-group>.btn,.input-group>.input-group-prepend:first-child>.btn-group:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.btn-group>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.b-form-datepicker.form-control{background-image:none}.b-form-datepicker.form-control>.btn{line-height:1;font-size:inherit;box-shadow:none!important}.b-form-datepicker.form-control>.btn>div{transition:-webkit-transform .15s;transition:transform .15s;transition:transform .15s,-webkit-transform .15s}.b-form-datepicker.form-control>.btn:disabled{pointer-events:none}.b-form-datepicker.form-control>.btn:focus:not(:disabled)>div,.b-form-datepicker.form-control>.btn:hover:not(:disabled)>div{-webkit-transform:scale(1.125);transform:scale(1.125)}.b-form-datepicker.form-control.is-valid>.btn{color:#28a745}.b-form-datepicker.form-control.is-invalid>.btn{color:#dc3545}.b-form-datepicker.form-control.focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.b-form-datepicker.form-control.focus.is-valid{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.b-form-datepicker.form-control.focus.is-invalid{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.b-form-datepicker.form-control>label{cursor:pointer}.b-form-datepicker.form-control[aria-disabled=true],.b-form-datepicker.form-control[aria-readonly=true]{background-color:#e9ecef;opacity:1}.b-form-datepicker.form-control[aria-disabled=true]{pointer-events:none}.b-form-datepicker.form-control[aria-disabled=true]>label{cursor:default}.b-custom-control-lg .custom-file-input,.b-custom-control-lg .custom-file-label,.b-custom-control-lg.custom-file,.input-group-lg .custom-file-input,.input-group-lg .custom-file-label,.input-group-lg.custom-file{font-size:1.25rem;height:calc(1.5em + 1rem + 2px)}.b-custom-control-lg .custom-file-label,.b-custom-control-lg .custom-file-label:after,.input-group-lg .custom-file-label,.input-group-lg .custom-file-label:after{padding:.5rem 1rem;line-height:1.5}.b-custom-control-lg .custom-file-label,.input-group-lg .custom-file-label{border-radius:.3rem}.b-custom-control-lg .custom-file-label::after,.input-group-lg .custom-file-label::after{font-size:inherit;height:calc(1.5em + 1rem);border-radius:0 .3rem .3rem 0}.b-custom-control-sm .custom-file-input,.b-custom-control-sm .custom-file-label,.b-custom-control-sm.custom-file,.input-group-sm .custom-file-input,.input-group-sm .custom-file-label,.input-group-sm.custom-file{font-size:.875rem;height:calc(1.5em + .5rem + 2px)}.b-custom-control-sm .custom-file-label,.b-custom-control-sm .custom-file-label:after,.input-group-sm .custom-file-label,.input-group-sm .custom-file-label:after{padding:.25rem .5rem;line-height:1.5}.b-custom-control-sm .custom-file-label,.input-group-sm .custom-file-label{border-radius:.2rem}.b-custom-control-sm .custom-file-label::after,.input-group-sm .custom-file-label::after{font-size:inherit;height:calc(1.5em + .5rem);border-radius:0 .2rem .2rem 0}.form-control.is-invalid,.form-control.is-valid,.was-validated .form-control:invalid,.was-validated .form-control:valid{background-position:right calc(.375em + .1875rem) center}input[type=color].form-control{height:calc(1.5em + .75rem + 2px);padding:.125rem .25rem}.input-group-sm input[type=color].form-control,input[type=color].form-control.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.125rem .25rem}.input-group-lg input[type=color].form-control,input[type=color].form-control.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.125rem .25rem}input[type=color].form-control:disabled{background-color:#adb5bd;opacity:.65}.input-group>.custom-range{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-range+.custom-file,.input-group>.custom-range+.custom-range,.input-group>.custom-range+.custom-select,.input-group>.custom-range+.form-control,.input-group>.custom-range+.form-control-plaintext{margin-left:-1px}.input-group>.custom-file+.custom-range,.input-group>.custom-range+.custom-range,.input-group>.custom-select+.custom-range,.input-group>.form-control+.custom-range,.input-group>.form-control-plaintext+.custom-range{margin-left:-1px}.input-group>.custom-range:focus{z-index:3}.input-group>.custom-range:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-range:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-range{height:calc(1.5em + .75rem + 2px);padding:0 .75rem;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;height:calc(1.5em + .75rem + 2px);border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.input-group>.custom-range{transition:none}}.input-group>.custom-range:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.input-group>.custom-range:disabled,.input-group>.custom-range[readonly]{background-color:#e9ecef}.input-group-lg>.custom-range{height:calc(1.5em + 1rem + 2px);padding:0 1rem;border-radius:.3rem}.input-group-sm>.custom-range{height:calc(1.5em + .5rem + 2px);padding:0 .5rem;border-radius:.2rem}.input-group .custom-range.is-valid,.was-validated .input-group .custom-range:valid{border-color:#28a745}.input-group .custom-range.is-valid:focus,.was-validated .input-group .custom-range:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-range.is-valid:focus::-webkit-slider-thumb,.was-validated .custom-range:valid:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #9be7ac}.custom-range.is-valid:focus::-moz-range-thumb,.was-validated .custom-range:valid:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #9be7ac}.custom-range.is-valid:focus::-ms-thumb,.was-validated .custom-range:valid:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #9be7ac}.custom-range.is-valid::-webkit-slider-thumb,.was-validated .custom-range:valid::-webkit-slider-thumb{background-color:#28a745;background-image:none}.custom-range.is-valid::-webkit-slider-thumb:active,.was-validated .custom-range:valid::-webkit-slider-thumb:active{background-color:#9be7ac;background-image:none}.custom-range.is-valid::-webkit-slider-runnable-track,.was-validated .custom-range:valid::-webkit-slider-runnable-track{background-color:rgba(40,167,69,.35)}.custom-range.is-valid::-moz-range-thumb,.was-validated .custom-range:valid::-moz-range-thumb{background-color:#28a745;background-image:none}.custom-range.is-valid::-moz-range-thumb:active,.was-validated .custom-range:valid::-moz-range-thumb:active{background-color:#9be7ac;background-image:none}.custom-range.is-valid::-moz-range-track,.was-validated .custom-range:valid::-moz-range-track{background:rgba(40,167,69,.35)}.custom-range.is-valid~.valid-feedback,.custom-range.is-valid~.valid-tooltip,.was-validated .custom-range:valid~.valid-feedback,.was-validated .custom-range:valid~.valid-tooltip{display:block}.custom-range.is-valid::-ms-thumb,.was-validated .custom-range:valid::-ms-thumb{background-color:#28a745;background-image:none}.custom-range.is-valid::-ms-thumb:active,.was-validated .custom-range:valid::-ms-thumb:active{background-color:#9be7ac;background-image:none}.custom-range.is-valid::-ms-track-lower,.was-validated .custom-range:valid::-ms-track-lower{background:rgba(40,167,69,.35)}.custom-range.is-valid::-ms-track-upper,.was-validated .custom-range:valid::-ms-track-upper{background:rgba(40,167,69,.35)}.input-group .custom-range.is-invalid,.was-validated .input-group .custom-range:invalid{border-color:#dc3545}.input-group .custom-range.is-invalid:focus,.was-validated .input-group .custom-range:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-range.is-invalid:focus::-webkit-slider-thumb,.was-validated .custom-range:invalid:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #f6cdd1}.custom-range.is-invalid:focus::-moz-range-thumb,.was-validated .custom-range:invalid:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #f6cdd1}.custom-range.is-invalid:focus::-ms-thumb,.was-validated .custom-range:invalid:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #f6cdd1}.custom-range.is-invalid::-webkit-slider-thumb,.was-validated .custom-range:invalid::-webkit-slider-thumb{background-color:#dc3545;background-image:none}.custom-range.is-invalid::-webkit-slider-thumb:active,.was-validated .custom-range:invalid::-webkit-slider-thumb:active{background-color:#f6cdd1;background-image:none}.custom-range.is-invalid::-webkit-slider-runnable-track,.was-validated .custom-range:invalid::-webkit-slider-runnable-track{background-color:rgba(220,53,69,.35)}.custom-range.is-invalid::-moz-range-thumb,.was-validated .custom-range:invalid::-moz-range-thumb{background-color:#dc3545;background-image:none}.custom-range.is-invalid::-moz-range-thumb:active,.was-validated .custom-range:invalid::-moz-range-thumb:active{background-color:#f6cdd1;background-image:none}.custom-range.is-invalid::-moz-range-track,.was-validated .custom-range:invalid::-moz-range-track{background:rgba(220,53,69,.35)}.custom-range.is-invalid~.invalid-feedback,.custom-range.is-invalid~.invalid-tooltip,.was-validated .custom-range:invalid~.invalid-feedback,.was-validated .custom-range:invalid~.invalid-tooltip{display:block}.custom-range.is-invalid::-ms-thumb,.was-validated .custom-range:invalid::-ms-thumb{background-color:#dc3545;background-image:none}.custom-range.is-invalid::-ms-thumb:active,.was-validated .custom-range:invalid::-ms-thumb:active{background-color:#f6cdd1;background-image:none}.custom-range.is-invalid::-ms-track-lower,.was-validated .custom-range:invalid::-ms-track-lower{background:rgba(220,53,69,.35)}.custom-range.is-invalid::-ms-track-upper,.was-validated .custom-range:invalid::-ms-track-upper{background:rgba(220,53,69,.35)}.custom-radio.b-custom-control-lg,.input-group-lg .custom-radio{font-size:1.25rem;line-height:1.5;padding-left:1.875rem}.custom-radio.b-custom-control-lg .custom-control-label::before,.input-group-lg .custom-radio .custom-control-label::before{top:.3125rem;left:-1.875rem;width:1.25rem;height:1.25rem;border-radius:50%}.custom-radio.b-custom-control-lg .custom-control-label::after,.input-group-lg .custom-radio .custom-control-label::after{top:.3125rem;left:-1.875rem;width:1.25rem;height:1.25rem;background:no-repeat 50%/50% 50%}.custom-radio.b-custom-control-sm,.input-group-sm .custom-radio{font-size:.875rem;line-height:1.5;padding-left:1.3125rem}.custom-radio.b-custom-control-sm .custom-control-label::before,.input-group-sm .custom-radio .custom-control-label::before{top:.21875rem;left:-1.3125rem;width:.875rem;height:.875rem;border-radius:50%}.custom-radio.b-custom-control-sm .custom-control-label::after,.input-group-sm .custom-radio .custom-control-label::after{top:.21875rem;left:-1.3125rem;width:.875rem;height:.875rem;background:no-repeat 50%/50% 50%}.b-form-spinbutton.form-control{text-align:center;overflow:hidden;background-image:none}.b-form-spinbutton.form-control.flex-column{height:auto;width:auto}.b-form-spinbutton.form-control output{font-size:inherit;outline:0;border:0;background-color:transparent}.b-form-spinbutton.form-control output>div{min-width:2em;height:1.5em}.b-form-spinbutton.form-control.d-inline-flex:not(.flex-column),.b-form-spinbutton.form-control.d-inline-flex:not(.flex-column) output{width:auto}.b-form-spinbutton.form-control .btn{line-height:1;box-shadow:none!important}.b-form-spinbutton.form-control .btn:disabled{pointer-events:none}.b-form-spinbutton.form-control .btn:hover:not(:disabled)>div{-webkit-transform:scale(1.25);transform:scale(1.25)}.b-form-spinbutton.form-control.focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.b-form-spinbutton.form-control.focus.is-valid{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.b-form-spinbutton.form-control.focus.is-invalid{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.b-form-spinbutton.form-control.disabled,.b-form-spinbutton.form-control.readonly{background-color:#e9ecef}.b-form-spinbutton.form-control.disabled{pointer-events:none}.b-form-tags.focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.b-form-tags.focus.is-valid{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.b-form-tags.focus.is-invalid{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.b-form-tags.disabled{background-color:#e9ecef}.b-form-tag{font-size:75%;font-weight:400;line-height:1.5}.b-form-tag.disabled{opacity:.75}.b-form-tag>button.b-form-tag-remove{color:inherit;font-size:125%;line-height:1;float:none}.form-control-sm .b-form-tag{line-height:1.5}.form-control-lg .b-form-tag{line-height:1.5}.modal-backdrop{opacity:.5}.b-pagination-pills .page-item .page-link{border-radius:50rem!important;margin-left:.25rem;line-height:1}.b-pagination-pills .page-item:first-child .page-link{margin-left:0}.popover.b-popover{display:block;opacity:1;outline:0}.popover.b-popover.fade:not(.show){opacity:0}.popover.b-popover.show{opacity:1}.b-popover-primary.popover{background-color:#cce5ff;border-color:#b8daff}.b-popover-primary.bs-popover-auto[x-placement^=top]>.arrow::before,.b-popover-primary.bs-popover-top>.arrow::before{border-top-color:#b8daff}.b-popover-primary.bs-popover-auto[x-placement^=top]>.arrow::after,.b-popover-primary.bs-popover-top>.arrow::after{border-top-color:#cce5ff}.b-popover-primary.bs-popover-auto[x-placement^=right]>.arrow::before,.b-popover-primary.bs-popover-right>.arrow::before{border-right-color:#b8daff}.b-popover-primary.bs-popover-auto[x-placement^=right]>.arrow::after,.b-popover-primary.bs-popover-right>.arrow::after{border-right-color:#cce5ff}.b-popover-primary.bs-popover-auto[x-placement^=bottom]>.arrow::before,.b-popover-primary.bs-popover-bottom>.arrow::before{border-bottom-color:#b8daff}.b-popover-primary.bs-popover-auto[x-placement^=bottom]>.arrow::after,.b-popover-primary.bs-popover-bottom>.arrow::after{border-bottom-color:#bdddff}.b-popover-primary.bs-popover-auto[x-placement^=bottom] .popover-header::before,.b-popover-primary.bs-popover-bottom .popover-header::before{border-bottom-color:#bdddff}.b-popover-primary.bs-popover-auto[x-placement^=left]>.arrow::before,.b-popover-primary.bs-popover-left>.arrow::before{border-left-color:#b8daff}.b-popover-primary.bs-popover-auto[x-placement^=left]>.arrow::after,.b-popover-primary.bs-popover-left>.arrow::after{border-left-color:#cce5ff}.b-popover-primary .popover-header{color:#212529;background-color:#bdddff;border-bottom-color:#a3d0ff}.b-popover-primary .popover-body{color:#004085}.b-popover-secondary.popover{background-color:#e2e3e5;border-color:#d6d8db}.b-popover-secondary.bs-popover-auto[x-placement^=top]>.arrow::before,.b-popover-secondary.bs-popover-top>.arrow::before{border-top-color:#d6d8db}.b-popover-secondary.bs-popover-auto[x-placement^=top]>.arrow::after,.b-popover-secondary.bs-popover-top>.arrow::after{border-top-color:#e2e3e5}.b-popover-secondary.bs-popover-auto[x-placement^=right]>.arrow::before,.b-popover-secondary.bs-popover-right>.arrow::before{border-right-color:#d6d8db}.b-popover-secondary.bs-popover-auto[x-placement^=right]>.arrow::after,.b-popover-secondary.bs-popover-right>.arrow::after{border-right-color:#e2e3e5}.b-popover-secondary.bs-popover-auto[x-placement^=bottom]>.arrow::before,.b-popover-secondary.bs-popover-bottom>.arrow::before{border-bottom-color:#d6d8db}.b-popover-secondary.bs-popover-auto[x-placement^=bottom]>.arrow::after,.b-popover-secondary.bs-popover-bottom>.arrow::after{border-bottom-color:#dadbde}.b-popover-secondary.bs-popover-auto[x-placement^=bottom] .popover-header::before,.b-popover-secondary.bs-popover-bottom .popover-header::before{border-bottom-color:#dadbde}.b-popover-secondary.bs-popover-auto[x-placement^=left]>.arrow::before,.b-popover-secondary.bs-popover-left>.arrow::before{border-left-color:#d6d8db}.b-popover-secondary.bs-popover-auto[x-placement^=left]>.arrow::after,.b-popover-secondary.bs-popover-left>.arrow::after{border-left-color:#e2e3e5}.b-popover-secondary .popover-header{color:#212529;background-color:#dadbde;border-bottom-color:#ccced2}.b-popover-secondary .popover-body{color:#383d41}.b-popover-success.popover{background-color:#d4edda;border-color:#c3e6cb}.b-popover-success.bs-popover-auto[x-placement^=top]>.arrow::before,.b-popover-success.bs-popover-top>.arrow::before{border-top-color:#c3e6cb}.b-popover-success.bs-popover-auto[x-placement^=top]>.arrow::after,.b-popover-success.bs-popover-top>.arrow::after{border-top-color:#d4edda}.b-popover-success.bs-popover-auto[x-placement^=right]>.arrow::before,.b-popover-success.bs-popover-right>.arrow::before{border-right-color:#c3e6cb}.b-popover-success.bs-popover-auto[x-placement^=right]>.arrow::after,.b-popover-success.bs-popover-right>.arrow::after{border-right-color:#d4edda}.b-popover-success.bs-popover-auto[x-placement^=bottom]>.arrow::before,.b-popover-success.bs-popover-bottom>.arrow::before{border-bottom-color:#c3e6cb}.b-popover-success.bs-popover-auto[x-placement^=bottom]>.arrow::after,.b-popover-success.bs-popover-bottom>.arrow::after{border-bottom-color:#c9e8d1}.b-popover-success.bs-popover-auto[x-placement^=bottom] .popover-header::before,.b-popover-success.bs-popover-bottom .popover-header::before{border-bottom-color:#c9e8d1}.b-popover-success.bs-popover-auto[x-placement^=left]>.arrow::before,.b-popover-success.bs-popover-left>.arrow::before{border-left-color:#c3e6cb}.b-popover-success.bs-popover-auto[x-placement^=left]>.arrow::after,.b-popover-success.bs-popover-left>.arrow::after{border-left-color:#d4edda}.b-popover-success .popover-header{color:#212529;background-color:#c9e8d1;border-bottom-color:#b7e1c1}.b-popover-success .popover-body{color:#155724}.b-popover-info.popover{background-color:#d1ecf1;border-color:#bee5eb}.b-popover-info.bs-popover-auto[x-placement^=top]>.arrow::before,.b-popover-info.bs-popover-top>.arrow::before{border-top-color:#bee5eb}.b-popover-info.bs-popover-auto[x-placement^=top]>.arrow::after,.b-popover-info.bs-popover-top>.arrow::after{border-top-color:#d1ecf1}.b-popover-info.bs-popover-auto[x-placement^=right]>.arrow::before,.b-popover-info.bs-popover-right>.arrow::before{border-right-color:#bee5eb}.b-popover-info.bs-popover-auto[x-placement^=right]>.arrow::after,.b-popover-info.bs-popover-right>.arrow::after{border-right-color:#d1ecf1}.b-popover-info.bs-popover-auto[x-placement^=bottom]>.arrow::before,.b-popover-info.bs-popover-bottom>.arrow::before{border-bottom-color:#bee5eb}.b-popover-info.bs-popover-auto[x-placement^=bottom]>.arrow::after,.b-popover-info.bs-popover-bottom>.arrow::after{border-bottom-color:#c5e7ed}.b-popover-info.bs-popover-auto[x-placement^=bottom] .popover-header::before,.b-popover-info.bs-popover-bottom .popover-header::before{border-bottom-color:#c5e7ed}.b-popover-info.bs-popover-auto[x-placement^=left]>.arrow::before,.b-popover-info.bs-popover-left>.arrow::before{border-left-color:#bee5eb}.b-popover-info.bs-popover-auto[x-placement^=left]>.arrow::after,.b-popover-info.bs-popover-left>.arrow::after{border-left-color:#d1ecf1}.b-popover-info .popover-header{color:#212529;background-color:#c5e7ed;border-bottom-color:#b2dfe7}.b-popover-info .popover-body{color:#0c5460}.b-popover-warning.popover{background-color:#fff3cd;border-color:#ffeeba}.b-popover-warning.bs-popover-auto[x-placement^=top]>.arrow::before,.b-popover-warning.bs-popover-top>.arrow::before{border-top-color:#ffeeba}.b-popover-warning.bs-popover-auto[x-placement^=top]>.arrow::after,.b-popover-warning.bs-popover-top>.arrow::after{border-top-color:#fff3cd}.b-popover-warning.bs-popover-auto[x-placement^=right]>.arrow::before,.b-popover-warning.bs-popover-right>.arrow::before{border-right-color:#ffeeba}.b-popover-warning.bs-popover-auto[x-placement^=right]>.arrow::after,.b-popover-warning.bs-popover-right>.arrow::after{border-right-color:#fff3cd}.b-popover-warning.bs-popover-auto[x-placement^=bottom]>.arrow::before,.b-popover-warning.bs-popover-bottom>.arrow::before{border-bottom-color:#ffeeba}.b-popover-warning.bs-popover-auto[x-placement^=bottom]>.arrow::after,.b-popover-warning.bs-popover-bottom>.arrow::after{border-bottom-color:#ffefbe}.b-popover-warning.bs-popover-auto[x-placement^=bottom] .popover-header::before,.b-popover-warning.bs-popover-bottom .popover-header::before{border-bottom-color:#ffefbe}.b-popover-warning.bs-popover-auto[x-placement^=left]>.arrow::before,.b-popover-warning.bs-popover-left>.arrow::before{border-left-color:#ffeeba}.b-popover-warning.bs-popover-auto[x-placement^=left]>.arrow::after,.b-popover-warning.bs-popover-left>.arrow::after{border-left-color:#fff3cd}.b-popover-warning .popover-header{color:#212529;background-color:#ffefbe;border-bottom-color:#ffe9a4}.b-popover-warning .popover-body{color:#856404}.b-popover-danger.popover{background-color:#f8d7da;border-color:#f5c6cb}.b-popover-danger.bs-popover-auto[x-placement^=top]>.arrow::before,.b-popover-danger.bs-popover-top>.arrow::before{border-top-color:#f5c6cb}.b-popover-danger.bs-popover-auto[x-placement^=top]>.arrow::after,.b-popover-danger.bs-popover-top>.arrow::after{border-top-color:#f8d7da}.b-popover-danger.bs-popover-auto[x-placement^=right]>.arrow::before,.b-popover-danger.bs-popover-right>.arrow::before{border-right-color:#f5c6cb}.b-popover-danger.bs-popover-auto[x-placement^=right]>.arrow::after,.b-popover-danger.bs-popover-right>.arrow::after{border-right-color:#f8d7da}.b-popover-danger.bs-popover-auto[x-placement^=bottom]>.arrow::before,.b-popover-danger.bs-popover-bottom>.arrow::before{border-bottom-color:#f5c6cb}.b-popover-danger.bs-popover-auto[x-placement^=bottom]>.arrow::after,.b-popover-danger.bs-popover-bottom>.arrow::after{border-bottom-color:#f6cace}.b-popover-danger.bs-popover-auto[x-placement^=bottom] .popover-header::before,.b-popover-danger.bs-popover-bottom .popover-header::before{border-bottom-color:#f6cace}.b-popover-danger.bs-popover-auto[x-placement^=left]>.arrow::before,.b-popover-danger.bs-popover-left>.arrow::before{border-left-color:#f5c6cb}.b-popover-danger.bs-popover-auto[x-placement^=left]>.arrow::after,.b-popover-danger.bs-popover-left>.arrow::after{border-left-color:#f8d7da}.b-popover-danger .popover-header{color:#212529;background-color:#f6cace;border-bottom-color:#f2b4ba}.b-popover-danger .popover-body{color:#721c24}.b-popover-light.popover{background-color:#fefefe;border-color:#fdfdfe}.b-popover-light.bs-popover-auto[x-placement^=top]>.arrow::before,.b-popover-light.bs-popover-top>.arrow::before{border-top-color:#fdfdfe}.b-popover-light.bs-popover-auto[x-placement^=top]>.arrow::after,.b-popover-light.bs-popover-top>.arrow::after{border-top-color:#fefefe}.b-popover-light.bs-popover-auto[x-placement^=right]>.arrow::before,.b-popover-light.bs-popover-right>.arrow::before{border-right-color:#fdfdfe}.b-popover-light.bs-popover-auto[x-placement^=right]>.arrow::after,.b-popover-light.bs-popover-right>.arrow::after{border-right-color:#fefefe}.b-popover-light.bs-popover-auto[x-placement^=bottom]>.arrow::before,.b-popover-light.bs-popover-bottom>.arrow::before{border-bottom-color:#fdfdfe}.b-popover-light.bs-popover-auto[x-placement^=bottom]>.arrow::after,.b-popover-light.bs-popover-bottom>.arrow::after{border-bottom-color:#f6f6f6}.b-popover-light.bs-popover-auto[x-placement^=bottom] .popover-header::before,.b-popover-light.bs-popover-bottom .popover-header::before{border-bottom-color:#f6f6f6}.b-popover-light.bs-popover-auto[x-placement^=left]>.arrow::before,.b-popover-light.bs-popover-left>.arrow::before{border-left-color:#fdfdfe}.b-popover-light.bs-popover-auto[x-placement^=left]>.arrow::after,.b-popover-light.bs-popover-left>.arrow::after{border-left-color:#fefefe}.b-popover-light .popover-header{color:#212529;background-color:#f6f6f6;border-bottom-color:#eaeaea}.b-popover-light .popover-body{color:#818182}.b-popover-dark.popover{background-color:#d6d8d9;border-color:#c6c8ca}.b-popover-dark.bs-popover-auto[x-placement^=top]>.arrow::before,.b-popover-dark.bs-popover-top>.arrow::before{border-top-color:#c6c8ca}.b-popover-dark.bs-popover-auto[x-placement^=top]>.arrow::after,.b-popover-dark.bs-popover-top>.arrow::after{border-top-color:#d6d8d9}.b-popover-dark.bs-popover-auto[x-placement^=right]>.arrow::before,.b-popover-dark.bs-popover-right>.arrow::before{border-right-color:#c6c8ca}.b-popover-dark.bs-popover-auto[x-placement^=right]>.arrow::after,.b-popover-dark.bs-popover-right>.arrow::after{border-right-color:#d6d8d9}.b-popover-dark.bs-popover-auto[x-placement^=bottom]>.arrow::before,.b-popover-dark.bs-popover-bottom>.arrow::before{border-bottom-color:#c6c8ca}.b-popover-dark.bs-popover-auto[x-placement^=bottom]>.arrow::after,.b-popover-dark.bs-popover-bottom>.arrow::after{border-bottom-color:#ced0d2}.b-popover-dark.bs-popover-auto[x-placement^=bottom] .popover-header::before,.b-popover-dark.bs-popover-bottom .popover-header::before{border-bottom-color:#ced0d2}.b-popover-dark.bs-popover-auto[x-placement^=left]>.arrow::before,.b-popover-dark.bs-popover-left>.arrow::before{border-left-color:#c6c8ca}.b-popover-dark.bs-popover-auto[x-placement^=left]>.arrow::after,.b-popover-dark.bs-popover-left>.arrow::after{border-left-color:#d6d8d9}.b-popover-dark .popover-header{color:#212529;background-color:#ced0d2;border-bottom-color:#c1c4c5}.b-popover-dark .popover-body{color:#1b1e21}.table.b-table.b-table-fixed{table-layout:fixed}.table.b-table.b-table-no-border-collapse{border-collapse:separate;border-spacing:0}.table.b-table[aria-busy=true]{opacity:.55}.table.b-table>tbody>tr.b-table-details>td{border-top:none!important}.table.b-table>caption{caption-side:bottom}.table.b-table.b-table-caption-top>caption{caption-side:top!important}.table.b-table>tbody>.table-active,.table.b-table>tbody>.table-active>td,.table.b-table>tbody>.table-active>th{background-color:rgba(0,0,0,.075)}.table.b-table.table-hover>tbody>tr.table-active:hover td,.table.b-table.table-hover>tbody>tr.table-active:hover th{color:#212529;background-image:linear-gradient(rgba(0,0,0,.075),rgba(0,0,0,.075));background-repeat:no-repeat}.table.b-table>tbody>.bg-active,.table.b-table>tbody>.bg-active>td,.table.b-table>tbody>.bg-active>th{background-color:rgba(255,255,255,.075)!important}.table.b-table.table-hover.table-dark>tbody>tr.bg-active:hover td,.table.b-table.table-hover.table-dark>tbody>tr.bg-active:hover th{color:#fff;background-image:linear-gradient(rgba(255,255,255,.075),rgba(255,255,255,.075));background-repeat:no-repeat}.b-table-sticky-header,.table-responsive,[class*=table-responsive-]{margin-bottom:1rem}.b-table-sticky-header>.table,.table-responsive>.table,[class*=table-responsive-]>.table{margin-bottom:0}.b-table-sticky-header{overflow-y:auto;max-height:300px}@media print{.b-table-sticky-header{overflow-y:visible!important;max-height:none!important}}@supports ((position:-webkit-sticky) or (position:sticky)){.b-table-sticky-header>.table.b-table>thead>tr>th{position:-webkit-sticky;position:sticky;top:0;z-index:2}.b-table-sticky-header>.table.b-table>tbody>tr>.b-table-sticky-column,.b-table-sticky-header>.table.b-table>tfoot>tr>.b-table-sticky-column,.b-table-sticky-header>.table.b-table>thead>tr>.b-table-sticky-column,.table-responsive>.table.b-table>tbody>tr>.b-table-sticky-column,.table-responsive>.table.b-table>tfoot>tr>.b-table-sticky-column,.table-responsive>.table.b-table>thead>tr>.b-table-sticky-column,[class*=table-responsive-]>.table.b-table>tbody>tr>.b-table-sticky-column,[class*=table-responsive-]>.table.b-table>tfoot>tr>.b-table-sticky-column,[class*=table-responsive-]>.table.b-table>thead>tr>.b-table-sticky-column{position:-webkit-sticky;position:sticky;left:0}.b-table-sticky-header>.table.b-table>thead>tr>.b-table-sticky-column,.table-responsive>.table.b-table>thead>tr>.b-table-sticky-column,[class*=table-responsive-]>.table.b-table>thead>tr>.b-table-sticky-column{z-index:5}.b-table-sticky-header>.table.b-table>tbody>tr>.b-table-sticky-column,.b-table-sticky-header>.table.b-table>tfoot>tr>.b-table-sticky-column,.table-responsive>.table.b-table>tbody>tr>.b-table-sticky-column,.table-responsive>.table.b-table>tfoot>tr>.b-table-sticky-column,[class*=table-responsive-]>.table.b-table>tbody>tr>.b-table-sticky-column,[class*=table-responsive-]>.table.b-table>tfoot>tr>.b-table-sticky-column{z-index:2}.table.b-table>tbody>tr>.table-b-table-default,.table.b-table>tfoot>tr>.table-b-table-default,.table.b-table>thead>tr>.table-b-table-default{color:#212529;background-color:#fff}.table.b-table.table-dark>tbody>tr>.bg-b-table-default,.table.b-table.table-dark>tfoot>tr>.bg-b-table-default,.table.b-table.table-dark>thead>tr>.bg-b-table-default{color:#fff;background-color:#343a40}.table.b-table.table-striped>tbody>tr:nth-of-type(odd)>.table-b-table-default{background-image:linear-gradient(rgba(0,0,0,.05),rgba(0,0,0,.05));background-repeat:no-repeat}.table.b-table.table-striped.table-dark>tbody>tr:nth-of-type(odd)>.bg-b-table-default{background-image:linear-gradient(rgba(255,255,255,.05),rgba(255,255,255,.05));background-repeat:no-repeat}.table.b-table.table-hover>tbody>tr:hover>.table-b-table-default{color:#212529;background-image:linear-gradient(rgba(0,0,0,.075),rgba(0,0,0,.075));background-repeat:no-repeat}.table.b-table.table-hover.table-dark>tbody>tr:hover>.bg-b-table-default{color:#fff;background-image:linear-gradient(rgba(255,255,255,.075),rgba(255,255,255,.075));background-repeat:no-repeat}}.table.b-table>tfoot>tr>[aria-sort],.table.b-table>thead>tr>[aria-sort]{cursor:pointer;background-image:none;background-repeat:no-repeat;background-size:.65em 1em}.table.b-table>tfoot>tr>[aria-sort]:not(.b-table-sort-icon-left),.table.b-table>thead>tr>[aria-sort]:not(.b-table-sort-icon-left){background-position:right calc(.75rem / 2) center;padding-right:calc(.75rem + .65em)}.table.b-table>tfoot>tr>[aria-sort].b-table-sort-icon-left,.table.b-table>thead>tr>[aria-sort].b-table-sort-icon-left{background-position:left calc(.75rem / 2) center;padding-left:calc(.75rem + .65em)}.table.b-table>tfoot>tr>[aria-sort=none],.table.b-table>thead>tr>[aria-sort=none]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='black' opacity='.3' d='M51 1l25 23 24 22H1l25-22zM51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e")}.table.b-table>tfoot>tr>[aria-sort=ascending],.table.b-table>thead>tr>[aria-sort=ascending]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='black' d='M51 1l25 23 24 22H1l25-22z'/%3e%3cpath fill='black' opacity='.3' d='M51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e")}.table.b-table>tfoot>tr>[aria-sort=descending],.table.b-table>thead>tr>[aria-sort=descending]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='black' opacity='.3' d='M51 1l25 23 24 22H1l25-22z'/%3e%3cpath fill='black' d='M51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e")}.table.b-table.table-dark>tfoot>tr>[aria-sort=none],.table.b-table.table-dark>thead>tr>[aria-sort=none],.table.b-table>.thead-dark>tr>[aria-sort=none]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='white' opacity='.3' d='M51 1l25 23 24 22H1l25-22zM51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e")}.table.b-table.table-dark>tfoot>tr>[aria-sort=ascending],.table.b-table.table-dark>thead>tr>[aria-sort=ascending],.table.b-table>.thead-dark>tr>[aria-sort=ascending]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='white' d='M51 1l25 23 24 22H1l25-22z'/%3e%3cpath fill='white' opacity='.3' d='M51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e")}.table.b-table.table-dark>tfoot>tr>[aria-sort=descending],.table.b-table.table-dark>thead>tr>[aria-sort=descending],.table.b-table>.thead-dark>tr>[aria-sort=descending]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='white' opacity='.3' d='M51 1l25 23 24 22H1l25-22z'/%3e%3cpath fill='white' d='M51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e")}.table.b-table>tfoot>tr>.table-dark[aria-sort=none],.table.b-table>thead>tr>.table-dark[aria-sort=none]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='white' opacity='.3' d='M51 1l25 23 24 22H1l25-22zM51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e")}.table.b-table>tfoot>tr>.table-dark[aria-sort=ascending],.table.b-table>thead>tr>.table-dark[aria-sort=ascending]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='white' d='M51 1l25 23 24 22H1l25-22z'/%3e%3cpath fill='white' opacity='.3' d='M51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e")}.table.b-table>tfoot>tr>.table-dark[aria-sort=descending],.table.b-table>thead>tr>.table-dark[aria-sort=descending]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='white' opacity='.3' d='M51 1l25 23 24 22H1l25-22z'/%3e%3cpath fill='white' d='M51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e")}.table.b-table.table-sm>tfoot>tr>[aria-sort]:not(.b-table-sort-icon-left),.table.b-table.table-sm>thead>tr>[aria-sort]:not(.b-table-sort-icon-left){background-position:right calc(.3rem / 2) center;padding-right:calc(.3rem + .65em)}.table.b-table.table-sm>tfoot>tr>[aria-sort].b-table-sort-icon-left,.table.b-table.table-sm>thead>tr>[aria-sort].b-table-sort-icon-left{background-position:left calc(.3rem / 2) center;padding-left:calc(.3rem + .65em)}.table.b-table.b-table-selectable:not(.b-table-selectable-no-click)>tbody>tr{cursor:pointer}.table.b-table.b-table-selectable:not(.b-table-selectable-no-click).b-table-selecting.b-table-select-range>tbody>tr{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media (max-width:575.98px){.table.b-table.b-table-stacked-sm{display:block;width:100%}.table.b-table.b-table-stacked-sm>caption,.table.b-table.b-table-stacked-sm>tbody,.table.b-table.b-table-stacked-sm>tbody>tr,.table.b-table.b-table-stacked-sm>tbody>tr>td,.table.b-table.b-table-stacked-sm>tbody>tr>th{display:block}.table.b-table.b-table-stacked-sm>tfoot,.table.b-table.b-table-stacked-sm>thead{display:none}.table.b-table.b-table-stacked-sm>tfoot>tr.b-table-bottom-row,.table.b-table.b-table-stacked-sm>tfoot>tr.b-table-top-row,.table.b-table.b-table-stacked-sm>thead>tr.b-table-bottom-row,.table.b-table.b-table-stacked-sm>thead>tr.b-table-top-row{display:none}.table.b-table.b-table-stacked-sm>caption{caption-side:top!important}.table.b-table.b-table-stacked-sm>tbody>tr>[data-label]::before{content:attr(data-label);width:40%;float:left;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal;padding:0 calc(1rem / 2) 0 0;margin:0}.table.b-table.b-table-stacked-sm>tbody>tr>[data-label]::after{display:block;clear:both;content:""}.table.b-table.b-table-stacked-sm>tbody>tr>[data-label]>div{display:inline-block;width:calc(100% - 40%);padding:0 0 0 calc(1rem / 2);margin:0}.table.b-table.b-table-stacked-sm>tbody>tr.bottom-row,.table.b-table.b-table-stacked-sm>tbody>tr.top-row{display:none}.table.b-table.b-table-stacked-sm>tbody>tr>:first-child{border-top-width:3px}.table.b-table.b-table-stacked-sm>tbody>tr>[rowspan]+td,.table.b-table.b-table-stacked-sm>tbody>tr>[rowspan]+th{border-top-width:3px}}@media (max-width:767.98px){.table.b-table.b-table-stacked-md{display:block;width:100%}.table.b-table.b-table-stacked-md>caption,.table.b-table.b-table-stacked-md>tbody,.table.b-table.b-table-stacked-md>tbody>tr,.table.b-table.b-table-stacked-md>tbody>tr>td,.table.b-table.b-table-stacked-md>tbody>tr>th{display:block}.table.b-table.b-table-stacked-md>tfoot,.table.b-table.b-table-stacked-md>thead{display:none}.table.b-table.b-table-stacked-md>tfoot>tr.b-table-bottom-row,.table.b-table.b-table-stacked-md>tfoot>tr.b-table-top-row,.table.b-table.b-table-stacked-md>thead>tr.b-table-bottom-row,.table.b-table.b-table-stacked-md>thead>tr.b-table-top-row{display:none}.table.b-table.b-table-stacked-md>caption{caption-side:top!important}.table.b-table.b-table-stacked-md>tbody>tr>[data-label]::before{content:attr(data-label);width:40%;float:left;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal;padding:0 calc(1rem / 2) 0 0;margin:0}.table.b-table.b-table-stacked-md>tbody>tr>[data-label]::after{display:block;clear:both;content:""}.table.b-table.b-table-stacked-md>tbody>tr>[data-label]>div{display:inline-block;width:calc(100% - 40%);padding:0 0 0 calc(1rem / 2);margin:0}.table.b-table.b-table-stacked-md>tbody>tr.bottom-row,.table.b-table.b-table-stacked-md>tbody>tr.top-row{display:none}.table.b-table.b-table-stacked-md>tbody>tr>:first-child{border-top-width:3px}.table.b-table.b-table-stacked-md>tbody>tr>[rowspan]+td,.table.b-table.b-table-stacked-md>tbody>tr>[rowspan]+th{border-top-width:3px}}@media (max-width:991.98px){.table.b-table.b-table-stacked-lg{display:block;width:100%}.table.b-table.b-table-stacked-lg>caption,.table.b-table.b-table-stacked-lg>tbody,.table.b-table.b-table-stacked-lg>tbody>tr,.table.b-table.b-table-stacked-lg>tbody>tr>td,.table.b-table.b-table-stacked-lg>tbody>tr>th{display:block}.table.b-table.b-table-stacked-lg>tfoot,.table.b-table.b-table-stacked-lg>thead{display:none}.table.b-table.b-table-stacked-lg>tfoot>tr.b-table-bottom-row,.table.b-table.b-table-stacked-lg>tfoot>tr.b-table-top-row,.table.b-table.b-table-stacked-lg>thead>tr.b-table-bottom-row,.table.b-table.b-table-stacked-lg>thead>tr.b-table-top-row{display:none}.table.b-table.b-table-stacked-lg>caption{caption-side:top!important}.table.b-table.b-table-stacked-lg>tbody>tr>[data-label]::before{content:attr(data-label);width:40%;float:left;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal;padding:0 calc(1rem / 2) 0 0;margin:0}.table.b-table.b-table-stacked-lg>tbody>tr>[data-label]::after{display:block;clear:both;content:""}.table.b-table.b-table-stacked-lg>tbody>tr>[data-label]>div{display:inline-block;width:calc(100% - 40%);padding:0 0 0 calc(1rem / 2);margin:0}.table.b-table.b-table-stacked-lg>tbody>tr.bottom-row,.table.b-table.b-table-stacked-lg>tbody>tr.top-row{display:none}.table.b-table.b-table-stacked-lg>tbody>tr>:first-child{border-top-width:3px}.table.b-table.b-table-stacked-lg>tbody>tr>[rowspan]+td,.table.b-table.b-table-stacked-lg>tbody>tr>[rowspan]+th{border-top-width:3px}}@media (max-width:1199.98px){.table.b-table.b-table-stacked-xl{display:block;width:100%}.table.b-table.b-table-stacked-xl>caption,.table.b-table.b-table-stacked-xl>tbody,.table.b-table.b-table-stacked-xl>tbody>tr,.table.b-table.b-table-stacked-xl>tbody>tr>td,.table.b-table.b-table-stacked-xl>tbody>tr>th{display:block}.table.b-table.b-table-stacked-xl>tfoot,.table.b-table.b-table-stacked-xl>thead{display:none}.table.b-table.b-table-stacked-xl>tfoot>tr.b-table-bottom-row,.table.b-table.b-table-stacked-xl>tfoot>tr.b-table-top-row,.table.b-table.b-table-stacked-xl>thead>tr.b-table-bottom-row,.table.b-table.b-table-stacked-xl>thead>tr.b-table-top-row{display:none}.table.b-table.b-table-stacked-xl>caption{caption-side:top!important}.table.b-table.b-table-stacked-xl>tbody>tr>[data-label]::before{content:attr(data-label);width:40%;float:left;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal;padding:0 calc(1rem / 2) 0 0;margin:0}.table.b-table.b-table-stacked-xl>tbody>tr>[data-label]::after{display:block;clear:both;content:""}.table.b-table.b-table-stacked-xl>tbody>tr>[data-label]>div{display:inline-block;width:calc(100% - 40%);padding:0 0 0 calc(1rem / 2);margin:0}.table.b-table.b-table-stacked-xl>tbody>tr.bottom-row,.table.b-table.b-table-stacked-xl>tbody>tr.top-row{display:none}.table.b-table.b-table-stacked-xl>tbody>tr>:first-child{border-top-width:3px}.table.b-table.b-table-stacked-xl>tbody>tr>[rowspan]+td,.table.b-table.b-table-stacked-xl>tbody>tr>[rowspan]+th{border-top-width:3px}}.table.b-table.b-table-stacked{display:block;width:100%}.table.b-table.b-table-stacked>caption,.table.b-table.b-table-stacked>tbody,.table.b-table.b-table-stacked>tbody>tr,.table.b-table.b-table-stacked>tbody>tr>td,.table.b-table.b-table-stacked>tbody>tr>th{display:block}.table.b-table.b-table-stacked>tfoot,.table.b-table.b-table-stacked>thead{display:none}.table.b-table.b-table-stacked>tfoot>tr.b-table-bottom-row,.table.b-table.b-table-stacked>tfoot>tr.b-table-top-row,.table.b-table.b-table-stacked>thead>tr.b-table-bottom-row,.table.b-table.b-table-stacked>thead>tr.b-table-top-row{display:none}.table.b-table.b-table-stacked>caption{caption-side:top!important}.table.b-table.b-table-stacked>tbody>tr>[data-label]::before{content:attr(data-label);width:40%;float:left;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal;padding:0 calc(1rem / 2) 0 0;margin:0}.table.b-table.b-table-stacked>tbody>tr>[data-label]::after{display:block;clear:both;content:""}.table.b-table.b-table-stacked>tbody>tr>[data-label]>div{display:inline-block;width:calc(100% - 40%);padding:0 0 0 calc(1rem / 2);margin:0}.table.b-table.b-table-stacked>tbody>tr.bottom-row,.table.b-table.b-table-stacked>tbody>tr.top-row{display:none}.table.b-table.b-table-stacked>tbody>tr>:first-child{border-top-width:3px}.table.b-table.b-table-stacked>tbody>tr>[rowspan]+td,.table.b-table.b-table-stacked>tbody>tr>[rowspan]+th{border-top-width:3px}.b-toast{display:block;position:relative;max-width:350px;-webkit-backface-visibility:hidden;backface-visibility:hidden;background-clip:padding-box;z-index:1;border-radius:.25rem}.b-toast .toast{background-color:rgba(255,255,255,.85)}.b-toast:not(:last-child){margin-bottom:.75rem}.b-toast.b-toast-solid .toast{background-color:#fff}.b-toast .toast{opacity:1}.b-toast .toast.fade:not(.show){opacity:0}.b-toast .toast .toast-body{display:block}.b-toast-primary .toast{background-color:rgba(230,242,255,.85);border-color:rgba(184,218,255,.85);color:#004085}.b-toast-primary .toast .toast-header{color:#004085;background-color:rgba(204,229,255,.85);border-bottom-color:rgba(184,218,255,.85)}.b-toast-primary.b-toast-solid .toast{background-color:#e6f2ff}.b-toast-secondary .toast{background-color:rgba(239,240,241,.85);border-color:rgba(214,216,219,.85);color:#383d41}.b-toast-secondary .toast .toast-header{color:#383d41;background-color:rgba(226,227,229,.85);border-bottom-color:rgba(214,216,219,.85)}.b-toast-secondary.b-toast-solid .toast{background-color:#eff0f1}.b-toast-success .toast{background-color:rgba(230,245,233,.85);border-color:rgba(195,230,203,.85);color:#155724}.b-toast-success .toast .toast-header{color:#155724;background-color:rgba(212,237,218,.85);border-bottom-color:rgba(195,230,203,.85)}.b-toast-success.b-toast-solid .toast{background-color:#e6f5e9}.b-toast-info .toast{background-color:rgba(229,244,247,.85);border-color:rgba(190,229,235,.85);color:#0c5460}.b-toast-info .toast .toast-header{color:#0c5460;background-color:rgba(209,236,241,.85);border-bottom-color:rgba(190,229,235,.85)}.b-toast-info.b-toast-solid .toast{background-color:#e5f4f7}.b-toast-warning .toast{background-color:rgba(255,249,231,.85);border-color:rgba(255,238,186,.85);color:#856404}.b-toast-warning .toast .toast-header{color:#856404;background-color:rgba(255,243,205,.85);border-bottom-color:rgba(255,238,186,.85)}.b-toast-warning.b-toast-solid .toast{background-color:#fff9e7}.b-toast-danger .toast{background-color:rgba(252,237,238,.85);border-color:rgba(245,198,203,.85);color:#721c24}.b-toast-danger .toast .toast-header{color:#721c24;background-color:rgba(248,215,218,.85);border-bottom-color:rgba(245,198,203,.85)}.b-toast-danger.b-toast-solid .toast{background-color:#fcedee}.b-toast-light .toast{background-color:rgba(255,255,255,.85);border-color:rgba(253,253,254,.85);color:#818182}.b-toast-light .toast .toast-header{color:#818182;background-color:rgba(254,254,254,.85);border-bottom-color:rgba(253,253,254,.85)}.b-toast-light.b-toast-solid .toast{background-color:#fff}.b-toast-dark .toast{background-color:rgba(227,229,229,.85);border-color:rgba(198,200,202,.85);color:#1b1e21}.b-toast-dark .toast .toast-header{color:#1b1e21;background-color:rgba(214,216,217,.85);border-bottom-color:rgba(198,200,202,.85)}.b-toast-dark.b-toast-solid .toast{background-color:#e3e5e5}.b-toaster{z-index:1100}.b-toaster .b-toaster-slot{position:relative;display:block}.b-toaster .b-toaster-slot:empty{display:none!important}.b-toaster.b-toaster-bottom-center,.b-toaster.b-toaster-bottom-full,.b-toaster.b-toaster-bottom-left,.b-toaster.b-toaster-bottom-right,.b-toaster.b-toaster-top-center,.b-toaster.b-toaster-top-full,.b-toaster.b-toaster-top-left,.b-toaster.b-toaster-top-right{position:fixed;left:.5rem;right:.5rem;margin:0;padding:0;height:0;overflow:visible}.b-toaster.b-toaster-bottom-center .b-toaster-slot,.b-toaster.b-toaster-bottom-full .b-toaster-slot,.b-toaster.b-toaster-bottom-left .b-toaster-slot,.b-toaster.b-toaster-bottom-right .b-toaster-slot,.b-toaster.b-toaster-top-center .b-toaster-slot,.b-toaster.b-toaster-top-full .b-toaster-slot,.b-toaster.b-toaster-top-left .b-toaster-slot,.b-toaster.b-toaster-top-right .b-toaster-slot{position:absolute;max-width:350px;width:100%;left:0;right:0;padding:0;margin:0}.b-toaster.b-toaster-bottom-full .b-toaster-slot,.b-toaster.b-toaster-top-full .b-toaster-slot{width:100%;max-width:100%}.b-toaster.b-toaster-bottom-full .b-toaster-slot .b-toast,.b-toaster.b-toaster-bottom-full .b-toaster-slot .toast,.b-toaster.b-toaster-top-full .b-toaster-slot .b-toast,.b-toaster.b-toaster-top-full .b-toaster-slot .toast{width:100%;max-width:100%}.b-toaster.b-toaster-top-center,.b-toaster.b-toaster-top-full,.b-toaster.b-toaster-top-left,.b-toaster.b-toaster-top-right{top:0}.b-toaster.b-toaster-top-center .b-toaster-slot,.b-toaster.b-toaster-top-full .b-toaster-slot,.b-toaster.b-toaster-top-left .b-toaster-slot,.b-toaster.b-toaster-top-right .b-toaster-slot{top:.5rem}.b-toaster.b-toaster-bottom-center,.b-toaster.b-toaster-bottom-full,.b-toaster.b-toaster-bottom-left,.b-toaster.b-toaster-bottom-right{bottom:0}.b-toaster.b-toaster-bottom-center .b-toaster-slot,.b-toaster.b-toaster-bottom-full .b-toaster-slot,.b-toaster.b-toaster-bottom-left .b-toaster-slot,.b-toaster.b-toaster-bottom-right .b-toaster-slot{bottom:.5rem}.b-toaster.b-toaster-bottom-center .b-toaster-slot,.b-toaster.b-toaster-bottom-right .b-toaster-slot,.b-toaster.b-toaster-top-center .b-toaster-slot,.b-toaster.b-toaster-top-right .b-toaster-slot{margin-left:auto}.b-toaster.b-toaster-bottom-center .b-toaster-slot,.b-toaster.b-toaster-bottom-left .b-toaster-slot,.b-toaster.b-toaster-top-center .b-toaster-slot,.b-toaster.b-toaster-top-left .b-toaster-slot{margin-right:auto}.b-toaster.b-toaster-bottom-left .b-toast.b-toaster-enter-active,.b-toaster.b-toaster-bottom-left .b-toast.b-toaster-leave-active,.b-toaster.b-toaster-bottom-left .b-toast.b-toaster-move,.b-toaster.b-toaster-bottom-right .b-toast.b-toaster-enter-active,.b-toaster.b-toaster-bottom-right .b-toast.b-toaster-leave-active,.b-toaster.b-toaster-bottom-right .b-toast.b-toaster-move,.b-toaster.b-toaster-top-left .b-toast.b-toaster-enter-active,.b-toaster.b-toaster-top-left .b-toast.b-toaster-leave-active,.b-toaster.b-toaster-top-left .b-toast.b-toaster-move,.b-toaster.b-toaster-top-right .b-toast.b-toaster-enter-active,.b-toaster.b-toaster-top-right .b-toast.b-toaster-leave-active,.b-toaster.b-toaster-top-right .b-toast.b-toaster-move{transition:-webkit-transform 175ms;transition:transform 175ms;transition:transform 175ms,-webkit-transform 175ms}.b-toaster.b-toaster-bottom-left .b-toast.b-toaster-enter-active .toast.fade,.b-toaster.b-toaster-bottom-left .b-toast.b-toaster-enter-to .toast.fade,.b-toaster.b-toaster-bottom-right .b-toast.b-toaster-enter-active .toast.fade,.b-toaster.b-toaster-bottom-right .b-toast.b-toaster-enter-to .toast.fade,.b-toaster.b-toaster-top-left .b-toast.b-toaster-enter-active .toast.fade,.b-toaster.b-toaster-top-left .b-toast.b-toaster-enter-to .toast.fade,.b-toaster.b-toaster-top-right .b-toast.b-toaster-enter-active .toast.fade,.b-toaster.b-toaster-top-right .b-toast.b-toaster-enter-to .toast.fade{transition-delay:175ms}.b-toaster.b-toaster-bottom-left .b-toast.b-toaster-leave-active,.b-toaster.b-toaster-bottom-right .b-toast.b-toaster-leave-active,.b-toaster.b-toaster-top-left .b-toast.b-toaster-leave-active,.b-toaster.b-toaster-top-right .b-toast.b-toaster-leave-active{position:absolute;transition-delay:175ms}.b-toaster.b-toaster-bottom-left .b-toast.b-toaster-leave-active .toast.fade,.b-toaster.b-toaster-bottom-right .b-toast.b-toaster-leave-active .toast.fade,.b-toaster.b-toaster-top-left .b-toast.b-toaster-leave-active .toast.fade,.b-toaster.b-toaster-top-right .b-toast.b-toaster-leave-active .toast.fade{transition-delay:0s}.tooltip.b-tooltip{display:block;opacity:.9;outline:0}.tooltip.b-tooltip.fade:not(.show){opacity:0}.tooltip.b-tooltip.show{opacity:.9}.tooltip.b-tooltip.noninteractive{pointer-events:none}.tooltip.b-tooltip .arrow{margin:0 .25rem}.tooltip.b-tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.bs-tooltip-left .arrow,.tooltip.b-tooltip.bs-tooltip-right .arrow{margin:.25rem 0}.tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^=top] .arrow::before,.tooltip.b-tooltip-primary.bs-tooltip-top .arrow::before{border-top-color:#007bff}.tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^=right] .arrow::before,.tooltip.b-tooltip-primary.bs-tooltip-right .arrow::before{border-right-color:#007bff}.tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.tooltip.b-tooltip-primary.bs-tooltip-bottom .arrow::before{border-bottom-color:#007bff}.tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^=left] .arrow::before,.tooltip.b-tooltip-primary.bs-tooltip-left .arrow::before{border-left-color:#007bff}.tooltip.b-tooltip-primary .tooltip-inner{color:#fff;background-color:#007bff}.tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^=top] .arrow::before,.tooltip.b-tooltip-secondary.bs-tooltip-top .arrow::before{border-top-color:#6c757d}.tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^=right] .arrow::before,.tooltip.b-tooltip-secondary.bs-tooltip-right .arrow::before{border-right-color:#6c757d}.tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.tooltip.b-tooltip-secondary.bs-tooltip-bottom .arrow::before{border-bottom-color:#6c757d}.tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^=left] .arrow::before,.tooltip.b-tooltip-secondary.bs-tooltip-left .arrow::before{border-left-color:#6c757d}.tooltip.b-tooltip-secondary .tooltip-inner{color:#fff;background-color:#6c757d}.tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^=top] .arrow::before,.tooltip.b-tooltip-success.bs-tooltip-top .arrow::before{border-top-color:#28a745}.tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^=right] .arrow::before,.tooltip.b-tooltip-success.bs-tooltip-right .arrow::before{border-right-color:#28a745}.tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.tooltip.b-tooltip-success.bs-tooltip-bottom .arrow::before{border-bottom-color:#28a745}.tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^=left] .arrow::before,.tooltip.b-tooltip-success.bs-tooltip-left .arrow::before{border-left-color:#28a745}.tooltip.b-tooltip-success .tooltip-inner{color:#fff;background-color:#28a745}.tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^=top] .arrow::before,.tooltip.b-tooltip-info.bs-tooltip-top .arrow::before{border-top-color:#17a2b8}.tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^=right] .arrow::before,.tooltip.b-tooltip-info.bs-tooltip-right .arrow::before{border-right-color:#17a2b8}.tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.tooltip.b-tooltip-info.bs-tooltip-bottom .arrow::before{border-bottom-color:#17a2b8}.tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^=left] .arrow::before,.tooltip.b-tooltip-info.bs-tooltip-left .arrow::before{border-left-color:#17a2b8}.tooltip.b-tooltip-info .tooltip-inner{color:#fff;background-color:#17a2b8}.tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^=top] .arrow::before,.tooltip.b-tooltip-warning.bs-tooltip-top .arrow::before{border-top-color:#ffc107}.tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^=right] .arrow::before,.tooltip.b-tooltip-warning.bs-tooltip-right .arrow::before{border-right-color:#ffc107}.tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.tooltip.b-tooltip-warning.bs-tooltip-bottom .arrow::before{border-bottom-color:#ffc107}.tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^=left] .arrow::before,.tooltip.b-tooltip-warning.bs-tooltip-left .arrow::before{border-left-color:#ffc107}.tooltip.b-tooltip-warning .tooltip-inner{color:#212529;background-color:#ffc107}.tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^=top] .arrow::before,.tooltip.b-tooltip-danger.bs-tooltip-top .arrow::before{border-top-color:#dc3545}.tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^=right] .arrow::before,.tooltip.b-tooltip-danger.bs-tooltip-right .arrow::before{border-right-color:#dc3545}.tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.tooltip.b-tooltip-danger.bs-tooltip-bottom .arrow::before{border-bottom-color:#dc3545}.tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^=left] .arrow::before,.tooltip.b-tooltip-danger.bs-tooltip-left .arrow::before{border-left-color:#dc3545}.tooltip.b-tooltip-danger .tooltip-inner{color:#fff;background-color:#dc3545}.tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^=top] .arrow::before,.tooltip.b-tooltip-light.bs-tooltip-top .arrow::before{border-top-color:#f8f9fa}.tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^=right] .arrow::before,.tooltip.b-tooltip-light.bs-tooltip-right .arrow::before{border-right-color:#f8f9fa}.tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.tooltip.b-tooltip-light.bs-tooltip-bottom .arrow::before{border-bottom-color:#f8f9fa}.tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^=left] .arrow::before,.tooltip.b-tooltip-light.bs-tooltip-left .arrow::before{border-left-color:#f8f9fa}.tooltip.b-tooltip-light .tooltip-inner{color:#212529;background-color:#f8f9fa}.tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^=top] .arrow::before,.tooltip.b-tooltip-dark.bs-tooltip-top .arrow::before{border-top-color:#343a40}.tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^=right] .arrow::before,.tooltip.b-tooltip-dark.bs-tooltip-right .arrow::before{border-right-color:#343a40}.tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.tooltip.b-tooltip-dark.bs-tooltip-bottom .arrow::before{border-bottom-color:#343a40}.tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^=left] .arrow::before,.tooltip.b-tooltip-dark.bs-tooltip-left .arrow::before{border-left-color:#343a40}.tooltip.b-tooltip-dark .tooltip-inner{color:#fff;background-color:#343a40}.b-icon.bi{display:inline-block;overflow:visible;vertical-align:-.15em}.btn .b-icon.bi,.dropdown-item .b-icon.bi,.dropdown-toggle .b-icon.bi,.input-group-text .b-icon.bi,.nav-link .b-icon.bi{font-size:125%;vertical-align:text-bottom} +/*# sourceMappingURL=bootstrap-vue.min.css.map */ \ No newline at end of file diff --git a/asset/css/markbind.css b/asset/css/markbind.css index b38ecfa195..e21c7c4808 100644 --- a/asset/css/markbind.css +++ b/asset/css/markbind.css @@ -25,6 +25,40 @@ pre > code.hljs { counter-reset: line; } +pre > code.hljs[heading] { + border-top-right-radius: 0; +} + +.code-block { + position: relative; +} + +.code-block-heading { + background-color: #f2f2ff; + border-radius: 6px 6px 0 0; + color: #8787a5; + float: right; + font-size: 85%; + line-height: 1; + max-width: 85%; + overflow-wrap: break-word; + padding: 0.25em 0.4em; + text-align: right; +} + +.inline-markdown-heading { + line-height: 1.5; +} + +.code-block-content { + clear: both; + display: block; +} + +code > span.highlighted { + background: lavender; +} + kbd { background-color: #fafbfc; border: 1px solid #c6cbd1; @@ -94,7 +128,7 @@ code.hljs:hover { header.header-fixed { position: fixed; width: 100%; - z-index: 9999; + z-index: 1000; } /* #app is treated as the main container */ @@ -112,10 +146,10 @@ header.header-fixed { #content-wrapper { flex: 1; margin: 0 auto; + min-width: 0; max-width: 1000px; padding: 0 20px; transition: 0.4s; - width: 100%; -webkit-transition: 0.4s; } @@ -340,3 +374,85 @@ li.footnote-item:target { top: 0; width: 3em; } + +/* hide popover, modal, tooltip content */ +[data-mb-html-for] { + display: none; +} + +/* styles for triggers */ +.trigger { + border-bottom: 1px dashed currentColor; +} + +.trigger-click { + cursor: pointer; + border-bottom: 1px dashed currentColor; +} + +.modal.mb-zoom { + -webkit-transform: scale(0.1); + -moz-transform: scale(0.1); + -ms-transform: scale(0.1); + transform: scale(0.1); + opacity: 0; + -webkit-transition: all 0.3s; + -moz-transition: all 0.3s; + transition: all 0.3s; +} + +.modal.mb-zoom.show { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); + opacity: 1; +} + +/* "Copy" code block button */ +pre { + position: relative; +} + +.copy-btn { + background-color: #b4b4b9; + border-radius: 0.25rem; + color: #f8f8ff; + display: inline-block; + font-size: 75%; + line-height: 1; + padding: 0.25em 0.4em; + position: absolute; + right: 0.5em; + text-align: center; + top: 0.4em; + white-space: nowrap; +} + +.copy-btn:hover { + color: #555; +} + +.copy-btn-body { + align-items: center; + display: flex; +} + +.copy-btn svg { + fill: currentColor; + margin-right: 0.4em; +} + +.copy-btn-label { + font-size: 11px; +} + +.copy-btn:focus { + outline: none; +} + +/* Octicon sizing */ +.octicon { + height: 1em; + width: 1em; +} diff --git a/asset/js/bootstrap-vue.min.js b/asset/js/bootstrap-vue.min.js index 122158c3bd..7e6534d343 100644 --- a/asset/js/bootstrap-vue.min.js +++ b/asset/js/bootstrap-vue.min.js @@ -1 +1,11 @@ -(function(t,e){typeof exports==="object"&&typeof module!=="undefined"?module.exports=e():typeof define==="function"&&define.amd?define(e):t.bootstrapVue=e()})(this,function(){"use strict";var t=Object.assign||function(t){for(var e,i=1,n=arguments.length;i0?1:-1)*Math.floor(Math.abs(i))};var n=Math.pow(2,53)-1;var r=function t(e){return Math.min(Math.max(i(e),0),n)};return function t(i){var n=this;var a=Object(i);if(i==null){throw new TypeError("Array.from requires an array-like object - not null or undefined")}var s=arguments.length>1?arguments[1]:void undefined;var o=void 0;if(typeof s!=="undefined"){if(!e(s)){throw new TypeError("Array.from: when provided, the second argument must be a function")}if(arguments.length>2){o=arguments[2]}}var l=r(a.length);var u=e(n)?Object(new n(l)):new Array(l);var f=0;var d=void 0;while(f>>0;if(typeof e!=="function"){throw new TypeError("predicate must be a function")}var r=arguments[1];var a=0;while(a2&&arguments[2]!==undefined?arguments[2]:E;return(C(t)?t.slice():S(t)).reduce(function(t,n){return t[i(n)]=e[n],t},{})}function P(){return{href:{type:String,default:null},rel:{type:String,default:null},target:{type:String,default:"_self"},active:{type:Boolean,default:false},activeClass:{type:String,default:"active"},append:{type:Boolean,default:false},disabled:{type:Boolean,default:false},event:{type:[String,Array],default:"click"},exact:{type:Boolean,default:false},exactActiveClass:{type:String,default:"active"},replace:{type:Boolean,default:false},routerTag:{type:String,default:"a"},to:{type:[String,Object],default:null}}}function I(t){var e=P();t=x(t);return S(e).reduce(function(i,n){if(B(t,n)){i[n]=e[n]}return i},{})}function L(t,e){return Boolean(e.$router)&&t.to&&!t.disabled?"router-link":"a"}function F(t,e){var n=t.disabled,r=t.href,a=t.to;if(e==="router-link")return void 0;if(r)return r;if(a){if(typeof a==="string")return a;if((typeof a==="undefined"?"undefined":i(a))==="object"&&typeof a.path==="string")return a.path}return"#"}function N(t){var e=t.target,i=t.rel;if(e==="_blank"&&i===null){return"noopener"}return i||null}function A(t){var e=t.disabled,i=t.tag,n=t.href,r=t.suppliedHandler,a=t.parent;var s=i==="router-link";return function t(i){if(e&&i instanceof Event){i.stopPropagation();i.stopImmediatePropagation()}else{a.$root.$emit("clicked::link",i);if(s&&i.target.__vue__){i.target.__vue__.$emit("click",i)}if(typeof r==="function"){r.apply(undefined,arguments)}}if(!s&&n==="#"||e){i.preventDefault()}}}var D={functional:true,props:P(),render:function t(i,n){var r=n.props,a=n.data,s=n.parent,o=n.children;var l=L(r,s);var u=N(r);var f=F(r,l);var d=l==="router-link"?"nativeOn":"on";var c=(a[d]||{}).click;var h={click:A({tag:l,href:f,disabled:r.disabled,suppliedHandler:c,parent:s})};var p=e(a,{class:[r.active?r.exact?r.exactActiveClass:r.activeClass:null,{disabled:r.disabled}],attrs:{rel:u,href:f,target:r.target,tabindex:r.disabled?"-1":a.attrs?a.attrs.tabindex:null,"aria-disabled":l==="a"&&r.disabled?"true":null},props:y(r,{tag:r.routerTag})});if(!p.attrs.href){delete p.attrs.href}p[d]=y(p[d]||{},h);return i(l,p,o)}};var V=P();delete V.href.default;delete V.to.default;var M=y(V,{tag:{type:String,default:"span"},variant:{type:String,default:"secondary"},pill:{type:Boolean,default:false}});var j={functional:true,props:M,render:function t(i,n){var r=n.props,a=n.data,s=n.children;var o=!r.href&&!r.to?r.tag:D;var l={staticClass:"badge",class:[!r.variant?"badge-secondary":"badge-"+r.variant,{"badge-pill":Boolean(r.pill),active:r.active,disabled:r.disabled}],props:O(V,r)};return i(o,e(a,l),s)}};var R={bBadge:j};var H={install:function t(e){h(e,R)}};g(H);var z=y(P(),{text:{type:String,default:null},active:{type:Boolean,default:false},href:{type:String,default:"#"},ariaCurrent:{type:String,default:"location"}});var W={functional:true,props:z,render:function t(i,n){var r=n.props,a=n.data,s=n.children;var o=r.active?"span":D;var l={props:O(z,r)};if(r.active){l.attrs={"aria-current":r.ariaCurrent}}else{l.attrs={href:r.href}}return i(o,e(a,l),s||r.text)}};var G=y({},z,{text:{type:String,default:null},href:{type:String,default:null}});var U={functional:true,props:G,render:function t(i,n){var r=n.props,a=n.data,s=n.children;return i("li",e(a,{staticClass:"breadcrumb-item",class:{active:r.active},attrs:{role:"presentation"}}),[i(W,{props:r},s)])}};var q={items:{type:Array,default:null}};var K={functional:true,props:q,render:function t(n,r){var a=r.props,s=r.data,o=r.children;var l=o;if(C(a.items)){var u=false;l=a.items.map(function(t,e){if((typeof t==="undefined"?"undefined":i(t))!=="object"){t={text:t}}var r=t.active;if(r){u=true}if(!r&&!u){r=e+1===a.items.length}return n(U,{props:y({},t,{active:r})})})}return n("ol",e(s,{staticClass:"breadcrumb"}),l)}};var Y={bBreadcrumb:K,bBreadcrumbItem:U,bBreadcrumbLink:W};var Z={install:function t(e){h(e,Y)}};g(Z);var X=function t(e){return e&&e.nodeType===Node.ELEMENT_NODE};var J=function t(e){return X(e)&&document.body.contains(e)&&e.getBoundingClientRect().height>0&&e.getBoundingClientRect().width>0};var Q=function t(e){return!X(e)||e.disabled||e.classList.contains("disabled")||Boolean(e.getAttribute("disabled"))};var tt=function t(e){return X(e)&&e.offsetHeight};var et=function t(e,i){if(!X(i)){i=document}return $(i.querySelectorAll(e))};var it=function t(e,i){if(!X(i)){i=document}return i.querySelector(e)||null};var nt=function t(e,i){if(!X(e)){return false}var n=Element.prototype;var r=n.matches||n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector||function(t){var e=this;var i=et(t,e.document||e.ownerDocument);var n=i.length;while(--n>=0&&i.item(n)!==e){}return n>-1};return r.call(e,i)};var rt=function t(e,i){if(!X(i)){return null}var n=Element.prototype.closest||function(t){var e=this;if(!document.documentElement.contains(e)){return null}do{if(nt(e,t)){return e}e=e.parentElement}while(e!==null);return null};var r=n.call(i,e);return r===i?null:r};var at=function t(e){return document.getElementById(/^#/.test(e)?e.slice(1):e)||null};var st=function t(e,i){if(i&&X(e)){e.classList.add(i)}};var ot=function t(e,i){if(i&&X(e)){e.classList.remove(i)}};var lt=function t(e,i){if(i&&X(e)){return e.classList.contains(i)}return false};var ut=function t(e,i,n){if(i&&X(e)){e.setAttribute(i,n)}};var ft=function t(e,i){if(i&&X(e)){e.removeAttribute(i)}};var dt=function t(e,i){if(i&&X(e)){return e.getAttribute(i)}return null};var ct=function t(e,i){if(i&&X(e)){return e.hasAttribute(i)}return null};var ht=function t(e){return X(e)?e.getBoundingClientRect():null};var pt=function t(e){return X(e)?window.getComputedStyle(e):{}};var vt=function t(e){if(X(e)){if(!e.getClientRects().length){return{top:0,left:0}}var i=ht(e);var n=e.ownerDocument.defaultView;return{top:i.top+n.pageYOffset,left:i.left+n.pageXOffset}}};var gt=function t(e){if(!X(e)){return}var i={top:0,left:0};var n=void 0;var r=void 0;if(pt(e).position==="fixed"){n=ht(e)}else{n=vt(e);var a=e.ownerDocument;r=e.offsetParent||a.documentElement;while(r&&(r===a.body||r===a.documentElement)&&pt(r).position==="static"){r=r.parentNode}if(r&&r!==e&&r.nodeType===Node.ELEMENT_NODE){i=vt(r);i.top+=parseFloat(pt(r).borderTopWidth);i.left+=parseFloat(pt(r).borderLeftWidth)}}return{top:n.top-i.top-parseFloat(pt(e).marginTop),left:n.left-i.left-parseFloat(pt(e).marginLeft)}};var mt=function t(e,i,n){if(e&&e.addEventListener){e.addEventListener(i,n)}};var bt=function t(e,i,n){if(e&&e.removeEventListener){e.removeEventListener(i,n)}};var yt={block:{type:Boolean,default:false},disabled:{type:Boolean,default:false},size:{type:String,default:null},variant:{type:String,default:null},type:{type:String,default:"button"},pressed:{type:Boolean,default:null}};var St=P();delete St.href.default;delete St.to.default;var wt=S(St);var kt=y(St,yt);function Tt(t){if(t.type==="focusin"){st(t.target,"focus")}else if(t.type==="focusout"){ot(t.target,"focus")}}var _t={functional:true,props:kt,render:function t(i,n){var r;var s=n.props,o=n.data,l=n.listeners,u=n.children;var f=Boolean(s.href||s.to);var d=typeof s.pressed==="boolean";var c={click:function t(e){if(s.disabled&&e instanceof Event){e.stopPropagation();e.preventDefault()}else if(d){x(l["update:pressed"]).forEach(function(t){if(typeof t==="function"){t(!s.pressed)}})}}};if(d){c.focusin=Tt;c.focusout=Tt}var h={staticClass:"btn",class:[s.variant?"btn-"+s.variant:"btn-secondary",(r={},a(r,"btn-"+s.size,Boolean(s.size)),a(r,"btn-block",s.block),a(r,"disabled",s.disabled),a(r,"active",s.pressed),r)],props:f?O(wt,s):null,attrs:{type:f?null:s.type,disabled:f?null:s.disabled,"data-toggle":d?"button":null,"aria-pressed":d?String(s.pressed):null,tabindex:s.disabled&&f?"-1":o.attrs?o.attrs["tabindex"]:null},on:c};return i(f?D:"button",e(o,h),u)}};var $t={bButton:_t,bBtn:_t,bButtonClose:f,bBtnClose:f};var Ct={install:function t(e){h(e,$t)}};g(Ct);var Bt={vertical:{type:Boolean,default:false},size:{type:String,default:null,validator:function t(e){return B(["sm","","lg"],e)}},tag:{type:String,default:"div"},ariaRole:{type:String,default:"group"}};var xt={functional:true,props:Bt,render:function t(i,n){var r=n.props,s=n.data,o=n.children;return i(r.tag,e(s,{class:a({"btn-group":!r.vertical,"btn-group-vertical":r.vertical},"btn-group-"+r.size,Boolean(r.size)),attrs:{role:r.ariaRole}}),o)}};var Et={bButtonGroup:xt,bBtnGroup:xt};var Ot={install:function t(e){h(e,Et)}};g(Ot);var Pt={SPACE:32,ENTER:13,ESC:27,LEFT:37,UP:38,RIGHT:39,DOWN:40,PAGEUP:33,PAGEDOWN:34,HOME:36,END:35};var It=[".btn:not(.disabled):not([disabled]):not(.dropdown-item)",".form-control:not(.disabled):not([disabled])","select:not(.disabled):not([disabled])",'input[type="checkbox"]:not(.disabled)','input[type="radio"]:not(.disabled)'].join(",");var Lt={render:function t(e){return e("div",{class:this.classObject,attrs:{role:"toolbar",tabindex:this.keyNav?"0":null},on:{focusin:this.onFocusin,keydown:this.onKeydown}},[this.$slots.default])},computed:{classObject:function t(){return["btn-toolbar",this.justify&&!this.vertical?"justify-content-between":""]}},props:{justify:{type:Boolean,default:false},keyNav:{type:Boolean,default:false}},methods:{onFocusin:function t(e){if(e.target===this.$el){e.preventDefault();e.stopPropagation();this.focusFirst(e)}},onKeydown:function t(e){if(!this.keyNav){return}var i=e.keyCode;var n=e.shiftKey;if(i===Pt.UP||i===Pt.LEFT){e.preventDefault();e.stopPropagation();if(n){this.focusFirst(e)}else{this.focusNext(e,true)}}else if(i===Pt.DOWN||i===Pt.RIGHT){e.preventDefault();e.stopPropagation();if(n){this.focusLast(e)}else{this.focusNext(e,false)}}},setItemFocus:function t(e){this.$nextTick(function(){e.focus()})},focusNext:function t(e,i){var n=this.getItems();if(n.length<1){return}var r=n.indexOf(e.target);if(i&&r>0){r--}else if(!i&&r0){this.setItemFocus(i[0])}},focusLast:function t(e){var i=this.getItems();if(i.length>0){this.setItemFocus([i.length-1])}},getItems:function t(){var e=et(It,this.$el);e.forEach(function(t){t.tabIndex=-1});return e.filter(function(t){return J(t)})}},mounted:function t(){if(this.keyNav){this.getItems()}}};var Ft={bButtonToolbar:Lt,bBtnToolbar:Lt};var Nt={install:function t(e){h(e,Ft)}};g(Nt);var At={tag:{type:String,default:"div"}};var Dt={props:At,functional:true,render:function t(i,n){var r=n.props,a=n.data,s=n.children;return i(r.tag,e(a,{staticClass:"input-group-text"}),s)}};var Vt=function t(e){return{id:{type:String,default:null},tag:{type:String,default:"div"},append:{type:Boolean,default:e},isText:{type:Boolean,default:false}}};var Mt={functional:true,props:Vt(false),render:function t(i,n){var r=n.props,a=n.data,s=n.children;return i(r.tag,e(a,{staticClass:"input-group-"+(r.append?"append":"prepend"),attrs:{id:r.id}}),r.isText?[i(Dt,s)]:s)}};var jt={functional:true,props:Vt(false),render:Mt.render};var Rt={functional:true,props:Vt(true),render:Mt.render};var Ht={id:{type:String,default:null},size:{type:String,default:null},prepend:{type:String,default:null},append:{type:String,default:null},tag:{type:String,default:"div"}};var zt={functional:true,props:Ht,render:function t(i,n){var r=n.props,s=n.data,o=n.slots;var l=o();var u=[];if(r.prepend){u.push(i(jt,[i(Dt,{domProps:{innerHTML:r.prepend}})]))}if(l.prepend){u.push(i(jt,l.prepend))}u.push(l.default);if(r.append){u.push(i(Rt,[i(Dt,{domProps:{innerHTML:r.append}})]))}if(l.append){u.push(i(Rt,l.append))}return i(r.tag,e(s,{staticClass:"input-group",class:a({},"input-group-"+r.size,Boolean(r.size)),attrs:{id:r.id||null,role:"group"}}),u)}};var Wt={bInputGroup:zt,bInputGroupAddon:Mt,bInputGroupPrepend:jt,bInputGroupAppend:Rt,bInputGroupText:Dt};var Gt={install:function t(e){h(e,Wt)}};g(Gt);function Ut(t){if(typeof t!=="string"){t=String(t)}return t.charAt(0).toUpperCase()+t.slice(1)}function qt(t,e){return t+Ut(e)}function Kt(t){if(typeof t!=="string"){t=String(t)}return t.charAt(0).toLowerCase()+t.slice(1)}function Yt(t,e){return Kt(e.replace(t,""))}function Zt(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:E;if(C(t)){return t.map(e)}var n={};for(var r in t){if(t.hasOwnProperty(r)){if((typeof r==="undefined"?"undefined":i(r))==="object"){n[e(r)]=y({},t[r])}else{n[e(r)]=t[r]}}}return n}var Xt={props:{tag:{type:String,default:"div"},bgVariant:{type:String,default:null},borderVariant:{type:String,default:null},textVariant:{type:String,default:null}}};var Jt=y({},Zt(Xt.props,qt.bind(null,"body")),{bodyClass:{type:[String,Object,Array],default:null},title:{type:String,default:null},titleTag:{type:String,default:"h4"},subTitle:{type:String,default:null},subTitleTag:{type:String,default:"h6"},overlay:{type:Boolean,default:false}});var Qt={functional:true,props:Jt,render:function t(i,n){var r;var s=n.props,o=n.data,l=n.slots;var u=[];if(s.title){u.push(i(s.titleTag,{staticClass:"card-title",domProps:{innerHTML:s.title}}))}if(s.subTitle){u.push(i(s.subTitleTag,{staticClass:"card-subtitle mb-2 text-muted",domProps:{innerHTML:s.subTitle}}))}u.push(l().default);return i(s.bodyTag,e(o,{staticClass:"card-body",class:[(r={"card-img-overlay":s.overlay},a(r,"bg-"+s.bodyBgVariant,Boolean(s.bodyBgVariant)),a(r,"border-"+s.bodyBorderVariant,Boolean(s.bodyBorderVariant)),a(r,"text-"+s.bodyTextVariant,Boolean(s.bodyTextVariant)),r),s.bodyClass||{}]}),u)}};var te=y({},Zt(Xt.props,qt.bind(null,"header")),{header:{type:String,default:null},headerClass:{type:[String,Object,Array],default:null}});var ee={functional:true,props:te,render:function t(i,n){var r;var s=n.props,o=n.data,l=n.slots,u=n.children;return i(s.headerTag,e(o,{staticClass:"card-header",class:[s.headerClass,(r={},a(r,"bg-"+s.headerBgVariant,Boolean(s.headerBgVariant)),a(r,"border-"+s.headerBorderVariant,Boolean(s.headerBorderVariant)),a(r,"text-"+s.headerTextVariant,Boolean(s.headerTextVariant)),r)]}),u||[i("div",{domProps:{innerHTML:s.header}})])}};var ie=y({},Zt(Xt.props,qt.bind(null,"footer")),{footer:{type:String,default:null},footerClass:{type:[String,Object,Array],default:null}});var ne={functional:true,props:ie,render:function t(i,n){var r;var s=n.props,o=n.data,l=n.slots,u=n.children;return i(s.footerTag,e(o,{staticClass:"card-footer",class:[s.footerClass,(r={},a(r,"bg-"+s.footerBgVariant,Boolean(s.footerBgVariant)),a(r,"border-"+s.footerBorderVariant,Boolean(s.footerBorderVariant)),a(r,"text-"+s.footerTextVariant,Boolean(s.footerTextVariant)),r)]}),u||[i("div",{domProps:{innerHTML:s.footer}})])}};var re={src:{type:String,default:null,required:true},alt:{type:String,default:null},top:{type:Boolean,default:false},bottom:{type:Boolean,default:false},fluid:{type:Boolean,default:false}};var ae={functional:true,props:re,render:function t(i,n){var r=n.props,a=n.data,s=n.slots;var o="card-img";if(r.top){o+="-top"}else if(r.bottom){o+="-bottom"}return i("img",e(a,{staticClass:o,class:{"img-fluid":r.fluid},attrs:{src:r.src,alt:r.alt}}))}};var se=Zt(re,qt.bind(null,"img"));se.imgSrc.required=false;var oe=y({},Jt,te,ie,se,Zt(Xt.props),{align:{type:String,default:null},noBody:{type:Boolean,default:false}});var le={functional:true,props:oe,render:function t(i,n){var r;var s=n.props,o=n.data,l=n.slots,u=n.children;var f=[];var d=l();var c=s.imgSrc?i(ae,{props:O(se,s,Yt.bind(null,"img"))}):null;if(c){if(s.imgTop||!s.imgBottom){f.push(c)}}if(s.header||d.header){f.push(i(ee,{props:O(te,s)},d.header))}if(s.noBody){f.push(d.default)}else{f.push(i(Qt,{props:O(Jt,s)},d.default))}if(s.footer||d.footer){f.push(i(ne,{props:O(ie,s)},d.footer))}if(c&&s.imgBottom){f.push(c)}return i(s.tag,e(o,{staticClass:"card",class:(r={},a(r,"text-"+s.align,Boolean(s.align)),a(r,"bg-"+s.bgVariant,Boolean(s.bgVariant)),a(r,"border-"+s.borderVariant,Boolean(s.borderVariant)),a(r,"text-"+s.textVariant,Boolean(s.textVariant)),r)}),f)}};var ue={tag:{type:String,default:"div"},deck:{type:Boolean,default:false},columns:{type:Boolean,default:false}};var fe={functional:true,props:ue,render:function t(i,n){var r=n.props,a=n.data,s=n.children;var o="card-group";if(r.columns){o="card-columns"}if(r.deck){o="card-deck"}return i(r.tag,e(a,{staticClass:o}),s)}};var de={bCard:le,bCardHeader:ee,bCardBody:Qt,bCardFooter:ne,bCardImg:ae,bCardGroup:fe};var ce={install:function t(e){h(e,de)}};g(ce);function he(t,e,i){var n=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;var r=window.addEventListener;t=t?t.$el||t:null;if(!X(t)){return null}var a=null;if(n){a=new n(function(t){var i=false;for(var n=0;n0||r.removedNodes.length>0)){i=true}}if(i){e()}});a.observe(t,y({childList:true,subtree:true},i))}else if(r){t.addEventListener("DOMNodeInserted",e,false);t.addEventListener("DOMNodeRemoved",e,false)}return a}var pe={props:{id:{type:String,default:null}},methods:{safeId:function t(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:"";var i=this.id||this.localId_||null;if(!i){return null}e=String(e).replace(/\s+/g,"_");return e?i+"_"+e:i}},computed:{localId_:function t(){if(!this.$isServer&&!this.id&&typeof this._uid!=="undefined"){return"__BVID__"+this._uid}}}};var ve={next:{dirClass:"carousel-item-left",overlayClass:"carousel-item-next"},prev:{dirClass:"carousel-item-right",overlayClass:"carousel-item-prev"}};var ge=600+50;var me={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend oTransitionEnd",transition:"transitionend"};function be(t){for(var e in me){if(t.style[e]!==undefined){return me[e]}}return null}var ye={mixins:[pe],render:function t(e){var i=this;var n=e("div",{ref:"inner",class:["carousel-inner"],attrs:{id:this.safeId("__BV_inner_"),role:"list"}},[this.$slots.default]);var r=e(false);if(this.controls){r=[e("a",{class:["carousel-control-prev"],attrs:{href:"#",role:"button","aria-controls":this.safeId("__BV_inner_")},on:{click:function t(e){e.preventDefault();e.stopPropagation();i.prev()},keydown:function t(e){var n=e.keyCode;if(n===Pt.SPACE||n===Pt.ENTER){e.preventDefault();e.stopPropagation();i.prev()}}}},[e("span",{class:["carousel-control-prev-icon"],attrs:{"aria-hidden":"true"}}),e("span",{class:["sr-only"]},[this.labelPrev])]),e("a",{class:["carousel-control-next"],attrs:{href:"#",role:"button","aria-controls":this.safeId("__BV_inner_")},on:{click:function t(e){e.preventDefault();e.stopPropagation();i.next()},keydown:function t(e){var n=e.keyCode;if(n===Pt.SPACE||n===Pt.ENTER){e.preventDefault();e.stopPropagation();i.next()}}}},[e("span",{class:["carousel-control-next-icon"],attrs:{"aria-hidden":"true"}}),e("span",{class:["sr-only"]},[this.labelNext])])]}var a=e("ol",{class:["carousel-indicators"],directives:[{name:"show",rawName:"v-show",value:this.indicators,expression:"indicators"}],attrs:{id:this.safeId("__BV_indicators_"),"aria-hidden":this.indicators?"false":"true","aria-label":this.labelIndicators,"aria-owns":this.safeId("__BV_inner_")}},this.slides.map(function(t,n){return e("li",{key:"slide_"+n,class:{active:n===i.index},attrs:{role:"button",id:i.safeId("__BV_indicator_"+(n+1)+"_"),tabindex:i.indicators?"0":"-1","aria-current":n===i.index?"true":"false","aria-label":i.labelGotoSlide+" "+(n+1),"aria-describedby":i.slides[n].id||null,"aria-controls":i.safeId("__BV_inner_")},on:{click:function t(e){i.setSlide(n)},keydown:function t(e){var r=e.keyCode;if(r===Pt.SPACE||r===Pt.ENTER){e.preventDefault();e.stopPropagation();i.setSlide(n)}}}})}));return e("div",{class:["carousel","slide"],style:{background:this.background},attrs:{role:"region",id:this.safeId(),"aria-busy":this.isSliding?"true":"false"},on:{mouseenter:this.pause,mouseleave:this.restart,focusin:this.pause,focusout:this.restart,keydown:function t(e){var n=e.keyCode;if(n===Pt.LEFT||n===Pt.RIGHT){e.preventDefault();e.stopPropagation();i[n===Pt.LEFT?"prev":"next"]()}}}},[n,r,a])},data:function t(){return{index:this.value||0,isSliding:false,intervalId:null,transitionEndEvent:null,slides:[],direction:null}},props:{labelPrev:{type:String,default:"Previous Slide"},labelNext:{type:String,default:"Next Slide"},labelGotoSlide:{type:String,default:"Goto Slide"},labelIndicators:{type:String,default:"Select a slide to display"},interval:{type:Number,default:5e3},indicators:{type:Boolean,default:false},controls:{type:Boolean,default:false},imgWidth:{type:[Number,String]},imgHeight:{type:[Number,String]},background:{type:String},value:{type:Number,default:0}},computed:{isCycling:function t(){return Boolean(this.intervalId)}},methods:{setSlide:function t(e){var i=this;if(typeof document!=="undefined"&&document.visibilityState&&document.hidden){return}var n=this.slides.length;if(n===0){return}if(this.isSliding){this.$once("sliding-end",function(){return i.setSlide(e)});return}e=Math.floor(e);this.index=e>=n?0:e>=0?e:n-1},prev:function t(){this.direction="prev";this.setSlide(this.index-1)},next:function t(){this.direction="next";this.setSlide(this.index+1)},pause:function t(){if(this.isCycling){clearInterval(this.intervalId);this.intervalId=null;if(this.slides[this.index]){this.slides[this.index].tabIndex=0}}},start:function t(){var e=this;if(!this.interval||this.isCycling){return}this.slides.forEach(function(t){t.tabIndex=-1});this.intervalId=setInterval(function(){e.next()},Math.max(1e3,this.interval))},restart:function t(e){if(!this.$el.contains(document.activeElement)){this.start()}},updateSlides:function t(){this.pause();this.slides=et(".carousel-item",this.$refs.inner);var e=this.slides.length;var i=Math.max(0,Math.min(Math.floor(this.index),e-1));this.slides.forEach(function(t,n){var r=n+1;if(n===i){st(t,"active")}else{ot(t,"active")}ut(t,"aria-current",n===i?"true":"false");ut(t,"aria-posinset",String(r));ut(t,"aria-setsize",String(e));t.tabIndex=-1});this.setSlide(i);this.start()},calcDirection:function t(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;var i=arguments.length>1&&arguments[1]!==undefined?arguments[1]:0;var n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:0;if(!e){return n>i?ve.next:ve.prev}return ve[e]}},watch:{value:function t(e,i){if(e!==i){this.setSlide(e)}},interval:function t(e,i){if(e===i){return}if(!e){this.pause()}else{this.pause();this.start()}},index:function t(e,i){var n=this;if(e===i||this.isSliding){return}var r=this.calcDirection(this.direction,i,e);var a=this.slides[i];var s=this.slides[e];if(!a||!s){return}this.isSliding=true;this.$emit("sliding-start",e);this.$emit("input",this.index);s.classList.add(r.overlayClass);tt(s);st(a,r.dirClass);st(s,r.dirClass);var o=false;var l=function t(i){if(o){return}o=true;if(n.transitionEndEvent){var l=n.transitionEndEvent.split(/\s+/);l.forEach(function(e){bt(a,e,t)})}n._animationTimeout=null;ot(s,r.dirClass);ot(s,r.overlayClass);st(s,"active");ot(a,"active");ot(a,r.dirClass);ot(a,r.overlayClass);ut(a,"aria-current","false");ut(s,"aria-current","true");ut(a,"aria-hidden","true");ut(s,"aria-hidden","false");a.tabIndex=-1;s.tabIndex=-1;if(!n.isCycling){s.tabIndex=0;n.$nextTick(function(){s.focus()})}n.isSliding=false;n.direction=null;n.$nextTick(function(){return n.$emit("sliding-end",e)})};if(this.transitionEndEvent){var u=this.transitionEndEvent.split(/\s+/);u.forEach(function(t){mt(a,t,l)})}this._animationTimeout=setTimeout(l,ge)}},created:function t(){this._animationTimeout=null},mounted:function t(){this.transitionEndEvent=be(this.$el)||null;this.updateSlides();he(this.$refs.inner,this.updateSlides.bind(this),{subtree:false,childList:true,attributes:true,attributeFilter:["id"]})},beforeDestroy:function t(){clearInterval(this.intervalId);clearTimeout(this._animationTimeout);this.intervalId=null;this._animationTimeout=null}};var Se=''+''+"";function we(t,e,i){var n=encodeURIComponent(Se.replace("%{w}",String(t)).replace("%{h}",String(e)).replace("%{f}",i));return"data:image/svg+xml;charset=UTF-8,"+n}var ke={src:{type:String,default:null},alt:{type:String,default:null},width:{type:[Number,String],default:null},height:{type:[Number,String],default:null},block:{type:Boolean,default:false},fluid:{type:Boolean,default:false},fluidGrow:{type:Boolean,default:false},rounded:{type:[Boolean,String],default:false},thumbnail:{type:Boolean,default:false},left:{type:Boolean,default:false},right:{type:Boolean,default:false},center:{type:Boolean,default:false},blank:{type:Boolean,default:false},blankColor:{type:String,default:"transparent"}};var Te={functional:true,props:ke,render:function t(i,n){var r;var s=n.props,o=n.data;var l=s.src;var u=parseInt(s.width,10)?parseInt(s.width,10):null;var f=parseInt(s.height,10)?parseInt(s.height,10):null;var d=null;var c=s.block;if(s.blank){if(!f&&Boolean(u)){f=u}else if(!u&&Boolean(f)){u=f}if(!u&&!f){u=1;f=1}l=we(u,f,s.blankColor||"transparent")}if(s.left){d="float-left"}else if(s.right){d="float-right"}else if(s.center){d="mx-auto";c=true}return i("img",e(o,{attrs:{src:l,alt:s.alt,width:u?String(u):null,height:f?String(f):null},class:(r={"img-thumbnail":s.thumbnail,"img-fluid":s.fluid||s.fluidGrow,"w-100":s.fluidGrow,rounded:s.rounded===""||s.rounded===true},a(r,"rounded-"+s.rounded,typeof s.rounded==="string"&&s.rounded!==""),a(r,d,Boolean(d)),a(r,"d-block",c),r)}))}};function _e(t){console.warn("[Bootstrap-Vue warn]: "+t)}var $e={components:{bImg:Te},mixins:[pe],render:function t(e){var i=this.$slots;var n=i.img;if(!n&&(this.imgSrc||this.imgBlank)){n=e("b-img",{props:{fluidGrow:true,block:true,src:this.imgSrc,blank:this.imgBlank,blankColor:this.imgBlankColor,width:this.computedWidth,height:this.computedHeight,alt:this.imgAlt}})}var r=e(this.contentTag,{class:this.contentClasses},[this.caption?e(this.captionTag,{domProps:{innerHTML:this.caption}}):e(false),this.text?e(this.textTag,{domProps:{innerHTML:this.text}}):e(false),i.default]);return e("div",{class:["carousel-item"],style:{background:this.background},attrs:{id:this.safeId(),role:"listitem"}},[n,r])},props:{imgSrc:{type:String,default:function t(){if(this&&this.src){_e("b-carousel-slide: prop 'src' has been deprecated. Use 'img-src' instead");return this.src}return null}},src:{type:String},imgAlt:{type:String},imgWidth:{type:[Number,String]},imgHeight:{type:[Number,String]},imgBlank:{type:Boolean,default:false},imgBlankColor:{type:String,default:"transparent"},contentVisibleUp:{type:String},contentTag:{type:String,default:"div"},caption:{type:String},captionTag:{type:String,default:"h3"},text:{type:String},textTag:{type:String,default:"p"},background:{type:String}},computed:{contentClasses:function t(){return["carousel-caption",this.contentVisibleUp?"d-none":"",this.contentVisibleUp?"d-"+this.contentVisibleUp+"-block":""]},computedWidth:function t(){return this.imgWidth||this.$parent.imgWidth},computedHeight:function t(){return this.imgHeight||this.$parent.imgHeight}}};var Ce={bCarousel:ye,bCarouselSlide:$e};var Be={install:function t(e){h(e,Ce)}};g(Be);var xe={tag:{type:String,default:"div"},fluid:{type:Boolean,default:false}};var Ee={functional:true,props:xe,render:function t(i,n){var r=n.props,a=n.data,s=n.children;return i(r.tag,e(a,{class:{container:!r.fluid,"container-fluid":r.fluid}}),s)}};var Oe=["start","end","center"];var Pe={tag:{type:String,default:"div"},noGutters:{type:Boolean,default:false},alignV:{type:String,default:null,validator:function t(e){return B(Oe.concat(["baseline","stretch"]),e)}},alignH:{type:String,default:null,validator:function t(e){return B(Oe.concat(["between","around"]),e)}},alignContent:{type:String,default:null,validator:function t(e){return B(Oe.concat(["between","around","stretch"]),e)}}};var Ie={functional:true,props:Pe,render:function t(i,n){var r;var s=n.props,o=n.data,l=n.children;return i(s.tag,e(o,{staticClass:"row",class:(r={"no-gutters":s.noGutters},a(r,"align-items-"+s.alignV,s.alignV),a(r,"justify-content-"+s.alignH,s.alignH),a(r,"align-content-"+s.alignContent,s.alignContent),r)}),l)}};function Le(t){var e=T(null);return function i(){var n=JSON.stringify(arguments);return e[n]=e[n]||t.apply(null,arguments)}}function Fe(t,e){return e+(t?Ut(t):"")}function Ne(){return{type:[Boolean,String,Number],default:false}}function Ae(){return{type:[String,Number],default:null}}var De=Le(function t(e,i,n){var r=e;if(n===false||n===null||n===undefined){return undefined}if(i){r+="-"+i}if(e==="col"&&(n===""||n===true)){return r.toLowerCase()}r+="-"+n;return r.toLowerCase()});var Ve=["sm","md","lg","xl"];var Me=Ve.reduce(function(t,e){return t[e]=Ne(),t},T(null));var je=Ve.reduce(function(t,e){return t[Fe(e,"offset")]=Ae(),t},T(null));var Re=Ve.reduce(function(t,e){return t[Fe(e,"order")]=Ae(),t},T(null));var He=y(T(null),{col:S(Me),offset:S(je),order:S(Re)});var ze=y({},Me,je,Re,{tag:{type:String,default:"div"},col:{type:Boolean,default:false},cols:Ae(),offset:Ae(),order:Ae(),alignSelf:{type:String,default:null,validator:function t(e){return B(["auto","start","end","center","baseline","stretch"],e)}}});var We={functional:true,props:ze,render:function t(i,n){var r;var s=n.props,o=n.data,l=n.children;var u=[];for(var f in He){var d=He[f];for(var c=0;c1?n-1:0),a=1;a0){var e=this[Ye].shift(),i=e.event,n=e.callback;this.$root.$off(i,n)}}}};var Xe="bv::collapse::state";var Je="bv::collapse::accordion";var Qe="bv::toggle::collapse";var ti={mixins:[Ze],render:function t(e){var i=e(this.tag,{class:this.classObject,directives:[{name:"show",value:this.show}],attrs:{id:this.id||null},on:{click:this.clickHandler}},[this.$slots.default]);return e("transition",{props:{enterClass:"",enterActiveClass:"collapsing",enterToClass:"",leaveClass:"",leaveActiveClass:"collapsing",leaveToClass:""},on:{enter:this.onEnter,afterEnter:this.onAfterEnter,leave:this.onLeave,afterLeave:this.onAfterLeave}},[i])},data:function t(){return{show:this.visible,transitioning:false}},model:{prop:"visible",event:"input"},props:{id:{type:String,required:true},isNav:{type:Boolean,default:false},accordion:{type:String,default:null},visible:{type:Boolean,default:false},tag:{type:String,default:"div"}},watch:{visible:function t(e){if(e!==this.show){this.show=e}},show:function t(e,i){if(e!==i){this.emitState()}}},computed:{classObject:function t(){return{"navbar-collapse":this.isNav,collapse:!this.transitioning,show:this.show&&!this.transitioning}}},methods:{toggle:function t(){this.show=!this.show},onEnter:function t(e){e.style.height=0;tt(e);e.style.height=e.scrollHeight+"px";this.transitioning=true;this.$emit("show")},onAfterEnter:function t(e){e.style.height=null;this.transitioning=false;this.$emit("shown")},onLeave:function t(e){e.style.height="auto";e.style.display="block";e.style.height=e.getBoundingClientRect().height+"px";tt(e);this.transitioning=true;e.style.height=0;this.$emit("hide")},onAfterLeave:function t(e){e.style.height=null;this.transitioning=false;this.$emit("hidden")},emitState:function t(){this.$emit("input",this.show);this.$root.$emit(Xe,this.id,this.show);if(this.accordion&&this.show){this.$root.$emit(Je,this.id,this.accordion)}},clickHandler:function t(e){var i=e.target;if(!this.isNav||!i||getComputedStyle(this.$el).display!=="block"){return}if(lt(i,"nav-link")||lt(i,"dropdown-item")){this.show=false}},handleToggleEvt:function t(e){if(e!==this.id){return}this.toggle()},handleAccordionEvt:function t(e,i){if(!this.accordion||i!==this.accordion){return}if(e===this.id){if(!this.show){this.toggle()}}else{if(this.show){this.toggle()}}},handleResize:function t(){this.show=getComputedStyle(this.$el).display==="block"}},created:function t(){this.listenOnRoot(Qe,this.handleToggleEvt);this.listenOnRoot(Je,this.handleAccordionEvt)},mounted:function t(){if(this.isNav&&typeof document!=="undefined"){window.addEventListener("resize",this.handleResize,false);window.addEventListener("orientationchange",this.handleResize,false);this.handleResize()}this.emitState()},beforeDestroy:function t(){if(this.isNav&&typeof document!=="undefined"){window.removeEventListener("resize",this.handleResize,false);window.removeEventListener("orientationchange",this.handleResize,false)}}};var ei={hover:true,click:true,focus:true};var ii="__BV_boundEventListeners__";var ni=function t(e,i,n,r){var a=S(i.modifiers||{}).filter(function(t){return!ei[t]});if(i.value){a.push(i.value)}var s=function t(){r({targets:a,vnode:e})};S(ei).forEach(function(t){if(n[t]||i.modifiers[t]){e.elm.addEventListener(t,s);var r=e.elm[ii]||{};r[t]=r[t]||[];r[t].push(s);e.elm[ii]=r}});return a};var ri=function t(e,i,n){S(ei).forEach(function(t){if(n[t]||i.modifiers[t]){var r=e.elm[ii]&&e.elm[ii][t];if(r){r.forEach(function(i){return e.elm.removeEventListener(t,i)});delete e.elm[ii][t]}}})};var ai=typeof window!=="undefined";var si={click:true};var oi="__BV_toggle__";var li="bv::toggle::collapse";var ui="bv::collapse::state";var fi={bind:function t(e,i,n){var r=ni(n,i,si,function(t){var e=t.targets,i=t.vnode;e.forEach(function(t){i.context.$root.$emit(li,t)})});if(ai&&n.context&&r.length>0){ut(e,"aria-controls",r.join(" "));ut(e,"aria-expanded","false");if(e.tagName!=="BUTTON"){ut(e,"role","button")}e[oi]=function t(i,n){if(r.indexOf(i)!==-1){ut(e,"aria-expanded",n?"true":"false");if(n){ot(e,"collapsed")}else{st(e,"collapsed")}}};n.context.$root.$on(ui,e[oi])}},unbind:function t(e,i,n){if(e[oi]){n.context.$root.$off(ui,e[oi]);e[oi]=null}}};var di={bToggle:fi};var ci={install:function t(e){v(e,di)}};g(ci);var hi={bCollapse:ti};var pi={install:function t(e){h(e,hi);e.use(ci)}};g(pi);var vi=typeof window!=="undefined"&&typeof document!=="undefined";var gi=["Edge","Trident","Firefox"];var mi=0;for(var bi=0;bi=0){mi=1;break}}function yi(t){var e=false;return function(){if(e){return}e=true;window.Promise.resolve().then(function(){e=false;t()})}}function Si(t){var e=false;return function(){if(!e){e=true;setTimeout(function(){e=false;t()},mi)}}}var wi=vi&&window.Promise;var ki=wi?yi:Si;function Ti(t){var e={};return t&&e.toString.call(t)==="[object Function]"}function _i(t,e){if(t.nodeType!==1){return[]}var i=getComputedStyle(t,null);return e?i[e]:i}function $i(t){if(t.nodeName==="HTML"){return t}return t.parentNode||t.host}function Ci(t){if(!t){return document.body}switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=_i(t),i=e.overflow,n=e.overflowX,r=e.overflowY;if(/(auto|scroll|overlay)/.test(i+r+n)){return t}return Ci($i(t))}var Bi=vi&&!!(window.MSInputMethodContext&&document.documentMode);var xi=vi&&/MSIE 10/.test(navigator.userAgent);function Ei(t){if(t===11){return Bi}if(t===10){return xi}return Bi||xi}function Oi(t){if(!t){return document.documentElement}var e=Ei(10)?document.body:null;var i=t.offsetParent;while(i===e&&t.nextElementSibling){i=(t=t.nextElementSibling).offsetParent}var n=i&&i.nodeName;if(!n||n==="BODY"||n==="HTML"){return t?t.ownerDocument.documentElement:document.documentElement}if(["TD","TABLE"].indexOf(i.nodeName)!==-1&&_i(i,"position")==="static"){return Oi(i)}return i}function Pi(t){var e=t.nodeName;if(e==="BODY"){return false}return e==="HTML"||Oi(t.firstElementChild)===t}function Ii(t){if(t.parentNode!==null){return Ii(t.parentNode)}return t}function Li(t,e){if(!t||!t.nodeType||!e||!e.nodeType){return document.documentElement}var i=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING;var n=i?t:e;var r=i?e:t;var a=document.createRange();a.setStart(n,0);a.setEnd(r,0);var s=a.commonAncestorContainer;if(t!==s&&e!==s||n.contains(r)){if(Pi(s)){return s}return Oi(s)}var o=Ii(t);if(o.host){return Li(o.host,e)}else{return Li(t,Ii(e).host)}}function Fi(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:"top";var i=e==="top"?"scrollTop":"scrollLeft";var n=t.nodeName;if(n==="BODY"||n==="HTML"){var r=t.ownerDocument.documentElement;var a=t.ownerDocument.scrollingElement||r;return a[i]}return t[i]}function Ni(t,e){var i=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var n=Fi(e,"top");var r=Fi(e,"left");var a=i?-1:1;t.top+=n*a;t.bottom+=n*a;t.left+=r*a;t.right+=r*a;return t}function Ai(t,e){var i=e==="x"?"Left":"Top";var n=i==="Left"?"Right":"Bottom";return parseFloat(t["border"+i+"Width"],10)+parseFloat(t["border"+n+"Width"],10)}function Di(t,e,i,n){return Math.max(e["offset"+t],e["scroll"+t],i["client"+t],i["offset"+t],i["scroll"+t],Ei(10)?i["offset"+t]+n["margin"+(t==="Height"?"Top":"Left")]+n["margin"+(t==="Height"?"Bottom":"Right")]:0)}function Vi(){var t=document.body;var e=document.documentElement;var i=Ei(10)&&getComputedStyle(e);return{height:Di("Height",t,e,i),width:Di("Width",t,e,i)}}var Mi=function t(e,i){if(!(e instanceof i)){throw new TypeError("Cannot call a class as a function")}};var ji=function(){function t(t,e){for(var i=0;i2&&arguments[2]!==undefined?arguments[2]:false;var n=Ei(10);var r=e.nodeName==="HTML";var a=Wi(t);var s=Wi(e);var o=Ci(t);var l=_i(e);var u=parseFloat(l.borderTopWidth,10);var f=parseFloat(l.borderLeftWidth,10);if(i&&e.nodeName==="HTML"){s.top=Math.max(s.top,0);s.left=Math.max(s.left,0)}var d=zi({top:a.top-s.top-u,left:a.left-s.left-f,width:a.width,height:a.height});d.marginTop=0;d.marginLeft=0;if(!n&&r){var c=parseFloat(l.marginTop,10);var h=parseFloat(l.marginLeft,10);d.top-=u-c;d.bottom-=u-c;d.left-=f-h;d.right-=f-h;d.marginTop=c;d.marginLeft=h}if(n&&!i?e.contains(o):e===o&&o.nodeName!=="BODY"){d=Ni(d,e)}return d}function Ui(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var i=t.ownerDocument.documentElement;var n=Gi(t,i);var r=Math.max(i.clientWidth,window.innerWidth||0);var a=Math.max(i.clientHeight,window.innerHeight||0);var s=!e?Fi(i):0;var o=!e?Fi(i,"left"):0;var l={top:s-n.top+n.marginTop,left:o-n.left+n.marginLeft,width:r,height:a};return zi(l)}function qi(t){var e=t.nodeName;if(e==="BODY"||e==="HTML"){return false}if(_i(t,"position")==="fixed"){return true}return qi($i(t))}function Ki(t){if(!t||!t.parentElement||Ei()){return document.documentElement}var e=t.parentElement;while(e&&_i(e,"transform")==="none"){e=e.parentElement}return e||document.documentElement}function Yi(t,e,i,n){var r=arguments.length>4&&arguments[4]!==undefined?arguments[4]:false;var a={top:0,left:0};var s=r?Ki(t):Li(t,e);if(n==="viewport"){a=Ui(s,r)}else{var o=void 0;if(n==="scrollParent"){o=Ci($i(e));if(o.nodeName==="BODY"){o=t.ownerDocument.documentElement}}else if(n==="window"){o=t.ownerDocument.documentElement}else{o=n}var l=Gi(o,s,r);if(o.nodeName==="HTML"&&!qi(s)){var u=Vi(),f=u.height,d=u.width;a.top+=l.top-l.marginTop;a.bottom=f+l.top;a.left+=l.left-l.marginLeft;a.right=d+l.left}else{a=l}}a.left+=i;a.top+=i;a.right-=i;a.bottom-=i;return a}function Zi(t){var e=t.width,i=t.height;return e*i}function Xi(t,e,i,n,r){var a=arguments.length>5&&arguments[5]!==undefined?arguments[5]:0;if(t.indexOf("auto")===-1){return t}var s=Yi(i,n,a,r);var o={top:{width:s.width,height:e.top-s.top},right:{width:s.right-e.right,height:s.height},bottom:{width:s.width,height:s.bottom-e.bottom},left:{width:e.left-s.left,height:s.height}};var l=Object.keys(o).map(function(t){return Hi({key:t},o[t],{area:Zi(o[t])})}).sort(function(t,e){return e.area-t.area});var u=l.filter(function(t){var e=t.width,n=t.height;return e>=i.clientWidth&&n>=i.clientHeight});var f=u.length>0?u[0].key:l[0].key;var d=t.split("-")[1];return f+(d?"-"+d:"")}function Ji(t,e,i){var n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;var r=n?Ki(e):Li(e,i);return Gi(i,r,n)}function Qi(t){var e=getComputedStyle(t);var i=parseFloat(e.marginTop)+parseFloat(e.marginBottom);var n=parseFloat(e.marginLeft)+parseFloat(e.marginRight);var r={width:t.offsetWidth+n,height:t.offsetHeight+i};return r}function tn(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(t){return e[t]})}function en(t,e,i){i=i.split("-")[0];var n=Qi(t);var r={width:n.width,height:n.height};var a=["right","left"].indexOf(i)!==-1;var s=a?"top":"left";var o=a?"left":"top";var l=a?"height":"width";var u=!a?"height":"width";r[s]=e[s]+e[l]/2-n[l]/2;if(i===o){r[o]=e[o]-n[u]}else{r[o]=e[tn(o)]}return r}function nn(t,e){if(Array.prototype.find){return t.find(e)}return t.filter(e)[0]}function rn(t,e,i){if(Array.prototype.findIndex){return t.findIndex(function(t){return t[e]===i})}var n=nn(t,function(t){return t[e]===i});return t.indexOf(n)}function an(t,e,i){var n=i===undefined?t:t.slice(0,rn(t,"name",i));n.forEach(function(t){if(t["function"]){console.warn("`modifier.function` is deprecated, use `modifier.fn`!")}var i=t["function"]||t.fn;if(t.enabled&&Ti(i)){e.offsets.popper=zi(e.offsets.popper);e.offsets.reference=zi(e.offsets.reference);e=i(e,t)}});return e}function sn(){if(this.state.isDestroyed){return}var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:false,offsets:{}};t.offsets.reference=Ji(this.state,this.popper,this.reference,this.options.positionFixed);t.placement=Xi(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding);t.originalPlacement=t.placement;t.positionFixed=this.options.positionFixed;t.offsets.popper=en(this.popper,t.offsets.reference,t.placement);t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute";t=an(this.modifiers,t);if(!this.state.isCreated){this.state.isCreated=true;this.options.onCreate(t)}else{this.options.onUpdate(t)}}function on(t,e){return t.some(function(t){var i=t.name,n=t.enabled;return n&&i===e})}function ln(t){var e=[false,"ms","Webkit","Moz","O"];var i=t.charAt(0).toUpperCase()+t.slice(1);for(var n=0;ns[h]){t.offsets.popper[d]+=o[d]+p-s[h]}t.offsets.popper=zi(t.offsets.popper);var v=o[d]+o[u]/2-p/2;var g=_i(t.instance.popper);var m=parseFloat(g["margin"+f],10);var b=parseFloat(g["border"+f+"Width"],10);var y=v-t.offsets.popper[d]-m-b;y=Math.max(Math.min(s[u]-p,y),0);t.arrowElement=n;t.offsets.arrow=(i={},Ri(i,d,Math.round(y)),Ri(i,c,""),i);return t}function _n(t){if(t==="end"){return"start"}else if(t==="start"){return"end"}return t}var $n=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"];var Cn=$n.slice(3);function Bn(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;var i=Cn.indexOf(t);var n=Cn.slice(i+1).concat(Cn.slice(0,i));return e?n.reverse():n}var xn={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function En(t,e){if(on(t.instance.modifiers,"inner")){return t}if(t.flipped&&t.placement===t.originalPlacement){return t}var i=Yi(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed);var n=t.placement.split("-")[0];var r=tn(n);var a=t.placement.split("-")[1]||"";var s=[];switch(e.behavior){case xn.FLIP:s=[n,r];break;case xn.CLOCKWISE:s=Bn(n);break;case xn.COUNTERCLOCKWISE:s=Bn(n,true);break;default:s=e.behavior}s.forEach(function(o,l){if(n!==o||s.length===l+1){return t}n=t.placement.split("-")[0];r=tn(n);var u=t.offsets.popper;var f=t.offsets.reference;var d=Math.floor;var c=n==="left"&&d(u.right)>d(f.left)||n==="right"&&d(u.left)d(f.top)||n==="bottom"&&d(u.top)d(i.right);var v=d(u.top)d(i.bottom);var m=n==="left"&&h||n==="right"&&p||n==="top"&&v||n==="bottom"&&g;var b=["top","bottom"].indexOf(n)!==-1;var y=!!e.flipVariations&&(b&&a==="start"&&h||b&&a==="end"&&p||!b&&a==="start"&&v||!b&&a==="end"&&g);if(c||m||y){t.flipped=true;if(c||m){n=s[l+1]}if(y){a=_n(a)}t.placement=n+(a?"-"+a:"");t.offsets.popper=Hi({},t.offsets.popper,en(t.instance.popper,t.offsets.reference,t.placement));t=an(t.instance.modifiers,t,"flip")}});return t}function On(t){var e=t.offsets,i=e.popper,n=e.reference;var r=t.placement.split("-")[0];var a=Math.floor;var s=["top","bottom"].indexOf(r)!==-1;var o=s?"right":"bottom";var l=s?"left":"top";var u=s?"width":"height";if(i[o]a(n[o])){t.offsets.popper[l]=a(n[o])}return t}function Pn(t,e,i,n){var r=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/);var a=+r[1];var s=r[2];if(!a){return t}if(s.indexOf("%")===0){var o=void 0;switch(s){case"%p":o=i;break;case"%":case"%r":default:o=n}var l=zi(o);return l[e]/100*a}else if(s==="vh"||s==="vw"){var u=void 0;if(s==="vh"){u=Math.max(document.documentElement.clientHeight,window.innerHeight||0)}else{u=Math.max(document.documentElement.clientWidth,window.innerWidth||0)}return u/100*a}else{return a}}function In(t,e,i,n){var r=[0,0];var a=["right","left"].indexOf(n)!==-1;var s=t.split(/(\+|\-)/).map(function(t){return t.trim()});var o=s.indexOf(nn(s,function(t){return t.search(/,|\s/)!==-1}));if(s[o]&&s[o].indexOf(",")===-1){console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.")}var l=/\s*,\s*|\s+/;var u=o!==-1?[s.slice(0,o).concat([s[o].split(l)[0]]),[s[o].split(l)[1]].concat(s.slice(o+1))]:[s];u=u.map(function(t,n){var r=(n===1?!a:a)?"height":"width";var s=false;return t.reduce(function(t,e){if(t[t.length-1]===""&&["+","-"].indexOf(e)!==-1){t[t.length-1]=e;s=true;return t}else if(s){t[t.length-1]+=e;s=false;return t}else{return t.concat(e)}},[]).map(function(t){return Pn(t,r,e,i)})});u.forEach(function(t,e){t.forEach(function(i,n){if(gn(i)){r[e]+=i*(t[n-1]==="-"?-1:1)}})});return r}function Ln(t,e){var i=e.offset;var n=t.placement,r=t.offsets,a=r.popper,s=r.reference;var o=n.split("-")[0];var l=void 0;if(gn(+i)){l=[+i,0]}else{l=In(i,a,s,o)}if(o==="left"){a.top+=l[0];a.left-=l[1]}else if(o==="right"){a.top+=l[0];a.left+=l[1]}else if(o==="top"){a.left+=l[0];a.top-=l[1]}else if(o==="bottom"){a.left+=l[0];a.top+=l[1]}t.popper=a;return t}function Fn(t,e){var i=e.boundariesElement||Oi(t.instance.popper);if(t.instance.reference===i){i=Oi(i)}var n=ln("transform");var r=t.instance.popper.style;var a=r.top,s=r.left,o=r[n];r.top="";r.left="";r[n]="";var l=Yi(t.instance.popper,t.instance.reference,e.padding,i,t.positionFixed);r.top=a;r.left=s;r[n]=o;e.boundaries=l;var u=e.priority;var f=t.offsets.popper;var d={primary:function t(i){var n=f[i];if(f[i]l[i]&&!e.escapeWithReference){r=Math.min(f[n],l[i]-(i==="right"?f.width:f.height))}return Ri({},n,r)}};u.forEach(function(t){var e=["left","top"].indexOf(t)!==-1?"primary":"secondary";f=Hi({},f,d[e](t))});t.offsets.popper=f;return t}function Nn(t){var e=t.placement;var i=e.split("-")[0];var n=e.split("-")[1];if(n){var r=t.offsets,a=r.reference,s=r.popper;var o=["bottom","top"].indexOf(i)!==-1;var l=o?"left":"top";var u=o?"width":"height";var f={start:Ri({},l,a[l]),end:Ri({},l,a[l]+a[u]-s[u])};t.offsets.popper=Hi({},s,f[n])}return t}function An(t){if(!kn(t.instance.modifiers,"hide","preventOverflow")){return t}var e=t.offsets.reference;var i=nn(t.instance.modifiers,function(t){return t.name==="preventOverflow"}).boundaries;if(e.bottomi.right||e.top>i.bottom||e.right2&&arguments[2]!==undefined?arguments[2]:{};Mi(this,t);this.scheduleUpdate=function(){return requestAnimationFrame(n.update)};this.update=ki(this.update.bind(this));this.options=Hi({},t.Defaults,r);this.state={isDestroyed:false,isCreated:false,scrollParents:[]};this.reference=e&&e.jquery?e[0]:e;this.popper=i&&i.jquery?i[0]:i;this.options.modifiers={};Object.keys(Hi({},t.Defaults.modifiers,r.modifiers)).forEach(function(e){n.options.modifiers[e]=Hi({},t.Defaults.modifiers[e]||{},r.modifiers?r.modifiers[e]:{})});this.modifiers=Object.keys(this.options.modifiers).map(function(t){return Hi({name:t},n.options.modifiers[t])}).sort(function(t,e){return t.order-e.order});this.modifiers.forEach(function(t){if(t.enabled&&Ti(t.onLoad)){t.onLoad(n.reference,n.popper,n.options,t,n.state)}});this.update();var a=this.options.eventsEnabled;if(a){this.enableEventListeners()}this.state.eventsEnabled=a}ji(t,[{key:"update",value:function t(){return sn.call(this)}},{key:"destroy",value:function t(){return un.call(this)}},{key:"enableEventListeners",value:function t(){return hn.call(this)}},{key:"disableEventListeners",value:function t(){return vn.call(this)}}]);return t}();jn.Utils=(typeof window!=="undefined"?window:global).PopperUtils;jn.placements=$n;jn.Defaults=Mn;var Rn={mounted:function t(){if(typeof document!=="undefined"){document.documentElement.addEventListener("click",this._clickOutListener)}},beforeDestroy:function t(){if(typeof document!=="undefined"){document.documentElement.removeEventListener("click",this._clickOutListener)}},methods:{_clickOutListener:function t(e){if(!this.$el.contains(e.target)){if(this.clickOutListener){this.clickOutListener()}}}}};var Hn=function(){function t(e){var i=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};n(this,t);if(!e){throw new TypeError("Failed to construct '"+this.constructor.name+"'. 1 argument required, "+arguments.length+" given.")}y(this,t.defaults(),i,{type:e});w(this,{type:_(),cancelable:_(),nativeEvent:_(),target:_(),relatedTarget:_(),vueTarget:_()});var r=false;this.preventDefault=function t(){if(this.cancelable){r=true}};k(this,"defaultPrevented",{enumerable:true,get:function t(){return r}})}r(t,null,[{key:"defaults",value:function t(){return{type:"",cancelable:true,nativeEvent:null,target:null,relatedTarget:null,vueTarget:null}}}]);return t}();function zn(t){return(t||[]).filter(J)}var Wn=".dropdown-item:not(.disabled):not([disabled])";var Gn={TOP:"top-start",TOPEND:"top-end",BOTTOM:"bottom-start",BOTTOMEND:"bottom-end"};var Un={mixins:[Rn,Ze],props:{disabled:{type:Boolean,default:false},text:{type:String,default:""},dropup:{type:Boolean,default:false},right:{type:Boolean,default:false},offset:{type:[Number,String],default:0},noFlip:{type:Boolean,default:false},popperOpts:{type:Object,default:function t(){}}},data:function t(){return{visible:false,inNavbar:null,visibleChangePrevented:false}},created:function t(){this._popper=null},mounted:function t(){this.listenOnRoot("bv::dropdown::shown",this.rootCloseListener);this.listenOnRoot("clicked::link",this.rootCloseListener);this.listenOnRoot("bv::link::clicked",this.rootCloseListener)},deactivated:function t(){this.visible=false;this.setTouchStart(false);this.removePopper()},beforeDestroy:function t(){this.visible=false;this.setTouchStart(false);this.removePopper()},watch:{visible:function t(e,i){if(this.visibleChangePrevented){this.visibleChangePrevented=false;return}if(e!==i){var n=e?"show":"hide";var r=new Hn(n,{cancelable:true,vueTarget:this,target:this.$refs.menu,relatedTarget:null});this.emitEvent(r);if(r.defaultPrevented){this.visibleChangePrevented=true;this.visible=i;return}if(n==="show"){this.showMenu()}else{this.hideMenu()}}},disabled:function t(e,i){if(e!==i&&e&&this.visible){this.visible=false}}},computed:{toggler:function t(){return this.$refs.toggle.$el||this.$refs.toggle}},methods:{emitEvent:function t(e){var i=e.type;this.$emit(i,e);this.emitOnRoot("bv::dropdown::"+i,e)},showMenu:function t(){if(this.disabled){return}this.emitOnRoot("bv::dropdown::shown",this);if(this.inNavbar===null&&this.isNav){this.inNavbar=Boolean(rt(".navbar",this.$el))}if(!this.inNavbar){if(typeof jn==="undefined"){_e("b-dropdown: Popper.js not found. Falling back to CSS positioning.")}else{var e=this.dropup&&this.right||this.split?this.$el:this.$refs.toggle;e=e.$el||e;this.createPopper(e)}}this.setTouchStart(true);this.$emit("shown");this.$nextTick(this.focusFirstItem)},hideMenu:function t(){this.setTouchStart(false);this.emitOnRoot("bv::dropdown::hidden",this);this.$emit("hidden");this.removePopper()},createPopper:function t(e){this.removePopper();this._popper=new jn(e,this.$refs.menu,this.getPopperConfig())},removePopper:function t(){if(this._popper){this._popper.destroy()}this._popper=null},getPopperConfig:function t(){var e=Gn.BOTTOM;if(this.dropup&&this.right){e=Gn.TOPEND}else if(this.dropup){e=Gn.TOP}else if(this.right){e=Gn.BOTTOMEND}var i={placement:e,modifiers:{offset:{offset:this.offset||0},flip:{enabled:!this.noFlip}}};if(this.boundary){i.modifiers.preventOverflow={boundariesElement:this.boundary}}return y(i,this.popperOpts||{})},setTouchStart:function t(e){var i=this;if("ontouchstart"in document.documentElement){var n=$(document.body.children);n.forEach(function(t){if(e){mt("mouseover",i._noop)}else{bt("mouseover",i._noop)}})}},_noop:function t(){},rootCloseListener:function t(e){if(e!==this){this.visible=false}},clickOutListener:function t(){this.visible=false},show:function t(){if(this.disabled){return}this.visible=true},hide:function t(){if(this.disabled){return}this.visible=false},toggle:function t(e){e=e||{};var i=e.type;var n=e.keyCode;if(i!=="click"&&!(i==="keydown"&&(n===Pt.ENTER||n===Pt.SPACE||n===Pt.DOWN))){return}if(this.disabled){this.visible=false;return}this.$emit("toggle",e);if(e.defaultPrevented){return}e.preventDefault();e.stopPropagation();this.visible=!this.visible},click:function t(e){if(this.disabled){this.visible=false;return}this.$emit("click",e)},onKeydown:function t(e){var i=e.keyCode;if(i===Pt.ESC){this.onEsc(e)}else if(i===Pt.TAB){this.onTab(e)}else if(i===Pt.DOWN){this.focusNext(e,false)}else if(i===Pt.UP){this.focusNext(e,true)}},onEsc:function t(e){if(this.visible){this.visible=false;e.preventDefault();e.stopPropagation();this.$nextTick(this.focusToggler)}},onTab:function t(e){if(this.visible){this.visible=false}},onFocusOut:function t(e){if(this.$refs.menu.contains(e.relatedTarget)){return}this.visible=false},onMouseOver:function t(e){var i=e.target;if(i.classList.contains("dropdown-item")&&!i.disabled&&!i.classList.contains("disabled")&&i.focus){i.focus()}},focusNext:function t(e,i){var n=this;if(!this.visible){return}e.preventDefault();e.stopPropagation();this.$nextTick(function(){var t=n.getItems();if(t.length<1){return}var r=t.indexOf(e.target);if(i&&r>0){r--}else if(!i&&r=1&&Number(e)<=11){return true}_e("b-form-group: label-cols must be a value between 1 and 11");return false}},breakpoint:{type:String,default:"sm"},labelTextAlign:{type:String,default:null},label:{type:String,default:null},labelFor:{type:String,default:null},labelSize:{type:String,default:null},labelSrOnly:{type:Boolean,default:false},labelClass:{type:[String,Array],default:null},description:{type:String,default:null},invalidFeedback:{type:String,default:null},feedback:{type:String,default:null},validFeedback:{type:String,default:null},validated:{type:Boolean,default:false}},computed:{groupClasses:function t(){return["b-form-group","form-group",this.validated?"was-validated":null,this.stateClass]},labelClasses:function t(){return["col-form-label",this.labelSize?"col-form-label-"+this.labelSize:null,this.labelTextAlign?"text-"+this.labelTextAlign:null,this.horizontal?null:"pt-0",this.labelClass]},labelLayoutClasses:function t(){return[this.horizontal?"col-"+this.breakpoint+"-"+this.labelCols:null]},inputLayoutClasses:function t(){return[this.horizontal?"col-"+this.breakpoint+"-"+(12-Number(this.labelCols)):null]},hasLabel:function t(){return this.label||this.$slots["label"]},hasDescription:function t(){return this.description||this.$slots["description"]},hasInvalidFeedback:function t(){if(this.computedState===true){return false}return this.invalidFeedback||this.feedback||this.$slots["invalid-feedback"]||this.$slots["feedback"]},hasValidFeedback:function t(){if(this.computedState===false){return false}return this.validFeedback||this.$slots["valid-feedback"]},labelId:function t(){return this.hasLabel?this.safeId("_BV_label_"):null},descriptionId:function t(){return this.hasDescription?this.safeId("_BV_description_"):null},invalidFeedbackId:function t(){return this.hasInvalidFeedback?this.safeId("_BV_feedback_invalid_"):null},validFeedbackId:function t(){return this.hasValidFeedback?this.safeId("_BV_feedback_valid_"):null},describedByIds:function t(){return[this.descriptionId,this.invalidFeedbackId,this.validFeedbackId].filter(function(t){return t}).join(" ")||null}},watch:{describedByIds:function t(e,i){if(e!==i){this.setInputDescribedBy(e,i)}}},methods:{legendClick:function t(e){var i=e.target?e.target.tagName:"";if(/^(input|select|textarea|label)$/i.test(i)){return}var n=et(yr,this.$refs.content).filter(J);if(n[0]&&n[0].focus){n[0].focus()}},setInputDescribedBy:function t(e,i){if(this.labelFor&&typeof document!=="undefined"){var n=it("#"+this.labelFor,this.$refs.content);if(n){var r="aria-describedby";var a=(dt(n,r)||"").split(/\s+/);i=(i||"").split(/\s+/);a=a.filter(function(t){return i.indexOf(t)===-1}).concat(e||"").join(" ").trim();if(a){ut(n,r,a)}else{ft(n,r)}}}}},mounted:function t(){var e=this;this.$nextTick(function(){e.setInputDescribedBy(e.describedByIds)})}};var wr={bFormGroup:Sr,bFormFieldset:Sr};var kr={install:function t(e){h(e,wr)}};g(kr);var Tr={data:function t(){return{localChecked:this.checked,hasFocus:false}},model:{prop:"checked",event:"input"},props:{value:{},checked:{},buttonVariant:{type:String,default:null}},computed:{computedLocalChecked:{get:function t(){if(this.is_Child){return this.$parent.localChecked}else{return this.localChecked}},set:function t(e){if(this.is_Child){this.$parent.localChecked=e}else{this.localChecked=e}}},is_Child:function t(){return Boolean(this.$parent&&this.$parent.is_RadioCheckGroup)},is_Disabled:function t(){return Boolean(this.is_Child?this.$parent.disabled||this.disabled:this.disabled)},is_Required:function t(){return Boolean(this.is_Child?this.$parent.required:this.required)},is_Plain:function t(){return Boolean(this.is_Child?this.$parent.plain:this.plain)},is_Custom:function t(){return!this.is_Plain},get_Size:function t(){return this.is_Child?this.$parent.size:this.size},get_State:function t(){if(this.is_Child&&typeof this.$parent.get_State==="boolean"){return this.$parent.get_State}return this.computedState},get_StateClass:function t(){return typeof this.get_State==="boolean"?this.get_State?"is-valid":"is-invalid":""},is_Stacked:function t(){return Boolean(this.is_Child&&this.$parent.stacked)},is_Inline:function t(){return!this.is_Stacked},is_ButtonMode:function t(){return Boolean(this.is_Child&&this.$parent.buttons)},get_ButtonVariant:function t(){return this.buttonVariant||(this.is_Child?this.$parent.buttonVariant:null)||"secondary"},get_Name:function t(){return(this.is_Child?this.$parent.name||this.$parent.safeId():this.name)||null},buttonClasses:function t(){return["btn","btn-"+this.get_ButtonVariant,this.get_Size?"btn-"+this.get_Size:"",this.is_Disabled?"disabled":"",this.is_Checked?"active":"",this.hasFocus?"focus":""]}},methods:{handleFocus:function t(e){if(this.is_ButtonMode&&e.target){if(e.type==="focus"){this.hasFocus=true}else if(e.type==="blur"){this.hasFocus=false}}}}};var _r={props:{name:{type:String},id:{type:String},disabled:{type:Boolean},required:{type:Boolean,default:false}}};var $r={props:{size:{type:String,default:null}},computed:{sizeFormClass:function t(){return[this.size?"form-control-"+this.size:null]},sizeBtnClass:function t(){return[this.size?"btn-"+this.size:null]}}};var Cr={computed:{custom:function t(){return!this.plain}},props:{plain:{type:Boolean,default:false}}};function Br(t){return t!==null&&(typeof t==="undefined"?"undefined":i(t))==="object"}function xr(t,e){if(t===e)return true;var i=Br(t);var n=Br(e);if(i&&n){try{var r=C(t);var a=C(e);if(r&&a){return t.length===e.length&&t.every(function(t,i){return xr(t,e[i])})}else if(!r&&!a){var s=S(t);var o=S(e);return s.length===o.length&&s.every(function(i){return xr(t[i],e[i])})}else{return false}}catch(t){return false}}else if(!i&&!n){return String(t)===String(e)}else{return false}}var Er={mixins:[pe,Tr,_r,$r,br,Cr],render:function t(e){var i=this;var n=e("input",{ref:"check",class:[this.is_ButtonMode?"":this.is_Plain?"form-check-input":"custom-control-input",this.get_StateClass],directives:[{name:"model",rawName:"v-model",value:this.computedLocalChecked,expression:"computedLocalChecked"}],attrs:{id:this.safeId(),type:"checkbox",name:this.get_Name,disabled:this.is_Disabled,required:this.is_Required,autocomplete:"off","true-value":this.value,"false-value":this.uncheckedValue,"aria-required":this.is_Required?"true":null},domProps:{value:this.value,checked:this.is_Checked},on:{focus:this.handleFocus,blur:this.handleFocus,change:this.emitChange,__c:function t(e){var n=i.computedLocalChecked;var r=e.target;if(C(n)){var a=i.value;var s=i._i(n,a);if(r.checked){s<0&&(i.computedLocalChecked=n.concat([a]))}else{s>-1&&(i.computedLocalChecked=n.slice(0,s).concat(n.slice(s+1)))}}else{i.computedLocalChecked=r.checked?i.value:i.uncheckedValue}}}});var r=e(this.is_ButtonMode?"span":"label",{class:this.is_ButtonMode?null:this.is_Plain?"form-check-label":"custom-control-label",attrs:{for:this.is_ButtonMode?null:this.safeId()}},[this.$slots.default]);if(!this.is_ButtonMode){return e("div",{class:[this.is_Plain?"form-check":this.labelClasses,{"form-check-inline":this.is_Plain&&!this.is_Stacked},{"custom-control-inline":!this.is_Plain&&!this.is_Stacked}]},[n,r])}else{return e("label",{class:[this.buttonClasses]},[n,r])}},props:{value:{default:true},uncheckedValue:{default:false},indeterminate:{type:Boolean,default:false}},computed:{labelClasses:function t(){return["custom-control","custom-checkbox",this.get_Size?"form-control-"+this.get_Size:"",this.get_StateClass]},is_Checked:function t(){var e=this.computedLocalChecked;if(C(e)){for(var i=0;i0){this.onFileChange(e)}},traverseFileTree:function t(e,i){var n=this;return new Promise(function(t){i=i||"";if(e.isFile){e.file(function(e){e.$path=i;t(e)})}else if(e.isDirectory){e.createReader().readEntries(function(r){var a=[];for(var s=0;s=n.l&&r.bottom>=n.t&&r.left<=n.r&&r.top<=n.b){this.isShown=true;this.setListeners(false)}},onScroll:function t(){if(this.isShown){this.setListeners(false)}else{clearTimeout(this.scrollTimeout);this.scrollTimeout=setTimeout(this.checkView,parseInt(this.throttle,10)||Jr)}}}};var ta={bImg:Te,bImgLazy:Qr};var ea={install:function t(e){h(e,ta)}};g(ea);var ia={fluid:{type:Boolean,default:false},containerFluid:{type:Boolean,default:false},header:{type:String,default:null},headerTag:{type:String,default:"h1"},headerLevel:{type:[Number,String],default:"3"},lead:{type:String,default:null},leadTag:{type:String,default:"p"},tag:{type:String,default:"div"},bgVariant:{type:String,default:null},borderVariant:{type:String,default:null},textVariant:{type:String,default:null}};var na={functional:true,props:ia,render:function t(i,n){var r;var s=n.props,o=n.data,l=n.slots;var u=[];var f=l();if(s.header||f.header){u.push(i(s.headerTag,{class:a({},"display-"+s.headerLevel,Boolean(s.headerLevel))},f.header||s.header))}if(s.lead||f.lead){u.push(i(s.leadTag,{staticClass:"lead"},f.lead||s.lead))}if(f.default){u.push(f.default)}if(s.fluid){u=[i(Ee,{props:{fluid:s.containerFluid}},u)]}return i(s.tag,e(o,{staticClass:"jumbotron",class:(r={"jumbotron-fluid":s.fluid},a(r,"text-"+s.textVariant,Boolean(s.textVariant)),a(r,"bg-"+s.bgVariant,Boolean(s.bgVariant)),a(r,"border-"+s.borderVariant,Boolean(s.borderVariant)),a(r,"border",Boolean(s.borderVariant)),r)}),u)}};var ra={bJumbotron:na};var aa={install:function t(e){h(e,ra)}};g(aa);var sa={bLink:D};var oa={install:function t(e){h(e,sa)}};g(oa);var la={tag:{type:String,default:"div"},flush:{type:Boolean,default:false}};var ua={functional:true,props:la,render:function t(i,n){var r=n.props,a=n.data,s=n.children;var o={staticClass:"list-group",class:{"list-group-flush":r.flush}};return i(r.tag,e(a,o),s)}};var fa=["a","router-link","button","b-link"];var da=P();delete da.href.default;delete da.to.default;var ca=y({tag:{type:String,default:"div"},action:{type:Boolean,default:null},button:{type:Boolean,default:null},variant:{type:String,default:null}},da);var ha={functional:true,props:ca,render:function t(i,n){var r;var s=n.props,o=n.data,l=n.children;var u=s.button?"button":!s.href&&!s.to?s.tag:D;var f=Boolean(s.href||s.to||s.action||s.button||B(fa,s.tag));var d={staticClass:"list-group-item",class:(r={},a(r,"list-group-item-"+s.variant,Boolean(s.variant)),a(r,"list-group-item-action",f),a(r,"active",s.active),a(r,"disabled",s.disabled),r),attrs:u==="button"&&s.disabled?{disabled:true}:{},props:s.button?{}:O(da,s)};return i(u,e(o,d),l)}};var pa={bListGroup:ua,bListGroupItem:ha};var va={install:function t(e){h(e,pa)}};g(va);var ga={tag:{type:String,default:"div"}};var ma={functional:true,props:ga,render:function t(i,n){var r=n.props,a=n.data,s=n.children;return i(r.tag,e(a,{staticClass:"media-body"}),s)}};var ba={tag:{type:String,default:"div"},verticalAlign:{type:String,default:"top"}};var ya={functional:true,props:ba,render:function t(i,n){var r=n.props,s=n.data,o=n.children;return i(r.tag,e(s,{staticClass:"d-flex",class:a({},"align-self-"+r.verticalAlign,r.verticalAlign)}),o)}};var Sa={tag:{type:String,default:"div"},rightAlign:{type:Boolean,default:false},verticalAlign:{type:String,default:"top"},noBody:{type:Boolean,default:false}};var wa={functional:true,props:Sa,render:function t(i,n){var r=n.props,a=n.data,s=n.slots,o=n.children;var l=r.noBody?o:[];var u=s();if(!r.noBody){if(u.aside&&!r.rightAlign){l.push(i(ya,{staticClass:"mr-3",props:{verticalAlign:r.verticalAlign}},u.aside))}l.push(i(ma,u.default));if(u.aside&&r.rightAlign){l.push(i(ya,{staticClass:"ml-3",props:{verticalAlign:r.verticalAlign}},u.aside))}}return i(r.tag,e(a,{staticClass:"media"}),l)}};var ka={bMedia:wa,bMediaAside:ya,bMediaBody:ma};var Ta={install:function t(e){h(e,ka)}};g(Ta);var _a={FIXED_CONTENT:".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",STICKY_CONTENT:".sticky-top",NAVBAR_TOGGLER:".navbar-toggler"};var $a={subtree:true,childList:true,characterData:true,attributes:true,attributeFilter:["style","class"]};var Ca={mixins:[pe,Ze],components:{bBtn:_t,bBtnClose:f},render:function t(e){var i=this;var n=this.$slots;var r=e(false);if(!this.hideHeader){var a=n["modal-header"];if(!a){var s=e(false);if(!this.hideHeaderClose){s=e("b-btn-close",{props:{disabled:this.is_transitioning,ariaLabel:this.headerCloseLabel,textVariant:this.headerTextVariant},on:{click:function t(e){i.hide("header-close")}}},[n["modal-header-close"]])}a=[e(this.titleTag,{class:["modal-title"]},[n["modal-title"]||this.title]),s]}r=e("header",{ref:"header",class:this.headerClasses,attrs:{id:this.safeId("__BV_modal_header_")}},[a])}var o=e("div",{ref:"body",class:this.bodyClasses,attrs:{id:this.safeId("__BV_modal_body_")}},[n.default]);var l=e(false);if(!this.hideFooter){var u=n["modal-footer"];if(!u){var f=e(false);if(!this.okOnly){f=e("b-btn",{props:{variant:this.cancelVariant,size:this.buttonSize,disabled:this.cancelDisabled||this.busy||this.is_transitioning},on:{click:function t(e){i.hide("cancel")}}},[n["modal-cancel"]||this.cancelTitle])}var d=e("b-btn",{props:{variant:this.okVariant,size:this.buttonSize,disabled:this.okDisabled||this.busy||this.is_transitioning},on:{click:function t(e){i.hide("ok")}}},[n["modal-ok"]||this.okTitle]);u=[f,d]}l=e("footer",{ref:"footer",class:this.footerClasses,attrs:{id:this.safeId("__BV_modal_footer_")}},[u])}var c=e("div",{ref:"content",class:["modal-content"],attrs:{tabindex:"-1",role:"document","aria-labelledby":this.hideHeader?null:this.safeId("__BV_modal_header_"),"aria-describedby":this.safeId("__BV_modal_body_")},on:{focusout:this.onFocusout,click:function t(e){e.stopPropagation();i.$root.$emit("bv::dropdown::shown")}}},[r,o,l]);var h=e("div",{class:this.dialogClasses},[c]);var p=e("div",{ref:"modal",class:this.modalClasses,directives:[{name:"show",rawName:"v-show",value:this.is_visible,expression:"is_visible"}],attrs:{id:this.safeId(),role:"dialog","aria-hidden":this.is_visible?null:"true"},on:{click:this.onClickOut,keydown:this.onEsc}},[h]);p=e("transition",{props:{enterClass:"",enterToClass:"",enterActiveClass:"",leaveClass:"",leaveActiveClass:"",leaveToClass:""},on:{"before-enter":this.onBeforeEnter,enter:this.onEnter,"after-enter":this.onAfterEnter,"before-leave":this.onBeforeLeave,leave:this.onLeave,"after-leave":this.onAfterLeave}},[p]);var v=e(false);if(!this.hideBackdrop&&(this.is_visible||this.is_transitioning)){v=e("div",{class:this.backdropClasses,attrs:{id:this.safeId("__BV_modal_backdrop_")}})}var g=e(false);if(!this.is_hidden){g=e("div",{attrs:{id:this.safeId("__BV_modal_outer_")}},[p,v])}return e("div",{},[g])},data:function t(){return{is_hidden:this.lazy||false,is_visible:false,is_transitioning:false,is_show:false,is_block:false,scrollbarWidth:0,isBodyOverflowing:false,return_focus:this.returnFocus||null}},model:{prop:"visible",event:"change"},props:{title:{type:String,default:""},titleTag:{type:String,default:"h5"},size:{type:String,default:"md"},centered:{type:Boolean,default:false},buttonSize:{type:String,default:""},noFade:{type:Boolean,default:false},noCloseOnBackdrop:{type:Boolean,default:false},noCloseOnEsc:{type:Boolean,default:false},noEnforceFocus:{type:Boolean,default:false},headerBgVariant:{type:String,default:null},headerBorderVariant:{type:String,default:null},headerTextVariant:{type:String,default:null},headerClass:{type:[String,Array],default:null},bodyBgVariant:{type:String,default:null},bodyTextVariant:{type:String,default:null},modalClass:{type:[String,Array],default:null},bodyClass:{type:[String,Array],default:null},footerBgVariant:{type:String,default:null},footerBorderVariant:{type:String,default:null},footerTextVariant:{type:String,default:null},footerClass:{type:[String,Array],default:null},hideHeader:{type:Boolean,default:false},hideFooter:{type:Boolean,default:false},hideHeaderClose:{type:Boolean,default:false},hideBackdrop:{type:Boolean,default:false},okOnly:{type:Boolean,default:false},okDisabled:{type:Boolean,default:false},cancelDisabled:{type:Boolean,default:false},visible:{type:Boolean,default:false},returnFocus:{default:null},headerCloseLabel:{type:String,default:"Close"},cancelTitle:{type:String,default:"Cancel"},okTitle:{type:String,default:"OK"},cancelVariant:{type:String,default:"secondary"},okVariant:{type:String,default:"primary"},lazy:{type:Boolean,default:false},busy:{type:Boolean,default:false}},computed:{modalClasses:function t(){return["modal",{fade:!this.noFade,show:this.is_show,"d-block":this.is_block},this.modalClass]},dialogClasses:function t(){var e;return["modal-dialog",(e={},a(e,"modal-"+this.size,Boolean(this.size)),a(e,"modal-dialog-centered",this.centered),e)]},backdropClasses:function t(){return["modal-backdrop",{fade:!this.noFade,show:this.is_show||this.noFade}]},headerClasses:function t(){var e;return["modal-header",(e={},a(e,"bg-"+this.headerBgVariant,Boolean(this.headerBgVariant)),a(e,"text-"+this.headerTextVariant,Boolean(this.headerTextVariant)),a(e,"border-"+this.headerBorderVariant,Boolean(this.headerBorderVariant)),e),this.headerClass]},bodyClasses:function t(){var e;return["modal-body",(e={},a(e,"bg-"+this.bodyBgVariant,Boolean(this.bodyBgVariant)),a(e,"text-"+this.bodyTextVariant,Boolean(this.bodyTextVariant)),e),this.bodyClass]},footerClasses:function t(){var e;return["modal-footer",(e={},a(e,"bg-"+this.footerBgVariant,Boolean(this.footerBgVariant)),a(e,"text-"+this.footerTextVariant,Boolean(this.footerTextVariant)),a(e,"border-"+this.footerBorderVariant,Boolean(this.footerBorderVariant)),e),this.footerClass]}},watch:{visible:function t(e,i){if(e===i){return}this[e?"show":"hide"]()}},methods:{show:function t(){if(this.is_visible){return}var e=new Hn("show",{cancelable:true,vueTarget:this,target:this.$refs.modal,relatedTarget:null});this.emitEvent(e);if(e.defaultPrevented||this.is_visible){return}if(lt(document.body,"modal-open")){this.$root.$once("bv::modal::hidden",this.doShow)}else{this.doShow()}},hide:function t(e){if(!this.is_visible){return}var i=new Hn("hide",{cancelable:true,vueTarget:this,target:this.$refs.modal,relatedTarget:null,isOK:e||null,trigger:e||null,cancel:function t(){_e("b-modal: evt.cancel() is deprecated. Please use evt.preventDefault().");this.preventDefault()}});if(e==="ok"){this.$emit("ok",i)}else if(e==="cancel"){this.$emit("cancel",i)}this.emitEvent(i);if(i.defaultPrevented||!this.is_visible){return}if(this._observer){this._observer.disconnect();this._observer=null}this.is_visible=false;this.$emit("change",false)},doShow:function t(){var e=this;this.is_hidden=false;this.$nextTick(function(){e.is_visible=true;e.$emit("change",true);e._observer=he(e.$refs.content,e.adjustDialog.bind(e),$a)})},onBeforeEnter:function t(){this.is_transitioning=true;this.checkScrollbar();this.setScrollbar();this.adjustDialog();st(document.body,"modal-open");this.setResizeEvent(true)},onEnter:function t(){this.is_block=true;this.$refs.modal.scrollTop=0},onAfterEnter:function t(){var e=this;this.is_show=true;this.is_transitioning=false;this.$nextTick(function(){e.focusFirst();var t=new Hn("shown",{cancelable:false,vueTarget:e,target:e.$refs.modal,relatedTarget:null});e.emitEvent(t)})},onBeforeLeave:function t(){this.is_transitioning=true;this.setResizeEvent(false)},onLeave:function t(){this.is_show=false},onAfterLeave:function t(){var e=this;this.is_block=false;this.resetAdjustments();this.resetScrollbar();this.is_transitioning=false;ot(document.body,"modal-open");this.$nextTick(function(){e.is_hidden=e.lazy||false;e.returnFocusTo();var t=new Hn("hidden",{cancelable:false,vueTarget:e,target:e.lazy?null:e.$refs.modal,relatedTarget:null});e.emitEvent(t)})},emitEvent:function t(e){var i=e.type;this.$emit(i,e);this.$root.$emit("bv::modal::"+i,e)},onClickOut:function t(e){if(this.is_visible&&!this.noCloseOnBackdrop){this.hide("backdrop")}},onEsc:function t(e){if(e.keyCode===Pt.ESC&&this.is_visible&&!this.noCloseOnEsc){this.hide("esc")}},onFocusout:function t(e){var i=this.$refs.content;if(!this.noEnforceFocus&&this.is_visible&&i&&!i.contains(e.relatedTarget)){i.focus()}},setResizeEvent:function t(e){var i=this;["resize","orientationchange"].forEach(function(t){if(e){mt(window,t,i.adjustDialog)}else{bt(window,t,i.adjustDialog)}})},showHandler:function t(e,i){if(e===this.id){this.return_focus=i||null;this.show()}},hideHandler:function t(e){if(e===this.id){this.hide()}},modalListener:function t(e){if(e.vueTarget!==this){this.hide()}},focusFirst:function t(){if(typeof document==="undefined"){return}var e=this.$refs.content;var i=this.$refs.modal;var n=document.activeElement;if(n&&e&&e.contains(n));else if(e){if(i){i.scrollTop=0}e.focus()}},returnFocusTo:function t(){var e=this.returnFocus||this.return_focus||null;if(typeof e==="string"){e=it(e)}if(e){e=e.$el||e;if(J(e)){e.focus()}}},getScrollbarWidth:function t(){var e=document.createElement("div");e.className="modal-scrollbar-measure";document.body.appendChild(e);this.scrollbarWidth=e.getBoundingClientRect().width-e.clientWidth;document.body.removeChild(e)},adjustDialog:function t(){if(!this.is_visible){return}var e=this.$refs.modal;var i=e.scrollHeight>document.documentElement.clientHeight;if(!this.isBodyOverflowing&&i){e.style.paddingLeft=this.scrollbarWidth+"px"}if(this.isBodyOverflowing&&!i){e.style.paddingRight=this.scrollbarWidth+"px"}},resetAdjustments:function t(){var e=this.$refs.modal;if(e){e.style.paddingLeft="";e.style.paddingRight=""}},checkScrollbar:function t(){var e=ht(document.body);this.isBodyOverflowing=e.left+e.right' instead.")}return i(r.tag,e(a,{class:{nav:!r.isNavBar,"navbar-nav":r.isNavBar,"nav-tabs":r.tabs&&!r.isNavBar,"nav-pills":r.pills&&!r.isNavBar,"flex-column":r.vertical&&!r.isNavBar,"nav-fill":r.fill,"nav-justified":r.justified}}),s)}};var Na=P();var Aa={functional:true,props:Na,render:function t(i,n){var r=n.props,a=n.data,s=n.children;return i("li",e(a,{staticClass:"nav-item"}),[i(D,{staticClass:"nav-link",props:r},s)])}};var Da={tag:{type:String,default:"span"}};var Va={functional:true,props:Da,render:function t(i,n){var r=n.props,a=n.data,s=n.children;return i(r.tag,e(a,{staticClass:"navbar-text"}),s)}};var Ma={functional:true,props:{id:{type:String,default:null}},render:function t(i,n){var r=n.props,a=n.data,s=n.children;return i(ur,e(a,{attrs:{id:r.id},props:{inline:true}}),s)}};var ja={mixins:[pe,Un],render:function t(e){var i=e("a",{class:this.toggleClasses,ref:"toggle",attrs:{href:"#",id:this.safeId("_BV_button_"),disabled:this.disabled,"aria-haspopup":"true","aria-expanded":this.visible?"true":"false"},on:{click:this.toggle,keydown:this.toggle}},[this.$slots["button-content"]||this.$slots.text||e("span",{domProps:{innerHTML:this.text}})]);var n=e("div",{class:this.menuClasses,ref:"menu",attrs:{"aria-labelledby":this.safeId("_BV_button_")},on:{mouseover:this.onMouseOver,keydown:this.onKeydown}},[this.$slots.default]);return e("li",{attrs:{id:this.safeId()},class:this.dropdownClasses},[i,n])},computed:{isNav:function t(){return true},dropdownClasses:function t(){return["nav-item","b-nav-dropdown","dropdown",this.dropup?"dropup":"",this.visible?"show":""]},toggleClasses:function t(){return["nav-link",this.noCaret?"":"dropdown-toggle",this.disabled?"disabled":"",this.extraToggleClasses?this.extraToggleClasses:""]},menuClasses:function t(){return["dropdown-menu",this.right?"dropdown-menu-right":"dropdown-menu-left",this.visible?"show":"",this.extraMenuClasses?this.extraMenuClasses:""]}},props:{noCaret:{type:Boolean,default:false},extraToggleClasses:{type:String,default:""},extraMenuClasses:{type:String,default:""},role:{type:String,default:"menu"}}};var Ra={bNav:Fa,bNavItem:Aa,bNavText:Va,bNavForm:Ma,bNavItemDropdown:ja,bNavItemDd:ja,bNavDropdown:ja,bNavDd:ja};var Ha={install:function t(e){h(e,Ra);e.use(nr)}};g(Ha);var za={tag:{type:String,default:"nav"},type:{type:String,default:"light"},variant:{type:String},toggleable:{type:[Boolean,String],default:false},toggleBreakpoint:{type:String,default:null},fixed:{type:String},sticky:{type:Boolean,default:false}};var Wa={functional:true,props:za,render:function t(i,n){var r;var s=n.props,o=n.data,l=n.children;var u=s.toggleBreakpoint||(s.toggleable===true?"sm":s.toggleable)||"sm";return i(s.tag,e(o,{staticClass:"navbar",class:(r={},a(r,"navbar-"+s.type,Boolean(s.type)),a(r,"bg-"+s.variant,Boolean(s.variant)),a(r,"fixed-"+s.fixed,Boolean(s.fixed)),a(r,"sticky-top",s.sticky),a(r,"navbar-expand-"+u,s.toggleable!==false),r)}),l)}};var Ga={tag:{type:String,default:"ul"},fill:{type:Boolean,default:false},justified:{type:Boolean,default:false}};var Ua={functional:true,props:Ga,render:function t(i,n){var r=n.props,a=n.data,s=n.children;return i(r.tag,e(a,{staticClass:"navbar-nav",class:{"nav-fill":r.fill,"nav-justified":r.justified}}),s)}};var qa=P();qa.href.default=undefined;qa.to.default=undefined;var Ka=y(qa,{tag:{type:String,default:"div"}});var Ya={functional:true,props:Ka,render:function t(i,n){var r=n.props,a=n.data,s=n.children;var o=Boolean(r.to||r.href);var l=o?D:r.tag;return i(l,e(a,{staticClass:"navbar-brand",props:o?O(qa,r):{}}),s)}};var Za={mixins:[Ze],render:function t(e){return e("button",{class:["navbar-toggler"],attrs:{type:"button","aria-label":this.label,"aria-controls":this.target,"aria-expanded":this.toggleState?"true":"false"},on:{click:this.onClick}},[this.$slots.default||e("span",{class:["navbar-toggler-icon"]})])},data:function t(){return{toggleState:false}},props:{label:{type:String,default:"Toggle navigation"},target:{type:String,required:true}},methods:{onClick:function t(){this.$root.$emit("bv::toggle::collapse",this.target)},handleStateEvt:function t(e,i){if(e===this.target){this.toggleState=i}}},created:function t(){this.listenOnRoot("bv::collapse::state",this.handleStateEvt)}};var Xa={bNavbar:Wa,bNavbarNav:Ua,bNavbarBrand:Ya,bNavbarToggle:Za,bNavToggle:Za};var Ja={install:function t(e){h(e,Xa);e.use(Ha);e.use(pi);e.use(nr)}};g(Ja);var Qa=function(t){return Array.apply(null,{length:t})};function ts(t,e){return Qa(e).map(function(e,i){return{number:i+t,className:null}})}var es=3;var is={disabled:{type:Boolean,default:false},value:{type:Number,default:1},limit:{type:Number,default:5},size:{type:String,default:"md"},align:{type:String,default:"left"},hideGotoEndButtons:{type:Boolean,default:false},ariaLabel:{type:String,default:"Pagination"},labelFirstPage:{type:String,default:"Goto first page"},firstText:{type:String,default:"«"},labelPrevPage:{type:String,default:"Goto previous page"},prevText:{type:String,default:"‹"},labelNextPage:{type:String,default:"Goto next page"},nextText:{type:String,default:"›"},labelLastPage:{type:String,default:"Goto last page"},lastText:{type:String,default:"»"},labelPage:{type:String,default:"Goto page"},hideEllipsis:{type:Boolean,default:false},ellipsisText:{type:String,default:"…"}};var ns={components:{bLink:D},data:function t(){return{showFirstDots:false,showLastDots:false,currentPage:this.value}},props:is,render:function t(e){var i=this;var n=[];var r=function t(n,r,a,s){var o=void 0;s=s||n;if(i.disabled||i.isActive(s)){o=e("li",{class:["page-item","disabled"],attrs:{role:"none presentation","aria-hidden":"true"}},[e("span",{class:["page-link"],domProps:{innerHTML:a}})])}else{o=e("li",{class:["page-item"],attrs:{role:"none presentation"}},[e("b-link",{class:["page-link"],props:i.linkProps(n),attrs:{role:"menuitem",tabindex:"-1","aria-label":r,"aria-controls":i.ariaControls||null},on:{click:function t(e){i.onClick(n,e)},keydown:function t(e){if(e.keyCode===Pt.SPACE){e.preventDefault();i.onClick(n,e)}}}},[e("span",{attrs:{"aria-hidden":"true"},domProps:{innerHTML:a}})])])}return o};var a=function t(){return e("li",{class:["page-item","disabled","d-none","d-sm-flex"],attrs:{role:"separator"}},[e("span",{class:["page-link"],domProps:{innerHTML:i.ellipsisText}})])};n.push(this.hideGotoEndButtons?e(false):r(1,this.labelFirstPage,this.firstText));n.push(r(this.currentPage-1,this.labelPrevPage,this.prevText,1));n.push(this.showFirstDots?a():e(false));this.pageList.forEach(function(t){var r=void 0;var a=i.makePage(t.number);if(i.disabled){r=e("span",{class:["page-link"],domProps:{innerHTML:a}})}else{var s=i.isActive(t.number);r=e("b-link",{class:i.pageLinkClasses(t),props:i.linkProps(t.number),attrs:{role:"menuitemradio",tabindex:s?"0":"-1","aria-controls":i.ariaControls||null,"aria-label":i.labelPage+" "+t.number,"aria-checked":s?"true":"false","aria-posinset":t.number,"aria-setsize":i.numberOfPages},domProps:{innerHTML:a},on:{click:function e(n){i.onClick(t.number,n)},keydown:function e(n){if(n.keyCode===Pt.SPACE){n.preventDefault();i.onClick(t.number,n)}}}})}n.push(e("li",{key:t.number,class:i.pageItemClasses(t),attrs:{role:"none presentation"}},[r]))});n.push(this.showLastDots?a():e(false));n.push(r(this.currentPage+1,this.labelNextPage,this.nextText,this.numberOfPages));n.push(this.hideGotoEndButtons?e(false):r(this.numberOfPages,this.labelLastPage,this.lastText));var s=e("ul",{ref:"ul",class:["pagination","b-pagination",this.btnSize,this.alignment],attrs:{role:"menubar","aria-disabled":this.disabled?"true":"false","aria-label":this.ariaLabel||null},on:{keydown:function t(e){var n=e.keyCode;var r=e.shiftKey;if(n===Pt.LEFT){e.preventDefault();r?i.focusFirst():i.focusPrev()}else if(n===Pt.RIGHT){e.preventDefault();r?i.focusLast():i.focusNext()}}}},n);return this.isNav?e("nav",{},[s]):s},watch:{currentPage:function t(e,i){if(e!==i){this.$emit("input",e)}},value:function t(e,i){if(e!==i){this.currentPage=e}}},computed:{btnSize:function t(){return this.size?"pagination-"+this.size:""},alignment:function t(){if(this.align==="center"){return"justify-content-center"}else if(this.align==="end"||this.align==="right"){return"justify-content-end"}return""},pageList:function t(){if(this.currentPage>this.numberOfPages){this.currentPage=this.numberOfPages}else if(this.currentPage<1){this.currentPage=1}this.showFirstDots=false;this.showLastDots=false;var e=this.limit;var i=1;if(this.numberOfPages<=this.limit){e=this.numberOfPages}else if(this.currentPagees){if(!this.hideEllipsis){e=this.limit-1;this.showLastDots=true}}else if(this.numberOfPages-this.currentPage+2es){if(!this.hideEllipsis){this.showFirstDots=true;e=this.limit-1}i=this.numberOfPages-e+1}else{if(this.limit>es&&!this.hideEllipsis){this.showFirstDots=true;this.showLastDots=true;e=this.limit-2}i=this.currentPage-Math.floor(e/2)}if(i<1){i=1}else if(i>this.numberOfPages-e){i=this.numberOfPages-e+1}var n=ts(i,e);if(n.length>3){var r=this.currentPage-i;if(r===0){for(var a=3;ar+1;l--){n[l].className="d-none d-sm-flex"}}}return n}},methods:{isActive:function t(e){return e===this.currentPage},pageItemClasses:function t(e){return["page-item",this.disabled?"disabled":"",this.isActive(e.number)?"active":"",e.className]},pageLinkClasses:function t(e){return["page-link",this.disabled?"disabled":"",this.isActive(e.number)?"btn-primary":""]},getButtons:function t(){return et("a.page-link",this.$el).filter(function(t){return J(t)})},setBtnFocus:function t(e){this.$nextTick(function(){e.focus()})},focusCurrent:function t(){var e=this;var i=this.getButtons().find(function(t){return parseInt(dt(t,"aria-posinset"),10)===e.currentPage});if(i&&i.focus){this.setBtnFocus(i)}else{this.focusFirst()}},focusFirst:function t(){var e=this.getButtons().find(function(t){return!Q(t)});if(e&&e.focus&&e!==document.activeElement){this.setBtnFocus(e)}},focusLast:function t(){var e=this.getButtons().reverse().find(function(t){return!Q(t)});if(e&&e.focus&&e!==document.activeElement){this.setBtnFocus(e)}},focusPrev:function t(){var e=this.getButtons();var i=e.indexOf(document.activeElement);if(i>0&&!Q(e[i-1])&&e[i-1].focus){this.setBtnFocus(e[i-1])}},focusNext:function t(){var e=this.getButtons();var i=e.indexOf(document.activeElement);var n=e.length-1;if(ithis.numberOfPages){e=this.numberOfPages}else if(e<1){e=1}this.currentPage=e;this.$nextTick(function(){var t=i.target;if(J(t)&&n.$el.contains(t)&&t.focus){t.focus()}else{n.focusCurrent()}});this.$emit("change",this.currentPage)},makePage:function t(e){return e},linkProps:function t(e){return{href:"#"}}}};var ss={bPagination:as};var os={install:function t(e){h(e,ss)}};g(os);var ls=I("activeClass","exactActiveClass","append","exact","replace","target","rel");var us=y({numberOfPages:{type:Number,default:1},baseUrl:{type:String,default:"/"},useRouter:{type:Boolean,default:false},linkGen:{type:Function,default:null},pageGen:{type:Function,default:null}},ls);var fs={mixins:[ns],props:us,computed:{isNav:function t(){return true}},methods:{onClick:function t(e,i){this.currentPage=e},makePage:function t(e){if(this.pageGen&&typeof this.pageGen==="function"){return this.pageGen(e)}return e},makeLink:function t(e){if(this.linkGen&&typeof this.linkGen==="function"){return this.linkGen(e)}var i=""+this.baseUrl+e;return this.useRouter?{path:i}:i},linkProps:function t(e){var n=this.makeLink(e);var r={href:typeof n==="string"?n:void 0,target:this.target||null,rel:this.rel||null,disabled:this.disabled};if(this.useRouter||(typeof n==="undefined"?"undefined":i(n))==="object"){r=y(r,{to:n,exact:this.exact,activeClass:this.activeClass,exactActiveClass:this.exactActiveClass,append:this.append,replace:this.replace})}return r}}};var ds={bPaginationNav:fs};var cs={install:function t(e){h(e,ds)}};g(cs);var hs="tooltip";var ps="bs-tooltip";var vs=new RegExp("\\b"+ps+"\\S+","g");var gs=150;var ms="bv::modal::hidden";var bs=".modal-content";var ys={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left",TOPLEFT:"top",TOPRIGHT:"top",RIGHTTOP:"right",RIGHTBOTTOM:"right",BOTTOMLEFT:"bottom",BOTTOMRIGHT:"bottom",LEFTTOP:"left",LEFTBOTTOM:"left"};var Ss={AUTO:0,TOPLEFT:-1,TOP:0,TOPRIGHT:+1,RIGHTTOP:-1,RIGHT:0,RIGHTBOTTOM:+1,BOTTOMLEFT:-1,BOTTOM:0,BOTTOMRIGHT:+1,LEFTTOP:-1,LEFT:0,LEFTBOTTOM:+1};var ws={SHOW:"show",OUT:"out"};var ks={FADE:"fade",SHOW:"show"};var Ts={TOOLTIP:".tooltip",TOOLTIP_INNER:".tooltip-inner",ARROW:".arrow"};var _s={animation:true,template:'",trigger:"hover focus",title:"",delay:0,html:false,placement:"top",offset:0,arrowPadding:6,container:false,fallbackPlacement:"flip",callbacks:{},boundary:"scrollParent"};var $s={WebkitTransition:["webkitTransitionEnd"],MozTransition:["transitionend"],OTransition:["otransitionend","oTransitionEnd"],transition:["transitionend"]};var Cs=1;function Bs(t){return"__BV_"+t+"_"+Cs+++"__"}var xs=function(){function t(e,i,r){n(this,t);this.$isEnabled=true;this.$fadeTimeout=null;this.$hoverTimeout=null;this.$visibleInterval=null;this.$hoverState="";this.$activeTrigger={};this.$popper=null;this.$element=e;this.$tip=null;this.$id=Bs(this.constructor.NAME);this.$root=r||null;this.$routeWatcher=null;this.$forceHide=this.forceHide.bind(this);this.$doHide=this.doHide.bind(this);this.$doShow=this.doShow.bind(this);this.$doDisable=this.doDisable.bind(this);this.$doEnable=this.doEnable.bind(this);this.updateConfig(i)}r(t,[{key:"updateConfig",value:function t(e){var i=y({},this.constructor.Default,e);if(e.delay&&typeof e.delay==="number"){i.delay={show:e.delay,hide:e.delay}}if(e.title&&typeof e.title==="number"){i.title=e.title.toString()}if(e.content&&typeof e.content==="number"){i.content=e.content.toString()}this.fixTitle();this.$config=i;this.unListen();this.listen()}},{key:"destroy",value:function t(){this.unListen();this.setWhileOpenListeners(false);clearTimeout(this.$hoverTimeout);this.$hoverTimeout=null;clearTimeout(this.$fadeTimeout);this.$fadeTimeout=null;if(this.$popper){this.$popper.destroy()}this.$popper=null;if(this.$tip&&this.$tip.parentElement){this.$tip.parentElement.removeChild(this.$tip)}this.$tip=null;this.$id=null;this.$isEnabled=null;this.$root=null;this.$element=null;this.$config=null;this.$hoverState=null;this.$activeTrigger=null;this.$forceHide=null;this.$doHide=null;this.$doShow=null;this.$doDisable=null;this.$doEnable=null}},{key:"enable",value:function t(){var e=new Hn("enabled",{cancelable:false,target:this.$element,relatedTarget:null});this.$isEnabled=true;this.emitEvent(e)}},{key:"disable",value:function t(){var e=new Hn("disabled",{cancelable:false,target:this.$element,relatedTarget:null});this.$isEnabled=false;this.emitEvent(e)}},{key:"toggle",value:function t(e){if(!this.$isEnabled){return}if(e){this.$activeTrigger.click=!this.$activeTrigger.click;if(this.isWithActiveTrigger()){this.enter(null)}else{this.leave(null)}}else{if(lt(this.getTipElement(),ks.SHOW)){this.leave(null)}else{this.enter(null)}}}},{key:"show",value:function t(){var e=this;if(!document.body.contains(this.$element)||!J(this.$element)){return}var i=this.getTipElement();this.fixTitle();this.setContent(i);if(!this.isWithContent(i)){this.$tip=null;return}ut(i,"id",this.$id);this.addAriaDescribedby();if(this.$config.animation){st(i,ks.FADE)}else{ot(i,ks.FADE)}var n=this.getPlacement();var r=this.constructor.getAttachment(n);this.addAttachmentClass(r);var a=new Hn("show",{cancelable:true,target:this.$element,relatedTarget:i});this.emitEvent(a);if(a.defaultPrevented){this.$tip=null;return}var s=this.getContainer();if(!document.body.contains(i)){s.appendChild(i)}this.removePopper();this.$popper=new jn(this.$element,i,this.getPopperConfig(n,i));var o=function t(){if(e.$config.animation){e.fixTransition(i)}var n=e.$hoverState;e.$hoverState=null;if(n===ws.OUT){e.leave(null)}var r=new Hn("shown",{cancelable:false,target:e.$element,relatedTarget:i});e.emitEvent(r)};this.setWhileOpenListeners(true);st(i,ks.SHOW);this.transitionOnce(i,o)}},{key:"visibleCheck",value:function t(e){var i=this;clearInterval(this.$visibleInterval);this.$visibleInterval=null;if(e){this.$visibleInterval=setInterval(function(){var t=i.getTipElement();if(t&&!J(i.$element)&<(t,ks.SHOW)){i.forceHide()}},100)}}},{key:"setWhileOpenListeners",value:function t(e){this.setModalListener(e);this.visibleCheck(e);this.setRouteWatcher(e);this.setOnTouchStartListener(e);if(e&&/(focus|blur)/.test(this.$config.trigger)){mt(this.$tip,"focusout",this)}else{bt(this.$tip,"focusout",this)}}},{key:"forceHide",value:function t(){if(!this.$tip||!lt(this.$tip,ks.SHOW)){return}this.setWhileOpenListeners(false);clearTimeout(this.$hoverTimeout);this.$hoverTimeout=null;this.$hoverState="";this.hide(null,true)}},{key:"hide",value:function t(e,i){var n=this;var r=this.$tip;if(!r){return}var a=new Hn("hide",{cancelable:!i,target:this.$element,relatedTarget:r});this.emitEvent(a);if(a.defaultPrevented){return}var s=function t(){if(n.$hoverState!==ws.SHOW&&r.parentNode){r.parentNode.removeChild(r);n.removeAriaDescribedby();n.removePopper();n.$tip=null}if(e){e()}var i=new Hn("hidden",{cancelable:false,target:n.$element,relatedTarget:null});n.emitEvent(i)};this.setWhileOpenListeners(false);if(i){ot(r,ks.FADE)}ot(r,ks.SHOW);this.$activeTrigger.click=false;this.$activeTrigger.focus=false;this.$activeTrigger.hover=false;this.transitionOnce(r,s);this.$hoverState=""}},{key:"emitEvent",value:function t(e){var i=e.type;if(this.$root&&this.$root.$emit){this.$root.$emit("bv::"+this.constructor.NAME+"::"+i,e)}var n=this.$config.callbacks||{};if(typeof n[i]==="function"){n[i](e)}}},{key:"getContainer",value:function t(){var e=this.$config.container;var i=document.body;return e===false?rt(bs,this.$element)||i:it(e,i)||i}},{key:"addAriaDescribedby",value:function t(){var e=dt(this.$element,"aria-describedby")||"";e=e.split(/\s+/).concat(this.$id).join(" ").trim();ut(this.$element,"aria-describedby",e)}},{key:"removeAriaDescribedby",value:function t(){var e=this;var i=dt(this.$element,"aria-describedby")||"";i=i.split(/\s+/).filter(function(t){return t!==e.$id}).join(" ").trim();if(i){ut(this.$element,"aria-describedby",i)}else{ft(this.$element,"aria-describedby")}}},{key:"removePopper",value:function t(){if(this.$popper){this.$popper.destroy()}this.$popper=null}},{key:"transitionOnce",value:function t(e,i){var n=this;var r=this.getTransitionEndEvents();var a=false;clearTimeout(this.$fadeTimeout);this.$fadeTimeout=null;var s=function t(){if(a){return}a=true;clearTimeout(n.$fadeTimeout);n.$fadeTimeout=null;r.forEach(function(i){bt(e,i,t)});i()};if(lt(e,ks.FADE)){r.forEach(function(t){mt(e,t,s)});this.$fadeTimeout=setTimeout(s,gs)}else{s()}}},{key:"getTransitionEndEvents",value:function t(){for(var e in $s){if(this.$element.style[e]!==undefined){return $s[e]}}return[]}},{key:"update",value:function t(){if(this.$popper!==null){this.$popper.scheduleUpdate()}}},{key:"isWithContent",value:function t(e){e=e||this.$tip;if(!e){return false}return Boolean((it(Ts.TOOLTIP_INNER,e)||{}).innerHTML)}},{key:"addAttachmentClass",value:function t(e){st(this.getTipElement(),ps+"-"+e)}},{key:"getTipElement",value:function t(){if(!this.$tip){this.$tip=this.compileTemplate(this.$config.template)||this.compileTemplate(this.constructor.Default.template)}this.$tip.tabIndex=-1;return this.$tip}},{key:"compileTemplate",value:function t(e){if(!e||typeof e!=="string"){return null}var i=document.createElement("div");i.innerHTML=e.trim();var n=i.firstElementChild?i.removeChild(i.firstElementChild):null;i=null;return n}},{key:"setContent",value:function t(e){this.setElementContent(it(Ts.TOOLTIP_INNER,e),this.getTitle());ot(e,ks.FADE);ot(e,ks.SHOW)}},{key:"setElementContent",value:function t(e,n){if(!e){return}var r=this.$config.html;if((typeof n==="undefined"?"undefined":i(n))==="object"&&n.nodeType){if(r){if(n.parentElement!==e){e.innerHtml="";e.appendChild(n)}}else{e.innerText=n.innerText}}else{e[r?"innerHTML":"innerText"]=n}}},{key:"getTitle",value:function t(){var e=this.$config.title||"";if(typeof e==="function"){e=e(this.$element)}if((typeof e==="undefined"?"undefined":i(e))==="object"&&e.nodeType&&!e.innerHTML.trim()){e=""}if(typeof e==="string"){e=e.trim()}if(!e){e=dt(this.$element,"title")||dt(this.$element,"data-original-title")||"";e=e.trim()}return e}},{key:"listen",value:function t(){var e=this;var i=this.$config.trigger.trim().split(/\s+/);var n=this.$element;this.setRootListener(true);i.forEach(function(t){if(t==="click"){mt(n,"click",e)}else if(t==="focus"){mt(n,"focusin",e);mt(n,"focusout",e)}else if(t==="blur"){mt(n,"focusout",e)}else if(t==="hover"){mt(n,"mouseenter",e);mt(n,"mouseleave",e)}},this)}},{key:"unListen",value:function t(){var e=this;var i=["click","focusin","focusout","mouseenter","mouseleave"];i.forEach(function(t){bt(e.$element,t,e)},this);this.setRootListener(false)}},{key:"handleEvent",value:function t(e){if(Q(this.$element)){return}if(!this.$isEnabled){return}var i=e.type;var n=e.target;var r=e.relatedTarget;var a=this.$element;var s=this.$tip;if(i==="click"){this.toggle(e)}else if(i==="focusin"||i==="mouseenter"){this.enter(e)}else if(i==="focusout"){if(s&&a&&a.contains(n)&&s.contains(r)){return}if(s&&a&&s.contains(n)&&a.contains(r)){return}if(s&&s.contains(n)&&s.contains(r)){return}if(a&&a.contains(n)&&a.contains(r)){return}this.leave(e)}else if(i==="mouseleave"){this.leave(e)}}},{key:"setRouteWatcher",value:function t(e){var i=this;if(e){this.setRouteWatcher(false);if(this.$root&&Boolean(this.$root.$route)){this.$routeWatcher=this.$root.$watch("$route",function(t,e){if(t===e){return}i.forceHide()})}}else{if(this.$routeWatcher){this.$routeWatcher();this.$routeWatcher=null}}}},{key:"setModalListener",value:function t(e){var i=rt(bs,this.$element);if(!i){return}if(this.$root){this.$root[e?"$on":"$off"](ms,this.$forceHide)}}},{key:"setRootListener",value:function t(e){if(this.$root){this.$root[e?"$on":"$off"]("bv::hide::"+this.constructor.NAME,this.$doHide);this.$root[e?"$on":"$off"]("bv::show::"+this.constructor.NAME,this.$doShow);this.$root[e?"$on":"$off"]("bv::disable::"+this.constructor.NAME,this.$doDisable);this.$root[e?"$on":"$off"]("bv::enable::"+this.constructor.NAME,this.$doEnable)}}},{key:"doHide",value:function t(e){if(!e){this.forceHide()}else if(this.$element&&this.$element.id&&this.$element.id===e){this.hide()}}},{key:"doShow",value:function t(e){if(!e){this.show()}else if(e&&this.$element&&this.$element.id&&this.$element.id===e){this.show()}}},{key:"doDisable",value:function t(e){if(!e){this.disable()}else if(this.$element&&this.$element.id&&this.$element.id===e){this.disable()}}},{key:"doEnable",value:function t(e){if(!e){this.enable()}else if(this.$element&&this.$element.id&&this.$element.id===e){this.enable()}}},{key:"setOnTouchStartListener",value:function t(e){var i=this;if("ontouchstart"in document.documentElement){$(document.body.children).forEach(function(t){if(e){mt(t,"mouseover",i._noop)}else{bt(t,"mouseover",i._noop)}})}}},{key:"_noop",value:function t(){}},{key:"fixTitle",value:function t(){var e=this.$element;var n=i(dt(e,"data-original-title"));if(dt(e,"title")||n!=="string"){ut(e,"data-original-title",dt(e,"title")||"");ut(e,"title","")}}},{key:"enter",value:function t(e){var i=this;if(e){this.$activeTrigger[e.type==="focusin"?"focus":"hover"]=true}if(lt(this.getTipElement(),ks.SHOW)||this.$hoverState===ws.SHOW){this.$hoverState=ws.SHOW;return}clearTimeout(this.$hoverTimeout);this.$hoverState=ws.SHOW;if(!this.$config.delay||!this.$config.delay.show){this.show();return}this.$hoverTimeout=setTimeout(function(){if(i.$hoverState===ws.SHOW){i.show()}},this.$config.delay.show)}},{key:"leave",value:function t(e){var i=this;if(e){this.$activeTrigger[e.type==="focusout"?"focus":"hover"]=false;if(e.type==="focusout"&&/blur/.test(this.$config.trigger)){this.$activeTrigger.click=false;this.$activeTrigger.hover=false}}if(this.isWithActiveTrigger()){return}clearTimeout(this.$hoverTimeout);this.$hoverState=ws.OUT;if(!this.$config.delay||!this.$config.delay.hide){this.hide();return}this.$hoverTimeout=setTimeout(function(){if(i.$hoverState===ws.OUT){i.hide()}},this.$config.delay.hide)}},{key:"getPopperConfig",value:function t(e,i){var n=this;return{placement:this.constructor.getAttachment(e),modifiers:{offset:{offset:this.getOffset(e,i)},flip:{behavior:this.$config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.$config.boundary}},onCreate:function t(e){if(e.originalPlacement!==e.placement){n.handlePopperPlacementChange(e)}},onUpdate:function t(e){n.handlePopperPlacementChange(e)}}}},{key:"getOffset",value:function t(e,i){if(!this.$config.offset){var n=it(Ts.ARROW,i);var r=parseFloat(pt(n).width)+parseFloat(this.$config.arrowPadding);switch(Ss[e.toUpperCase()]){case+1:return"+50%p - "+r+"px";case-1:return"-50%p + "+r+"px";default:return 0}}return this.$config.offset}},{key:"getPlacement",value:function t(){var e=this.$config.placement;if(typeof e==="function"){return e.call(this,this.$tip,this.$element)}return e}},{key:"isWithActiveTrigger",value:function t(){for(var e in this.$activeTrigger){if(this.$activeTrigger[e]){return true}}return false}},{key:"cleanTipClass",value:function t(){var e=this.getTipElement();var i=e.className.match(vs);if(i!==null&&i.length>0){i.forEach(function(t){ot(e,t)})}}},{key:"handlePopperPlacementChange",value:function t(e){this.cleanTipClass();this.addAttachmentClass(this.constructor.getAttachment(e.placement))}},{key:"fixTransition",value:function t(e){var i=this.$config.animation||false;if(dt(e,"x-placement")!==null){return}ot(e,ks.FADE);this.$config.animation=false;this.hide();this.show();this.$config.animation=i}}],[{key:"getAttachment",value:function t(e){return ys[e.toUpperCase()]}},{key:"Default",get:function t(){return _s}},{key:"NAME",get:function t(){return hs}}]);return t}();var Es="popover";var Os="bs-popover";var Ps=new RegExp("\\b"+Os+"\\S+","g");var Is=y({},xs.Default,{placement:"right",trigger:"click",content:"",template:''});var Ls={FADE:"fade",SHOW:"show"};var Fs={TITLE:".popover-header",CONTENT:".popover-body"};var Ns=function(t){s(e,t);function e(){n(this,e);return o(this,(e.__proto__||Object.getPrototypeOf(e)).apply(this,arguments))}r(e,[{key:"isWithContent",value:function t(e){e=e||this.$tip;if(!e){return false}var i=Boolean((it(Fs.TITLE,e)||{}).innerHTML);var n=Boolean((it(Fs.CONTENT,e)||{}).innerHTML);return i||n}},{key:"addAttachmentClass",value:function t(e){st(this.getTipElement(),Os+"-"+e)}},{key:"setContent",value:function t(e){this.setElementContent(it(Fs.TITLE,e),this.getTitle());this.setElementContent(it(Fs.CONTENT,e),this.getContent());ot(e,Ls.FADE);ot(e,Ls.SHOW)}},{key:"cleanTipClass",value:function t(){var e=this.getTipElement();var i=e.className.match(Ps);if(i!==null&&i.length>0){i.forEach(function(t){ot(e,t)})}}},{key:"getTitle",value:function t(){var e=this.$config.title||"";if(typeof e==="function"){e=e(this.$element)}if((typeof e==="undefined"?"undefined":i(e))==="object"&&e.nodeType&&!e.innerHTML.trim()){e=""}if(typeof e==="string"){e=e.trim()}if(!e){e=dt(this.$element,"title")||dt(this.$element,"data-original-title")||"";e=e.trim()}return e}},{key:"getContent",value:function t(){var e=this.$config.content||"";if(typeof e==="function"){e=e(this.$element)}if((typeof e==="undefined"?"undefined":i(e))==="object"&&e.nodeType&&!e.innerHTML.trim()){e=""}if(typeof e==="string"){e=e.trim()}return e}}],[{key:"Default",get:function t(){return Is}},{key:"NAME",get:function t(){return Es}}]);return e}(xs);var As=typeof window==="undefined";var Ds=As?Object:window.HTMLElement;var Vs={top:"top",topleft:"topleft",topright:"topright",right:"right",righttop:"righttop",rightbottom:"rightbottom",bottom:"bottom",bottomleft:"bottomleft",bottomright:"bottomright",left:"left",lefttop:"lefttop",leftbottom:"leftbottom",auto:"auto"};var Ms={subtree:true,childList:true,characterData:true,attributes:true,attributeFilter:["class","style"]};var js={props:{target:{type:[String,Object,Ds,Function]},delay:{type:[Number,Object,String],default:0},offset:{type:[Number,String],default:0},noFade:{type:Boolean,default:false},container:{type:String,default:null},boundary:{type:[String,Object],default:"scrollParent"},show:{type:Boolean,default:false},disabled:{type:Boolean,default:false}},watch:{show:function t(e,i){if(e===i){return}e?this.onOpen():this.onClose()},disabled:function t(e,i){if(e===i){return}e?this.onDisable():this.onEnable()}},created:function t(){this._toolpop=null;this._obs_title=null;this._obs_content=null},mounted:function t(){var e=this;this.$nextTick(function(){if(e.createToolpop()){if(e.disabled){e.onDisable()}e.$on("open",e.onOpen);e.$on("close",e.onClose);e.$on("disable",e.onDisable);e.$on("enable",e.onEnable);e.setObservers(true);if(e.show){e.onOpen()}}})},updated:function t(){if(this._toolpop){this._toolpop.updateConfig(this.getConfig())}},activated:function t(){this.setObservers(true)},deactivated:function t(){if(this._toolpop){this.setObservers(false);this._toolpop.hide()}},beforeDestroy:function t(){this.$off("open",this.onOpen);this.$off("close",this.onClose);this.$off("disable",this.onDisable);this.$off("enable",this.onEnable);this.setObservers(false);this.bringItBack();if(this._toolpop){this._toolpop.destroy();this._toolpop=null}},computed:{baseConfig:function t(){var e=this.container;var n=i(this.delay)==="object"?this.delay:parseInt(this.delay,10)||0;return{title:(this.title||"").trim()||"",content:(this.content||"").trim()||"",placement:Vs[this.placement]||"auto",container:e?/^#/.test(e)?e:"#"+e:false,boundary:this.boundary,delay:n||0,offset:this.offset||0,animation:!this.noFade,trigger:C(this.triggers)?this.triggers.join(" "):this.triggers,callbacks:{show:this.onShow,shown:this.onShown,hide:this.onHide,hidden:this.onHidden,enabled:this.onEnabled,disabled:this.onDisabled}}}},methods:{getConfig:function t(){var e=y({},this.baseConfig);if(this.$refs.title&&this.$refs.title.innerHTML.trim()){e.title=this.$refs.title;e.html=true}if(this.$refs.content&&this.$refs.content.innerHTML.trim()){e.content=this.$refs.content;e.html=true}return e},onOpen:function t(){if(this._toolpop){this._toolpop.show()}},onClose:function t(e){if(this._toolpop){this._toolpop.hide(e)}else if(typeof e==="function"){e()}},onDisable:function t(){if(this._toolpop){this._toolpop.disable()}},onEnable:function t(){if(this._toolpop){this._toolpop.enable()}},updatePosition:function t(){if(this._toolpop){this._toolpop.update()}},getTarget:function t(){var e=this.target;if(typeof e==="function"){e=e()}if(typeof e==="string"){return at(e)}else if((typeof e==="undefined"?"undefined":i(e))==="object"&&X(e.$el)){return e.$el}else if((typeof e==="undefined"?"undefined":i(e))==="object"&&X(e)){return e}return null},onShow:function t(e){this.$emit("show",e)},onShown:function t(e){this.setObservers(true);this.$emit("update:show",true);this.$emit("shown",e)},onHide:function t(e){this.$emit("hide",e)},onHidden:function t(e){this.setObservers(false);this.bringItBack();this.$emit("update:show",false);this.$emit("hidden",e)},onEnabled:function t(e){if(!e||e.type!=="enabled"){return}this.$emit("update:disabled",false);this.$emit("disabled")},onDisabled:function t(e){if(!e||e.type!=="disabled"){return}this.$emit("update:disabled",true);this.$emit("enabled")},bringItBack:function t(){if(this.$el&&this.$refs.title){this.$el.appendChild(this.$refs.title)}if(this.$el&&this.$refs.content){this.$el.appendChild(this.$refs.content)}},setObservers:function t(e){if(e){if(this.$refs.title){this._obs_title=he(this.$refs.title,this.updatePosition.bind(this),Ms)}if(this.$refs.content){this._obs_content=he(this.$refs.content,this.updatePosition.bind(this),Ms)}}else{if(this._obs_title){this._obs_title.disconnect();this._obs_title=null}if(this._obs_content){this._obs_content.disconnect();this._obs_content=null}}}}};var Rs={mixins:[js],render:function t(e){return e("div",{class:["d-none"],style:{display:"none"},attrs:{"aria-hidden":true}},[e("div",{ref:"title"},this.$slots.title),e("div",{ref:"content"},this.$slots.default)])},data:function t(){return{}},props:{title:{type:String,default:""},content:{type:String,default:""},triggers:{type:[String,Array],default:"click"},placement:{type:String,default:"right"}},methods:{createToolpop:function t(){var e=this.getTarget();if(e){this._toolpop=new Ns(e,this.getConfig(),this.$root)}else{this._toolpop=null;_e("b-popover: 'target' element not found!")}return this._toolpop}}};var Hs={bPopover:Rs};var zs={install:function t(e){h(e,Hs)}};g(zs);var Ws={render:function t(e){var i=e(false);if(this.$slots.default){i=this.$slots.default}else if(this.label){i=e("span",{domProps:{innerHTML:this.label}})}else if(this.computedShowProgress){i=this.progress.toFixed(this.computedPrecision)}else if(this.computedShowValue){i=this.value.toFixed(this.computedPrecision)}return e("div",{class:this.progressBarClasses,style:this.progressBarStyles,attrs:{role:"progressbar","aria-valuemin":"0","aria-valuemax":this.computedMax.toString(),"aria-valuenow":this.value.toFixed(this.computedPrecision)}},[i])},computed:{progressBarClasses:function t(){return["progress-bar",this.computedVariant?"bg-"+this.computedVariant:"",this.computedStriped||this.computedAnimated?"progress-bar-striped":"",this.computedAnimated?"progress-bar-animated":""]},progressBarStyles:function t(){return{width:100*(this.value/this.computedMax)+"%"}},progress:function t(){var e=Math.pow(10,this.computedPrecision);return Math.round(100*e*this.value/this.computedMax)/e},computedMax:function t(){return typeof this.max==="number"?this.max:this.$parent.max||100},computedVariant:function t(){return this.variant||this.$parent.variant},computedPrecision:function t(){return typeof this.precision==="number"?this.precision:this.$parent.precision||0},computedStriped:function t(){return typeof this.striped==="boolean"?this.striped:this.$parent.striped||false},computedAnimated:function t(){return typeof this.animated==="boolean"?this.animated:this.$parent.animated||false},computedShowProgress:function t(){return typeof this.showProgress==="boolean"?this.showProgress:this.$parent.showProgress||false},computedShowValue:function t(){return typeof this.showValue==="boolean"?this.showValue:this.$parent.showValue||false}},props:{value:{type:Number,default:0},label:{type:String,default:null},max:{type:Number,default:null},precision:{type:Number,default:null},variant:{type:String,default:null},striped:{type:Boolean,default:null},animated:{type:Boolean,default:null},showProgress:{type:Boolean,default:null},showValue:{type:Boolean,default:null}}};var Gs={components:{bProgressBar:Ws},render:function t(e){var i=this.$slots.default;if(!i){i=e("b-progress-bar",{props:{value:this.value,max:this.max,precision:this.precision,variant:this.variant,animated:this.animated,striped:this.striped,showProgress:this.showProgress,showValue:this.showValue}})}return e("div",{class:["progress"],style:this.progressHeight},[i])},props:{variant:{type:String,default:null},striped:{type:Boolean,default:false},animated:{type:Boolean,default:false},height:{type:String,default:null},precision:{type:Number,default:0},showProgress:{type:Boolean,default:false},showValue:{type:Boolean,default:false},max:{type:Number,default:100},value:{type:Number,default:0}},computed:{progressHeight:function t(){return{height:this.height||null}}}};var Us={bProgress:Gs,bProgressBar:Ws};var qs={install:function t(e){h(e,Us)}};g(qs);var Ks=typeof window!=="undefined"?window:typeof global!=="undefined"?global:typeof self!=="undefined"?self:{};var Ys=1/0;var Zs="[object Symbol]";var Xs=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;var Js=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;var Qs="\\ud800-\\udfff",to="\\u0300-\\u036f\\ufe20-\\ufe23",eo="\\u20d0-\\u20f0",io="\\u2700-\\u27bf",no="a-z\\xdf-\\xf6\\xf8-\\xff",ro="\\xac\\xb1\\xd7\\xf7",ao="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",so="\\u2000-\\u206f",oo=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",lo="A-Z\\xc0-\\xd6\\xd8-\\xde",uo="\\ufe0e\\ufe0f",fo=ro+ao+so+oo;var co="['’]",ho="["+Qs+"]",po="["+fo+"]",vo="["+to+eo+"]",go="\\d+",mo="["+io+"]",bo="["+no+"]",yo="[^"+Qs+fo+go+io+no+lo+"]",So="\\ud83c[\\udffb-\\udfff]",wo="(?:"+vo+"|"+So+")",ko="[^"+Qs+"]",To="(?:\\ud83c[\\udde6-\\uddff]){2}",_o="[\\ud800-\\udbff][\\udc00-\\udfff]",$o="["+lo+"]",Co="\\u200d";var Bo="(?:"+bo+"|"+yo+")",xo="(?:"+$o+"|"+yo+")",Eo="(?:"+co+"(?:d|ll|m|re|s|t|ve))?",Oo="(?:"+co+"(?:D|LL|M|RE|S|T|VE))?",Po=wo+"?",Io="["+uo+"]?",Lo="(?:"+Co+"(?:"+[ko,To,_o].join("|")+")"+Io+Po+")*",Fo=Io+Po+Lo,No="(?:"+[mo,To,_o].join("|")+")"+Fo,Ao="(?:"+[ko+vo+"?",vo,To,_o,ho].join("|")+")";var Do=RegExp(co,"g");var Vo=RegExp(vo,"g");var Mo=RegExp(So+"(?="+So+")|"+Ao+Fo,"g");var jo=RegExp([$o+"?"+bo+"+"+Eo+"(?="+[po,$o,"$"].join("|")+")",xo+"+"+Oo+"(?="+[po,$o+Bo,"$"].join("|")+")",$o+"?"+Bo+"+"+Eo,$o+"+"+Oo,go,No].join("|"),"g");var Ro=RegExp("["+Co+Qs+to+eo+uo+"]");var Ho=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;var zo={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"ss"};var Wo=i(Ks)=="object"&&Ks&&Ks.Object===Object&&Ks;var Go=(typeof self==="undefined"?"undefined":i(self))=="object"&&self&&self.Object===Object&&self;var Uo=Wo||Go||Function("return this")();function qo(t,e,i,n){var r=-1,a=t?t.length:0;if(n&&a){i=t[++r]}while(++rr?0:r+e}i=i>r?r:i;if(i<0){i+=r}r=e>i?0:i-e>>>0;e>>>=0;var a=Array(r);while(++n=n?t:ll(t,e,i)}function dl(t){return function(e){e=vl(e);var i=Jo(e)?tl(e):undefined;var n=i?i[0]:e.charAt(0);var r=i?fl(i,1).join(""):e.slice(1);return n[t]()+r}}function cl(t){return function(e){return qo(yl(gl(e).replace(Do,"")),t,"")}}function hl(t){return!!t&&(typeof t==="undefined"?"undefined":i(t))=="object"}function pl(t){return(typeof t==="undefined"?"undefined":i(t))=="symbol"||hl(t)&&rl.call(t)==Zs}function vl(t){return t==null?"":ul(t)}function gl(t){t=vl(t);return t&&t.replace(Js,Xo).replace(Vo,"")}var ml=cl(function(t,e,i){return t+(i?" ":"")+bl(e)});var bl=dl("toUpperCase");function yl(t,e,i){t=vl(t);e=i?undefined:e;if(e===undefined){return Qo(t)?il(t):Yo(t)}return t.match(e)||[]}var Sl=ml;var wl="Expected a function";var kl="__lodash_hash_undefined__";var Tl=1/0;var _l="[object Function]",$l="[object GeneratorFunction]",Cl="[object Symbol]";var Bl=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,xl=/^\w*$/,El=/^\./,Ol=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;var Pl=/[\\^$.*+?()[\]{}|]/g;var Il=/\\(\\)?/g;var Ll=/^\[object .+?Constructor\]$/;var Fl=i(Ks)=="object"&&Ks&&Ks.Object===Object&&Ks;var Nl=(typeof self==="undefined"?"undefined":i(self))=="object"&&self&&self.Object===Object&&self;var Al=Fl||Nl||Function("return this")();function Dl(t,e){return t==null?undefined:t[e]}function Vl(t){var e=false;if(t!=null&&typeof t.toString!="function"){try{e=!!(t+"")}catch(t){}}return e}var Ml=Array.prototype,jl=Function.prototype,Rl=Object.prototype;var Hl=Al["__core-js_shared__"];var zl=function(){var t=/[^.]+$/.exec(Hl&&Hl.keys&&Hl.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();var Wl=jl.toString;var Gl=Rl.hasOwnProperty;var Ul=Rl.toString;var ql=RegExp("^"+Wl.call(Gl).replace(Pl,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var Kl=Al.Symbol,Yl=Ml.splice;var Zl=_u(Al,"Map"),Xl=_u(Object,"create");var Jl=Kl?Kl.prototype:undefined,Ql=Jl?Jl.toString:undefined;function tu(t){var e=-1,i=t?t.length:0;this.clear();while(++e-1}function du(t,e){var i=this.__data__,n=bu(i,t);if(n<0){i.push([t,e])}else{i[n][1]=e}return this}su.prototype.clear=ou;su.prototype["delete"]=lu;su.prototype.get=uu;su.prototype.has=fu;su.prototype.set=du;function cu(t){var e=-1,i=t?t.length:0;this.clear();while(++ee[i]&&1||0}return Hu(t[i]).localeCompare(Hu(e[i]),undefined,{numeric:true})}function Gu(t,e){var n=null;if(typeof e==="string"){n={key:t,label:e}}else if(typeof e==="function"){n={key:t,formatter:e}}else if((typeof e==="undefined"?"undefined":i(e))==="object"){n=y({},e);n.key=n.key||t}else if(e!==false){n={key:t}}return n}var Uu={mixins:[pe,Ze],render:function t(e){var i=this;var n=this.$slots;var r=this.$scopedSlots;var a=this.computedFields;var s=this.computedItems;var o=e(false);if(this.caption||n["table-caption"]){var l={style:this.captionStyles};if(!n["table-caption"]){l.domProps={innerHTML:this.caption}}o=e("caption",l,n["table-caption"])}var u=n["table-colgroup"]?e("colgroup",{},n["table-colgroup"]):e(false);var f=function t(){var n=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;return a.map(function(t,a){var s={key:t.key,class:i.fieldClasses(t),style:t.thStyle||{},attrs:{tabindex:t.sortable?"0":null,abbr:t.headerAbbr||null,title:t.headerTitle||null,"aria-colindex":String(a+1),"aria-label":t.sortable?i.localSortDesc&&i.localSortBy===t.key?i.labelSortAsc:i.labelSortDesc:null,"aria-sort":t.sortable&&i.localSortBy===t.key?i.localSortDesc?"descending":"ascending":null},on:{click:function e(n){n.stopPropagation();n.preventDefault();i.headClicked(n,t)},keydown:function e(n){var r=n.keyCode;if(r===Pt.ENTER||r===Pt.SPACE){n.stopPropagation();n.preventDefault();i.headClicked(n,t)}}}};var o=n&&r["FOOT_"+t.key]?r["FOOT_"+t.key]:r["HEAD_"+t.key];if(o){o=[o({label:t.label,column:t.key,field:t})]}else{s.domProps={innerHTML:t.label}}return e("th",s,o)})};var d=e(false);if(this.isStacked!==true){d=e("thead",{class:this.headClasses},[e("tr",{class:this.theadTrClass},f(false))])}var c=e(false);if(this.footClone&&this.isStacked!==true){c=e("tfoot",{class:this.footClasses},[e("tr",{class:this.tfootTrClass},f(true))])}var h=[];if(r["top-row"]&&this.isStacked!==true){h.push(e("tr",{key:"top-row",class:["b-table-top-row",this.tbodyTrClass]},[r["top-row"]({columns:a.length,fields:a})]))}else{h.push(e(false))}s.forEach(function(t,n){var s=r["row-details"];var o=Boolean(t._showDetails&&s);var l=o?i.safeId("_details_"+n+"_"):null;var u=function e(){if(s){i.$set(t,"_showDetails",!t._showDetails)}};var f=a.map(function(a,s){var o={key:"row-"+n+"-cell-"+s,class:i.tdClasses(a,t),attrs:i.tdAttrs(a,t,s),domProps:{}};var l=void 0;if(r[a.key]){l=[r[a.key]({item:t,index:n,field:a,unformatted:ju(t,a.key),value:i.getFormattedValue(t,a),toggleDetails:u,detailsShowing:Boolean(t._showDetails)})];if(i.isStacked){l=[e("div",{},[l])]}}else{var f=i.getFormattedValue(t,a);if(i.isStacked){l=[e("div",f)]}else{l=f}}return e(a.isRowHeader?"th":"td",o,l)});var d=null;if(i.currentPage&&i.perPage&&i.perPage>0){d=(i.currentPage-1)*i.perPage+n+1}h.push(e("tr",{key:"row-"+n,class:[i.rowClasses(t),{"b-table-has-details":o}],attrs:{"aria-describedby":l,"aria-rowindex":d,role:i.isStacked?"row":null},on:{click:function e(r){i.rowClicked(r,t,n)},dblclick:function e(r){i.rowDblClicked(r,t,n)},mouseenter:function e(r){i.rowHovered(r,t,n)}}},f));if(o){var c={colspan:String(a.length)};var p={id:l};if(i.isStacked){c["role"]="cell";p["role"]="row"}var v=e("td",{attrs:c},[s({item:t,index:n,fields:a,toggleDetails:u})]);h.push(e("tr",{key:"details-"+n,class:["b-table-details",i.tbodyTrClass],attrs:p},[v]))}else if(s){h.push(e(false))}});if(this.showEmpty&&(!s||s.length===0)){var p=this.filter?n["emptyfiltered"]:n["empty"];if(!p){p=e("div",{class:["text-center","my-2"],domProps:{innerHTML:this.filter?this.emptyFilteredText:this.emptyText}})}p=e("td",{attrs:{colspan:String(a.length),role:this.isStacked?"cell":null}},[e("div",{attrs:{role:"alert","aria-live":"polite"}},[p])]);h.push(e("tr",{key:"empty-row",class:["b-table-empty-row",this.tbodyTrClass],attrs:this.isStacked?{role:"row"}:{}},[p]))}else{h.push(e(false))}if(r["bottom-row"]&&this.isStacked!==true){h.push(e("tr",{key:"bottom-row",class:["b-table-bottom-row",this.tbodyTrClass]},[r["bottom-row"]({columns:a.length,fields:a})]))}else{h.push(e(false))}var v=e("tbody",{class:this.bodyClasses,attrs:this.isStacked?{role:"rowgroup"}:{}},h);var g=e("table",{class:this.tableClasses,attrs:{id:this.safeId(),role:this.isStacked?"table":null,"aria-busy":this.computedBusy?"true":"false","aria-colcount":String(a.length),"aria-rowcount":this.$attrs["aria-rowcount"]||this.items.length>this.perPage?this.items.length:null}},[o,u,d,c,v]);return this.isResponsive?e("div",{class:this.responsiveClass},[g]):g},data:function t(){return{localSortBy:this.sortBy||"",localSortDesc:this.sortDesc||false,localItems:[],filteredItems:[],localBusy:false}},props:{items:{type:[Array,Function],default:function t(){return[]}},fields:{type:[Object,Array],default:null},sortBy:{type:String,default:null},sortDesc:{type:Boolean,default:false},sortDirection:{type:String,default:"asc",validator:function t(e){return B(["asc","desc","last"],e)}},caption:{type:String,default:null},captionTop:{type:Boolean,default:false},striped:{type:Boolean,default:false},bordered:{type:Boolean,default:false},outlined:{type:Boolean,default:false},dark:{type:Boolean,default:function t(){if(this&&typeof this.inverse==="boolean"){_e("b-table: prop 'inverse' has been deprecated. Use 'dark' instead");return this.dark}return false}},inverse:{type:Boolean,default:null},hover:{type:Boolean,default:false},small:{type:Boolean,default:false},fixed:{type:Boolean,default:false},footClone:{type:Boolean,default:false},responsive:{type:[Boolean,String],default:false},stacked:{type:[Boolean,String],default:false},headVariant:{type:String,default:""},footVariant:{type:String,default:""},theadClass:{type:[String,Array],default:null},theadTrClass:{type:[String,Array],default:null},tbodyClass:{type:[String,Array],default:null},tbodyTrClass:{type:[String,Array],default:null},tfootClass:{type:[String,Array],default:null},tfootTrClass:{type:[String,Array],default:null},perPage:{type:Number,default:0},currentPage:{type:Number,default:1},filter:{type:[String,RegExp,Function],default:null},sortCompare:{type:Function,default:null},noLocalSorting:{type:Boolean,default:false},noProviderPaging:{type:Boolean,default:false},noProviderSorting:{type:Boolean,default:false},noProviderFiltering:{type:Boolean,default:false},noSortReset:{type:Boolean,default:false},busy:{type:Boolean,default:false},value:{type:Array,default:function t(){return[]}},labelSortAsc:{type:String,default:"Click to sort Ascending"},labelSortDesc:{type:String,default:"Click to sort Descending"},showEmpty:{type:Boolean,default:false},emptyText:{type:String,default:"There are no records to show"},emptyFilteredText:{type:String,default:"There are no records matching your request"},apiUrl:{type:String,default:""}},watch:{items:function t(e,i){if(i!==e){this._providerUpdate()}},context:function t(e,i){if(!xr(e,i)){this.$emit("context-changed",e)}},filteredItems:function t(e,i){if(this.localFiltering&&e.length!==i.length){this.$emit("filtered",e)}},sortDesc:function t(e,i){if(e===this.localSortDesc){return}this.localSortDesc=e||false},localSortDesc:function t(e,i){if(e!==i){this.$emit("update:sortDesc",e);if(!this.noProviderSorting){this._providerUpdate()}}},sortBy:function t(e,i){if(e===this.localSortBy){return}this.localSortBy=e||null},localSortBy:function t(e,i){if(e!==i){this.$emit("update:sortBy",e);if(!this.noProviderSorting){this._providerUpdate()}}},perPage:function t(e,i){if(i!==e&&!this.noProviderPaging){this._providerUpdate()}},currentPage:function t(e,i){if(i!==e&&!this.noProviderPaging){this._providerUpdate()}},filter:function t(e,i){if(i!==e&&!this.noProviderFiltering){this._providerUpdate()}},localBusy:function t(e,i){if(e!==i){this.$emit("update:busy",e)}}},mounted:function t(){var e=this;this.localSortBy=this.sortBy;this.localSortDesc=this.sortDesc;if(this.hasProvider){this._providerUpdate()}this.listenOnRoot("bv::refresh::table",function(t){if(t===e.id||t===e){e._providerUpdate()}})},computed:{isStacked:function t(){return this.stacked===""?true:this.stacked},isResponsive:function t(){var e=this.responsive===""?true:this.responsive;return this.isStacked?false:e},responsiveClass:function t(){return this.isResponsive===true?"table-responsive":this.isResponsive?"table-responsive-"+this.responsive:""},tableClasses:function t(){return["table","b-table",this.striped?"table-striped":"",this.hover?"table-hover":"",this.dark?"table-dark":"",this.bordered?"table-bordered":"",this.small?"table-sm":"",this.outlined?"border":"",this.fixed?"b-table-fixed":"",this.isStacked===true?"b-table-stacked":this.isStacked?"b-table-stacked-"+this.stacked:""]},headClasses:function t(){return[this.headVariant?"thead-"+this.headVariant:"",this.theadClass]},bodyClasses:function t(){return[this.tbodyClass]},footClasses:function t(){var e=this.footVariant||this.headVariant||null;return[e?"thead-"+e:"",this.tfootClass]},captionStyles:function t(){return this.captionTop?{captionSide:"top"}:{}},hasProvider:function t(){return this.items instanceof Function},localFiltering:function t(){return this.hasProvider?this.noProviderFiltering:true},localSorting:function t(){return this.hasProvider?this.noProviderSorting:!this.noLocalSorting},localPaging:function t(){return this.hasProvider?this.noProviderPaging:true},context:function t(){return{perPage:this.perPage,currentPage:this.currentPage,filter:this.filter,sortBy:this.localSortBy,sortDesc:this.localSortDesc,apiUrl:this.apiUrl}},computedFields:function t(){var e=this;var n=[];if(C(this.fields)){this.fields.filter(function(t){return t}).forEach(function(t){if(typeof t==="string"){n.push({key:t,label:Sl(t)})}else if((typeof t==="undefined"?"undefined":i(t))==="object"&&t.key&&typeof t.key==="string"){n.push(y({},t))}else if((typeof t==="undefined"?"undefined":i(t))==="object"&&S(t).length===1){var e=S(t)[0];var r=Gu(e,t[e]);if(r){n.push(r)}}})}else if(this.fields&&i(this.fields)==="object"&&S(this.fields).length>0){S(this.fields).forEach(function(t){var i=Gu(t,e.fields[t]);if(i){n.push(i)}})}if(n.length===0&&this.computedItems.length>0){var r=this.computedItems[0];var a=["_rowVariant","_cellVariants","_showDetails"];S(r).forEach(function(t){if(!a.includes(t)){n.push({key:t,label:Sl(t)})}})}var s={};return n.filter(function(t){if(!s[t.key]){s[t.key]=true;t.label=typeof t.label==="string"?t.label:Sl(t.key);return true}return false})},computedItems:function t(){var e=this.perPage;var i=this.currentPage;var n=this.filter;var r=this.localSortBy;var a=this.localSortDesc;var s=this.sortCompare;var o=this.localFiltering;var l=this.localSorting;var u=this.localPaging;var f=this.hasProvider?this.localItems:this.items;if(!f){this.$nextTick(this._providerUpdate);return[]}f=f.slice();if(n&&o){if(n instanceof Function){f=f.filter(n)}else{var d=void 0;if(n instanceof RegExp){d=n}else{d=new RegExp(".*"+n+".*","ig")}f=f.filter(function(t){var e=d.test(zu(t));d.lastIndex=0;return e})}}if(o){this.filteredItems=f.slice()}if(r&&l){f=Ru(f,function(t,e){var i=null;if(typeof s==="function"){i=s(t,e,r)}if(i===null||i===undefined){i=Wu(t,e,r)}return(i||0)*(a?-1:1)})}if(Boolean(e)&&u){f=f.slice((i-1)*e,i*e)}this.$emit("input",f);return f},computedBusy:function t(){return this.busy||this.localBusy}},methods:{keys:S,fieldClasses:function t(e){return[e.sortable?"sorting":"",e.sortable&&this.localSortBy===e.key?"sorting_"+(this.localSortDesc?"desc":"asc"):"",e.variant?"table-"+e.variant:"",e.class?e.class:"",e.thClass?e.thClass:""]},tdClasses:function t(e,i){var n="";if(i._cellVariants&&i._cellVariants[e.key]){n=(this.dark?"bg":"table")+"-"+i._cellVariants[e.key]}return[e.variant&&!n?(this.dark?"bg":"table")+"-"+e.variant:"",n,e.class?e.class:"",this.getTdValues(i,e.key,e.tdClass,"")]},tdAttrs:function t(e,i,n){var r={};r["aria-colindex"]=String(n+1);if(this.isStacked){r["data-label"]=e.label;if(e.isRowHeader){r["role"]="rowheader"}else{r["role"]="cell"}}return y({},r,this.getTdValues(i,e.key,e.tdAttr,{}))},rowClasses:function t(e){return[e._rowVariant?(this.dark?"bg":"table")+"-"+e._rowVariant:"",this.tbodyTrClass]},rowClicked:function t(e,i,n){if(this.stopIfBusy(e)){return}this.$emit("row-clicked",i,n,e)},rowDblClicked:function t(e,i,n){if(this.stopIfBusy(e)){return}this.$emit("row-dblclicked",i,n,e)},rowHovered:function t(e,i,n){if(this.stopIfBusy(e)){return}this.$emit("row-hovered",i,n,e)},headClicked:function t(e,i){var n=this;if(this.stopIfBusy(e)){return}var r=false;var a=function t(){var e=i.sortDirection||n.sortDirection;if(e==="asc"){n.localSortDesc=false}else if(e==="desc"){n.localSortDesc=true}};if(i.sortable){if(i.key===this.localSortBy){this.localSortDesc=!this.localSortDesc}else{this.localSortBy=i.key;a()}r=true}else if(this.localSortBy&&!this.noSortReset){this.localSortBy=null;a();r=true}this.$emit("head-clicked",i.key,i,e);if(r){this.$emit("sort-changed",this.context)}},stopIfBusy:function t(e){if(this.computedBusy){e.preventDefault();e.stopPropagation();return true}return false},refresh:function t(){if(this.hasProvider){this._providerUpdate()}},_providerSetLocal:function t(e){this.localItems=e&&e.length>0?e.slice():[];this.localBusy=false;this.$emit("refreshed");this.emitOnRoot("table::refreshed",this.id);if(this.id){this.emitOnRoot("bv::table::refreshed",this.id)}},_providerUpdate:function t(){var e=this;if(this.computedBusy||!this.hasProvider){return}this.localBusy=true;var i=this.items(this.context,this._providerSetLocal);if(i&&i.then&&typeof i.then==="function"){i.then(function(t){e._providerSetLocal(t)})}else{this._providerSetLocal(i)}},getTdValues:function t(e,i,n,r){var a=this.$parent;if(n){if(typeof n==="function"){var s=ju(e,i);return n(s,i,e)}else if(typeof n==="string"&&typeof a[n]==="function"){var o=ju(e,i);return a[n](o,i,e)}return n}return r},getFormattedValue:function t(e,i){var n=i.key;var r=i.formatter;var a=this.$parent;var s=ju(e,n);if(r){if(typeof r==="function"){s=r(s,n,e)}else if(typeof r==="string"&&typeof a[r]==="function"){s=a[r](s,n,e)}}return s}}};var qu={bTable:Uu};var Ku={install:function t(e){h(e,qu)}};g(Ku);var Yu={name:"bTabButtonHelper",props:{content:{type:[String,Array],default:""},href:{type:String,default:"#"},posInSet:{type:Number,default:null},setSize:{type:Number,default:null},controls:{type:String,default:null},id:{type:String,default:null},active:{type:Boolean,default:false},disabled:{type:Boolean,default:false},linkClass:{default:null},itemClass:{default:null},noKeyNav:{type:Boolean,default:false}},render:function t(e){var i=e("a",{class:["nav-link",{active:this.active,disabled:this.disabled},this.linkClass],attrs:{role:"tab",tabindex:this.noKeyNav?null:"-1",href:this.href,id:this.id,disabled:this.disabled,"aria-selected":this.active?"true":"false","aria-setsize":this.setSize,"aria-posinset":this.posInSet,"aria-controls":this.controls},on:{click:this.handleClick,keydown:this.handleClick}},this.content);return e("li",{class:["nav-item",this.itemClass],attrs:{role:"presentation"}},[i])},methods:{handleClick:function t(e){function i(){e.preventDefault();e.stopPropagation()}if(e.type!=="click"&&this.noKeyNav){return}if(this.disabled){i();return}if(e.type==="click"||e.keyCode===Pt.ENTER||e.keyCode===Pt.SPACE){i();this.$emit("click",e)}}}};var Zu={mixins:[pe],render:function t(e){var i=this,n;var r=this.tabs;var s=r.map(function(t,n){return e(Yu,{key:n,props:{content:t.$slots.title||t.title,href:t.href,id:t.controlledBy||i.safeId("_BV_tab_"+(n+1)+"_"),active:t.localActive,disabled:t.disabled,setSize:r.length,posInSet:n+1,controls:i.safeId("_BV_tab_container_"),linkClass:t.titleLinkClass,itemClass:t.titleItemClass,noKeyNav:i.noKeyNav},on:{click:function t(e){i.setTab(n)}}})});var o=e("ul",{class:["nav",(n={},a(n,"nav-"+this.navStyle,!this.noNavStyle),a(n,"card-header-"+this.navStyle,this.card&&!this.vertical),a(n,"card-header",this.card&&this.vertical),a(n,"h-100",this.card&&this.vertical),a(n,"flex-column",this.vertical),a(n,"border-bottom-0",this.vertical),a(n,"rounded-0",this.vertical),a(n,"small",this.small),n),this.navClass],attrs:{role:"tablist",tabindex:this.noKeyNav?null:"0",id:this.safeId("_BV_tab_controls_")},on:{keydown:this.onKeynav}},[s,this.$slots.tabs]);o=e("div",{class:[{"card-header":this.card&&!this.vertical&&!(this.end||this.bottom),"card-footer":this.card&&!this.vertical&&(this.end||this.bottom),"col-auto":this.vertical},this.navWrapperClass]},[o]);var l=void 0;if(r&&r.length){l=e(false)}else{l=e("div",{class:["tab-pane","active",{"card-body":this.card}]},this.$slots.empty)}var u=e("div",{ref:"tabsContainer",class:["tab-content",{col:this.vertical},this.contentClass],attrs:{id:this.safeId("_BV_tab_container_")}},[this.$slots.default,l]);return e(this.tag,{class:["tabs",{row:this.vertical,"no-gutters":this.vertical&&this.card}],attrs:{id:this.safeId()}},[this.end||this.bottom?u:e(false),[o],this.end||this.bottom?e(false):u])},data:function t(){return{currentTab:this.value,tabs:[]}},props:{tag:{type:String,default:"div"},card:{type:Boolean,default:false},small:{type:Boolean,default:false},value:{type:Number,default:null},pills:{type:Boolean,default:false},vertical:{type:Boolean,default:false},bottom:{type:Boolean,default:false},end:{type:Boolean,default:false},noFade:{type:Boolean,default:false},noNavStyle:{type:Boolean,default:false},noKeyNav:{type:Boolean,default:false},lazy:{type:Boolean,default:false},contentClass:{type:[String,Array,Object],default:null},navClass:{type:[String,Array,Object],default:null},navWrapperClass:{type:[String,Array,Object],default:null}},watch:{currentTab:function t(e,i){if(e===i){return}this.$root.$emit("changed::tab",this,e,this.tabs[e]);this.$emit("input",e);this.tabs[e].$emit("click")},value:function t(e,i){if(e===i){return}if(typeof i!=="number"){i=0}var n=e0?1:-1},onKeynav:function t(e){if(this.noKeyNav){return}var i=e.keyCode;var n=e.shiftKey;function r(){e.preventDefault();e.stopPropagation()}if(i===Pt.UP||i===Pt.LEFT){r();if(n){this.setTab(0,false,1)}else{this.previousTab()}}else if(i===Pt.DOWN||i===Pt.RIGHT){r();if(n){this.setTab(this.tabs.length-1,false,-1)}else{this.nextTab()}}},nextTab:function t(){this.setTab(this.currentTab+1,false,1)},previousTab:function t(){this.setTab(this.currentTab-1,false,-1)},setTab:function t(e,i,n){var r=this;n=this.sign(n||0);e=e||0;if(!i&&e===this.currentTab){return}var a=this.tabs[e];if(!a){this.$emit("input",this.currentTab);return}if(a.disabled){if(n){this.setTab(e+n,i,n)}return}this.tabs.forEach(function(t){if(t===a){r.$set(t,"localActive",true)}else{r.$set(t,"localActive",false)}});this.currentTab=e},updateTabs:function t(){this.tabs=this.$children.filter(function(t){return t._isTab});var e=null;this.tabs.forEach(function(t,i){if(t.localActive&&!t.disabled){e=i}});if(e===null){if(this.currentTab>=this.tabs.length){this.setTab(this.tabs.length-1,true,-1);return}else if(this.tabs[this.currentTab]&&!this.tabs[this.currentTab].disabled){e=this.currentTab}}if(e===null){this.tabs.forEach(function(t,i){if(!t.disabled&&e===null){e=i}})}this.setTab(e||0,true,0)}},mounted:function t(){this.updateTabs();he(this.$refs.tabsContainer,this.updateTabs.bind(this),{subtree:false})}};var Xu={mixins:[pe],render:function t(e){var i=e(false);if(this.localActive||!this.computedLazy){i=e(this.tag,{ref:"panel",class:this.tabClasses,directives:[{name:"show",value:this.localActive}],attrs:{role:"tabpanel",id:this.safeId(),"aria-hidden":this.localActive?"false":"true","aria-expanded":this.localActive?"true":"false","aria-lablelledby":this.controlledBy||null}},[this.$slots.default])}return e("transition",{props:{mode:"out-in"},on:{beforeEnter:this.beforeEnter,beforeLeave:this.beforeLeave}},[i])},methods:{beforeEnter:function t(){var e=this;window.requestAnimationFrame(function(){e.show=true})},beforeLeave:function t(){this.show=false}},data:function t(){return{localActive:this.active&&!this.disabled,show:false}},mounted:function t(){this.show=this.localActive},computed:{tabClasses:function t(){return["tab-pane",this.$parent&&this.$parent.card&&!this.noBody?"card-body":"",this.show?"show":"",this.computedFade?"fade":"",this.disabled?"disabled":"",this.localActive?"active":""]},controlledBy:function t(){return this.buttonId||this.safeId("__BV_tab_button__")},computedFade:function t(){return this.$parent.fade},computedLazy:function t(){return this.$parent.lazy},_isTab:function t(){return true}},props:{active:{type:Boolean,default:false},tag:{type:String,default:"div"},buttonId:{type:String,default:""},title:{type:String,default:""},titleItemClass:{type:[String,Array,Object],default:null},titleLinkClass:{type:[String,Array,Object],default:null},headHtml:{type:String,default:null},disabled:{type:Boolean,default:false},noBody:{type:Boolean,default:false},href:{type:String,default:"#"}}};var Ju={bTabs:Zu,bTab:Xu};var Qu={install:function t(e){h(e,Ju)}};g(Qu);var tf={mixins:[js],render:function t(e){return e("div",{class:["d-none"],style:{display:"none"},attrs:{"aria-hidden":true}},[e("div",{ref:"title"},this.$slots.default)])},data:function t(){return{}},props:{title:{type:String,default:""},triggers:{type:[String,Array],default:"hover focus"},placement:{type:String,default:"top"}},methods:{createToolpop:function t(){var e=this.getTarget();if(e){this._toolpop=new xs(e,this.getConfig(),this.$root)}else{this._toolpop=null;_e("b-tooltip: 'target' element not found!")}return this._toolpop}}};var ef={bTooltip:tf};var nf={install:function t(e){h(e,ef)}};g(nf);var rf=Object.freeze({Alert:b,Badge:H,Breadcrumb:Z,Button:Ct,ButtonToolbar:Nt,ButtonGroup:Ot,Card:ce,Carousel:Be,Collapse:pi,Dropdown:nr,Embed:or,Form:mr,FormGroup:kr,FormInput:Hr,FormTextarea:Gr,FormFile:Kr,FormCheckbox:Fr,FormRadio:Vr,FormSelect:Xr,Image:ea,InputGroup:Gt,Jumbotron:aa,Layout:Ke,Link:oa,ListGroup:va,Media:Ta,Modal:Ia,Nav:Ha,Navbar:Ja,Pagination:os,PaginationNav:cs,Popover:zs,Progress:qs,Table:Ku,Tabs:Qu,Tooltip:nf});var af="v-b-scrollspy";var sf="bv::scrollspy::activate";var of={element:"body",offset:10,method:"auto",throttle:75};var lf={element:"(string|element|component)",offset:"number",method:"string",throttle:"number"};var uf={DROPDOWN_ITEM:"dropdown-item",ACTIVE:"active"};var ff={ACTIVE:".active",NAV_LIST_GROUP:".nav, .list-group",NAV_LINKS:".nav-link",NAV_ITEMS:".nav-item",LIST_ITEMS:".list-group-item",DROPDOWN:".dropdown, .dropup",DROPDOWN_ITEMS:".dropdown-item",DROPDOWN_TOGGLE:".dropdown-toggle"};var df={OFFSET:"offset",POSITION:"position"};var cf=/^#[^/!]+/;var hf=["webkitTransitionEnd","transitionend","otransitionend","oTransitionEnd"];function pf(t){return{}.toString.call(t).match(/\s([a-zA-Z]+)/)[1].toLowerCase()}function vf(t,e,i){for(var n in i){if(Object.prototype.hasOwnProperty.call(i,n)){var r=i[n];var a=e[n];var s=a&&X(a)?"element":pf(a);s=a&&a._isVue?"component":s;if(!new RegExp(r).test(s)){_e(t+': Option "'+n+'" provided type "'+s+'", but expected type "'+r+'"')}}}}var gf=function(){function t(e,i,r){n(this,t);this.$el=e;this.$scroller=null;this.$selector=[ff.NAV_LINKS,ff.LIST_ITEMS,ff.DROPDOWN_ITEMS].join(",");this.$offsets=[];this.$targets=[];this.$activeTarget=null;this.$scrollHeight=0;this.$resizeTimeout=null;this.$obs_scroller=null;this.$obs_targets=null;this.$root=r||null;this.$config=null;this.updateConfig(i)}r(t,[{key:"updateConfig",value:function t(e,i){if(this.$scroller){this.unlisten();this.$scroller=null}var n=y({},this.constructor.Default,e);if(i){this.$root=i}vf(this.constructor.Name,n,this.constructor.DefaultType);this.$config=n;if(this.$root){var r=this;this.$root.$nextTick(function(){r.listen()})}else{this.listen()}}},{key:"dispose",value:function t(){this.unlisten();clearTimeout(this.$resizeTimeout);this.$resizeTimeout=null;this.$el=null;this.$config=null;this.$scroller=null;this.$selector=null;this.$offsets=null;this.$targets=null;this.$activeTarget=null;this.$scrollHeight=null}},{key:"listen",value:function t(){var e=this;var i=this.getScroller();if(i&&i.tagName!=="BODY"){mt(i,"scroll",this)}mt(window,"scroll",this);mt(window,"resize",this);mt(window,"orientationchange",this);hf.forEach(function(t){mt(window,t,e)});this.setObservers(true);this.handleEvent("refresh")}},{key:"unlisten",value:function t(){var e=this;var i=this.getScroller();this.setObservers(false);if(i&&i.tagName!=="BODY"){bt(i,"scroll",this)}bt(window,"scroll",this);bt(window,"resize",this);bt(window,"orientationchange",this);hf.forEach(function(t){bt(window,t,e)})}},{key:"setObservers",value:function t(e){var i=this;if(this.$obs_scroller){this.$obs_scroller.disconnect();this.$obs_scroller=null}if(this.$obs_targets){this.$obs_targets.disconnect();this.$obs_targets=null}if(e){this.$obs_targets=he(this.$el,function(){i.handleEvent("mutation")},{subtree:true,childList:true,attributes:true,attributeFilter:["href"]});this.$obs_scroller=he(this.getScroller(),function(){i.handleEvent("mutation")},{subtree:true,childList:true,characterData:true,attributes:true,attributeFilter:["id","style","class"]})}}},{key:"handleEvent",value:function t(e){var i=typeof e==="string"?e:e.type;var n=this;function r(){if(!n.$resizeTimeout){n.$resizeTimeout=setTimeout(function(){n.refresh();n.process();n.$resizeTimeout=null},n.$config.throttle)}}if(i==="scroll"){if(!this.$obs_scroller){this.listen()}this.process()}else if(/(resize|orientationchange|mutation|refresh)/.test(i)){r()}}},{key:"refresh",value:function t(){var e=this;var i=this.getScroller();if(!i){return}var n=i!==i.window?df.POSITION:df.OFFSET;var r=this.$config.method==="auto"?n:this.$config.method;var a=r===df.POSITION?gt:vt;var s=r===df.POSITION?this.getScrollTop():0;this.$offsets=[];this.$targets=[];this.$scrollHeight=this.getScrollHeight();et(this.$selector,this.$el).map(function(t){return dt(t,"href")}).filter(function(t){return cf.test(t||"")}).map(function(t){var e=it(t,i);if(J(e)){return{offset:parseInt(a(e).top,10)+s,target:t}}return null}).filter(function(t){return t}).sort(function(t,e){return t.offset-e.offset}).reduce(function(t,i){if(!t[i.target]){e.$offsets.push(i.offset);e.$targets.push(i.target);t[i.target]=true}return t},{});return this}},{key:"process",value:function t(){var e=this.getScrollTop()+this.$config.offset;var i=this.getScrollHeight();var n=this.$config.offset+i-this.getOffsetHeight();if(this.$scrollHeight!==i){this.refresh()}if(e>=n){var r=this.$targets[this.$targets.length-1];if(this.$activeTarget!==r){this.activate(r)}return}if(this.$activeTarget&&e0){this.$activeTarget=null;this.clear();return}for(var a=this.$offsets.length;a--;){var s=this.$activeTarget!==this.$targets[a]&&e>=this.$offsets[a]&&(typeof this.$offsets[a+1]==="undefined"||e0&&this.$root){this.$root.$emit(sf,e,n)}}},{key:"clear",value:function t(){var e=this;et(this.$selector+", "+ff.NAV_ITEMS,this.$el).filter(function(t){return lt(t,uf.ACTIVE)}).forEach(function(t){return e.setActiveState(t,false)})}},{key:"setActiveState",value:function t(e,i){if(!e){return}if(i){st(e,uf.ACTIVE)}else{ot(e,uf.ACTIVE)}}}],[{key:"Name",get:function t(){return af}},{key:"Default",get:function t(){return of}},{key:"DefaultType",get:function t(){return lf}}]);return t}();var mf=typeof window!=="undefined";var bf=!mf;var yf="__BV_ScrollSpy__";function Sf(t){var e={};if(t.arg){e.element="#"+t.arg}S(t.modifiers).forEach(function(t){if(/^\d+$/.test(t)){e.offset=parseInt(t,10)}else if(/^(auto|position|offset)$/.test(t)){e.method=t}});if(typeof t.value==="string"){e.element=t.value}else if(typeof t.value==="number"){e.offset=Math.round(t.value)}else if(i(t.value)==="object"){S(t.value).filter(function(t){return Boolean(gf.DefaultType[t])}).forEach(function(i){e[i]=t.value[i]})}return e}function wf(t,e,i){if(bf){return}var n=Sf(e);if(!t[yf]){t[yf]=new gf(t,n,i.context.$root)}else{t[yf].updateConfig(n,i.context.$root)}return t[yf]}function kf(t){if(t[yf]){t[yf].dispose();t[yf]=null}}var Tf={bind:function t(e,i,n){wf(e,i,n)},inserted:function t(e,i,n){wf(e,i,n)},update:function t(e,i,n){wf(e,i,n)},componentUpdated:function t(e,i,n){wf(e,i,n)},unbind:function t(e){if(bf){return}kf(e)}};var _f={bScrollspy:Tf};var $f={install:function t(e){v(e,_f)}};g($f);var Cf=typeof window!=="undefined"&&typeof document!=="undefined";var Bf="__BV_ToolTip__";var xf={focus:true,hover:true,click:true,blur:true};function Ef(t){var e={};if(typeof t.value==="string"){e.title=t.value}else if(typeof t.value==="function"){e.title=t.value}else if(i(t.value)==="object"){e=y(t.value)}if(t.arg){e.container="#"+t.arg}S(t.modifiers).forEach(function(t){if(/^html$/.test(t)){e.html=true}else if(/^nofade$/.test(t)){e.animation=false}else if(/^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/.test(t)){e.placement=t}else if(/^(window|viewport)$/.test(t)){e.boundary=t}else if(/^d\d+$/.test(t)){var i=parseInt(t.slice(1),10)||0;if(i){e.delay=i}}else if(/^o-?\d+$/.test(t)){var n=parseInt(t.slice(1),10)||0;if(n){e.offset=n}}});var n={};var r=typeof e.trigger==="string"?e.trigger.trim().split(/\s+/):[];r.forEach(function(t){if(xf[t]){n[t]=true}});S(xf).forEach(function(e){if(t.modifiers[e]){n[e]=true}});e.trigger=S(n).join(" ");if(e.trigger==="blur"){e.trigger="focus"}if(!e.trigger){delete e.trigger}return e}function Of(t,e,i){if(!Cf){return}if(!jn){_e("v-b-tooltip: Popper.js is required for tooltips to work");return}if(t[Bf]){t[Bf].updateConfig(Ef(e))}else{t[Bf]=new xs(t,Ef(e),i.context.$root)}}function Pf(t){if(!Cf){return}if(t[Bf]){t[Bf].destroy();t[Bf]=null;delete t[Bf]}}var If={bind:function t(e,i,n){Of(e,i,n)},inserted:function t(e,i,n){Of(e,i,n)},update:function t(e,i,n){if(i.value!==i.oldValue){Of(e,i,n)}},componentUpdated:function t(e,i,n){if(i.value!==i.oldValue){Of(e,i,n)}},unbind:function t(e){Pf(e)}};var Lf={bTooltip:If};var Ff={install:function t(e){v(e,Lf)}};g(Ff);var Nf=typeof window!=="undefined"&&typeof document!=="undefined";var Af="__BV_PopOver__";var Df={focus:true,hover:true,click:true,blur:true};function Vf(t){var e={};if(typeof t.value==="string"){e.content=t.value}else if(typeof t.value==="function"){e.content=t.value}else if(i(t.value)==="object"){e=y(t.value)}if(t.arg){e.container="#"+t.arg}S(t.modifiers).forEach(function(t){if(/^html$/.test(t)){e.html=true}else if(/^nofade$/.test(t)){e.animation=false}else if(/^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/.test(t)){e.placement=t}else if(/^(window|viewport)$/.test(t)){e.boundary=t}else if(/^d\d+$/.test(t)){var i=parseInt(t.slice(1),10)||0;if(i){e.delay=i}}else if(/^o-?\d+$/.test(t)){var n=parseInt(t.slice(1),10)||0;if(n){e.offset=n}}});var n={};var r=typeof e.trigger==="string"?e.trigger.trim().split(/\s+/):[];r.forEach(function(t){if(Df[t]){n[t]=true}});S(Df).forEach(function(e){if(t.modifiers[e]){n[e]=true}});e.trigger=S(n).join(" ");if(e.trigger==="blur"){e.trigger="focus"}if(!e.trigger){delete e.trigger}return e}function Mf(t,e,i){if(!Nf){return}if(!jn){_e("v-b-popover: Popper.js is required for popovers to work");return}if(t[Af]){t[Af].updateConfig(Vf(e))}else{t[Af]=new Ns(t,Vf(e),i.context.$root)}}function jf(t){if(!Nf){return}if(t[Af]){t[Af].destroy();t[Af]=null;delete t[Af]}}var Rf={bind:function t(e,i,n){Mf(e,i,n)},inserted:function t(e,i,n){Mf(e,i,n)},update:function t(e,i,n){if(i.value!==i.oldValue){Mf(e,i,n)}},componentUpdated:function t(e,i,n){if(i.value!==i.oldValue){Mf(e,i,n)}},unbind:function t(e){jf(e)}};var Hf={bPopover:Rf};var zf={install:function t(e){v(e,Hf)}};g(zf);var Wf=Object.freeze({Toggle:ci,Modal:Oa,Scrollspy:$f,Tooltip:Ff,Popover:zf});var Gf={install:function t(e){if(e._bootstrap_vue_installed){return}e._bootstrap_vue_installed=true;for(var i in rf){e.use(rf[i])}for(var n in Wf){e.use(Wf[n])}}};g(Gf);return Gf}); \ No newline at end of file +/*! + * BootstrapVue 2.5.0 + * + * @link https://bootstrap-vue.js.org + * @source https://github.com/bootstrap-vue/bootstrap-vue + * @copyright (c) 2016-2020 BootstrapVue + * @license MIT + * https://github.com/bootstrap-vue/bootstrap-vue/blob/master/LICENSE + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("vue")):"function"==typeof define&&define.amd?define(["vue"],e):(t=t||self).bootstrapVue=e(t.Vue)}(this,(function(t){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){for(var i=0;i0,W=(/msie|trident/.test(j),function(){var t=!1;if(z)try{var e={get passive(){t=!0}};window.addEventListener("test",e,e),window.removeEventListener("test",e,e)}catch(e){t=!1}return t}()),U=z&&("ontouchstart"in document.documentElement||navigator.maxTouchPoints>0),Y=z&&Boolean(window.PointerEvent||window.MSPointerEvent),q=z&&"IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype,K=function(){return function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i="undefined"!=typeof process&&process&&process.env||{};return t?i[t]||e:i}("BOOTSTRAP_VUE_NO_WARN")},X=A?window:{},Z=A?X.Element:function(t){function Element(){return i(this,Element),m(this,u(Element).apply(this,arguments))}return l(Element,t),Element}(f(Object)),HTMLElement=A?X.HTMLElement:function(t){function HTMLElement(){return i(this,HTMLElement),m(this,u(HTMLElement).apply(this,arguments))}return l(HTMLElement,t),HTMLElement}(Z),SVGElement=A?X.SVGElement:function(t){function SVGElement(){return i(this,SVGElement),m(this,u(SVGElement).apply(this,arguments))}return l(SVGElement,t),SVGElement}(Z),J=A?X.File:function(t){function e(){return i(this,e),m(this,u(e).apply(this,arguments))}return l(e,t),e}(f(Object)),Q=function(t){return e(t)},tt=function(t){return void 0===t},et=function(t){return null===t},it=function(t){return tt(t)||et(t)},nt=function(t){return"function"===Q(t)},at=function(t){return"boolean"===Q(t)},rt=function(t){return"string"===Q(t)},ot=function(t){return"number"===Q(t)},st=function(t){return t instanceof Date},lt=function(t){return t instanceof Event},ut=function(t){return t instanceof J},ct=function(t){return"RegExp"===function(t){return Object.prototype.toString.call(t).slice(8,-1)}(t)},dt=function t(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e;return w(e)?e.reduce((function(e,i){return[].concat(b(e),[t(i,i)])}),[]):E(e)?I(e).reduce((function(i,n){return s({},i,r({},n,t(e[n],e[n])))}),{}):i},ht=function(t){return t},ft=/\[(\d+)]/g,pt=function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(!(e=w(e)?e.join("."):e)||!F(t))return i;if(e in t)return t[e];var n=(e=String(e).replace(ft,".$1")).split(".").filter(ht);return 0===n.length?i:n.every((function(e){return F(t)&&e in t&&null!=(t=t[e])}))?t:i},mt=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;K()||console.warn("[BootstrapVue warn]: ".concat(e?"".concat(e," - "):"").concat(t))},gt=function(t){return!z&&(mt("".concat(t,": Can not be called during SSR.")),!0)},vt=function(t){return!L&&(mt("".concat(t,": Requires Promise support.")),!0)},bt=function t(e){return I(e).forEach((function(i){var n=e[i];e[i]=n&&(E(n)||w(n))?t(n):n})),D(e)}({breakpoints:["xs","sm","md","lg","xl"],formControls:{size:null},BAlert:{dismissLabel:"Close",variant:"info"},BBadge:{variant:"secondary"},BButton:{size:null,variant:"secondary"},BButtonClose:{content:"×",textVariant:null,ariaLabel:"Close"},BCalendar:{labelPrevYear:"Previous year",labelPrevMonth:"Previous month",labelCurrentMonth:"Current month",labelNextMonth:"Next month",labelNextYear:"Next year",labelToday:"Today",labelSelected:"Selected date",labelNoDateSelected:"No date selected",labelCalendar:"Calendar",labelNav:"Calendar navigation",labelHelp:"Use cursor keys to navigate calendar dates"},BCardSubTitle:{subTitleTextVariant:"muted"},BCarousel:{labelPrev:"Previous Slide",labelNext:"Next Slide",labelGotoSlide:"Goto Slide",labelIndicators:"Select a slide to display"},BDropdown:{toggleText:"Toggle Dropdown",size:null,variant:"secondary",splitVariant:null},BFormDatepicker:{labelPrevYear:null,labelPrevMonth:null,labelCurrentMonth:null,labelNextMonth:null,labelNextYear:null,labelToday:null,labelSelected:null,labelNoDateSelected:null,labelCalendar:null,labelNav:null,labelHelp:null,labelTodayButton:"Select today",labelResetButton:"Reset",labelCloseButton:"Close"},BFormFile:{browseText:"Browse",placeholder:"No file chosen",dropPlaceholder:"Drop files here"},BFormSpinbutton:{labelDecrement:"Decrement",labelIncrement:"Increment"},BFormTag:{removeLabel:"Remove tag",variant:"secondary"},BFormTags:{addButtonText:"Add",addButtonVariant:"outline-secondary",duplicateTagText:"Duplicate tag(s)",invalidTagText:"Invalid tag(s)",placeholder:"Add tag...",tagRemoveLabel:"Remove tag",tagRemovedLabel:"Tag removed",tagVariant:"secondary"},BFormText:{textVariant:"muted"},BImg:{blankColor:"transparent"},BImgLazy:{blankColor:"transparent"},BInputGroup:{size:null},BJumbotron:{bgVariant:null,borderVariant:null,textVariant:null},BListGroupItem:{variant:null},BModal:{titleTag:"h5",size:"md",headerBgVariant:null,headerBorderVariant:null,headerTextVariant:null,headerCloseVariant:null,bodyBgVariant:null,bodyTextVariant:null,footerBgVariant:null,footerBorderVariant:null,footerTextVariant:null,cancelTitle:"Cancel",cancelVariant:"secondary",okTitle:"OK",okVariant:"primary",headerCloseContent:"×",headerCloseLabel:"Close"},BNavbar:{variant:null},BNavbarToggle:{label:"Toggle navigation"},BPagination:{size:null},BPaginationNav:{size:null},BPopover:{boundary:"scrollParent",boundaryPadding:5,customClass:null,delay:50,variant:null},BProgress:{variant:null},BProgressBar:{variant:null},BSpinner:{variant:null},BTable:{selectedVariant:"active",headVariant:null,footVariant:null},BToast:{toaster:"b-toaster-top-right",autoHideDelay:5e3,variant:null,toastClass:null,headerClass:null,bodyClass:null},BToaster:{ariaLive:null,ariaAtomic:null,role:null},BTooltip:{boundary:"scrollParent",boundaryPadding:5,customClass:null,delay:50,variant:null}}),yt="BvConfig",St=function(){function t(){i(this,t),this.$_config={},this.$_cachedBreakpoints=null}return a(t,[{key:"getDefaults",value:function(){return this.defaults}},{key:"setConfig",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(E(e)){var i=P(e);i.forEach((function(i){if(O(bt,i)){var n=e[i];if("breakpoints"===i){var a=e.breakpoints;!w(a)||a.length<2||a.some((function(t){return!rt(t)||0===t.length}))?mt('"breakpoints" must be an array of at least 2 breakpoint names',yt):t.$_config.breakpoints=dt(a)}else if(E(n)){P(n).forEach((function(e){O(bt[i],e)?(t.$_config[i]=t.$_config[i]||{},tt(n[e])||(t.$_config[i][e]=dt(n[e]))):mt('Unknown config property "'.concat(i,".").concat(e,'"'),yt)}))}}else mt('Unknown config property "'.concat(i,'"'),yt)}))}}},{key:"resetConfig",value:function(){this.$_config={}}},{key:"getConfig",value:function(){return dt(this.$_config)}},{key:"getConfigValue",value:function(t){return dt(pt(this.$_config,t,pt(bt,t)))}},{key:"defaults",get:function(){return bt}}],[{key:"Defaults",get:function(){return bt}}]),t}(),Tt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t;i.prototype.$bvConfig=t.prototype.$bvConfig=i.prototype.$bvConfig||t.prototype.$bvConfig||new St,i.prototype.$bvConfig.setConfig(e)},wt=(y=!1,S=["Multiple instances of Vue detected!","You may need to set up an alias for Vue in your bundler config.","See: https://bootstrap-vue.js.org/docs#using-module-bundlers"].join("\n"),function(e){y||t===e||G||mt(S),y=!0}),Bt=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.components,i=t.directives,n=t.plugins,a=function t(a){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.installed||(t.installed=!0,wt(a),Tt(r,a),$t(a,e),Dt(a,i),Ct(a,n))};return a.installed=!1,a},kt=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return s({},e,{install:Bt(t)})},Ct=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(var i in e)i&&e[i]&&t.use(e[i])},xt=function(t,e,i){t&&e&&i&&t.component(e,i)},$t=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(var i in e)xt(t,i,e[i])},_t=function(t,e,i){t&&e&&i&&t.directive(e.replace(/^VB/,"B"),i)},Dt=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(var i in e)_t(t,i,e[i])},Pt=function(t){var e=x(null);return function(){for(var i=arguments.length,n=new Array(i),a=0;a1&&void 0!==arguments[1]?arguments[1]:null;return e?Ot("".concat(t,".").concat(e)):Ot(t)||{}},Et=function(){return Ot("breakpoints")},Vt=Pt((function(){return Et()})),Nt=Pt((function(){var t=dt(Vt());return t[0]="",t})),At=A?window:{},Mt=M?document:{},Rt="undefined"!=typeof Element?Element.prototype:{},Lt=Rt.matches||Rt.msMatchesSelector||Rt.webkitMatchesSelector,Ht=Rt.closest||function(t){var e=this;do{if(Xt(e,t))return e;e=e.parentElement||e.parentNode}while(!et(e)&&e.nodeType===Node.ELEMENT_NODE);return null},zt=At.requestAnimationFrame||At.webkitRequestAnimationFrame||At.mozRequestAnimationFrame||At.msRequestAnimationFrame||At.oRequestAnimationFrame||function(t){return setTimeout(t,16)},jt=At.MutationObserver||At.WebKitMutationObserver||At.MozMutationObserver||null,Gt=function(t){return!(!t||t.nodeType!==Node.ELEMENT_NODE)},Wt=function(t){if(!Gt(t)||!t.parentNode||!Jt(Mt.body,t))return!1;if("none"===t.style.display)return!1;var e=se(t);return!!(e&&e.height>0&&e.width>0)},Ut=function(t){return!Gt(t)||t.disabled||oe(t,"disabled")||ie(t,"disabled")},Yt=function(t){return Gt(t)&&t.offsetHeight},qt=function(t,e){return T((Gt(e)?e:Mt).querySelectorAll(t))},Kt=function(t,e){return(Gt(e)?e:Mt).querySelector(t)||null},Xt=function(t,e){return!!Gt(t)&&Lt.call(t,e)},Zt=function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!Gt(e))return null;var n=Ht.call(e,t);return i?n:n===e?null:n},Jt=function(t,e){return!(!t||!nt(t.contains))&&t.contains(e)},Qt=function(t){return Mt.getElementById(/^#/.test(t)?t.slice(1):t)||null},te=function(t,e){e&&Gt(t)&&t.classList&&t.classList.add(e)},ee=function(t,e){e&&Gt(t)&&t.classList&&t.classList.remove(e)},ie=function(t,e){return!!(e&&Gt(t)&&t.classList)&&t.classList.contains(e)},ne=function(t,e,i){e&&Gt(t)&&t.setAttribute(e,i)},ae=function(t,e){e&&Gt(t)&&t.removeAttribute(e)},re=function(t,e){return e&&Gt(t)?t.getAttribute(e):null},oe=function(t,e){return e&&Gt(t)?t.hasAttribute(e):null},se=function(t){return Gt(t)?t.getBoundingClientRect():null},le=function(t){return A&&Gt(t)?At.getComputedStyle(t):{}},ue=function(){return A&&At.getSelection?At.getSelection():null},ce=function(t){var e={top:0,left:0};if(!Gt(t)||0===t.getClientRects().length)return e;var i=se(t);if(i){var n=t.ownerDocument.defaultView;e.top=i.top+n.pageYOffset,e.left=i.left+n.pageXOffset}return e},de=function(t){var e={top:0,left:0};if(!Gt(t))return e;var i={top:0,left:0},n=le(t);if("fixed"===n.position)e=se(t)||e;else{e=ce(t);for(var a=t.ownerDocument,r=t.offsetParent||a.documentElement;r&&(r===a.body||r===a.documentElement)&&"static"===le(r).position;)r=r.parentNode;if(r&&r!==t&&r.nodeType===Node.ELEMENT_NODE){i=ce(r);var o=le(r);i.top+=parseFloat(o.borderTopWidth),i.left+=parseFloat(o.borderLeftWidth)}}return{top:e.top-i.top-parseFloat(n.marginTop),left:e.left-i.left-parseFloat(n.marginLeft)}},he=function(t){return parseInt(t,10)},fe=function(t){return parseFloat(t)},pe=function(t,e){return fe(t).toFixed(he(e)||0)},me=function(){return(me=Object.assign||function(t){for(var e,i=1,n=arguments.length;i1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return(t=k(t).filter(ht)).some((function(t){return e[t]||i[t]}))},xe=function(t){var e,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};t=k(t).filter(ht);for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{},i=xe(t,e,this.$scopedSlots,this.$slots);return i?k(i):i}}},_e="BButtonClose",De={content:{type:String,default:function(){return Ft(_e,"content")}},disabled:{type:Boolean,default:!1},ariaLabel:{type:String,default:function(){return Ft(_e,"ariaLabel")}},textVariant:{type:String,default:function(){return Ft(_e,"textVariant")}}},Pe=t.extend({name:_e,functional:!0,props:De,render:function(t,e){var i=e.props,n=e.data,a=e.slots,o=e.scopedSlots,s=a(),l=o||{},u={staticClass:"close",class:r({},"text-".concat(i.textVariant),i.textVariant),attrs:{type:"button",disabled:i.disabled,"aria-label":i.ariaLabel?String(i.ariaLabel):null},on:{click:function(t){i.disabled&<(t)&&(t.stopPropagation(),t.preventDefault())}}};return Ce("default",l,s)||(u.domProps={innerHTML:i.content}),t("button",Te(n,u),xe("default",{},l,s))}}),Ie=function(t){return""===t||at(t)?0:(t=he(t))>0?t:0},Oe=function(t){return""===t||!0===t||!(he(t)<1)&&!!t},Fe=function(t){return!isNaN(he(t))},Ee=kt({components:{BAlert:t.extend({name:"BAlert",mixins:[$e],model:{prop:"show",event:"input"},props:{variant:{type:String,default:function(){return Ft("BAlert","variant")}},dismissible:{type:Boolean,default:!1},dismissLabel:{type:String,default:function(){return Ft("BAlert","dismissLabel")}},show:{type:[Boolean,Number,String],default:!1},fade:{type:Boolean,default:!1}},data:function(){return{countDownTimerId:null,countDown:0,localShow:Oe(this.show)}},watch:{show:function(t){this.countDown=Ie(t),this.localShow=Oe(t)},countDown:function(t){var e=this;this.clearTimer(),Fe(this.show)&&(this.$emit("dismiss-count-down",t),this.show!==t&&this.$emit("input",t),t>0?(this.localShow=!0,this.countDownTimerId=setTimeout((function(){e.countDown--}),1e3)):this.$nextTick((function(){zt((function(){e.localShow=!1}))})))},localShow:function(t){t||!this.dismissible&&!Fe(this.show)||this.$emit("dismissed"),Fe(this.show)||this.show===t||this.$emit("input",t)}},created:function(){this.countDown=Ie(this.show),this.localShow=Oe(this.show)},mounted:function(){this.countDown=Ie(this.show),this.localShow=Oe(this.show)},beforeDestroy:function(){this.clearTimer()},methods:{dismiss:function(){this.clearTimer(),this.countDown=0,this.localShow=!1},clearTimer:function(){this.countDownTimerId&&(clearInterval(this.countDownTimerId),this.countDownTimerId=null)}},render:function(t){var e;if(this.localShow){var i=t();this.dismissible&&(i=t(Pe,{attrs:{"aria-label":this.dismissLabel},on:{click:this.dismiss}},[this.normalizeSlot("dismiss")])),e=[e=t("div",{key:this._uid,staticClass:"alert",class:r({"alert-dismissible":this.dismissible},"alert-".concat(this.variant),this.variant),attrs:{role:"alert","aria-live":"polite","aria-atomic":!0}},[i,this.normalizeSlot("default")])]}return t(ke,{props:{noFade:!this.fade}},e)}})}}),Ve=function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:ht;return(w(t)?t.slice():I(t)).reduce((function(t,n){return t[i(n)]=e[n],t}),{})},Ne=/^\s+/,Ae=/[-/\\^$*+?.()|[\]{}]/g,Me=/-(\w)/g,Re=/\B([A-Z])/g,Le=function(t){return t.replace(Re,"-$1").toLowerCase()},He=function(t){return(t=Le(t).replace(Me,(function(t,e){return e?e.toUpperCase():""}))).charAt(0).toUpperCase()+t.slice(1)},ze=function(t){return(t=rt(t)?t.trim():String(t)).charAt(0).toUpperCase()+t.slice(1)},je=function(t){return t.replace(Ae,"\\$&")},Ge=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return it(t)?"":w(t)||E(t)&&t.toString===Object.prototype.toString?JSON.stringify(t,null,e):String(t)},We=function(t){return Ge(t).trim()},Ue=function(t){return Ge(t).toLowerCase()},Ye=/%2C/g,qe=/[!'()*]/g,Ke=/\+/g,Xe=/^(\?|#|&)/,Ze=function(t){return"%"+t.charCodeAt(0).toString(16)},Je=function(t){return encodeURIComponent(Ge(t)).replace(qe,Ze).replace(Ye,",")},Qe=decodeURIComponent,ti=function(t){if(!E(t))return"";var e=I(t).map((function(e){var i=t[e];return tt(i)?"":et(i)?Je(e):w(i)?i.reduce((function(t,i){return et(i)?t.push(Je(e)):tt(i)||t.push(Je(e)+"="+Je(i)),t}),[]).join("&"):Je(e)+"="+Je(i)})).filter((function(t){return t.length>0})).join("&");return e?"?".concat(e):""},ei=function(t){var e={};return(t=Ge(t).trim().replace(Xe,""))?(t.split("&").forEach((function(t){var i=t.replace(Ke," ").split("="),n=Qe(i.shift()),a=i.length>0?Qe(i.join("=")):null;tt(e[n])?e[n]=a:w(e[n])?e[n].push(a):e[n]=[e[n],a]})),e):e},ii=function(t){return"a"!==Ge(t).toLowerCase()},ni=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.href,i=t.to,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"a",a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"#",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"/";if(ii(n))return null;if(e)return e;if(i){if(rt(i))return i||r;if(E(i)&&(i.path||i.query||i.hash)){var o=Ge(i.path),s=ti(i.query),l=Ge(i.hash);return l=l&&"#"!==l.charAt(0)?"#".concat(l):l,"".concat(o).concat(s).concat(l)||r}}return a},ai=function(){return{href:{type:String,default:null},rel:{type:String,default:null},target:{type:String,default:"_self"},active:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},to:{type:[String,Object],default:null},append:{type:Boolean,default:!1},replace:{type:Boolean,default:!1},event:{type:[String,Array],default:"click"},activeClass:{type:String},exact:{type:Boolean,default:!1},exactActiveClass:{type:String},routerTag:{type:String,default:"a"},noPrefetch:{type:Boolean,default:!1}}},ri=t.extend({name:"BLink",mixins:[$e],inheritAttrs:!1,props:ai(),computed:{computedTag:function(){return function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.to,i=t.disabled,n=arguments.length>1?arguments[1]:void 0;return n.$router&&e&&!i?n.$nuxt?"nuxt-link":"router-link":"a"}({to:this.to,disabled:this.disabled},this)},isRouterLink:function(){return ii(this.computedTag)},computedRel:function(){return function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.target,i=t.rel;return"_blank"===e&&et(i)?"noopener":i||null}({target:this.target,rel:this.rel})},computedHref:function(){return ni({to:this.to,href:this.href},this.computedTag)},computedProps:function(){return this.isRouterLink?s({},this.$props,{tag:this.routerTag}):{}}},methods:{onClick:function(t){var e=arguments,i=lt(t),n=this.isRouterLink,a=this.$listeners.click;i&&this.disabled?(t.stopPropagation(),t.stopImmediatePropagation()):(n&&t.currentTarget.__vue__&&t.currentTarget.__vue__.$emit("click",t),k(a).filter((function(t){return nt(t)})).forEach((function(t){t.apply(void 0,b(e))})),this.$root.$emit("clicked::link",t)),i&&(this.disabled||!n&&"#"===this.computedHref)&&t.preventDefault()},focus:function(){this.$el&&this.$el.focus&&this.$el.focus()},blur:function(){this.$el&&this.$el.blur&&this.$el.blur()}},render:function(t){var e=this.computedTag,i=this.computedRel,n=this.computedHref,a=this.isRouterLink,r={class:{active:this.active,disabled:this.disabled},attrs:s({},this.$attrs,{rel:i,target:this.target,tabindex:this.disabled?"-1":tt(this.$attrs.tabindex)?null:this.$attrs.tabindex,"aria-disabled":this.disabled?"true":null}),props:this.computedProps};return r[a?"nativeOn":"on"]=s({},this.$listeners,{click:this.onClick}),n?r.attrs.href=n:delete r.props.href,t(e,r,this.normalizeSlot("default"))}}),oi=ai();delete oi.href.default,delete oi.to.default;var si=s({},oi,{tag:{type:String,default:"span"},variant:{type:String,default:function(){return Ft("BBadge","variant")}},pill:{type:Boolean,default:!1}}),li=t.extend({name:"BBadge",functional:!0,props:si,render:function(t,e){var i=e.props,n=e.data,a=e.children,r=i.href||i.to;return t(r?ri:i.tag,Te(n,{staticClass:"badge",class:[i.variant?"badge-".concat(i.variant):"badge-secondary",{"badge-pill":i.pill,active:i.active,disabled:i.disabled}],props:r?Ve(oi,i):{}}),a)}}),ui=kt({components:{BBadge:li}}),ci=/(<([^>]+)>)/gi,di=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return String(t).replace(ci,"")},hi=function(t,e){return t?{innerHTML:t}:e?{textContent:e}:{}},fi=s({},ai(),{text:{type:String,default:null},html:{type:String,default:null},ariaCurrent:{type:String,default:"location"}}),pi=t.extend({name:"BBreadcrumbLink",functional:!0,props:fi,render:function(t,e){var i=e.props,n=e.data,a=e.children,r=i.active?"span":ri,o={props:Ve(fi,i)};return i.active&&(o.attrs={"aria-current":i.ariaCurrent}),a||(o.domProps=hi(i.html,i.text)),t(r,Te(n,o),a)}}),mi=t.extend({name:"BBreadcrumbItem",functional:!0,props:fi,render:function(t,e){var i=e.props,n=e.data,a=e.children;return t("li",Te(n,{staticClass:"breadcrumb-item",class:{active:i.active}}),[t(pi,{props:i},a)])}}),gi={items:{type:Array,default:null}},vi=kt({components:{BBreadcrumb:t.extend({name:"BBreadcrumb",functional:!0,props:gi,render:function(t,e){var i=e.props,n=e.data,a=e.children;if(w(i.items)){var r=!1;a=i.items.map((function(e,n){F(e)||(e={text:Ge(e)});var a=e.active;return a&&(r=!0),a||r||(a=n+1===i.items.length),t(mi,{props:s({},e,{active:a})})}))}return t("ol",Te(n,{staticClass:"breadcrumb"}),a)}}),BBreadcrumbItem:mi,BBreadcrumbLink:pi}}),bi=D({SPACE:32,ENTER:13,ESC:27,LEFT:37,UP:38,RIGHT:39,DOWN:40,PAGEUP:33,PAGEDOWN:34,HOME:36,END:35,TAB:9,SHIFT:16,CTRL:17,BACKSPACE:8,ALT:18,PAUSE:19,BREAK:19,INSERT:45,INS:45,DELETE:46}),yi={block:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},size:{type:String,default:function(){return Ft("BButton","size")}},variant:{type:String,default:function(){return Ft("BButton","variant")}},type:{type:String,default:"button"},tag:{type:String,default:"button"},pill:{type:Boolean,default:!1},squared:{type:Boolean,default:!1},pressed:{type:Boolean,default:null}},Si=ai();delete Si.href.default,delete Si.to.default;var Ti=I(Si),wi=s({},Si,{},yi),Bi=function(t,e){return Ge(t).toLowerCase()===Ge(e).toLowerCase()},ki=function(t){"focusin"===t.type?te(t.target,"focus"):"focusout"===t.type&&ee(t.target,"focus")},Ci=function(t){return t.href||t.to||Bi(t.tag,"a")},xi=function(t){return at(t.pressed)},$i=function(t){return!(Ci(t)||t.tag&&!Bi(t.tag,"button"))},_i=function(t){return!Ci(t)&&!$i(t)},Di=function(t){var e;return["btn-".concat(t.variant||Ft("BButton","variant")),(e={},r(e,"btn-".concat(t.size),t.size),r(e,"btn-block",t.block),r(e,"rounded-pill",t.pill),r(e,"rounded-0",t.squared&&!t.pill),r(e,"disabled",t.disabled),r(e,"active",t.pressed),e)]},Pi=function(t){return Ci(t)?Ve(Ti,t):null},Ii=function(t,e){var i=$i(t),n=Ci(t),a=xi(t),r=_i(t),o=n&&"#"===t.href,s=e.attrs&&e.attrs.role?e.attrs.role:null,l=e.attrs?e.attrs.tabindex:null;return(r||o)&&(l="0"),{type:i&&!n?t.type:null,disabled:i?t.disabled:null,role:r||o?"button":s,"aria-disabled":r?String(t.disabled):null,"aria-pressed":a?String(t.pressed):null,autocomplete:a?"off":null,tabindex:t.disabled&&!i?"-1":l}},Oi=t.extend({name:"BButton",functional:!0,props:wi,render:function(t,e){var i=e.props,n=e.data,a=e.listeners,r=e.children,o=xi(i),s=Ci(i),l=_i(i),u=s&&"#"===i.href,c={keydown:function(t){if(!i.disabled&&(l||u)){var e=t.keyCode;if(e===bi.SPACE||e===bi.ENTER&&l){var n=t.currentTarget||t.target;t.preventDefault(),n.click()}}},click:function(t){i.disabled&<(t)?(t.stopPropagation(),t.preventDefault()):o&&a&&a["update:pressed"]&&k(a["update:pressed"]).forEach((function(t){nt(t)&&t(!i.pressed)}))}};o&&(c.focusin=ki,c.focusout=ki);var d={staticClass:"btn",class:Di(i),props:Pi(i),attrs:Ii(i,n),on:c};return t(s?ri:i.tag,Te(n,d),r)}}),Fi=kt({components:{BButton:Oi,BBtn:Oi,BButtonClose:Pe,BBtnClose:Pe}}),Ei={vertical:{type:Boolean,default:!1},size:{type:String,default:function(){return Ft("BButton","size")}},tag:{type:String,default:"div"},ariaRole:{type:String,default:"group"}},Vi=t.extend({name:"BButtonGroup",functional:!0,props:Ei,render:function(t,e){var i=e.props,n=e.data,a=e.children;return t(i.tag,Te(n,{class:r({"btn-group":!i.vertical,"btn-group-vertical":i.vertical},"btn-group-".concat(i.size),i.size),attrs:{role:i.ariaRole}}),a)}}),Ni=kt({components:{BButtonGroup:Vi,BBtnGroup:Vi}}),Ai=[".btn:not(.disabled):not([disabled]):not(.dropdown-item)",".form-control:not(.disabled):not([disabled])","select:not(.disabled):not([disabled])",'input[type="checkbox"]:not(.disabled)','input[type="radio"]:not(.disabled)'].join(","),Mi=t.extend({name:"BButtonToolbar",mixins:[$e],props:{justify:{type:Boolean,default:!1},keyNav:{type:Boolean,default:!1}},mounted:function(){this.keyNav&&this.getItems()},methods:{onFocusin:function(t){t.target===this.$el&&(t.preventDefault(),t.stopPropagation(),this.focusFirst(t))},stop:function(t){t.preventDefault(),t.stopPropagation()},onKeydown:function(t){if(this.keyNav){var e=t.keyCode,i=t.shiftKey;e===bi.UP||e===bi.LEFT?(this.stop(t),i?this.focusFirst(t):this.focusPrev(t)):e!==bi.DOWN&&e!==bi.RIGHT||(this.stop(t),i?this.focusLast(t):this.focusNext(t))}},setItemFocus:function(t){t&&t.focus&&t.focus()},focusFirst:function(){var t=this.getItems();this.setItemFocus(t[0])},focusPrev:function(t){var e=this.getItems(),i=e.indexOf(t.target);i>-1&&(e=e.slice(0,i).reverse(),this.setItemFocus(e[0]))},focusNext:function(t){var e=this.getItems(),i=e.indexOf(t.target);i>-1&&(e=e.slice(i+1),this.setItemFocus(e[0]))},focusLast:function(){var t=this.getItems().reverse();this.setItemFocus(t[0])},getItems:function(){var t=qt(Ai,this.$el);return t.forEach((function(t){t.tabIndex=-1})),t.filter((function(t){return Wt(t)}))}},render:function(t){return t("div",{staticClass:"btn-toolbar",class:{"justify-content-between":this.justify},attrs:{role:"toolbar",tabindex:this.keyNav?"0":null},on:this.keyNav?{focusin:this.onFocusin,keydown:this.onKeydown}:{}},[this.normalizeSlot("default")])}}),Ri=kt({components:{BButtonToolbar:Mi,BBtnToolbar:Mi}}),Li=function(t,e){if(t.length!==e.length)return!1;for(var i=!0,n=0;i&&n'),ln=rn("CalendarFill",''),un=rn("ChevronLeft",''),cn=rn("CircleFill",''),dn=rn("Dash",''),hn=rn("Plus",''),fn=t.extend({name:"BIconstack",functional:!0,props:s({},en),render:function(t,e){var i=e.data,n=e.props,a=e.children;return t(an,Te(i,{staticClass:"b-iconstack",props:s({},n,{stacked:!1})}),a)}}),pn="BCalendar",mn=bi.UP,gn=bi.DOWN,vn=bi.LEFT,bn=bi.RIGHT,yn=bi.PAGEUP,Sn=bi.PAGEDOWN,Tn=bi.HOME,wn=bi.END,Bn=bi.ENTER,kn=bi.SPACE,Cn=["ar","az","ckb","fa","he","ks","lrc","mzn","ps","sd","te","ug","ur","yi"].map((function(t){return t.toLowerCase()})),xn=t.extend({name:pn,mixins:[tn,$e],model:{prop:"value",event:"input"},props:{value:{type:[String,Date]},valueAsDate:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},min:{type:[String,Date]},max:{type:[String,Date]},dateDisabledFn:{type:Function},startWeekday:{type:[Number,String],default:0},locale:{type:[String,Array]},direction:{type:String},selectedVariant:{type:String,default:"primary"},todayVariant:{type:String},noHighlightToday:{type:Boolean,default:!1},dateInfoFn:{type:Function},width:{type:String,default:"270px"},block:{type:Boolean,default:!1},hideHeader:{type:Boolean,default:!1},hidden:{type:Boolean,default:!1},ariaControls:{type:String},roleDescription:{type:String},labelPrevYear:{type:String,default:function(){return Ft(pn,"labelPrevYear")}},labelPrevMonth:{type:String,default:function(){return Ft(pn,"labelPrevMonth")}},labelCurrentMonth:{type:String,default:function(){return Ft(pn,"labelCurrentMonth")}},labelNextMonth:{type:String,default:function(){return Ft(pn,"labelNextMonth")}},labelNextYear:{type:String,default:function(){return Ft(pn,"labelNextYear")}},labelToday:{type:String,default:function(){return Ft(pn,"labelToday")}},labelSelected:{type:String,default:function(){return Ft(pn,"labelSelected")}},labelNoDateSelected:{type:String,default:function(){return Ft(pn,"labelNoDateSelected")}},labelCalendar:{type:String,default:function(){return Ft(pn,"labelCalendar")}},labelNav:{type:String,default:function(){return Ft(pn,"labelNav")}},labelHelp:{type:String,default:function(){return Ft(pn,"labelHelp")}}},data:function(){var t=Wi(this.value)||"";return{selectedYMD:t,activeYMD:t||Wi(this.getToday()),gridHasFocus:!1,isLive:!1}},computed:{selectedDate:function(){return Gi(this.selectedYMD)},activeDate:function(){return Gi(this.activeYMD)},computedMin:function(){return Gi(this.min)},computedMax:function(){return Gi(this.max)},computedWeekStarts:function(){return Math.max(he(this.startWeekday)||0,0)%7},computedLocale:function(){return function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"gregory";t=k(t).filter(ht);var i=new Intl.DateTimeFormat(t,{calendar:e});return i.resolvedOptions().locale}(k(this.locale).filter(ht),"gregory")},calendarLocale:function(){var t=new Intl.DateTimeFormat(this.computedLocale,{calendar:"gregory"}),e=t.resolvedOptions().calendar,i=t.resolvedOptions().locale;return"gregory"!==e&&(i=i.replace(/-u-.+$/i,"").concat("-u-ca-gregory")),i},calendarYear:function(){return this.activeDate.getFullYear()},calendarMonth:function(){return this.activeDate.getMonth()},calendarFirstDay:function(){return ji(this.calendarYear,this.calendarMonth,1)},calendarDaysInMonth:function(){var t=ji(this.calendarFirstDay);return t.setMonth(t.getMonth()+1,0),t.getDate()},computedVariant:function(){return"btn-".concat(this.selectedVariant||"primary")},computedTodayVariant:function(){return"btn-outline-".concat(this.todayVariant||this.selectedVariant||"primary")},isRTL:function(){var t,e,i,n,a=Ge(this.direction).toLowerCase();return"rtl"===a||"ltr"!==a&&(t=this.computedLocale,e=Ge(t).toLowerCase().replace(/-u-.+/,"").split("-"),i=e.slice(0,2).join("-"),n=e[0],B(Cn,i)||B(Cn,n))},context:function(){var t=this.selectedYMD,e=Gi(t),i=this.activeYMD,n=Gi(i);return{selectedYMD:t,selectedDate:e,selectedFormatted:e?this.formatDateString(e):this.labelNoDateSelected,activeYMD:i,activeDate:n,activeFormatted:n?this.formatDateString(n):"",disabled:this.dateDisabled(n),locale:this.computedLocale,calendarLocale:this.calendarLocale,rtl:this.isRTL}},dateOutOfRange:function(){var t=this.computedMin,e=this.computedMax;return function(i){return i=Gi(i),t&&ie}},dateDisabled:function(){var t=this.dateOutOfRange,e=nt(this.dateDisabledFn)?this.dateDisabledFn:function(){return!1};return function(i){i=Gi(i);var n=Wi(i);return!(!t(i)&&!e(n,i))}},formatDateString:function(){return Ui(this.calendarLocale,{year:"numeric",month:"long",day:"numeric",weekday:"long",calendar:"gregory"})},formatYearMonth:function(){return Ui(this.calendarLocale,{year:"numeric",month:"long",calendar:"gregory"})},formatWeekdayName:function(){return Ui(this.calendarLocale,{weekday:"long",calendar:"gregory"})},formatWeekdayNameShort:function(){return Ui(this.calendarLocale,{weekday:"short",calendar:"gregory"})},formatDay:function(){return Ui(this.calendarLocale,{day:"numeric",calendar:"gregory"})},prevYearDisabled:function(){var t=this.computedMin;return this.disabled||t&&Ki(Ji(this.activeDate))t},nextYearDisabled:function(){var t=this.computedMax;return this.disabled||t&&qi(Qi(this.activeDate))>t},calendar:function(){for(var t=[],e=this.calendarFirstDay,i=e.getFullYear(),n=e.getMonth(),a=this.calendarDaysInMonth,r=e.getDay(),o=(this.computedWeekStarts>r?7:0)-this.computedWeekStarts,l=nt(this.dateInfoFn)?this.dateInfoFn:function(){return{}},u=0-o-r,c=0;c<6&&ui?i:t)},emitSelected:function(t){var e=this;this.$nextTick((function(){e.$emit("selected",Wi(t)||"",Gi(t)||null)}))},setGridFocusFlag:function(t){this.gridHasFocus=!this.disabled&&"focus"===t.type},onKeydownWrapper:function(t){var e=t.keyCode,i=t.altKey;if(B([yn,Sn,wn,Tn,vn,mn,bn,gn],e)){t.preventDefault(),t.stopPropagation();var n=ji(this.activeDate),a=ji(this.activeDate),r=n.getDate(),o=this.isRTL;e===yn?(n=(i?Ji:Xi)(n),(a=ji(n)).setDate(1)):e===Sn?(n=(i?Qi:Zi)(n),(a=ji(n)).setMonth(a.getMonth()+1),a.setDate(0)):e===vn?(n.setDate(r+(o?1:-1)),a=n):e===bn?(n.setDate(r+(o?-1:1)),a=n):e===mn?(n.setDate(r-7),a=n):e===gn?(n.setDate(r+7),a=n):e===Tn?a=n=this.getToday():e===wn&&(a=n=Gi(this.selectedDate)||this.getToday()),this.dateOutOfRange(a)||Yi(n,this.activeDate)||(this.activeYMD=Wi(n)),this.focus()}},onKeydownGrid:function(t){var e=t.keyCode,i=this.activeDate;e!==Bn&&e!==kn||(t.preventDefault(),t.stopPropagation(),this.disabled||this.readonly||this.dateDisabled(i)||(this.selectedYMD=Wi(i),this.emitSelected(i)),this.focus())},onClickDay:function(t){var e=this.selectedDate,i=this.activeDate,n=Gi(t.ymd);this.disabled||t.isDisabled||this.dateDisabled(n)||(this.readonly||(this.selectedYMD=Wi(Yi(n,e)?e:n),this.emitSelected(n)),this.activeYMD=Wi(Yi(n,i)?i:ji(n)),this.focus())},gotoPrevYear:function(){this.activeYMD=Wi(this.constrainDate(Ji(this.activeDate)))},gotoPrevMonth:function(){this.activeYMD=Wi(this.constrainDate(Xi(this.activeDate)))},gotoCurrentMonth:function(){this.activeYMD=Wi(this.getToday())},gotoNextMonth:function(){this.activeYMD=Wi(this.constrainDate(Zi(this.activeDate)))},gotoNextYear:function(){this.activeYMD=Wi(this.constrainDate(Qi(this.activeDate)))}},render:function(t){var e=this;if(this.hidden)return t();var i=this.isRTL,n=Wi(this.getToday()),a=this.selectedYMD,o=this.activeYMD,s=!this.noHighlightToday,l=this.safeId,u=this.isLive,c=l(),d=l("_calendar-value_"),h=l("_calendar-nav_"),f=l("_calendar-grid_"),p=l("_calendar-grid-caption_"),m=l("_calendar-grid-help_"),g=o?l("_cell-".concat(o,"_")):null,v=t("output",{staticClass:"d-block text-center rounded border small p-1 mb-1",class:{"text-muted":this.disabled,readonly:this.readonly||this.disabled},attrs:{id:d,for:f,role:"status","data-selected":Ge(a),"aria-live":u?"polite":"off","aria-atomic":u?"true":null}},this.selectedDate?[t("bdi",{staticClass:"sr-only"}," (".concat(Ge(this.labelSelected),") ")),t("bdi",{},this.formatDateString(this.selectedDate))]:this.labelNoDateSelected||" ");v=t("header",{class:this.hideHeader?"sr-only":"mb-1",attrs:{title:this.selectedDate&&this.labelSelectedDate||null}},[v]);var b=t(fn,{props:{shiftV:.5,flipH:i}},[t(un,{props:{shiftH:-2}}),t(un,{props:{shiftH:2}})]),y=t(un,{props:{shiftV:.5,flipH:i}}),S=t(cn,{props:{shiftV:.5}}),T=t(un,{props:{shiftV:.5,flipH:!i}}),w=t(fn,{props:{shiftV:.5,flipH:!i}},[t(un,{props:{shiftH:-2}}),t(un,{props:{shiftH:2}})]),B=function(e,i,n,a,r){return t("button",{staticClass:"btn btn-sm btn-outline-secondary border-0 flex-fill p-1 mx-1",class:{disabled:a},attrs:{title:i||null,type:"button","aria-label":i||null,"aria-disabled":a?"true":null,"aria-keyshortcuts":r||null},on:a?{}:{click:n}},[t("div",{attrs:{"aria-hidden":"true"}},[e])])},k=t("div",{staticClass:"b-calendar-nav d-flex mx-n1 mb-1",attrs:{id:h,role:"group","aria-hidden":this.disabled?"true":null,"aria-label":this.labelNav||null,"aria-controls":f}},[B(b,this.labelPrevYear,this.gotoPrevYear,this.prevYearDisabled,"Alt+PageDown"),B(y,this.labelPrevMonth,this.gotoPrevMonth,this.prevMonthDisabled,"PageDown"),B(S,this.labelCurrentMonth,this.gotoCurrentMonth,this.thisMonthDisabled,"Home"),B(T,this.labelNextMonth,this.gotoNextMonth,this.nextMonthDisabled,"PageUp"),B(w,this.labelNextYear,this.gotoNextYear,this.nextYearDisabled,"Alt+PageUp")]),C=t("header",{key:"grid-caption",staticClass:"text-center font-weight-bold p-1 m-0",class:{"text-muted":this.disabled},attrs:{id:p,"aria-live":u?"polite":null,"aria-atomic":u?"true":null}},this.formatYearMonth(this.calendarFirstDay)),x=t("div",{staticClass:"row no-gutters border-bottom",attrs:{"aria-hidden":"true"}},this.calendarHeadings.map((function(i,n){return t("small",{key:n,staticClass:"col",class:{"text-muted":e.disabled},attrs:{title:i.label===i.text?null:i.label,"aria-label":i.label}},i.text)}))),$=this.calendar.map((function(i){var u=i.map((function(i,u){var c,d=i.ymd===a,h=i.ymd===o,f=i.ymd===n,p=l("_cell-".concat(i.ymd,"_")),m=t("span",{staticClass:"btn border-0 rounded-circle text-nowrap",class:(c={focus:h&&e.gridHasFocus,disabled:i.isDisabled||e.disabled,active:d},r(c,e.computedVariant,d),r(c,e.computedTodayVariant,f&&s&&!d&&i.isThisMonth),r(c,"btn-outline-light",!(f&&s||d||h)),r(c,"btn-light",!(f&&s)&&!d&&h),r(c,"text-muted",!i.isThisMonth&&!d),r(c,"text-dark",!(f&&s)&&!d&&!h&&i.isThisMonth),r(c,"font-weight-bold",(d||i.isThisMonth)&&!i.isDisabled),c),on:{click:function(){return e.onClickDay(i)}}},i.day);return t("div",{key:u,staticClass:"col p-0",class:i.isDisabled?"bg-light":i.info.class||"",attrs:{id:p,role:"button","data-date":i.ymd,"aria-hidden":i.isThisMonth?null:"true","aria-disabled":i.isDisabled||e.disabled?"true":null,"aria-label":[i.label,d?"(".concat(e.labelSelected,")"):null,f?"(".concat(e.labelToday,")"):null].filter(ht).join(" "),"aria-selected":d?"true":null,"aria-current":d?"date":null}},[m])}));return t("div",{key:i[0].ymd,staticClass:"row no-gutters"},u)}));$=t("div",{staticClass:"b-calendar-grid-body",style:this.disabled?{pointerEvents:"none"}:{}},$);var _=t("footer",{staticClass:"border-top small text-muted text-center bg-light",attrs:{id:m}},[t("div",{staticClass:"small"},this.labelHelp)]),D=t("div",{ref:"grid",staticClass:"form-control h-auto text-center p-0 mb-0",attrs:{id:f,role:"application",tabindex:this.disabled?null:"0","data-month":o.slice(0,-3),"aria-roledescription":this.labelCalendar||null,"aria-labelledby":p,"aria-describedby":m,"aria-disabled":this.disabled?"true":null,"aria-activedescendant":g},on:{keydown:this.onKeydownGrid,focus:this.setGridFocusFlag,blur:this.setGridFocusFlag}},[C,x,$,_]),P=this.normalizeSlot("default");P=P?t("footer",{staticClass:"mt-2"},P):t();var I=t("div",{class:this.block?"d-block":"d-inline-block",style:this.block?{}:{width:this.width},attrs:{id:c,dir:i?"rtl":"ltr",lang:this.computedLocale||null,role:"group","aria-disabled":this.disabled?"true":null,"aria-controls":this.ariaControls||null,"aria-roledescription":this.roleDescription||null,"aria-describedby":[this.$attrs["aria-describedby"],d,m].filter(ht).join(" ")},on:{keydown:this.onKeydownWrapper}},[v,k,D,P]);return t("div",{staticClass:"b-calendar",style:this.block?{}:{display:"inline-block"}},[I])}}),$n=kt({components:{BCalendar:xn}}),_n=function(t,e){return t+ze(e)},Dn=function(t,e){return i=e.replace(t,""),(i=rt(i)?i.trim():String(i)).charAt(0).toLowerCase()+i.slice(1);var i},Pn=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ht;if(w(t))return t.map(e);var i={};for(var n in t)t.hasOwnProperty(n)&&(i[e(n)]=F(t[n])?V(t[n]):t[n]);return i},In={props:{tag:{type:String,default:"div"},bgVariant:{type:String,default:null},borderVariant:{type:String,default:null},textVariant:{type:String,default:null}}},On={title:{type:String,default:""},titleTag:{type:String,default:"h4"}},Fn=t.extend({name:"BCardTitle",functional:!0,props:On,render:function(t,e){var i=e.props,n=e.data,a=e.children;return t(i.titleTag,Te(n,{staticClass:"card-title"}),a||i.title)}}),En={subTitle:{type:String,default:""},subTitleTag:{type:String,default:"h6"},subTitleTextVariant:{type:String,default:function(){return Ft("BCardSubTitle","subTitleTextVariant")}}},Vn=t.extend({name:"BCardSubTitle",functional:!0,props:En,render:function(t,e){var i=e.props,n=e.data,a=e.children;return t(i.subTitleTag,Te(n,{staticClass:"card-subtitle",class:[i.subTitleTextVariant?"text-".concat(i.subTitleTextVariant):null]}),a||i.subTitle)}}),Nn=s({},Pn(In.props,_n.bind(null,"body")),{bodyClass:{type:[String,Object,Array],default:null}},On,{},En,{overlay:{type:Boolean,default:!1}}),An=t.extend({name:"BCardBody",functional:!0,props:Nn,render:function(t,e){var i,n=e.props,a=e.data,o=e.children,s=t(),l=t(),u=o||[t()];return n.title&&(s=t(Fn,{props:Ve(On,n)})),n.subTitle&&(l=t(Vn,{props:Ve(En,n),class:["mb-2"]})),t(n.bodyTag,Te(a,{staticClass:"card-body",class:[(i={"card-img-overlay":n.overlay},r(i,"bg-".concat(n.bodyBgVariant),n.bodyBgVariant),r(i,"border-".concat(n.bodyBorderVariant),n.bodyBorderVariant),r(i,"text-".concat(n.bodyTextVariant),n.bodyTextVariant),i),n.bodyClass||{}]}),[s,l].concat(b(u)))}}),Mn=s({},Pn(In.props,_n.bind(null,"header")),{header:{type:String,default:null},headerHtml:{type:String,default:null},headerClass:{type:[String,Object,Array],default:null}}),Rn=t.extend({name:"BCardHeader",functional:!0,props:Mn,render:function(t,e){var i,n=e.props,a=e.data,o=e.children;return t(n.headerTag,Te(a,{staticClass:"card-header",class:[n.headerClass,(i={},r(i,"bg-".concat(n.headerBgVariant),n.headerBgVariant),r(i,"border-".concat(n.headerBorderVariant),n.headerBorderVariant),r(i,"text-".concat(n.headerTextVariant),n.headerTextVariant),i)]}),o||[t("div",{domProps:hi(n.headerHtml,n.header)})])}}),Ln=s({},Pn(In.props,_n.bind(null,"footer")),{footer:{type:String,default:null},footerHtml:{type:String,default:null},footerClass:{type:[String,Object,Array],default:null}}),Hn=t.extend({name:"BCardFooter",functional:!0,props:Ln,render:function(t,e){var i,n=e.props,a=e.data,o=e.children;return t(n.footerTag,Te(a,{staticClass:"card-footer",class:[n.footerClass,(i={},r(i,"bg-".concat(n.footerBgVariant),n.footerBgVariant),r(i,"border-".concat(n.footerBorderVariant),n.footerBorderVariant),r(i,"text-".concat(n.footerTextVariant),n.footerTextVariant),i)]}),o||[t("div",{domProps:hi(n.footerHtml,n.footer)})])}}),zn={src:{type:String,default:null,required:!0},alt:{type:String,default:null},top:{type:Boolean,default:!1},bottom:{type:Boolean,default:!1},start:{type:Boolean,default:!1},left:{type:Boolean,default:!1},end:{type:Boolean,default:!1},right:{type:Boolean,default:!1},height:{type:[Number,String],default:null},width:{type:[Number,String],default:null}},jn=t.extend({name:"BCardImg",functional:!0,props:zn,render:function(t,e){var i=e.props,n=e.data,a="card-img";return i.top?a+="-top":i.right||i.end?a+="-right":i.bottom?a+="-bottom":(i.left||i.start)&&(a+="-left"),t("img",Te(n,{class:[a],attrs:{src:i.src,alt:i.alt,height:i.height,width:i.width}}))}}),Gn=Pn(zn,_n.bind(null,"img"));Gn.imgSrc.required=!1;var Wn=s({},Nn,{},Mn,{},Ln,{},Gn,{},Pn(In.props),{align:{type:String,default:null},noBody:{type:Boolean,default:!1}}),Un=t.extend({name:"BCard",functional:!0,props:Wn,render:function(t,e){var i,n=e.props,a=e.data,o=e.slots,s=e.scopedSlots,l=o(),u=s||{},c=t(),d=t(),h=t(),f=t(),p=t();if(n.imgSrc){var m=t(jn,{props:Ve(Gn,n,Dn.bind(null,"img"))});n.imgBottom?p=m:c=m}return(n.header||Ce("header",u,l))&&(d=t(Rn,{props:Ve(Mn,n)},xe("header",{},u,l))),h=xe("default",{},u,l)||[],n.noBody||(h=[t(An,{props:Ve(Nn,n)},b(h))]),(n.footer||Ce("footer",u,l))&&(f=t(Hn,{props:Ve(Ln,n)},xe("footer",{},u,l))),t(n.tag,Te(a,{staticClass:"card",class:(i={"flex-row":n.imgLeft||n.imgStart,"flex-row-reverse":(n.imgRight||n.imgEnd)&&!(n.imgLeft||n.imgStart)},r(i,"text-".concat(n.align),n.align),r(i,"bg-".concat(n.bgVariant),n.bgVariant),r(i,"border-".concat(n.borderVariant),n.borderVariant),r(i,"text-".concat(n.textVariant),n.textVariant),i)}),[c,d].concat(b(h),[f,p]))}}),Yn="__bv__visibility_observer",qn=/^\d+$/,Kn=function(){function t(e,n,a){i(this,t),this.el=e,this.callback=n.callback,this.margin=n.margin||0,this.once=n.once||!1,this.observer=null,this.visible=void 0,this.doneOnce=!1,this.createObserver(a)}return a(t,[{key:"createObserver",value:function(t){var e=this;if(this.observer&&this.stop(),!this.doneOnce&&nt(this.callback)){try{this.observer=new IntersectionObserver(this.handler.bind(this),{root:null,rootMargin:this.margin,threshold:0})}catch(t){return this.doneOnce=!0,this.observer=void 0,void this.callback(null)}t.context.$nextTick((function(){zt((function(){e.observer&&e.observer.observe(e.el)}))}))}}},{key:"handler",value:function(t){var e=t?t[0]:{},i=Boolean(e.isIntersecting||e.intersectionRatio>0);i!==this.visible&&(this.visible=i,this.callback(i),this.once&&this.visible&&(this.doneOnce=!0,this.stop()))}},{key:"stop",value:function(){var t=this.observer;t&&t.disconnect&&t.disconnect(),this.observer=null}}]),t}(),Xn=function(t){var e=t[Yn];e&&e.stop&&e.stop(),delete t[Yn]},Zn=function(t,e,i){var n=e.value,a=e.modifiers,r={margin:"0px",once:!1,callback:n};I(a).forEach((function(t){qn.test(t)?r.margin="".concat(t,"px"):"once"===t.toLowerCase()&&(r.once=!0)})),Xn(t),t[Yn]=new Kn(t,r,i),t[Yn]._prevModifiers=V(a)},Jn={bind:Zn,componentUpdated:function(t,e,i){var n=e.value,a=e.oldValue,r=e.modifiers;r=V(r),!t||n===a&&t[Yn]&&Hi(r,t[Yn]._prevModifiers)||Zn(t,{value:n,modifiers:r},i)},unbind:function(t){Xn(t)}},Qn='',ta={src:{type:String,default:null},srcset:{type:[String,Array],default:null},sizes:{type:[String,Array],default:null},alt:{type:String,default:null},width:{type:[Number,String],default:null},height:{type:[Number,String],default:null},block:{type:Boolean,default:!1},fluid:{type:Boolean,default:!1},fluidGrow:{type:Boolean,default:!1},rounded:{type:[Boolean,String],default:!1},thumbnail:{type:Boolean,default:!1},left:{type:Boolean,default:!1},right:{type:Boolean,default:!1},center:{type:Boolean,default:!1},blank:{type:Boolean,default:!1},blankColor:{type:String,default:function(){return Ft("BImg","blankColor")}}},ea=t.extend({name:"BImg",functional:!0,props:ta,render:function(t,e){var i,n=e.props,a=e.data,o=n.src,s=he(n.width)||null,l=he(n.height)||null,u=null,c=n.block,d=k(n.srcset).filter(ht).join(","),h=k(n.sizes).filter(ht).join(",");return n.blank&&(!l&&s?l=s:!s&&l&&(s=l),s||l||(s=1,l=1),o=function(t,e,i){var n=encodeURIComponent(Qn.replace("%{w}",Ge(t)).replace("%{h}",Ge(e)).replace("%{f}",i));return"data:image/svg+xml;charset=UTF-8,".concat(n)}(s,l,n.blankColor||"transparent"),d=null,h=null),n.left?u="float-left":n.right?u="float-right":n.center&&(u="mx-auto",c=!0),t("img",Te(a,{attrs:{src:o,alt:n.alt,width:s?Ge(s):null,height:l?Ge(l):null,srcset:d||null,sizes:h||null},class:(i={"img-thumbnail":n.thumbnail,"img-fluid":n.fluid||n.fluidGrow,"w-100":n.fluidGrow,rounded:""===n.rounded||!0===n.rounded},r(i,"rounded-".concat(n.rounded),rt(n.rounded)&&""!==n.rounded),r(i,u,u),r(i,"d-block",c),i)}))}}),ia={src:{type:String,default:null,required:!0},srcset:{type:[String,Array],default:null},sizes:{type:[String,Array],default:null},alt:{type:String,default:null},width:{type:[Number,String],default:null},height:{type:[Number,String],default:null},blankSrc:{type:String,default:null},blankColor:{type:String,default:function(){return Ft("BImgLazy","blankColor")}},blankWidth:{type:[Number,String],default:null},blankHeight:{type:[Number,String],default:null},show:{type:Boolean,default:!1},fluid:{type:Boolean,default:!1},fluidGrow:{type:Boolean,default:!1},block:{type:Boolean,default:!1},thumbnail:{type:Boolean,default:!1},rounded:{type:[Boolean,String],default:!1},left:{type:Boolean,default:!1},right:{type:Boolean,default:!1},center:{type:Boolean,default:!1},offset:{type:[Number,String],default:360}},na=t.extend({name:"BImgLazy",directives:{bVisible:Jn},props:ia,data:function(){return{isShown:this.show}},computed:{computedSrc:function(){return!this.blankSrc||this.isShown?this.src:this.blankSrc},computedBlank:function(){return!(this.isShown||this.blankSrc)},computedWidth:function(){return this.isShown?this.width:this.blankWidth||this.width},computedHeight:function(){return this.isShown?this.height:this.blankHeight||this.height},computedSrcset:function(){var t=k(this.srcset).filter(ht).join(",");return!this.blankSrc||this.isShown?t:null},computedSizes:function(){var t=k(this.sizes).filter(ht).join(",");return!this.blankSrc||this.isShown?t:null}},watch:{show:function(t,e){if(t!==e){var i=!q||t;this.isShown=i,i!==t&&this.$nextTick(this.updateShowProp)}},isShown:function(t,e){t!==e&&this.updateShowProp()}},mounted:function(){this.isShown=!q||this.show},methods:{updateShowProp:function(){this.$emit("update:show",this.isShown)},doShow:function(t){!t&&null!==t||this.isShown||(this.isShown=!0)}},render:function(t){var e,i=[];this.isShown||i.push({name:"b-visible",value:this.doShow,modifiers:(e={},r(e,"".concat(he(this.offset)||0),!0),r(e,"once",!0),e)});return t(ea,{directives:i,props:{src:this.computedSrc,blank:this.computedBlank,width:this.computedWidth,height:this.computedHeight,srcset:this.computedSrcset||null,sizes:this.computedSizes||null,alt:this.alt,blankColor:this.blankColor,fluid:this.fluid,fluidGrow:this.fluidGrow,block:this.block,thumbnail:this.thumbnail,rounded:this.rounded,left:this.left,right:this.right,center:this.center}})}}),aa=s({},N(ia,["left","right","center","block","rounded","thumbnail","fluid","fluidGrow"]),{top:{type:Boolean,default:!1},bottom:{type:Boolean,default:!1},start:{type:Boolean,default:!1},left:{type:Boolean,default:!1},end:{type:Boolean,default:!1},right:{type:Boolean,default:!1}}),ra={textTag:{type:String,default:"p"}},oa={tag:{type:String,default:"div"},deck:{type:Boolean,default:!1},columns:{type:Boolean,default:!1}},sa=kt({components:{BCard:Un,BCardHeader:Rn,BCardBody:An,BCardTitle:Fn,BCardSubTitle:Vn,BCardFooter:Hn,BCardImg:jn,BCardImgLazy:t.extend({name:"BCardImgLazy",functional:!0,props:aa,render:function(t,e){var i=e.props,n=e.data,a="card-img";i.top?a+="-top":i.right||i.end?a+="-right":i.bottom?a+="-bottom":(i.left||i.start)&&(a+="-left");var r=s({},i,{left:!1,right:!1,center:!1});return t(na,Te(n,{class:[a],props:r}))}}),BCardText:t.extend({name:"BCardText",functional:!0,props:ra,render:function(t,e){var i=e.props,n=e.data,a=e.children;return t(i.textTag,Te(n,{staticClass:"card-text"}),a)}}),BCardGroup:t.extend({name:"BCardGroup",functional:!0,props:oa,render:function(t,e){var i=e.props,n=e.data,a=e.children;return t(i.tag,Te(n,{class:i.deck?"card-deck":i.columns?"card-columns":"card-group"}),a)}})}}),la=function(){},ua=function(t,e,i){if(t=t?t.$el||t:null,!Gt(t))return null;if(n="observeDom",!H&&(mt("".concat(n,": Requires MutationObserver support.")),1))return null;var n,a=new jt((function(t){for(var i=!1,n=0;n0||a.removedNodes.length>0)&&(i=!0)}i&&e()}));return a.observe(t,s({childList:!0,subtree:!0},i)),a},ca={passive:!0},da={passive:!0,capture:!1},ha=function(t){return W?F(t)?t:{capture:!!t||!1}:!!(F(t)?t.capture:t)},fa=function(t,e,i,n){t&&t.addEventListener&&t.addEventListener(e,i,ha(n))},pa=function(t,e,i,n){t&&t.removeEventListener&&t.removeEventListener(e,i,ha(n))},ma=function(t){for(var e=t?fa:pa,i=arguments.length,n=new Array(i>1?i-1:0),a=1;a0),touchStartX:0,touchDeltaX:0}},computed:{numSlides:function(){return this.slides.length}},watch:{value:function(t,e){t!==e&&this.setSlide(he(t)||0)},interval:function(t,e){t!==e&&(t?(this.pause(!0),this.start(!1)):this.pause(!1))},isPaused:function(t,e){t!==e&&this.$emit(t?"paused":"unpaused")},index:function(t,e){t===e||this.isSliding||this.doSlide(t,e)}},created:function(){this._intervalId=null,this._animationTimeout=null,this._touchTimeout=null,this.isPaused=!(he(this.interval)>0)},mounted:function(){this.transitionEndEvent=function(t){for(var e in ya)if(!tt(t.style[e]))return ya[e];return null}(this.$el)||null,this.updateSlides(),ua(this.$refs.inner,this.updateSlides.bind(this),{subtree:!1,childList:!0,attributes:!0,attributeFilter:["id"]})},beforeDestroy:function(){clearTimeout(this._animationTimeout),clearTimeout(this._touchTimeout),clearInterval(this._intervalId),this._intervalId=null,this._animationTimeout=null,this._touchTimeout=null},methods:{setSlide:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!(z&&document.visibilityState&&document.hidden)){var n=this.noWrap,a=this.numSlides;t=Math.floor(t),0!==a&&(this.isSliding?this.$once("sliding-end",(function(){return e.setSlide(t,i)})):(this.direction=i,this.index=t>=a?n?a-1:0:t<0?n?0:a-1:t,n&&this.index!==t&&this.index!==this.value&&this.$emit("input",this.index)))}},prev:function(){this.setSlide(this.index-1,"prev")},next:function(){this.setSlide(this.index+1,"next")},pause:function(t){t||(this.isPaused=!0),this._intervalId&&(clearInterval(this._intervalId),this._intervalId=null)},start:function(t){t||(this.isPaused=!1),this._intervalId&&(clearInterval(this._intervalId),this._intervalId=null),this.interval&&this.numSlides>1&&(this._intervalId=setInterval(this.next,Math.max(1e3,this.interval)))},restart:function(){this.$el.contains(document.activeElement)||this.start()},doSlide:function(t,e){var i=this,n=Boolean(this.interval),a=this.calcDirection(this.direction,e,t),r=a.overlayClass,o=a.dirClass,s=this.slides[e],l=this.slides[t];if(s&&l){if(this.isSliding=!0,n&&this.pause(!1),this.$emit("sliding-start",t),this.$emit("input",this.index),this.noAnimation)te(l,"active"),ee(s,"active"),this.isSliding=!1,this.$nextTick((function(){return i.$emit("sliding-end",t)}));else{te(l,r),Yt(l),te(s,o),te(l,o);var u=!1,c=function e(){if(!u){if(u=!0,i.transitionEndEvent)i.transitionEndEvent.split(/\s+/).forEach((function(t){return pa(s,t,e,da)}));i._animationTimeout=null,ee(l,o),ee(l,r),te(l,"active"),ee(s,"active"),ee(s,o),ee(s,r),ne(s,"aria-current","false"),ne(l,"aria-current","true"),ne(s,"aria-hidden","true"),ne(l,"aria-hidden","false"),i.isSliding=!1,i.direction=null,i.$nextTick((function(){return i.$emit("sliding-end",t)}))}};if(this.transitionEndEvent)this.transitionEndEvent.split(/\s+/).forEach((function(t){return fa(s,t,c,da)}));this._animationTimeout=setTimeout(c,650)}n&&this.start(!1)}},updateSlides:function(){this.pause(!0),this.slides=qt(".carousel-item",this.$refs.inner);var t=this.slides.length,e=Math.max(0,Math.min(Math.floor(this.index),t-1));this.slides.forEach((function(i,n){var a=n+1;n===e?(te(i,"active"),ne(i,"aria-current","true")):(ee(i,"active"),ne(i,"aria-current","false")),ne(i,"aria-posinset",String(a)),ne(i,"aria-setsize",String(t))})),this.setSlide(e),this.start(this.isPaused)},calcDirection:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return t?va[t]:i>e?va.next:va.prev},handleClick:function(t,e){var i=t.keyCode;"click"!==t.type&&i!==bi.SPACE&&i!==bi.ENTER||(t.preventDefault(),t.stopPropagation(),e())},handleSwipe:function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0?this.prev():e<0&&this.next()}},touchStart:function(t){Y&&ba[t.pointerType.toUpperCase()]?this.touchStartX=t.clientX:Y||(this.touchStartX=t.touches[0].clientX)},touchMove:function(t){t.touches&&t.touches.length>1?this.touchDeltaX=0:this.touchDeltaX=t.touches[0].clientX-this.touchStartX},touchEnd:function(t){Y&&ba[t.pointerType.toUpperCase()]&&(this.touchDeltaX=t.clientX-this.touchStartX),this.handleSwipe(),this.pause(!1),this._touchTimeout&&clearTimeout(this._touchTimeout),this._touchTimeout=setTimeout(this.start,500+Math.max(1e3,this.interval))}},render:function(t){var e=this,i=t("div",{ref:"inner",class:["carousel-inner"],attrs:{id:this.safeId("__BV_inner_"),role:"list"}},[this.normalizeSlot("default")]),n=t();if(this.controls){var a=function(t){e.isSliding?t.preventDefault():e.handleClick(t,e.prev)},r=function(t){e.isSliding?t.preventDefault():e.handleClick(t,e.next)};n=[t("a",{class:["carousel-control-prev"],attrs:{href:"#",role:"button","aria-controls":this.safeId("__BV_inner_"),"aria-disabled":this.isSliding?"true":null},on:{click:a,keydown:a}},[t("span",{class:["carousel-control-prev-icon"],attrs:{"aria-hidden":"true"}}),t("span",{class:["sr-only"]},[this.labelPrev])]),t("a",{class:["carousel-control-next"],attrs:{href:"#",role:"button","aria-controls":this.safeId("__BV_inner_"),"aria-disabled":this.isSliding?"true":null},on:{click:r,keydown:r}},[t("span",{class:["carousel-control-next-icon"],attrs:{"aria-hidden":"true"}}),t("span",{class:["sr-only"]},[this.labelNext])])]}var o=t("ol",{class:["carousel-indicators"],directives:[{name:"show",rawName:"v-show",value:this.indicators,expression:"indicators"}],attrs:{id:this.safeId("__BV_indicators_"),"aria-hidden":this.indicators?"false":"true","aria-label":this.labelIndicators,"aria-owns":this.safeId("__BV_inner_")}},this.slides.map((function(i,n){return t("li",{key:"slide_".concat(n),class:{active:n===e.index},attrs:{role:"button",id:e.safeId("__BV_indicator_".concat(n+1,"_")),tabindex:e.indicators?"0":"-1","aria-current":n===e.index?"true":"false","aria-label":"".concat(e.labelGotoSlide," ").concat(n+1),"aria-describedby":e.slides[n].id||null,"aria-controls":e.safeId("__BV_inner_")},on:{click:function(t){e.handleClick(t,(function(){e.setSlide(n)}))},keydown:function(t){e.handleClick(t,(function(){e.setSlide(n)}))}}})}))),s={mouseenter:this.noHoverPause?la:this.pause,mouseleave:this.noHoverPause?la:this.restart,focusin:this.pause,focusout:this.restart,keydown:function(t){if(!/input|textarea/i.test(t.target.tagName)){var i=t.keyCode;i!==bi.LEFT&&i!==bi.RIGHT||(t.preventDefault(),t.stopPropagation(),e[i===bi.LEFT?"prev":"next"]())}}};return!this.noTouch&&U&&(Y?(s["&pointerdown"]=this.touchStart,s["&pointerup"]=this.touchEnd):(s["&touchstart"]=this.touchStart,s["&touchmove"]=this.touchMove,s["&touchend"]=this.touchEnd)),t("div",{staticClass:"carousel",class:{slide:!this.noAnimation,"carousel-fade":!this.noAnimation&&this.fade,"pointer-event":!this.noTouch&&U&&Y},style:{background:this.background},attrs:{role:"region",id:this.safeId(),"aria-busy":this.isSliding?"true":"false"},on:s},[i,n,o])}}),Ta={imgSrc:{type:String},imgAlt:{type:String},imgWidth:{type:[Number,String]},imgHeight:{type:[Number,String]},imgBlank:{type:Boolean,default:!1},imgBlankColor:{type:String,default:"transparent"},contentVisibleUp:{type:String},contentTag:{type:String,default:"div"},caption:{type:String},captionHtml:{type:String},captionTag:{type:String,default:"h3"},text:{type:String},textHtml:{type:String},textTag:{type:String,default:"p"},background:{type:String}},wa=kt({components:{BCarousel:Sa,BCarouselSlide:t.extend({name:"BCarouselSlide",mixins:[tn,$e],inject:{bvCarousel:{default:function(){return{noTouch:!0}}}},props:Ta,computed:{contentClasses:function(){return[this.contentVisibleUp?"d-none":"",this.contentVisibleUp?"d-".concat(this.contentVisibleUp,"-block"):""]},computedWidth:function(){return this.imgWidth||this.bvCarousel.imgWidth||null},computedHeight:function(){return this.imgHeight||this.bvCarousel.imgHeight||null}},render:function(t){var e=!this.bvCarousel.noTouch&&U,i=this.normalizeSlot("img");i||!this.imgSrc&&!this.imgBlank||(i=t(ea,{props:{fluidGrow:!0,block:!0,src:this.imgSrc,blank:this.imgBlank,blankColor:this.imgBlankColor,width:this.computedWidth,height:this.computedHeight,alt:this.imgAlt},on:e?{dragstart:function(t){t.preventDefault()}}:{}})),i||(i=t());var n=t(),a=[!(!this.caption&&!this.captionHtml)&&t(this.captionTag,{domProps:hi(this.captionHtml,this.caption)}),!(!this.text&&!this.textHtml)&&t(this.textTag,{domProps:hi(this.textHtml,this.text)}),this.normalizeSlot("default")||!1];return a.some(Boolean)&&(n=t(this.contentTag,{staticClass:"carousel-caption",class:this.contentClasses},a.map((function(e){return e||t()})))),t("div",{staticClass:"carousel-item",style:{background:this.background||this.bvCarousel.background||null},attrs:{id:this.safeId(),role:"listitem"}},[i,n])}})}}),Ba={css:!0,enterClass:"",enterActiveClass:"collapsing",enterToClass:"collapse show",leaveClass:"collapse show",leaveActiveClass:"collapsing",leaveToClass:"collapse"},ka={enter:function(t){t.style.height=0,zt((function(){Yt(t),t.style.height="".concat(t.scrollHeight,"px")}))},afterEnter:function(t){t.style.height=null},leave:function(t){t.style.height="auto",t.style.display="block",t.style.height="".concat(se(t).height,"px"),Yt(t),t.style.height=0},afterLeave:function(t){t.style.height=null}},Ca=t.extend({name:"BVCollapse",functional:!0,props:{appear:{type:Boolean,default:!1}},render:function(t,e){var i=e.props,n=e.data,a=e.children;return t("transition",Te(n,{props:Ba,on:ka},{props:i}),a)}}),xa={methods:{listenOnRoot:function(t,e){var i=this;return this.$root.$on(t,e),this.$on("hook:beforeDestroy",(function(){i.$root.$off(t,e)})),this},listenOnRootOnce:function(t,e){var i=this;return this.$root.$once(t,e),this.$on("hook:beforeDestroy",(function(){i.$root.$off(t,e)})),this},emitOnRoot:function(t){for(var e,i=arguments.length,n=new Array(i>1?i-1:0),a=1;a0){t.__BV_toggle_TARGETS__=n,t.__BV_toggle_CONTROLS__=n.join(" "),t.__BV_toggle_STATE__=!1,ne(t,"aria-controls",t.__BV_toggle_CONTROLS__),ne(t,"aria-expanded","false"),"BUTTON"===t.tagName||oe(t,"role")||ne(t,"role","button");t[Ea]=function(e,i){-1!==(t.__BV_toggle_TARGETS__||[]).indexOf(e)&&(ne(t,"aria-expanded",i?"true":"false"),t.__BV_toggle_STATE__=i,i?ee(t,"collapsed"):te(t,"collapsed"))},i.context.$root.$on("bv::collapse::state",t[Ea]),i.context.$root.$on("bv::collapse::sync::state",t[Ea])}},componentUpdated:Aa,updated:Aa,unbind:function(t,e,i){Oa(i,e,Fa),t[Ea]&&(i.context.$root.$off("bv::collapse::state",t[Ea]),i.context.$root.$off("bv::collapse::sync::state",t[Ea])),Va(t,Ea),Va(t,"__BV_toggle_STATE__"),Va(t,"__BV_toggle_CONTROLS__"),Va(t,"__BV_toggle_TARGETS__"),ee(t,"collapsed"),ae(t,"aria-expanded"),ae(t,"aria-controls"),ae(t,"role")}},Ra=kt({components:{BCollapse:$a},directives:{VBToggle:Ma}}),La="undefined"!=typeof window&&"undefined"!=typeof document&&"undefined"!=typeof navigator,Ha=function(){for(var t=["Edge","Trident","Firefox"],e=0;e=0)return 1;return 0}();var za=La&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then((function(){e=!1,t()})))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout((function(){e=!1,t()}),Ha))}};function ja(t){return t&&"[object Function]"==={}.toString.call(t)}function Ga(t,e){if(1!==t.nodeType)return[];var i=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?i[e]:i}function Wa(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function Ua(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=Ga(t),i=e.overflow,n=e.overflowX,a=e.overflowY;return/(auto|scroll|overlay)/.test(i+a+n)?t:Ua(Wa(t))}function Ya(t){return t&&t.referenceNode?t.referenceNode:t}var qa=La&&!(!window.MSInputMethodContext||!document.documentMode),Ka=La&&/MSIE 10/.test(navigator.userAgent);function Xa(t){return 11===t?qa:10===t?Ka:qa||Ka}function Za(t){if(!t)return document.documentElement;for(var e=Xa(10)?document.body:null,i=t.offsetParent||null;i===e&&t.nextElementSibling;)i=(t=t.nextElementSibling).offsetParent;var n=i&&i.nodeName;return n&&"BODY"!==n&&"HTML"!==n?-1!==["TH","TD","TABLE"].indexOf(i.nodeName)&&"static"===Ga(i,"position")?Za(i):i:t?t.ownerDocument.documentElement:document.documentElement}function Ja(t){return null!==t.parentNode?Ja(t.parentNode):t}function Qa(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var i=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,n=i?t:e,a=i?e:t,r=document.createRange();r.setStart(n,0),r.setEnd(a,0);var o,s,l=r.commonAncestorContainer;if(t!==l&&e!==l||n.contains(a))return"BODY"===(s=(o=l).nodeName)||"HTML"!==s&&Za(o.firstElementChild)!==o?Za(l):l;var u=Ja(t);return u.host?Qa(u.host,e):Qa(t,Ja(e).host)}function tr(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top",i="top"===e?"scrollTop":"scrollLeft",n=t.nodeName;if("BODY"===n||"HTML"===n){var a=t.ownerDocument.documentElement,r=t.ownerDocument.scrollingElement||a;return r[i]}return t[i]}function er(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=tr(e,"top"),a=tr(e,"left"),r=i?-1:1;return t.top+=n*r,t.bottom+=n*r,t.left+=a*r,t.right+=a*r,t}function ir(t,e){var i="x"===e?"Left":"Top",n="Left"===i?"Right":"Bottom";return parseFloat(t["border"+i+"Width"])+parseFloat(t["border"+n+"Width"])}function nr(t,e,i,n){return Math.max(e["offset"+t],e["scroll"+t],i["client"+t],i["offset"+t],i["scroll"+t],Xa(10)?parseInt(i["offset"+t])+parseInt(n["margin"+("Height"===t?"Top":"Left")])+parseInt(n["margin"+("Height"===t?"Bottom":"Right")]):0)}function ar(t){var e=t.body,i=t.documentElement,n=Xa(10)&&getComputedStyle(i);return{height:nr("Height",e,i,n),width:nr("Width",e,i,n)}}var rr=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},or=function(){function t(t,e){for(var i=0;i2&&void 0!==arguments[2]&&arguments[2],n=Xa(10),a="HTML"===e.nodeName,r=cr(t),o=cr(e),s=Ua(t),l=Ga(e),u=parseFloat(l.borderTopWidth),c=parseFloat(l.borderLeftWidth);i&&a&&(o.top=Math.max(o.top,0),o.left=Math.max(o.left,0));var d=ur({top:r.top-o.top-u,left:r.left-o.left-c,width:r.width,height:r.height});if(d.marginTop=0,d.marginLeft=0,!n&&a){var h=parseFloat(l.marginTop),f=parseFloat(l.marginLeft);d.top-=u-h,d.bottom-=u-h,d.left-=c-f,d.right-=c-f,d.marginTop=h,d.marginLeft=f}return(n&&!i?e.contains(s):e===s&&"BODY"!==s.nodeName)&&(d=er(d,e)),d}function hr(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=t.ownerDocument.documentElement,n=dr(t,i),a=Math.max(i.clientWidth,window.innerWidth||0),r=Math.max(i.clientHeight,window.innerHeight||0),o=e?0:tr(i),s=e?0:tr(i,"left"),l={top:o-n.top+n.marginTop,left:s-n.left+n.marginLeft,width:a,height:r};return ur(l)}function fr(t){var e=t.nodeName;if("BODY"===e||"HTML"===e)return!1;if("fixed"===Ga(t,"position"))return!0;var i=Wa(t);return!!i&&fr(i)}function pr(t){if(!t||!t.parentElement||Xa())return document.documentElement;for(var e=t.parentElement;e&&"none"===Ga(e,"transform");)e=e.parentElement;return e||document.documentElement}function mr(t,e,i,n){var a=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},o=a?pr(t):Qa(t,Ya(e));if("viewport"===n)r=hr(o,a);else{var s=void 0;"scrollParent"===n?"BODY"===(s=Ua(Wa(e))).nodeName&&(s=t.ownerDocument.documentElement):s="window"===n?t.ownerDocument.documentElement:n;var l=dr(s,o,a);if("HTML"!==s.nodeName||fr(o))r=l;else{var u=ar(t.ownerDocument),c=u.height,d=u.width;r.top+=l.top-l.marginTop,r.bottom=c+l.top,r.left+=l.left-l.marginLeft,r.right=d+l.left}}var h="number"==typeof(i=i||0);return r.left+=h?i:i.left||0,r.top+=h?i:i.top||0,r.right-=h?i:i.right||0,r.bottom-=h?i:i.bottom||0,r}function gr(t){return t.width*t.height}function vr(t,e,i,n,a){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var o=mr(i,n,r,a),s={top:{width:o.width,height:e.top-o.top},right:{width:o.right-e.right,height:o.height},bottom:{width:o.width,height:o.bottom-e.bottom},left:{width:e.left-o.left,height:o.height}},l=Object.keys(s).map((function(t){return lr({key:t},s[t],{area:gr(s[t])})})).sort((function(t,e){return e.area-t.area})),u=l.filter((function(t){var e=t.width,n=t.height;return e>=i.clientWidth&&n>=i.clientHeight})),c=u.length>0?u[0].key:l[0].key,d=t.split("-")[1];return c+(d?"-"+d:"")}function br(t,e,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=n?pr(e):Qa(e,Ya(i));return dr(i,a,n)}function yr(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),i=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),n=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+n,height:t.offsetHeight+i}}function Sr(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,(function(t){return e[t]}))}function Tr(t,e,i){i=i.split("-")[0];var n=yr(t),a={width:n.width,height:n.height},r=-1!==["right","left"].indexOf(i),o=r?"top":"left",s=r?"left":"top",l=r?"height":"width",u=r?"width":"height";return a[o]=e[o]+e[l]/2-n[l]/2,a[s]=i===s?e[s]-n[u]:e[Sr(s)],a}function wr(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function Br(t,e,i){return(void 0===i?t:t.slice(0,function(t,e,i){if(Array.prototype.findIndex)return t.findIndex((function(t){return t[e]===i}));var n=wr(t,(function(t){return t[e]===i}));return t.indexOf(n)}(t,"name",i))).forEach((function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var i=t.function||t.fn;t.enabled&&ja(i)&&(e.offsets.popper=ur(e.offsets.popper),e.offsets.reference=ur(e.offsets.reference),e=i(e,t))})),e}function kr(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=br(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=vr(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=Tr(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=Br(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function Cr(t,e){return t.some((function(t){var i=t.name;return t.enabled&&i===e}))}function xr(t){for(var e=[!1,"ms","Webkit","Moz","O"],i=t.charAt(0).toUpperCase()+t.slice(1),n=0;n1&&void 0!==arguments[1]&&arguments[1],i=Ar.indexOf(t),n=Ar.slice(i+1).concat(Ar.slice(0,i));return e?n.reverse():n}var Rr="flip",Lr="clockwise",Hr="counterclockwise";function zr(t,e,i,n){var a=[0,0],r=-1!==["right","left"].indexOf(n),o=t.split(/(\+|\-)/).map((function(t){return t.trim()})),s=o.indexOf(wr(o,(function(t){return-1!==t.search(/,|\s/)})));o[s]&&-1===o[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,u=-1!==s?[o.slice(0,s).concat([o[s].split(l)[0]]),[o[s].split(l)[1]].concat(o.slice(s+1))]:[o];return(u=u.map((function(t,n){var a=(1===n?!r:r)?"height":"width",o=!1;return t.reduce((function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,o=!0,t):o?(t[t.length-1]+=e,o=!1,t):t.concat(e)}),[]).map((function(t){return function(t,e,i,n){var a=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+a[1],o=a[2];if(!r)return t;if(0===o.indexOf("%")){var s=void 0;switch(o){case"%p":s=i;break;case"%":case"%r":default:s=n}return ur(s)[e]/100*r}if("vh"===o||"vw"===o){return("vh"===o?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r}return r}(t,a,e,i)}))}))).forEach((function(t,e){t.forEach((function(i,n){Or(i)&&(a[e]+=i*("-"===t[n-1]?-1:1))}))})),a}var jr={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,i=e.split("-")[0],n=e.split("-")[1];if(n){var a=t.offsets,r=a.reference,o=a.popper,s=-1!==["bottom","top"].indexOf(i),l=s?"left":"top",u=s?"width":"height",c={start:sr({},l,r[l]),end:sr({},l,r[l]+r[u]-o[u])};t.offsets.popper=lr({},o,c[n])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var i=e.offset,n=t.placement,a=t.offsets,r=a.popper,o=a.reference,s=n.split("-")[0],l=void 0;return l=Or(+i)?[+i,0]:zr(i,r,o,s),"left"===s?(r.top+=l[0],r.left-=l[1]):"right"===s?(r.top+=l[0],r.left+=l[1]):"top"===s?(r.left+=l[0],r.top-=l[1]):"bottom"===s&&(r.left+=l[0],r.top+=l[1]),t.popper=r,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var i=e.boundariesElement||Za(t.instance.popper);t.instance.reference===i&&(i=Za(i));var n=xr("transform"),a=t.instance.popper.style,r=a.top,o=a.left,s=a[n];a.top="",a.left="",a[n]="";var l=mr(t.instance.popper,t.instance.reference,e.padding,i,t.positionFixed);a.top=r,a.left=o,a[n]=s,e.boundaries=l;var u=e.priority,c=t.offsets.popper,d={primary:function(t){var i=c[t];return c[t]l[t]&&!e.escapeWithReference&&(n=Math.min(c[i],l[t]-("right"===t?c.width:c.height))),sr({},i,n)}};return u.forEach((function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";c=lr({},c,d[e](t))})),t.offsets.popper=c,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,i=e.popper,n=e.reference,a=t.placement.split("-")[0],r=Math.floor,o=-1!==["top","bottom"].indexOf(a),s=o?"right":"bottom",l=o?"left":"top",u=o?"width":"height";return i[s]r(n[s])&&(t.offsets.popper[l]=r(n[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var i;if(!Vr(t.instance.modifiers,"arrow","keepTogether"))return t;var n=e.element;if("string"==typeof n){if(!(n=t.instance.popper.querySelector(n)))return t}else if(!t.instance.popper.contains(n))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var a=t.placement.split("-")[0],r=t.offsets,o=r.popper,s=r.reference,l=-1!==["left","right"].indexOf(a),u=l?"height":"width",c=l?"Top":"Left",d=c.toLowerCase(),h=l?"left":"top",f=l?"bottom":"right",p=yr(n)[u];s[f]-po[f]&&(t.offsets.popper[d]+=s[d]+p-o[f]),t.offsets.popper=ur(t.offsets.popper);var m=s[d]+s[u]/2-p/2,g=Ga(t.instance.popper),v=parseFloat(g["margin"+c]),b=parseFloat(g["border"+c+"Width"]),y=m-t.offsets.popper[d]-v-b;return y=Math.max(Math.min(o[u]-p,y),0),t.arrowElement=n,t.offsets.arrow=(sr(i={},d,Math.round(y)),sr(i,h,""),i),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if(Cr(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var i=mr(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),n=t.placement.split("-")[0],a=Sr(n),r=t.placement.split("-")[1]||"",o=[];switch(e.behavior){case Rr:o=[n,a];break;case Lr:o=Mr(n);break;case Hr:o=Mr(n,!0);break;default:o=e.behavior}return o.forEach((function(s,l){if(n!==s||o.length===l+1)return t;n=t.placement.split("-")[0],a=Sr(n);var u=t.offsets.popper,c=t.offsets.reference,d=Math.floor,h="left"===n&&d(u.right)>d(c.left)||"right"===n&&d(u.left)d(c.top)||"bottom"===n&&d(u.top)d(i.right),m=d(u.top)d(i.bottom),v="left"===n&&f||"right"===n&&p||"top"===n&&m||"bottom"===n&&g,b=-1!==["top","bottom"].indexOf(n),y=!!e.flipVariations&&(b&&"start"===r&&f||b&&"end"===r&&p||!b&&"start"===r&&m||!b&&"end"===r&&g),S=!!e.flipVariationsByContent&&(b&&"start"===r&&p||b&&"end"===r&&f||!b&&"start"===r&&g||!b&&"end"===r&&m),T=y||S;(h||v||T)&&(t.flipped=!0,(h||v)&&(n=o[l+1]),T&&(r=function(t){return"end"===t?"start":"start"===t?"end":t}(r)),t.placement=n+(r?"-"+r:""),t.offsets.popper=lr({},t.offsets.popper,Tr(t.instance.popper,t.offsets.reference,t.placement)),t=Br(t.instance.modifiers,t,"flip"))})),t},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,i=e.split("-")[0],n=t.offsets,a=n.popper,r=n.reference,o=-1!==["left","right"].indexOf(i),s=-1===["top","left"].indexOf(i);return a[o?"left":"top"]=r[i]-(s?a[o?"width":"height"]:0),t.placement=Sr(e),t.offsets.popper=ur(a),t}},hide:{order:800,enabled:!0,fn:function(t){if(!Vr(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,i=wr(t.instance.modifiers,(function(t){return"preventOverflow"===t.name})).boundaries;if(e.bottomi.right||e.top>i.bottom||e.right2&&void 0!==arguments[2]?arguments[2]:{};rr(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(n.update)},this.update=za(this.update.bind(this)),this.options=lr({},t.Defaults,a),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=i&&i.jquery?i[0]:i,this.options.modifiers={},Object.keys(lr({},t.Defaults.modifiers,a.modifiers)).forEach((function(e){n.options.modifiers[e]=lr({},t.Defaults.modifiers[e]||{},a.modifiers?a.modifiers[e]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(t){return lr({name:t},n.options.modifiers[t])})).sort((function(t,e){return t.order-e.order})),this.modifiers.forEach((function(t){t.enabled&&ja(t.onLoad)&&t.onLoad(n.reference,n.popper,n.options,t,n.state)})),this.update();var r=this.options.eventsEnabled;r&&this.enableEventListeners(),this.state.eventsEnabled=r}return or(t,[{key:"update",value:function(){return kr.call(this)}},{key:"destroy",value:function(){return $r.call(this)}},{key:"enableEventListeners",value:function(){return Pr.call(this)}},{key:"disableEventListeners",value:function(){return Ir.call(this)}}]),t}();Gr.Utils=("undefined"!=typeof window?window:global).PopperUtils,Gr.placements=Nr,Gr.Defaults=jr;var BvEvent=function(){function BvEvent(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(i(this,BvEvent),!t)throw new TypeError("Failed to construct '".concat(this.constructor.name,"'. 1 argument required, ").concat(arguments.length," given."));C(this,BvEvent.Defaults,this.constructor.Defaults,e,{type:t}),$(this,{type:{enumerable:!0,configurable:!1,writable:!1},cancelable:{enumerable:!0,configurable:!1,writable:!1},nativeEvent:{enumerable:!0,configurable:!1,writable:!1},target:{enumerable:!0,configurable:!1,writable:!1},relatedTarget:{enumerable:!0,configurable:!1,writable:!1},vueTarget:{enumerable:!0,configurable:!1,writable:!1},componentId:{enumerable:!0,configurable:!1,writable:!1}});var n=!1;this.preventDefault=function(){this.cancelable&&(n=!0)},_(this,"defaultPrevented",{enumerable:!0,get:function(){return n}})}return a(BvEvent,null,[{key:"Defaults",get:function(){return{type:"",cancelable:!0,nativeEvent:null,target:null,relatedTarget:null,vueTarget:null,componentId:null}}}]),BvEvent}(),Wr={data:function(){return{listenForClickOut:!1}},watch:{listenForClickOut:function(t,e){t!==e&&(pa(this.clickOutElement,this.clickOutEventName,this._clickOutHandler,da),t&&fa(this.clickOutElement,this.clickOutEventName,this._clickOutHandler,da))}},beforeCreate:function(){this.clickOutElement=null,this.clickOutEventName=null},mounted:function(){this.clickOutElement||(this.clickOutElement=document),this.clickOutEventName||(this.clickOutEventName="click"),this.listenForClickOut&&fa(this.clickOutElement,this.clickOutEventName,this._clickOutHandler,da)},beforeDestroy:function(){pa(this.clickOutElement,this.clickOutEventName,this._clickOutHandler,da)},methods:{isClickOut:function(t){return!Jt(this.$el,t.target)},_clickOutHandler:function(t){this.clickOutHandler&&this.isClickOut(t)&&this.clickOutHandler(t)}}},Ur={data:function(){return{listenForFocusIn:!1}},watch:{listenForFocusIn:function(t,e){t!==e&&(pa(this.focusInElement,"focusin",this._focusInHandler,da),t&&fa(this.focusInElement,"focusin",this._focusInHandler,da))}},beforeCreate:function(){this.focusInElement=null},mounted:function(){this.focusInElement||(this.focusInElement=document),this.listenForFocusIn&&fa(this.focusInElement,"focusin",this._focusInHandler,da)},beforeDestroy:function(){pa(this.focusInElement,"focusin",this._focusInHandler,da)},methods:{_focusInHandler:function(t){this.focusInHandler&&this.focusInHandler(t)}}},Yr="".concat("bv::dropdown::","shown"),qr="".concat("bv::dropdown::","hidden"),Kr={FORM_CHILD:".dropdown form",ITEM_SELECTOR:[".dropdown-item",".b-dropdown-form"].map((function(t){return"".concat(t,":not(.disabled):not([disabled])")})).join(", ")},Xr="top-start",Zr="top-end",Jr="bottom-start",Qr="bottom-end",to="right-start",eo="left-start",io={mixins:[tn,Wr,Ur],provide:function(){return{bvDropdown:this}},inject:{bvNavbar:{default:null}},props:{disabled:{type:Boolean,default:!1},dropup:{type:Boolean,default:!1},dropright:{type:Boolean,default:!1},dropleft:{type:Boolean,default:!1},right:{type:Boolean,default:!1},offset:{type:[Number,String],default:0},noFlip:{type:Boolean,default:!1},popperOpts:{default:function(){}},boundary:{type:[String,HTMLElement],default:"scrollParent"}},data:function(){return{visible:!1,visibleChangePrevented:!1}},computed:{inNavbar:function(){return!et(this.bvNavbar)},toggler:function(){var t=this.$refs.toggle;return t?t.$el||t:null},directionClass:function(){return this.dropup?"dropup":this.dropright?"dropright":this.dropleft?"dropleft":""}},watch:{visible:function(t,e){if(this.visibleChangePrevented)this.visibleChangePrevented=!1;else if(t!==e){var i=t?"show":"hide",n=new BvEvent(i,{cancelable:!0,vueTarget:this,target:this.$refs.menu,relatedTarget:null,componentId:this.safeId?this.safeId():this.id||null});if(this.emitEvent(n),n.defaultPrevented)return this.visibleChangePrevented=!0,this.visible=e,void this.$off("hidden",this.focusToggler);"show"===i?this.showMenu():this.hideMenu()}},disabled:function(t,e){t!==e&&t&&this.visible&&(this.visible=!1)}},created:function(){this.$_popper=null},deactivated:function(){this.visible=!1,this.whileOpenListen(!1),this.destroyPopper()},beforeDestroy:function(){this.visible=!1,this.whileOpenListen(!1),this.destroyPopper()},methods:{emitEvent:function(t){var e=t.type;this.$emit(e,t),this.$root.$emit("".concat("bv::dropdown::").concat(e),t)},showMenu:function(){var t=this;if(!this.disabled){if(!this.inNavbar)if("undefined"==typeof Gr)mt("Popper.js not found. Falling back to CSS positioning","BDropdown");else{var e=this.dropup&&this.right||this.split?this.$el:this.$refs.toggle;e=e.$el||e,this.createPopper(e)}this.$root.$emit(Yr,this),this.whileOpenListen(!0),this.$nextTick((function(){t.focusMenu(),t.$emit("shown")}))}},hideMenu:function(){this.whileOpenListen(!1),this.$root.$emit(qr,this),this.$emit("hidden"),this.destroyPopper()},createPopper:function(t){this.destroyPopper(),this.$_popper=new Gr(t,this.$refs.menu,this.getPopperConfig())},destroyPopper:function(){this.$_popper&&this.$_popper.destroy(),this.$_popper=null},updatePopper:function(){try{this.$_popper.scheduleUpdate()}catch(t){}},getPopperConfig:function(){var t=Jr;this.dropup?t=this.right?Zr:Xr:this.dropright?t=to:this.dropleft?t=eo:this.right&&(t=Qr);var e={placement:t,modifiers:{offset:{offset:this.offset||0},flip:{enabled:!this.noFlip}}};return this.boundary&&(e.modifiers.preventOverflow={boundariesElement:this.boundary}),s({},e,{},this.popperOpts||{})},whileOpenListen:function(t){this.listenForClickOut=t,this.listenForFocusIn=t;var e=t?"$on":"$off";this.$root[e](Yr,this.rootCloseListener)},rootCloseListener:function(t){t!==this&&(this.visible=!1)},show:function(){var t=this;this.disabled||zt((function(){t.visible=!0}))},hide:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.disabled||(this.visible=!1,t&&this.$once("hidden",this.focusToggler))},toggle:function(t){var e=t=t||{},i=e.type,n=e.keyCode;("click"===i||"keydown"===i&&-1!==[bi.ENTER,bi.SPACE,bi.DOWN].indexOf(n))&&(this.disabled?this.visible=!1:(this.$emit("toggle",t),t.preventDefault(),t.stopPropagation(),this.visible?this.hide(!0):this.show()))},onMousedown:function(t){t.preventDefault()},onKeydown:function(t){var e=t.keyCode;e===bi.ESC?this.onEsc(t):e===bi.DOWN?this.focusNext(t,!1):e===bi.UP&&this.focusNext(t,!0)},onEsc:function(t){this.visible&&(this.visible=!1,t.preventDefault(),t.stopPropagation(),this.$once("hidden",this.focusToggler))},onSplitClick:function(t){this.disabled?this.visible=!1:this.$emit("click",t)},hideHandler:function(t){var e=t.target;!this.visible||Jt(this.$refs.menu,e)||Jt(this.toggler,e)||this.hide()},clickOutHandler:function(t){this.hideHandler(t)},focusInHandler:function(t){this.hideHandler(t)},focusNext:function(t,e){var i=this,n=t.target;!this.visible||t&&Zt(Kr.FORM_CHILD,n)||(t.preventDefault(),t.stopPropagation(),this.$nextTick((function(){var t=i.getItems();if(!(t.length<1)){var a=t.indexOf(n);e&&a>0?a--:!e&&a1&&void 0!==arguments[1]?arguments[1]:null;if(E(t)){var i=pt(t,this.valueField),n=pt(t,this.textField);return{value:tt(i)?e||n:i,text:di(String(tt(n)?e:n)),html:pt(t,this.htmlField),disabled:Boolean(pt(t,this.disabledField))}}return{value:e||t,text:di(String(t)),disabled:!1}}}},Co=t.extend({name:"BFormDatalist",mixins:[ko,$e],props:{id:{type:String,default:null,required:!0}},render:function(t){var e=this.formOptions.map((function(e,i){return t("option",{key:"option_".concat(i,"_opt"),attrs:{disabled:e.disabled},domProps:s({},hi(e.html,e.text),{value:e.value})})}));return t("datalist",{attrs:{id:this.id}},[e,this.normalizeSlot("default")])}}),xo={id:{type:String,default:null},tag:{type:String,default:"small"},textVariant:{type:String,default:function(){return Ft("BFormText","textVariant")}},inline:{type:Boolean,default:!1}},$o=t.extend({name:"BFormText",functional:!0,props:xo,render:function(t,e){var i=e.props,n=e.data,a=e.children;return t(i.tag,Te(n,{class:r({"form-text":!i.inline},"text-".concat(i.textVariant),i.textVariant),attrs:{id:i.id}}),a)}}),_o={id:{type:String,default:null},tag:{type:String,default:"div"},tooltip:{type:Boolean,default:!1},forceShow:{type:Boolean,default:!1},state:{type:Boolean,default:null},ariaLive:{type:String,default:null},role:{type:String,default:null}},Do=t.extend({name:"BFormInvalidFeedback",functional:!0,props:_o,render:function(t,e){var i=e.props,n=e.data,a=e.children,r=!0===i.forceShow||!1===i.state;return t(i.tag,Te(n,{class:{"invalid-feedback":!i.tooltip,"invalid-tooltip":i.tooltip,"d-block":r},attrs:{id:i.id,role:i.role,"aria-live":i.ariaLive,"aria-atomic":i.ariaLive?"true":null}}),a)}}),Po={id:{type:String,default:null},tag:{type:String,default:"div"},tooltip:{type:Boolean,default:!1},forceShow:{type:Boolean,default:!1},state:{type:Boolean,default:null},ariaLive:{type:String,default:null},role:{type:String,default:null}},Io=t.extend({name:"BFormValidFeedback",functional:!0,props:Po,render:function(t,e){var i=e.props,n=e.data,a=e.children,r=!0===i.forceShow||!0===i.state;return t(i.tag,Te(n,{class:{"valid-feedback":!i.tooltip,"valid-tooltip":i.tooltip,"d-block":r},attrs:{id:i.id,role:i.role,"aria-live":i.ariaLive,"aria-atomic":i.ariaLive?"true":null}}),a)}}),Oo={tag:{type:String,default:"div"}},Fo=t.extend({name:"BFormRow",functional:!0,props:Oo,render:function(t,e){var i=e.props,n=e.data,a=e.children;return t(i.tag,Te(n,{staticClass:"form-row"}),a)}}),Eo=kt({components:{BForm:go,BFormDatalist:Co,BDatalist:Co,BFormText:$o,BFormInvalidFeedback:Do,BFormFeedback:Do,BFormValidFeedback:Io,BFormRow:Fo}}),Vo=function(t,e){for(var i=0;i-1:Hi(t,e)},isRadio:function(){return!1},isCheck:function(){return!0}},watch:{computedLocalChecked:function(t){this.$emit("input",t),this.$refs&&this.$refs.input&&this.$emit("update:indeterminate",this.$refs.input.indeterminate)},indeterminate:function(t){this.setIndeterminate(t)}},mounted:function(){this.setIndeterminate(this.indeterminate)},methods:{handleChange:function(t){var e=t.target,i=e.checked,n=e.indeterminate,a=this.computedLocalChecked,r=this.value,o=w(a),s=o?null:this.uncheckedValue;if(o){var l=Vo(a,r);i&&l<0?a=a.concat(r):!i&&l>-1&&(a=a.slice(0,l).concat(a.slice(l+1)))}else a=i?r:s;this.computedLocalChecked=a,this.$emit("change",i?r:s),this.isGroup&&this.bvGroup.$emit("change",a),this.$emit("update:indeterminate",n)},setIndeterminate:function(t){w(this.computedLocalChecked)&&(t=!1),this.$refs&&this.$refs.input&&(this.$refs.input.indeterminate=t,this.$emit("update:indeterminate",t))}}}),Ho=t.extend({name:"BFormRadio",mixins:[tn,Ao,No,Mo,Ro],inject:{bvGroup:{from:"bvRadioGroup",default:!1}},props:{checked:{default:null}},computed:{isChecked:function(){return Hi(this.value,this.computedLocalChecked)},isRadio:function(){return!0},isCheck:function(){return!1}},watch:{computedLocalChecked:function(){this.$emit("input",this.computedLocalChecked)}},methods:{handleChange:function(t){var e=t.target.checked,i=this.value;this.computedLocalChecked=i,this.$emit("change",e?i:null),this.isGroup&&this.bvGroup.$emit("change",e?i:null)}}}),zo={mixins:[$e],model:{prop:"checked",event:"input"},props:{validated:{type:Boolean,default:!1},ariaInvalid:{type:[Boolean,String],default:!1},stacked:{type:Boolean,default:!1},plain:{type:Boolean,default:!1},buttons:{type:Boolean,default:!1},buttonVariant:{type:String,default:"secondary"}},computed:{inline:function(){return!this.stacked},groupName:function(){return this.name||this.safeId()},groupClasses:function(){return this.buttons?["btn-group-toggle",this.inline?"btn-group":"btn-group-vertical",this.size?"btn-group-".concat(this.size):"",this.validated?"was-validated":""]:[this.validated?"was-validated":""]},computedAriaInvalid:function(){var t=this.ariaInvalid;return!0===t||"true"===t||""===t?"true":!1===this.computedState?"true":null}},watch:{checked:function(t){this.localChecked=t},localChecked:function(t){this.$emit("input",t)}},render:function(t){var e=this,i=this.formOptions.map((function(i,n){var a="_BV_option_".concat(n,"_");return t(e.isRadioGroup?Ho:Lo,{key:a,props:{id:e.safeId(a),value:i.value,disabled:i.disabled||!1}},[t("span",{domProps:hi(i.html,i.text)})])}));return t("div",{class:[this.groupClasses,"bv-no-focus-ring"],attrs:{id:this.safeId(),role:this.isRadioGroup?"radiogroup":"group",tabindex:"-1","aria-required":this.required?"true":null,"aria-invalid":this.computedAriaInvalid}},[this.normalizeSlot("first"),i,this.normalizeSlot("default")])}},jo={switches:{type:Boolean,default:!1},checked:{type:Array,default:null}},Go=t.extend({name:"BFormCheckboxGroup",mixins:[tn,No,zo,ko,Mo,Ro],provide:function(){return{bvCheckGroup:this}},props:jo,data:function(){return{localChecked:this.checked||[]}},computed:{isRadioGroup:function(){return!1}}}),Wo=kt({components:{BFormCheckbox:Lo,BCheckbox:Lo,BCheck:Lo,BFormCheckboxGroup:Go,BCheckboxGroup:Go,BCheckGroup:Go}}),Uo="__BV_hover_handler__",Yo=function(t,e,i){ma(t,e,"mouseenter",i,da),ma(t,e,"mouseleave",i,da)},qo=function(t,e){var i=e.value,n=void 0===i?null:i;if(z){var a=t[Uo],r=nt(a),o=!(r&&a.fn===n);r&&o&&(Yo(!1,t,a),delete t[Uo]),nt(n)&&o&&(t[Uo]=function(t){var e=function(e){t("mouseenter"===e.type,e)};return e.fn=t,e}(n),Yo(!0,t,t[Uo]))}},Ko={bind:qo,componentUpdated:qo,unbind:function(t){qo(t,{value:null})}},Xo="BFormDatepicker",Zo=function(t){return Ft(Xo,t)||Ft("BCalendar",t)},Jo={props:{value:{type:[String,Date],default:null},valueAsDate:{type:Boolean,default:!1},resetValue:{type:[String,Date],default:""},placeholder:{type:String,default:null},size:{type:String,default:null},min:{type:[String,Date],default:null},max:{type:[String,Date],default:null},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},name:{type:String,default:null},form:{type:String,default:null},state:{type:Boolean,default:null},dateDisabledFn:{type:Function,default:null},noCloseOnSelect:{type:Boolean,default:!1},hideHeader:{type:Boolean,default:!1},locale:{type:[String,Array],default:null},startWeekday:{type:[Number,String],default:0},direction:{type:String,default:null},selectedVariant:{type:String,default:"primary"},todayVariant:{type:String,default:null},noHighlightToday:{type:Boolean,default:!1},todayButton:{type:Boolean,default:!1},labelTodayButton:{type:String,default:function(){return Ft(Xo,"labelTodayButton")}},todayButtonVariant:{type:String,default:"outline-primary"},resetButton:{type:Boolean,default:!1},labelResetButton:{type:String,default:function(){return Ft(Xo,"labelResetButton")}},resetButtonVariant:{type:String,default:"outline-danger"},closeButton:{type:Boolean,default:!1},labelCloseButton:{type:String,default:function(){return Ft(Xo,"labelCloseButton")}},closeButtonVariant:{type:String,default:"outline-secondary"},labelPrevYear:{type:String,default:function(){return Zo("labelPrevYear")}},labelPrevMonth:{type:String,default:function(){return Zo("labelPrevMonth")}},labelCurrentMonth:{type:String,default:function(){return Zo("labelCurrentMonth")}},labelNextMonth:{type:String,default:function(){return Zo("labelNextMonth")}},labelNextYear:{type:String,default:function(){return Zo("labelNextYear")}},labelToday:{type:String,default:function(){return Zo("labelToday")}},labelSelected:{type:String,default:function(){return Zo("labelSelected")}},labelNoDateSelected:{type:String,default:function(){return Zo("labelNoDateSelected")}},labelCalendar:{type:String,default:function(){return Zo("labelCalendar")}},labelNav:{type:String,default:function(){return Zo("labelNav")}},labelHelp:{type:String,default:function(){return Zo("labelHelp")}},dark:{type:Boolean,default:!1}}},Qo=t.extend({name:Xo,directives:{BHover:Ko},mixins:[tn,Jo,io],model:{prop:"value",event:"input"},data:function(){return{localYMD:Wi(this.value)||"",localLocale:null,isRTL:!1,formatedValue:"",activeYMD:"",hasFocus:!1,isHovered:!1}},computed:{calendarYM:function(){return this.activeYMD.slice(0,-3)},calendarProps:function(){return{ariaControls:[this.safeId("_value_"),this.safeId("_b-form-date_")].filter(ht).join(" ")||null,value:this.localYMD,hidden:!this.visible,min:this.min,max:this.max,readonly:this.readonly,disabled:this.disabled,locale:this.locale,startWeekday:this.startWeekday,direction:this.direction,dateDisabledFn:this.dateDisabledFn,selectedVariant:this.selectedVariant,todayVariant:this.todayVariant,hideHeader:this.hideHeader,labelPrevYear:this.labelPrevYear,labelPrevMonth:this.labelPrevMonth,labelCurrentMonth:this.labelCurrentMonth,labelNextMonth:this.labelNextMonth,labelNextYear:this.labelNextYear,labelToday:this.labelToday,labelSelected:this.labelSelected,labelNoDateSelected:this.labelNoDateSelected,labelCalendar:this.labelCalendar,labelNav:this.labelNav,labelHelp:this.labelHelp}},computedResetValue:function(){return Gi(this.resetValue)||""}},watch:{value:function(t){this.localYMD=Wi(t)||""},localYMD:function(t){this.$emit("input",this.valueAsDate?Gi(t)||null:t||"")},calendarYM:function(t,e){t!==e&&e&&this.updatePopper()}},mounted:function(){var t=this;this.$on("shown",(function(){try{t.$refs.calendar.focus()}catch(t){}}))},methods:{focus:function(){if(!this.disabled)try{this.$refs.toggle.focus()}catch(t){}},blur:function(){if(!this.disabled)try{this.$refs.toggle.blur()}catch(t){}},setAndClose:function(t){var e=this;this.localYMD=t,this.noCloseOnSelect||this.$nextTick((function(){e.hide(!0)}))},onSelected:function(t){var e=this;this.$nextTick((function(){e.setAndClose(t)}))},onInput:function(t){this.localYMD!==t&&(this.localYMD=t)},onContext:function(t){var e=t.activeYMD,i=t.isRTL,n=t.locale,a=t.selectedYMD,r=t.selectedFormatted;this.isRTL=i,this.localLocale=n,this.formattedValue=r,this.localYMD=a,this.activeYMD=e,this.$emit("context",t)},onTodayButton:function(){this.setAndClose(Wi(ji()))},onResetButton:function(){this.setAndClose(this.computedResetValue)},onCloseButton:function(){this.hide(!0)},setFocus:function(t){this.hasFocus="focus"===t.type},handleHover:function(t){this.isHovered=t}},render:function(t){var e,i,n=this.size,a=this.state,o=this.localYMD,s=this.disabled,l=this.readonly,u=this.safeId(),c=this.safeId("_value_"),d=this.safeId("_dialog_"),h=this.safeId("_b-form-date_"),f=t("div",{attrs:{"aria-hidden":"true"}},[this.isHovered||this.hasFocus?t(ln,{props:{scale:1.25}}):t(sn,{props:{scale:1.25}})]);f=t("button",{ref:"toggle",staticClass:"btn border-0 h-auto py-0",class:r({},"btn-".concat(n),!!n),attrs:{id:u,type:"button",disabled:s,"aria-haspopup":"dialog","aria-expanded":this.visible?"true":"false","aria-invalid":!1===a?"true":null,"aria-required":this.required?"true":null},on:{mousedown:this.onMousedown,click:this.toggle,keydown:this.toggle,"!focus":this.setFocus,"!blur":this.setFocus}},[f]);var p=t("label",{staticClass:"form-control text-break text-wrap border-0 bg-transparent h-auto pl-1 m-0",class:(e={"text-muted":!o},r(e,"form-control-".concat(n),!!n),r(e,"is-invalid",!1===a),r(e,"is-valid",!0===a),e),attrs:{id:c,for:u,dir:this.isRTL?"rtl":"ltr",lang:this.localLocale||null,"aria-invalid":!1===a?"true":null,"aria-required":this.required?"true":null},on:{click:function(t){t.stopPropagation()}}},[o?this.formattedValue:this.placeholder||this.labelNoDateSelected,o?t("span",{staticClass:"sr-only"}," (".concat(this.labelSelected,") ")):t()]),m=[];if(this.todayButton){var g=this.labelTodayButton;m.push(t(Oi,{props:{size:"sm",disabled:s||l,variant:this.todayButtonVariant},attrs:{"aria-label":g||null},on:{click:this.onTodayButton}},g))}if(this.resetButton){var v=this.labelResetButton;m.push(t(Oi,{props:{size:"sm",disabled:s||l,variant:this.resetButtonVariant},attrs:{"aria-label":v||null},on:{click:this.onResetButton}},v))}if(this.closeButton){var b=this.labelCloseButton;m.push(t(Oi,{props:{size:"sm",disabled:this.disabled,variant:this.closeButtonVariant},attrs:{"aria-label":b||null},on:{click:this.onCloseButton}},b))}m.length>0&&(m=[t("div",{staticClass:"b-form-date-controls d-flex flex-wrap",class:{"justify-content-between":m.length>1,"justify-content-end":m.length<2}},m)]);var y=t(xn,{key:"calendar",ref:"calendar",staticClass:"b-form-date-calendar",props:this.calendarProps,on:{selected:this.onSelected,input:this.onInput,context:this.onContext}},m),S=t("div",{ref:"menu",staticClass:"dropdown-menu p-2",class:{show:this.visible,"dropdown-menu-right":this.right,"bg-dark":this.dark,"text-light":this.dark},attrs:{id:d,role:"dialog","aria-modal":"false","aria-labelledby":c},on:{keydown:this.onKeydown}},[y]),T=t();return this.name&&!s&&(T=t("input",{attrs:{type:"hidden",name:this.name,form:this.form,value:o||""}})),t("div",{staticClass:"b-form-datepicker form-control dropdown h-auto p-0 d-flex",class:[this.directionClass,(i={show:this.visible,focus:this.hasFocus},r(i,"form-control-".concat(n),!!n),r(i,"is-invalid",!1===a),r(i,"is-valid",!0===a),i)],attrs:{id:h,role:"group","aria-disabled":s,"aria-readonly":l&&!s,"aria-labelledby":c,"aria-invalid":!1===a?"true":null,"aria-required":this.required?"true":null,dir:"ltr"},directives:[{name:"b-hover",value:this.handleHover}]},[f,T,S,p])}}),ts=kt({components:{BFormDatepicker:Qo,BDatepicker:Qo}}),es={props:{plain:{type:Boolean,default:!1}},computed:{custom:function(){return!this.plain}}},is="BFormFile",ns=t.extend({name:is,mixins:[tn,No,Ro,es,$e],inheritAttrs:!1,model:{prop:"value",event:"input"},props:{size:{type:String,default:function(){return Ft("BFormControl","size")}},value:{type:[J,Array],default:null,validator:function(t){return""===t?(mt('Setting "value"/"v-model" to an empty string for reset is deprecated. Set to "null" instead.',is),!0):it(t)||ut(t)||w(t)&&(0===t.length||t.every(ut))}},accept:{type:String,default:""},capture:{type:Boolean,default:!1},placeholder:{type:String,default:function(){return Ft(is,"placeholder")}},browseText:{type:String,default:function(){return Ft(is,"browseText")}},dropPlaceholder:{type:String,default:function(){return Ft(is,"dropPlaceholder")}},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},noTraverse:{type:Boolean,default:!1},noDrop:{type:Boolean,default:!1},fileNameFormatter:{type:Function,default:null}},data:function(){return{selectedFile:null,dragging:!1,hasFocus:!1}},computed:{selectLabel:function(){if(this.dragging&&this.dropPlaceholder)return this.dropPlaceholder;if(!this.selectedFile||0===this.selectedFile.length)return this.placeholder;var t=k(this.selectedFile).filter(ht);return this.hasNormalizedSlot("file-name")?[this.normalizeSlot("file-name",{files:t,names:t.map((function(t){return t.name}))})]:nt(this.fileNameFormatter)?Ge(this.fileNameFormatter(t)):t.map((function(t){return t.name})).join(", ")}},watch:{selectedFile:function(t,e){t===e||w(t)&&w(e)&&t.length===e.length&&t.every((function(t,i){return t===e[i]}))||(!t&&this.multiple?this.$emit("input",[]):this.$emit("input",t))},value:function(t){(!t||w(t)&&0===t.length)&&this.reset()}},methods:{focusHandler:function(t){this.plain||"focusout"===t.type?this.hasFocus=!1:this.hasFocus=!0},reset:function(){try{this.$refs.input.value=""}catch(t){}this.$refs.input.type="",this.$refs.input.type="file",this.selectedFile=this.multiple?[]:null},onFileChange:function(t){var e=this;this.$emit("change",t);var i=t.dataTransfer&&t.dataTransfer.items;if(!i||this.noTraverse)this.setFiles(t.target.files||t.dataTransfer.files);else{for(var n=[],a=0;a0&&void 0!==arguments[0]?arguments[0]:[];if(t)if(this.multiple){for(var e=[],i=0;i0&&this.onFileChange(t))},traverseFileTree:function(t,e){var i=this;return new Promise((function(n){e=e||"",t.isFile?t.file((function(t){t.$path=e,n(t)})):t.isDirectory&&t.createReader().readEntries((function(a){for(var r=[],o=0;o0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1?arguments[1]:void 0;return"".concat(e).concat(ze(t))})),gs={name:"BFormGroup",mixins:[tn,Ro,$e],get props(){return delete this.props,this.props=(t=Nt(),e=t.reduce((function(t,e){return t[ms(e,"labelCols")]={type:[Number,String,Boolean],default:!e&&null},t}),x(null)),i=t.reduce((function(t,e){return t[ms(e,"labelAlign")]={type:String,default:null},t}),x(null)),s({label:{type:String,default:null},labelFor:{type:String,default:null},labelSize:{type:String,default:null},labelSrOnly:{type:Boolean,default:!1}},e,{},i,{labelClass:{type:[String,Array,Object],default:null},description:{type:String,default:null},invalidFeedback:{type:String,default:null},validFeedback:{type:String,default:null},tooltip:{type:Boolean,default:!1},feedbackAriaLive:{type:String,default:"assertive"},validated:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}}));var t,e,i},computed:{labelColProps:function(){var t=this,e={};return Nt().forEach((function(i){var n=t[ms(i,"labelCols")];if(at(n=""===n||(n||!1))||"auto"===n||(n=(n=parseInt(n,10)||0)>0&&n),n){var a=i||(at(n)?"col":"cols");e[a]=n}})),e},labelAlignClasses:function(){var t=this,e=[];return Nt().forEach((function(i){var n=t[ms(i,"labelAlign")]||null;if(n){var a=i?"text-".concat(i,"-").concat(n):"text-".concat(n);e.push(a)}})),e},isHorizontal:function(){return I(this.labelColProps).length>0},labelId:function(){return this.hasNormalizedSlot("label")||this.label?this.safeId("_BV_label_"):null},descriptionId:function(){return this.hasNormalizedSlot("description")||this.description?this.safeId("_BV_description_"):null},hasInvalidFeedback:function(){return!1===this.computedState&&(this.hasNormalizedSlot("invalid-feedback")||this.invalidFeedback)},invalidFeedbackId:function(){return this.hasInvalidFeedback?this.safeId("_BV_feedback_invalid_"):null},hasValidFeedback:function(){return!0===this.computedState&&(this.hasNormalizedSlot("valid-feedback")||this.validFeedback)},validFeedbackId:function(){return this.hasValidFeedback?this.safeId("_BV_feedback_valid_"):null},describedByIds:function(){return[this.descriptionId,this.invalidFeedbackId,this.validFeedbackId].filter(Boolean).join(" ")||null}},watch:{describedByIds:function(t,e){t!==e&&this.setInputDescribedBy(t,e)}},mounted:function(){var t=this;this.$nextTick((function(){t.setInputDescribedBy(t.describedByIds)}))},methods:{legendClick:function(t){if(!this.labelFor){var e=t.target?t.target.tagName:"";if(!/^(input|select|textarea|label|button|a)$/i.test(e)){var i=qt("input:not([disabled]),textarea:not([disabled]),select:not([disabled])",this.$refs.content).filter(Wt);if(i&&1===i.length&&i[0].focus)try{i[0].focus()}catch(t){}}}},setInputDescribedBy:function(t,e){if(this.labelFor&&z){var i=Kt("#".concat(this.labelFor),this.$refs.content);if(i){var n="aria-describedby",a=(re(i,n)||"").split(/\s+/);t=(t||"").split(/\s+/),e=(e||"").split(/\s+/),a=a.filter((function(t){return!B(e,t)})).concat(t).filter(Boolean),(a=I(a.reduce((function(t,e){return s({},t,r({},e,!0))}),{})).join(" ").trim())?ne(i,n,a):ae(i,n)}}}},render:function(t){var e=!this.labelFor,i=this.isHorizontal,n=function(t,e){var i=e.normalizeSlot("label")||e.label,n=e.labelFor,a=!n,r=e.isHorizontal,o=a?"legend":"label";if(i||r){if(e.labelSrOnly){var l=t();return i&&(l=t(o,{class:"sr-only",attrs:{id:e.labelId,for:n||null}},[i])),t(r?ds:"div",{props:r?e.labelColProps:{}},[l])}return t(r?ds:o,{on:a?{click:e.legendClick}:{},props:r?s({tag:o},e.labelColProps):{},attrs:{id:e.labelId,for:n||null,tabindex:a?"-1":null},class:[a?"bv-no-focus-ring":"",r||a?"col-form-label":"",!r&&a?"pt-0":"",r||a?"":"d-block",e.labelSize?"col-form-label-".concat(e.labelSize):"",e.labelAlignClasses,e.labelClass]},[i])}return t()}(t,this),a=t(i?ds:"div",{ref:"content",staticClass:"bv-no-focus-ring",attrs:{tabindex:e?"-1":null,role:e?"group":null}},[this.normalizeSlot("default")||t(),hs(t,this),fs(t,this),ps(t,this)]),r={staticClass:"form-group",class:[this.validated?"was-validated":null,this.stateClass],attrs:{id:this.safeId(),disabled:e?this.disabled:null,role:e?null:"group","aria-invalid":!1===this.computedState?"true":null,"aria-labelledby":e&&i?this.labelId:null,"aria-describedby":e?this.describedByIds:null}};return t(e?"fieldset":i?Fo:"div",r,i&&e?[t(Fo,[n,a])]:[n,a])}},vs=kt({components:{BFormGroup:gs,BFormFieldset:gs}}),bs={model:{prop:"value",event:"update"},props:{value:{type:[String,Number],default:""},ariaInvalid:{type:[Boolean,String],default:!1},readonly:{type:Boolean,default:!1},plaintext:{type:Boolean,default:!1},autocomplete:{type:String,default:null},placeholder:{type:String,default:null},formatter:{type:Function,default:null},lazyFormatter:{type:Boolean,default:!1},trim:{type:Boolean,default:!1},number:{type:Boolean,default:!1},lazy:{type:Boolean,default:!1},debounce:{type:[Number,String],default:0}},data:function(){return{localValue:Ge(this.value),vModelValue:this.value}},computed:{computedClass:function(){return[{"custom-range":"range"===this.type,"form-control-plaintext":this.plaintext&&"range"!==this.type&&"color"!==this.type,"form-control":!this.plaintext&&"range"!==this.type||"color"===this.type},this.sizeFormClass,this.stateClass]},computedAriaInvalid:function(){return this.ariaInvalid&&"false"!==this.ariaInvalid?!0===this.ariaInvalid?"true":this.ariaInvalid:!1===this.computedState?"true":null},computedDebounce:function(){return Math.max(he(this.debounce)||0,0)},hasFormatter:function(){return nt(this.formatter)}},watch:{value:function(t){var e=Ge(t);e!==this.localValue&&t!==this.vModelValue&&(this.clearDebounce(),this.localValue=e,this.vModelValue=t)}},mounted:function(){this.$_inputDebounceTimer=null,this.$on("hook:beforeDestroy",this.clearDebounce);var t=this.value,e=Ge(t);e!==this.localValue&&t!==this.vModelValue&&(this.localValue=e,this.vModelValue=t)},methods:{clearDebounce:function(){clearTimeout(this.$_inputDebounceTimer),this.$_inputDebounceTimer=null},formatValue:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return t=Ge(t),!this.hasFormatter||this.lazyFormatter&&!i||(t=this.formatter(t,e)),t},modifyValue:function(t){if(this.trim&&(t=t.trim()),this.number){var e=fe(t);t=isNaN(e)?t:e}return t},updateValue:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.lazy;if(!n||i)if((t=this.modifyValue(t))!==this.vModelValue){this.clearDebounce();var a=function(){e.vModelValue=t,e.$emit("update",t)},r=this.computedDebounce;r>0&&!n&&!i?this.$_inputDebounceTimer=setTimeout(a,r):a()}else if(this.hasFormatter){var o=this.$refs.input;o&&t!==o.value&&(o.value=t)}},onInput:function(t){if(!t.target.composing){var e=t.target.value,i=this.formatValue(e,t);!1===i||t.defaultPrevented?t.preventDefault():(this.localValue=i,this.updateValue(i),this.$emit("input",i))}},onChange:function(t){var e=t.target.value,i=this.formatValue(e,t);!1===i||t.defaultPrevented?t.preventDefault():(this.localValue=i,this.updateValue(i,!0),this.$emit("change",i))},onBlur:function(t){var e=t.target.value,i=this.formatValue(e,t,!0);!1!==i&&(this.localValue=Ge(this.modifyValue(i)),this.updateValue(i,!0)),this.$emit("blur",t)},focus:function(){this.disabled||this.$el.focus()},blur:function(){this.disabled||this.$el.blur()}}},ys={computed:{selectionStart:{cache:!1,get:function(){return this.$refs.input.selectionStart},set:function(t){this.$refs.input.selectionStart=t}},selectionEnd:{cache:!1,get:function(){return this.$refs.input.selectionEnd},set:function(t){this.$refs.input.selectionEnd=t}},selectionDirection:{cache:!1,get:function(){return this.$refs.input.selectionDirection},set:function(t){this.$refs.input.selectionDirection=t}}},methods:{select:function(){var t;(t=this.$refs.input).select.apply(t,arguments)},setSelectionRange:function(){var t;(t=this.$refs.input).setSelectionRange.apply(t,arguments)},setRangeText:function(){var t;(t=this.$refs.input).setRangeText.apply(t,arguments)}}},Ss={computed:{validity:{cache:!1,get:function(){return this.$refs.input.validity}},validationMessage:{cache:!1,get:function(){return this.$refs.input.validationMessage}},willValidate:{cache:!1,get:function(){return this.$refs.input.willValidate}}},methods:{setCustomValidity:function(){var t;return(t=this.$refs.input).setCustomValidity.apply(t,arguments)},checkValidity:function(){var t;return(t=this.$refs.input).checkValidity.apply(t,arguments)},reportValidity:function(){var t;return(t=this.$refs.input).reportValidity.apply(t,arguments)}}},Ts=["text","password","email","number","url","tel","search","range","color","date","time","datetime","datetime-local","month","week"],ws=t.extend({name:"BFormInput",mixins:[tn,No,Mo,Ro,bs,ys,Ss],props:{type:{type:String,default:"text",validator:function(t){return B(Ts,t)}},noWheel:{type:Boolean,default:!1},min:{type:[String,Number],default:null},max:{type:[String,Number],default:null},step:{type:[String,Number],default:null},list:{type:String,default:null}},computed:{localType:function(){return B(Ts,this.type)?this.type:"text"}},watch:{noWheel:function(t){this.setWheelStopper(t)}},mounted:function(){this.setWheelStopper(this.noWheel)},deactivated:function(){this.setWheelStopper(!1)},activated:function(){this.setWheelStopper(this.noWheel)},beforeDestroy:function(){this.setWheelStopper(!1)},methods:{setWheelStopper:function(t){var e=this.$el;ma(t,e,"focus",this.onWheelFocus),ma(t,e,"blur",this.onWheelBlur),t||pa(document,"wheel",this.stopWheel)},onWheelFocus:function(){fa(document,"wheel",this.stopWheel)},onWheelBlur:function(){pa(document,"wheel",this.stopWheel)},stopWheel:function(t){t.preventDefault(),this.$el.blur()}},render:function(t){return t("input",{ref:"input",class:this.computedClass,directives:[{name:"model",rawName:"v-model",value:this.localValue,expression:"localValue"}],attrs:{id:this.safeId(),name:this.name,form:this.form||null,type:this.localType,disabled:this.disabled,placeholder:this.placeholder,required:this.required,autocomplete:this.autocomplete||null,readonly:this.readonly||this.plaintext,min:this.min,max:this.max,step:this.step,list:"password"!==this.localType?this.list:null,"aria-required":this.required?"true":null,"aria-invalid":this.computedAriaInvalid},domProps:{value:this.localValue},on:s({},this.$listeners,{input:this.onInput,change:this.onChange,blur:this.onBlur})})}}),Bs=kt({components:{BFormInput:ws,BInput:ws}}),ks=t.extend({name:"BFormRadioGroup",mixins:[tn,No,zo,ko,Mo,Ro],provide:function(){return{bvRadioGroup:this}},props:{checked:{default:null}},data:function(){return{localChecked:this.checked}},computed:{isRadioGroup:function(){return!0}}}),Cs=kt({components:{BFormRadio:Ho,BRadio:Ho,BFormRadioGroup:ks,BRadioGroup:ks}}),xs={mixins:[ko],props:{labelField:{type:String,default:"label"},optionsField:{type:String,default:"options"}},methods:{normalizeOption:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(E(t)){var i=pt(t,this.valueField),n=pt(t,this.textField),a=pt(t,this.optionsField);return w(a)?{label:String(pt(t,this.labelField)||n),options:a}:{value:tt(i)?e||n:i,text:String(tt(n)?e:n),html:pt(t,this.htmlField),disabled:Boolean(pt(t,this.disabledField))}}return{value:e||t,text:String(t),disabled:!1}}}},$s={value:{required:!0},disabled:{type:Boolean,default:!1}},_s=t.extend({name:"BFormSelectOption",functional:!0,props:$s,render:function(t,e){var i=e.props,n=e.data,a=e.children,r=i.value;return t("option",Te(n,{attrs:{disabled:i.disabled},domProps:{value:r}}),a)}}),Ds=t.extend({name:"BFormSelectOptionGroup",mixins:[$e,ko],props:{label:{type:String,required:!0}},render:function(t){return t("optgroup",{attrs:{label:this.label}},[this.normalizeSlot("first"),this.formOptions.map((function(e,i){return t(_s,{props:{value:e.value,disabled:e.disabled},domProps:hi(e.html,e.text),key:"option_".concat(i,"_opt")})})),this.normalizeSlot("default")])}}),Ps=t.extend({name:"BFormSelect",mixins:[tn,$e,No,Mo,Ro,es,xs],model:{prop:"value",event:"input"},props:{value:{},multiple:{type:Boolean,default:!1},selectSize:{type:Number,default:0},ariaInvalid:{type:[Boolean,String],default:!1}},data:function(){return{localValue:this.value}},computed:{computedSelectSize:function(){return this.plain||0!==this.selectSize?this.selectSize:null},inputClass:function(){return[this.plain?"form-control":"custom-select",this.size&&this.plain?"form-control-".concat(this.size):null,this.size&&!this.plain?"custom-select-".concat(this.size):null,this.stateClass]},computedAriaInvalid:function(){return!0===this.ariaInvalid||"true"===this.ariaInvalid?"true":"is-invalid"===this.stateClass?"true":null}},watch:{value:function(t){this.localValue=t},localValue:function(){this.$emit("input",this.localValue)}},methods:{focus:function(){this.$refs.input.focus()},blur:function(){this.$refs.input.blur()}},render:function(t){var e=this;return t("select",{ref:"input",class:this.inputClass,directives:[{name:"model",rawName:"v-model",value:this.localValue,expression:"localValue"}],attrs:{id:this.safeId(),name:this.name,form:this.form||null,multiple:this.multiple||null,size:this.computedSelectSize,disabled:this.disabled,required:this.required,"aria-required":this.required?"true":null,"aria-invalid":this.computedAriaInvalid},on:{change:function(t){var i=t.target,n=T(i.options).filter((function(t){return t.selected})).map((function(t){return"_value"in t?t._value:t.value}));e.localValue=i.multiple?n:n[0],e.$nextTick((function(){e.$emit("change",e.localValue)}))}}},[this.normalizeSlot("first"),this.formOptions.map((function(e,i){var n="option_".concat(i,"_opt"),a=e.options;return w(a)?t(Ds,{props:{label:e.label,options:a},key:n}):t(_s,{props:{value:e.value,disabled:e.disabled},domProps:hi(e.html,e.text),key:n})})),this.normalizeSlot("default")])}}),Is=kt({components:{BFormSelect:Ps,BFormSelectOption:_s,BFormSelectOptionGroup:Ds,BSelect:Ps,BSelectOption:_s,BSelectOptionGroup:Ds}}),Os="BFormSpinbutton",Fs=bi.UP,Es=bi.DOWN,Vs=bi.HOME,Ns=bi.END,As=bi.PAGEUP,Ms=bi.PAGEDOWN,Rs=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t=fe(t),isNaN(t)?e:t},Ls=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t=he(t),isNaN(t)?Math.abs(e):t},Hs=t.extend({name:Os,mixins:[tn],inheritAttrs:!1,props:{value:{type:Number,default:null},min:{type:[Number,String],default:1},max:{type:[Number,String],default:100},step:{type:[Number,String],default:1},wrap:{type:Boolean,default:!1},formatterFn:{type:Function},size:{type:String},placeholder:{type:String,default:null},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},required:{type:Boolean,default:!1},name:{type:String},form:{type:String},state:{type:Boolean,default:null},inline:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},ariaLabel:{type:String,default:null},ariaControls:{type:String,default:null},labelDecrement:{type:String,default:function(){return Ft(Os,"labelDecrement")}},labelIncrement:{type:String,default:function(){return Ft(Os,"labelIncrement")}},locale:{type:[String,Array],default:null},repeatDelay:{type:[Number,String],default:500},repeatInterval:{type:[Number,String],default:100},repeatThreshold:{type:[Number,String],default:10},repeatStepMultiplier:{type:[Number,String],default:4}},data:function(){return{localValue:Rs(this.value),hasFocus:!1}},computed:{computedStep:function(){return Rs(this.step,1)},computedMin:function(){return Rs(this.min,1)},computedMax:function(){return Rs(this.max,100)},computedDelay:function(){return Ls(this.repeatDelay,500)||500},computedInterval:function(){return Ls(this.repeatInterval,100)||100},computedThreshold:function(){return Ls(this.repeatThreshold,10)||1},computedStepMultiplier:function(){return Ls(this.repeatStepMultiplier,4)||1},computedPrecision:function(){var t=this.computedStep;return Math.floor(t)===t?0:(t.toString().split(".")[1]||"").length},computedMultiplier:function(){return Math.pow(10,this.computedPrecision||0)},valueAsFixed:function(){var t=this.localValue;return et(t)?"":t.toFixed(this.computedPrecision)},computedLocale:function(){var t=k(this.locale).filter(ht);return new Intl.NumberFormat(t).resolvedOptions().locale},defaultFormatter:function(){var t=this.computedPrecision;return new Intl.NumberFormat(this.computedLocale,{style:"decimal",useGrouping:!1,minimumIntegerDigits:1,minimumFractionDigits:t,maximumFractionDigits:t,notation:"standard"}).format}},watch:{value:function(t){t=fe(t),this.localValue=isNaN(t)?null:t},localValue:function(t){this.$emit("input",t)},disabled:function(t){t&&this.clearRepeat()},readonly:function(t){t&&this.clearRepeat()}},created:function(){this.$_autoDelayTimer=null,this.$_autoRepeatTimer=null,this.$_keyIsDown=!1},beforeDestroy:function(){this.clearRepeat()},deactivated:function(){this.clearRepeat()},methods:{focus:function(){if(!this.disabled)try{this.$refs.spinner.focus()}catch(t){}},blur:function(){if(!this.disabled)try{this.$refs.spinner.blur()}catch(t){}},emitChange:function(){this.$emit("change",this.localValue)},stepValue:function(t){var e=this.localValue;if(!this.disabled&&!et(e)){var i=this.computedStep*t,n=this.computedMin,a=this.computedMax,r=this.computedMultiplier,o=this.wrap;e=Math.round((e-n)/i)*i+n+i,e=Math.round(e*r)/r,this.localValue=e>a?o?n:a:e0&&void 0!==arguments[0]?arguments[0]:1,e=this.localValue;et(e)?this.localValue=this.computedMin:this.stepValue(1*t)},stepDown:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=this.localValue;et(e)?this.localValue=this.wrap?this.computedMax:this.computedMin:this.stepValue(-1*t)},onKeydown:function(t){var e=t.keyCode,i=t.altKey,n=t.ctrlKey,a=t.metaKey;if(!(this.disabled||this.readonly||i||n||a)&&B([Fs,Es,Vs,Ns,As,Ms],e)){if(t.preventDefault(),this.$_keyIsDown)return;this.resetTimers(),B([Fs,Es],e)?(this.$_keyIsDown=!0,e===Fs?this.handleStepRepeat(t,this.stepUp):e===Es&&this.handleStepRepeat(t,this.stepDown)):e===As?this.stepUp(this.computedStepMultiplier):e===Ms?this.stepDown(this.computedStepMultiplier):e===Vs?this.localValue=this.computedMin:e===Ns&&(this.localValue=this.computedMax)}},onKeyup:function(t){var e=t.keyCode,i=t.altKey,n=t.ctrlKey,a=t.metaKey;this.disabled||this.readonly||i||n||a||B([Fs,Es,Vs,Ns,As,Ms],e)&&(this.resetTimers(),this.$_keyIsDown=!1,t.preventDefault(),this.emitChange())},handleStepRepeat:function(t,e){var i=this,n=t||{},a=n.type,r=n.button;if(!this.disabled&&!this.readonly){if("mousedown"===a&&r)return;this.resetTimers(),this.setMouseup(!0),e(1);var o=this.computedThreshold,s=this.computedStepMultiplier,l=this.computedDelay,u=this.computedInterval;this.$_autoDelayTimer=setTimeout((function(){var t=0;i.$_autoRepeatTimer=setInterval((function(){e(t0&&i.indexOf(t)===e}))},Zs=function(t){return rt(t)?t:lt(t)&&t.target.value||""},Js=t.extend({name:Gs,mixins:[tn,$e],model:{prop:"value",event:"input"},props:{inputId:{type:String,default:null},placeholder:{type:String,default:function(){return Ft(Gs,"placeholder")}},disabled:{type:Boolean,default:!1},name:{type:String,default:null},form:{type:String,default:null},autofocus:{type:Boolean,default:!1},state:{type:Boolean,default:null},size:{type:String,default:null},inputType:{type:String,default:"text",validator:function(t){return B(Ws,t)}},inputClass:{type:[String,Array,Object],default:null},inputAttrs:{type:Object,default:function(){return{}}},addButtonText:{type:String,default:function(){return Ft(Gs,"addButtonText")}},addButtonVariant:{type:String,default:function(){return Ft(Gs,"addButtonVariant")}},tagVariant:{type:String,default:function(){return Ft(Gs,"tagVariant")}},tagClass:{type:[String,Array,Object],default:null},tagPills:{type:Boolean,default:!1},tagRemoveLabel:{type:String,default:function(){return Ft(Gs,"tagRemoveLabel")}},tagRemovedLabel:{type:String,default:function(){return Ft(Gs,"tagRemovedLabel")}},tagValidator:{type:Function,default:null},duplicateTagText:{type:String,default:function(){return Ft(Gs,"duplicateTagText")}},invalidTagText:{type:String,default:function(){return Ft(Gs,"invalidTagText")}},separator:{type:[String,Array],default:null},removeOnDelete:{type:Boolean,default:!1},addOnChange:{type:Boolean,default:!1},noAddOnEnter:{type:Boolean,default:!1},noOuterFocus:{type:Boolean,default:!1},value:{type:Array,default:function(){return[]}}},data:function(){return{hasFocus:!1,newTag:"",tags:[],removedTags:[],tagsState:{all:[],valid:[],invalid:[],duplicate:[]}}},computed:{computedInputId:function(){return this.inputId||this.safeId("__input__")},computedInputType:function(){return B(Ws,this.inputType)?this.inputType:"text"},computedInputAttrs:function(){return s({},this.inputAttrs,{id:this.computedInputId,value:this.newTag,disabled:this.disabled||null,form:this.form||null})},computedInputHandlers:function(){return{input:this.onInputInput,change:this.onInputChange,keydown:this.onInputKeydown}},computedSeparator:function(){return k(this.separator).filter(rt).filter(ht).join("")},computedSeparatorRegExp:function(){var t=this.computedSeparator;return t?new RegExp("[".concat(je(t).replace(Us,"\\s"),"]+")):null},computedJoiner:function(){var t=this.computedSeparator.charAt(0);return" "!==t?"".concat(t," "):t},disableAddButton:function(){var t=this,e=We(this.newTag);return""===e||!this.splitTags(e).some((function(e){return!B(t.tags,e)&&t.validateTag(e)}))},duplicateTags:function(){return this.tagsState.duplicate},hasDuplicateTags:function(){return this.duplicateTags.length>0},invalidTags:function(){return this.tagsState.invalid},hasInvalidTags:function(){return this.invalidTags.length>0}},watch:{value:function(t){this.tags=Xs(t)},tags:function(t,e){Hi(t,this.value)||this.$emit("input",t),Hi(t,e)||(t=k(t).filter(ht),e=k(e).filter(ht),this.removedTags=e.filter((function(e){return!B(t,e)})))},tagsState:function(t,e){Hi(t,e)||this.$emit("tag-state",t.valid,t.invalid,t.duplicate)}},created:function(){this.tags=Xs(this.value)},mounted:function(){this.handleAutofocus()},activated:function(){this.handleAutofocus()},methods:{addTag:function(t){if(t=rt(t)?t:this.newTag,!this.disabled&&""!==We(t)){var e=this.parseTags(t);if(e.valid.length>0||0===e.all.length)if(Xt(this.getInput(),"select"))this.newTag="";else{var i=[].concat(b(e.invalid),b(e.duplicate));this.newTag=e.all.filter((function(t){return B(i,t)})).join(this.computedJoiner).concat(i.length>0?this.computedJoiner.charAt(0):"")}e.valid.length>0&&(this.tags=k(this.tags,e.valid)),this.tagsState=e,this.focus()}},removeTag:function(t){var e=this;this.disabled||(this.tags=this.tags.filter((function(e){return e!==t})),this.$nextTick((function(){e.focus()})))},onInputInput:function(t){if(!(this.disabled||lt(t)&&t.target.composing)){var e=Zs(t),i=this.computedSeparatorRegExp;this.newTag!==e&&(this.newTag=e),e=Ge(e).replace(Ne,""),i&&i.test(e.slice(-1))?this.addTag():this.tagsState=""===e?{all:[],valid:[],invalid:[],duplicate:[]}:this.parseTags(e)}},onInputChange:function(t){if(!this.disabled&&this.addOnChange){var e=Zs(t);this.newTag!==e&&(this.newTag=e),this.addTag()}},onInputKeydown:function(t){if(!this.disabled&<(t)){var e=t.keyCode,i=t.target.value||"";this.noAddOnEnter||e!==Ys?!this.removeOnDelete||e!==qs&&e!==Ks||""!==i||(t.preventDefault(),this.tags=this.tags.slice(0,-1)):(t.preventDefault(),this.addTag())}},onClick:function(t){var e=this;!this.disabled&<(t)&&t.target===t.currentTarget&&this.$nextTick((function(){e.focus()}))},onFocusin:function(){this.hasFocus=!0},onFocusout:function(){this.hasFocus=!1},handleAutofocus:function(){var t=this;this.$nextTick((function(){zt((function(){t.autofocus&&!t.disabled&&t.focus()}))}))},focus:function(){if(!this.disabled)try{this.getInput().focus()}catch(t){}},blur:function(){try{this.getInput().blur()}catch(t){}},splitTags:function(t){t=Ge(t);var e=this.computedSeparatorRegExp;return(e?t.split(e):[t]).map(We).filter(ht)},parseTags:function(t){var e=this,i=this.splitTags(t),n={all:i,valid:[],invalid:[],duplicate:[]};return i.forEach((function(t){B(e.tags,t)||B(n.valid,t)?B(n.duplicate,t)||n.duplicate.push(t):e.validateTag(t)?n.valid.push(t):B(n.invalid,t)||n.invalid.push(t)})),n},validateTag:function(t){var e=this.tagValidator;return!nt(e)||e(t)},getInput:function(){return Kt("#".concat(this.computedInputId),this.$el)},defaultRender:function(t){var e=t.tags,i=t.addTag,n=t.removeTag,a=t.inputType,r=t.inputAttrs,o=t.inputHandlers,l=t.inputClass,u=t.tagClass,c=t.tagVariant,d=t.tagPills,h=t.tagRemoveLabel,f=t.invalidTagText,p=t.duplicateTagText,m=t.isInvalid,g=t.isDuplicate,v=t.disabled,b=t.placeholder,y=t.addButtonText,S=t.addButtonVariant,T=t.disableAddButton,w=this.$createElement,B=e.map((function(t){return t=Ge(t),w(js,{key:"li-tag__".concat(t),staticClass:"mt-1 mr-1",class:u,props:{tag:"li",title:t,disabled:v,variant:c,pill:d,removeLabel:h},on:{remove:function(){return n(t)}}},t)})),C=f&&m?this.safeId("__invalid_feedback__"):null,x=p&&g?this.safeId("__duplicate_feedback__"):null,$=[r["aria-describedby"],C,x].filter(ht).join(" "),_=w("input",{ref:"input",directives:[{name:"model",value:r.value}],staticClass:"b-form-tags-input w-100 flex-grow-1 p-0 m-0 bg-transparent border-0",class:l,style:{outline:0,minWidth:"5rem"},attrs:s({},r,{"aria-describedby":$||null,type:a,placeholder:b||null}),domProps:{value:r.value},on:o}),D=w(Oi,{ref:"button",staticClass:"b-form-tags-button py-0",class:{invisible:T},style:{fontSize:"90%"},props:{variant:S,disabled:T},on:{click:function(){return i()}}},[this.normalizeSlot("add-button-text")||y]),P=this.safeId("__TAG__LIST__"),I=w("li",{key:"__li-input__",staticClass:"flex-grow-1 mt-1",attrs:{role:"none","aria-live":"off","aria-controls":P}},[w("div",{staticClass:"d-flex",attrs:{role:"group"}},[_,D])]),O=w("ul",{key:"_tags_list_",staticClass:"list-unstyled mt-n1 mb-0 d-flex flex-wrap align-items-center",attrs:{id:P}},k(B,I)),F=w();if(f||p){var E=this.computedJoiner,V=w();C&&(V=w(Do,{key:"_tags_invalid_feedback_",props:{id:C,forceShow:!0}},[this.invalidTagText,": ",this.invalidTags.join(E)]));var N=w();x&&(N=w($o,{key:"_tags_duplicate_feedback_",props:{id:x}},[this.duplicateTagText,": ",this.duplicateTags.join(E)])),F=w("div",{key:"_tags_feedback_",attrs:{"aria-live":"polite","aria-atomic":"true"}},[V,N])}return[O,F]}},render:function(t){var e=this,i={tags:this.tags.slice(),removeTag:this.removeTag,addTag:this.addTag,inputType:this.computedInputType,inputAttrs:this.computedInputAttrs,inputHandlers:this.computedInputHandlers,inputId:this.computedInputId,invalidTags:this.invalidTags.slice(),isInvalid:this.hasInvalidTags,duplicateTags:this.duplicateTags.slice(),isDuplicate:this.hasDuplicateTags,disableAddButton:this.disableAddButton,state:this.state,separator:this.separator,disabled:this.disabled,size:this.size,placeholder:this.placeholder,inputClass:this.inputClass,tagRemoveLabel:this.tagRemoveLabel,tagVariant:this.tagVariant,tagPills:this.tagPills,tagClass:this.tagClass,addButtonText:this.addButtonText,addButtonVariant:this.addButtonVariant,invalidTagText:this.invalidTagText,duplicateTagText:this.duplicateTagText},n=this.normalizeSlot("default",i)||this.defaultRender(i),a=t("output",{staticClass:"sr-only",attrs:{id:this.safeId("_selected-tags_"),role:"status",for:this.computedInputId,"aria-live":this.hasFocus?"polite":"off","aria-atomic":"true","aria-relevant":"additions text"}},this.tags.join(", ")),o=t("div",{staticClass:"sr-only",attrs:{id:this.safeId("_removed-tags_"),role:"status","aria-live":this.hasFocus?"assertive":"off","aria-atomic":"true"}},this.removedTags.length>0?"(".concat(this.tagRemovedLabel,") ").concat(this.removedTags.join(", ")):""),s=t();return this.name&&!this.disabled&&(s=this.tags.map((function(i){return t("input",{key:i,attrs:{type:"hidden",value:i,name:e.name,form:e.form||null}})}))),t("div",{staticClass:"b-form-tags form-control h-auto",class:r({focus:this.hasFocus&&!this.noOuterFocus&&!this.disabled,disabled:this.disabled,"is-valid":!0===this.state,"is-invalid":!1===this.state},"form-control-".concat(this.size),this.size),attrs:{id:this.safeId(),role:"group",tabindex:this.disabled||this.noOuterFocus?null:"-1","aria-describedby":this.safeId("_selected_")},on:{focusin:this.onFocusin,focusout:this.onFocusout,click:this.onClick}},k(a,o,n,s))}}),Qs=kt({components:{BFormTags:Js,BTags:Js,BFormTag:js,BTag:js}}),tl=t.extend({name:"BFormTextarea",directives:{"b-visible":Jn},mixins:[tn,xa,No,Mo,Ro,bs,ys,Ss],props:{rows:{type:[Number,String],default:2},maxRows:{type:[Number,String],default:null},wrap:{type:String,default:"soft"},noResize:{type:Boolean,default:!1},noAutoShrink:{type:Boolean,default:!1}},data:function(){return{heightInPx:null}},computed:{computedStyle:function(){var t={resize:!this.computedRows||this.noResize?"none":null};return this.computedRows||(t.height=this.heightInPx,t.overflowY="scroll"),t},computedMinRows:function(){return Math.max(parseInt(this.rows,10)||2,2)},computedMaxRows:function(){return Math.max(this.computedMinRows,parseInt(this.maxRows,10)||0)},computedRows:function(){return this.computedMinRows===this.computedMaxRows?this.computedMinRows:null}},watch:{localValue:function(){this.setHeight()}},mounted:function(){this.setHeight()},methods:{visibleCallback:function(t){t&&this.$nextTick(this.setHeight)},setHeight:function(){var t=this;this.$nextTick((function(){zt((function(){t.heightInPx=t.computeHeight()}))}))},computeHeight:function(){if(this.$isServer||!et(this.computedRows))return null;var t=this.$el;if(!Wt(t))return null;var e=le(t),i=parseFloat(e.lineHeight),n=(parseFloat(e.borderTopWidth)||0)+(parseFloat(e.borderBottomWidth)||0),a=(parseFloat(e.paddingTop)||0)+(parseFloat(e.paddingBottom)||0),r=n+a,o=i*this.computedMinRows+r,s=t.style.height||e.height;t.style.height="auto";var l=t.scrollHeight;t.style.height=s;var u=Math.max((l-a)/i,2),c=Math.min(Math.max(u,this.computedMinRows),this.computedMaxRows),d=Math.max(Math.ceil(c*i+r),o);return this.noAutoShrink&&(parseFloat(s)||0)>d?s:"".concat(d,"px")}},render:function(t){return t("textarea",{ref:"input",class:this.computedClass,style:this.computedStyle,directives:[{name:"model",value:this.localValue},{name:"b-visible",value:this.visibleCallback,modifiers:{640:!0}}],attrs:{id:this.safeId(),name:this.name,form:this.form||null,disabled:this.disabled,placeholder:this.placeholder,required:this.required,autocomplete:this.autocomplete||null,readonly:this.readonly||this.plaintext,rows:this.computedRows,wrap:this.wrap||null,"aria-required":this.required?"true":null,"aria-invalid":this.computedAriaInvalid},domProps:{value:this.localValue},on:s({},this.$listeners,{input:this.onInput,change:this.onChange,blur:this.onBlur})})}}),el=kt({components:{BFormTextarea:tl,BTextarea:tl}}),il=kt({components:{BImg:ea,BImgLazy:na}}),nl={tag:{type:String,default:"div"}},al=t.extend({name:"BInputGroupText",functional:!0,props:nl,render:function(t,e){var i=e.props,n=e.data,a=e.children;return t(i.tag,Te(n,{staticClass:"input-group-text"}),a)}}),rl={id:{type:String,default:null},tag:{type:String,default:"div"},isText:{type:Boolean,default:!1}},ol=t.extend({name:"BInputGroupAddon",functional:!0,props:s({},rl,{append:{type:Boolean,default:!1}}),render:function(t,e){var i=e.props,n=e.data,a=e.children;return t(i.tag,Te(n,{class:{"input-group-append":i.append,"input-group-prepend":!i.append},attrs:{id:i.id}}),i.isText?[t(al,a)]:a)}}),sl=t.extend({name:"BInputGroupPrepend",functional:!0,props:rl,render:function(t,e){var i=e.props,n=e.data,a=e.children;return t(ol,Te(n,{props:s({},i,{append:!1})}),a)}}),ll=t.extend({name:"BInputGroupAppend",functional:!0,props:rl,render:function(t,e){var i=e.props,n=e.data,a=e.children;return t(ol,Te(n,{props:s({},i,{append:!0})}),a)}}),ul={id:{type:String},size:{type:String,default:function(){return Ft("BInputGroup","size")}},prepend:{type:String},prependHtml:{type:String},append:{type:String},appendHtml:{type:String},tag:{type:String,default:"div"}},cl=kt({components:{BInputGroup:t.extend({name:"BInputGroup",functional:!0,props:ul,render:function(t,e){var i=e.props,n=e.data,a=e.slots,o=e.scopedSlots,s=a(),l=o||{},u=[];return i.prepend||i.prependHtml||Ce("prepend",l,s)?u.push(t(sl,[i.prepend||i.prependHtml?t(al,{domProps:hi(i.prependHtml,i.prepend)}):t(),xe("prepend",{},l,s)||t()])):u.push(t()),Ce("default",l,s)?u.push.apply(u,b(xe("default",{},l,s))):u.push(t()),i.append||i.appendHtml||Ce("append",l,s)?u.push(t(ll,[i.append||i.appendHtml?t(al,{domProps:hi(i.appendHtml,i.append)}):t(),xe("append",{},l,s)||t()])):u.push(t()),t(i.tag,Te(n,{staticClass:"input-group",class:r({},"input-group-".concat(i.size),i.size),attrs:{id:i.id||null,role:"group"}}),u)}}),BInputGroupAddon:ol,BInputGroupPrepend:sl,BInputGroupAppend:ll,BInputGroupText:al}}),dl={tag:{type:String,default:"div"},fluid:{type:[Boolean,String],default:!1}},hl=t.extend({name:"BContainer",functional:!0,props:dl,render:function(t,e){var i=e.props,n=e.data,a=e.children;return t(i.tag,Te(n,{class:r({container:!(i.fluid||""===i.fluid),"container-fluid":!0===i.fluid||""===i.fluid},"container-".concat(i.fluid),i.fluid&&!0!==i.fluid)}),a)}}),fl="BJumbotron",pl={fluid:{type:Boolean,default:!1},containerFluid:{type:[Boolean,String],default:!1},header:{type:String,default:null},headerHtml:{type:String,default:null},headerTag:{type:String,default:"h1"},headerLevel:{type:[Number,String],default:"3"},lead:{type:String,default:null},leadHtml:{type:String,default:null},leadTag:{type:String,default:"p"},tag:{type:String,default:"div"},bgVariant:{type:String,default:function(){return Ft(fl,"bgVariant")}},borderVariant:{type:String,default:function(){return Ft(fl,"borderVariant")}},textVariant:{type:String,default:function(){return Ft(fl,"textVariant")}}},ml=kt({components:{BJumbotron:t.extend({name:fl,functional:!0,props:pl,render:function(t,e){var i,n=e.props,a=e.data,o=e.slots,s=e.scopedSlots,l=[],u=o(),c=s||{};return(n.header||Ce("header",c,u)||n.headerHtml)&&l.push(t(n.headerTag,{class:r({},"display-".concat(n.headerLevel),n.headerLevel)},xe("header",{},c,u)||n.headerHtml||di(n.header))),(n.lead||Ce("lead",c,u)||n.leadHtml)&&l.push(t(n.leadTag,{staticClass:"lead"},xe("lead",{},c,u)||n.leadHtml||di(n.lead))),Ce("default",c,u)&&l.push(xe("default",{},c,u)),n.fluid&&(l=[t(hl,{props:{fluid:n.containerFluid}},l)]),t(n.tag,Te(a,{staticClass:"jumbotron",class:(i={"jumbotron-fluid":n.fluid},r(i,"text-".concat(n.textVariant),n.textVariant),r(i,"bg-".concat(n.bgVariant),n.bgVariant),r(i,"border-".concat(n.borderVariant),n.borderVariant),r(i,"border",n.borderVariant),i)}),l)}})}}),gl=["start","end","center"],vl=Pt((function(t,e){return(e=We(Ge(e)))?Ue(["row-cols",t,e].filter(ht).join("-")):null})),bl=Pt((function(t){return Ue(t.replace("cols",""))})),yl=[],Sl=function(){var t=Nt().reduce((function(t,e){return t[rs(e,"cols")]={type:[String,Number],default:null},t}),x(null));return yl=I(t),s({tag:{type:String,default:"div"},noGutters:{type:Boolean,default:!1},alignV:{type:String,default:null,validator:function(t){return B(gl.concat(["baseline","stretch"]),t)}},alignH:{type:String,default:null,validator:function(t){return B(gl.concat(["between","around"]),t)}},alignContent:{type:String,default:null,validator:function(t){return B(gl.concat(["between","around","stretch"]),t)}}},t)},Tl=kt({components:{BContainer:hl,BRow:{name:"BRow",functional:!0,get props(){return delete this.props,this.props=Sl(),this.props},render:function(t,e){var i,n=e.props,a=e.data,o=e.children,s=[];return yl.forEach((function(t){var e=vl(bl(t),n[t]);e&&s.push(e)})),s.push((r(i={"no-gutters":n.noGutters},"align-items-".concat(n.alignV),n.alignV),r(i,"justify-content-".concat(n.alignH),n.alignH),r(i,"align-content-".concat(n.alignContent),n.alignContent),i)),t(n.tag,Te(a,{staticClass:"row",class:s}),o)}},BCol:ds,BFormRow:Fo}}),wl=kt({components:{BLink:ri}}),Bl={tag:{type:String,default:"div"},flush:{type:Boolean,default:!1},horizontal:{type:[Boolean,String],default:!1}},kl=t.extend({name:"BListGroup",functional:!0,props:Bl,render:function(t,e){var i=e.props,n=e.data,a=e.children,o=""===i.horizontal||i.horizontal;o=!i.flush&&o;var s={staticClass:"list-group",class:r({"list-group-flush":i.flush,"list-group-horizontal":!0===o},"list-group-horizontal-".concat(o),rt(o))};return t(i.tag,Te(n,s),a)}}),Cl=["a","router-link","button","b-link"],xl=ai();delete xl.href.default,delete xl.to.default;var $l=s({tag:{type:String,default:"div"},action:{type:Boolean,default:null},button:{type:Boolean,default:null},variant:{type:String,default:function(){return Ft("BListGroupItem","variant")}}},xl),_l=kt({components:{BListGroup:kl,BListGroupItem:t.extend({name:"BListGroupItem",functional:!0,props:$l,render:function(t,e){var i,n=e.props,a=e.data,o=e.children,s=n.button?"button":n.href||n.to?ri:n.tag,l=Boolean(n.href||n.to||n.action||n.button||B(Cl,n.tag)),u={},c={};return"button"===s?(a.attrs&&a.attrs.type||(u.type="button"),n.disabled&&(u.disabled=!0)):c=Ve(xl,n),t(s,Te(a,{attrs:u,props:c,staticClass:"list-group-item",class:(i={},r(i,"list-group-item-".concat(n.variant),n.variant),r(i,"list-group-item-action",l),r(i,"active",n.active),r(i,"disabled",n.disabled),i)}),o)}})}}),Dl={tag:{type:String,default:"div"}},Pl=t.extend({name:"BMediaBody",functional:!0,props:Dl,render:function(t,e){var i=e.props,n=e.data,a=e.children;return t(i.tag,Te(n,{staticClass:"media-body"}),a)}}),Il={tag:{type:String,default:"div"},verticalAlign:{type:String,default:"top"}},Ol=t.extend({name:"BMediaAside",functional:!0,props:Il,render:function(t,e){var i=e.props,n=e.data,a=e.children,o="top"===i.verticalAlign?"start":"bottom"===i.verticalAlign?"end":i.verticalAlign;return t(i.tag,Te(n,{staticClass:"d-flex",class:r({},"align-self-".concat(o),o)}),a)}}),Fl={tag:{type:String,default:"div"},rightAlign:{type:Boolean,default:!1},verticalAlign:{type:String,default:"top"},noBody:{type:Boolean,default:!1}},El=kt({components:{BMedia:t.extend({name:"BMedia",functional:!0,props:Fl,render:function(t,e){var i=e.props,n=e.data,a=e.slots,r=e.scopedSlots,o=e.children,s=i.noBody?o:[];if(!i.noBody){var l=a(),u=r||{},c=xe("aside",{},u,l),d=xe("default",{},u,l);c&&!i.rightAlign&&s.push(t(Ol,{staticClass:"mr-3",props:{verticalAlign:i.verticalAlign}},c)),s.push(t(Pl,d)),c&&i.rightAlign&&s.push(t(Ol,{staticClass:"ml-3",props:{verticalAlign:i.verticalAlign}},c))}return t(i.tag,Te(n,{staticClass:"media"}),s)}}),BMediaAside:Ol,BMediaBody:Pl}}),Vl=t.extend({abstract:!0,name:"BTransporterTargetSingle",props:{nodes:{type:[Array,Function]}},data:function(t){return{updatedNodes:t.nodes}},destroyed:function(){var t;(t=this.$el)&&t.parentNode&&t.parentNode.removeChild(t)},render:function(t){var e=nt(this.updatedNodes)?this.updatedNodes({}):this.updatedNodes;return(e=k(e).filter(Boolean))&&e.length>0&&!e[0].text?e[0]:t()}}),Nl=t.extend({name:"BTransporterSingle",mixins:[$e],props:{disabled:{type:Boolean,default:!1},container:{type:[String,HTMLElement],default:"body"},tag:{type:String,default:"div"}},watch:{disabled:{immediate:!0,handler:function(t){t?this.unmountTarget():this.$nextTick(this.mountTarget)}}},created:function(){this._bv_defaultFn=null,this._bv_target=null},beforeMount:function(){this.mountTarget()},updated:function(){this.updateTarget()},beforeDestroy:function(){this.unmountTarget(),this._bv_defaultFn=null},methods:{getContainer:function(){if(z){var t=this.container;return rt(t)?Kt(t):t}return null},mountTarget:function(){if(!this._bv_target){var t=this.getContainer();if(t){var e=document.createElement("div");t.appendChild(e),this._bv_target=new Vl({el:e,parent:this,propsData:{nodes:k(this.normalizeSlot("default"))}})}}},updateTarget:function(){if(z&&this._bv_target){var t=this.$scopedSlots.default;this.disabled||(t&&this._bv_defaultFn!==t?this._bv_target.updatedNodes=t:t||(this._bv_target.updatedNodes=this.$slots.default)),this._bv_defaultFn=t}},unmountTarget:function(){this._bv_target&&(this._bv_target.$destroy(),this._bv_target=null)}},render:function(t){if(this.disabled){var e=k(this.normalizeSlot("default")).filter(ht);if(e.length>0&&!e[0].text)return e[0]}return t()}}),Al="$_bv_documentHandlers_",Ml={created:function(){var t=this;z&&(this[Al]={},this.$once("hook:beforeDestroy",(function(){var e=t[Al]||{};delete t[Al],I(e).forEach((function(t){(e[t]||[]).forEach((function(e){return pa(document,t,e,da)}))}))})))},methods:{listenDocument:function(t,e,i){t?this.listenOnDocument(e,i):this.listenOffDocument(e,i)},listenOnDocument:function(t,e){this[Al]&&rt(t)&&nt(e)&&(this[Al][t]=this[Al][t]||[],B(this[Al][t],e)||(this[Al][t].push(e),fa(document,t,e,da)))},listenOffDocument:function(t,e){this[Al]&&rt(t)&&nt(e)&&(pa(document,t,e,da),this[Al][t]=(this[Al][t]||[]).filter((function(t){return t!==e})))}}},Rl="$_bv_windowHandlers_",Ll={beforeCreate:function(){this[Rl]={}},beforeDestroy:function(){if(z){var t=this[Rl];delete this[Rl],I(t).forEach((function(e){(t[e]||[]).forEach((function(t){return pa(window,e,t,da)}))}))}},methods:{listenWindow:function(t,e,i){t?this.listenOnWindow(e,i):this.listenOffWindow(e,i)},listenOnWindow:function(t,e){z&&this[Rl]&&rt(t)&&nt(e)&&(this[Rl][t]=this[Rl][t]||[],B(this[Rl][t],e)||(this[Rl][t].push(e),fa(window,t,e,da)))},listenOffWindow:function(t,e){z&&this[Rl]&&rt(t)&&nt(e)&&(pa(window,t,e,da),this[Rl][t]=(this[Rl][t]||[]).filter((function(t){return t!==e})))}}},Hl=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return t&&t.$options._scopeId||e},zl={computed:{scopedStyleAttrs:function(){var t=Hl(this.$parent);return t?r({},t,""):{}}}},jl=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Gl=".sticky-top",Wl=".navbar-toggler",Ul=new(t.extend({data:function(){return{modals:[],baseZIndex:null,scrollbarWidth:null,isBodyOverflowing:!1}},computed:{modalCount:function(){return this.modals.length},modalsAreOpen:function(){return this.modalCount>0}},watch:{modalCount:function(t,e){z&&(this.getScrollbarWidth(),t>0&&0===e?(this.checkScrollbar(),this.setScrollbar(),te(document.body,"modal-open")):0===t&&e>0&&(this.resetScrollbar(),ee(document.body,"modal-open")),ne(document.body,"data-modal-open-count",String(t)))},modals:function(t){var e=this;this.checkScrollbar(),zt((function(){e.updateModals(t||[])}))}},methods:{registerModal:function(t){var e=this;t&&-1===this.modals.indexOf(t)&&(this.modals.push(t),t.$once("hook:beforeDestroy",(function(){e.unregisterModal(t)})))},unregisterModal:function(t){var e=this.modals.indexOf(t);e>-1&&(this.modals.splice(e,1),t._isBeingDestroyed||t._isDestroyed||this.resetModal(t))},getBaseZIndex:function(){if(et(this.baseZIndex)&&z){var t=document.createElement("div");t.className="modal-backdrop d-none",t.style.display="none",document.body.appendChild(t),this.baseZIndex=he(le(t).zIndex||1040),document.body.removeChild(t)}return this.baseZIndex||1040},getScrollbarWidth:function(){if(et(this.scrollbarWidth)&&z){var t=document.createElement("div");t.className="modal-scrollbar-measure",document.body.appendChild(t),this.scrollbarWidth=se(t).width-t.clientWidth,document.body.removeChild(t)}return this.scrollbarWidth||0},updateModals:function(t){var e=this,i=this.getBaseZIndex(),n=this.getScrollbarWidth();t.forEach((function(t,a){t.zIndex=i+a,t.scrollbarWidth=n,t.isTop=a===e.modals.length-1,t.isBodyOverflowing=e.isBodyOverflowing}))},resetModal:function(t){t&&(t.zIndex=this.getBaseZIndex(),t.isTop=!0,t.isBodyOverflowing=!1)},checkScrollbar:function(){var t=se(document.body),e=t.left,i=t.right;this.isBodyOverflowing=e+i1&&void 0!==arguments[1]?arguments[1]:{};return i(this,BvModalEvent),e=m(this,u(BvModalEvent).call(this,t,n)),$(p(e),{trigger:{enumerable:!0,configurable:!1,writable:!1}}),e}return l(BvModalEvent,t),a(BvModalEvent,null,[{key:"Defaults",get:function(){return s({},g(u(BvModalEvent),"Defaults",this),{trigger:null})}}]),BvModalEvent}(BvEvent),Yl="BModal",ql={subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:["style","class"]},Kl=["button","[href]:not(.disabled)","input","select","textarea","[tabindex]","[contenteditable]"].map((function(t){return"".concat(t,":not(:disabled):not([disabled])")})).join(", "),Xl=function(t){if(t&&Wt(t)&&t.focus)try{t.focus()}catch(t){}return document.activeElement===t},Zl={size:{type:String,default:function(){return Ft(Yl,"size")}},centered:{type:Boolean,default:!1},scrollable:{type:Boolean,default:!1},buttonSize:{type:String,default:""},noStacking:{type:Boolean,default:!1},noFade:{type:Boolean,default:!1},noCloseOnBackdrop:{type:Boolean,default:!1},noCloseOnEsc:{type:Boolean,default:!1},noEnforceFocus:{type:Boolean,default:!1},ignoreEnforceFocusSelector:{type:[Array,String],default:""},title:{type:String,default:""},titleHtml:{type:String},titleTag:{type:String,default:function(){return Ft(Yl,"titleTag")}},titleClass:{type:[String,Array,Object],default:null},titleSrOnly:{type:Boolean,default:!1},ariaLabel:{type:String,default:null},headerBgVariant:{type:String,default:function(){return Ft(Yl,"headerBgVariant")}},headerBorderVariant:{type:String,default:function(){return Ft(Yl,"headerBorderVariant")}},headerTextVariant:{type:String,default:function(){return Ft(Yl,"headerTextVariant")}},headerCloseVariant:{type:String,default:function(){return Ft(Yl,"headerCloseVariant")}},headerClass:{type:[String,Array,Object],default:null},bodyBgVariant:{type:String,default:function(){return Ft(Yl,"bodyBgVariant")}},bodyTextVariant:{type:String,default:function(){return Ft(Yl,"bodyTextVariant")}},modalClass:{type:[String,Array,Object],default:null},dialogClass:{type:[String,Array,Object],default:null},contentClass:{type:[String,Array,Object],default:null},bodyClass:{type:[String,Array,Object],default:null},footerBgVariant:{type:String,default:function(){return Ft(Yl,"footerBgVariant")}},footerBorderVariant:{type:String,default:function(){return Ft(Yl,"footerBorderVariant")}},footerTextVariant:{type:String,default:function(){return Ft(Yl,"footerTextVariant")}},footerClass:{type:[String,Array,Object],default:null},hideHeader:{type:Boolean,default:!1},hideFooter:{type:Boolean,default:!1},hideHeaderClose:{type:Boolean,default:!1},hideBackdrop:{type:Boolean,default:!1},okOnly:{type:Boolean,default:!1},okDisabled:{type:Boolean,default:!1},cancelDisabled:{type:Boolean,default:!1},visible:{type:Boolean,default:!1},returnFocus:{type:[HTMLElement,String,Object],default:null},headerCloseContent:{type:String,default:function(){return Ft(Yl,"headerCloseContent")}},headerCloseLabel:{type:String,default:function(){return Ft(Yl,"headerCloseLabel")}},cancelTitle:{type:String,default:function(){return Ft(Yl,"cancelTitle")}},cancelTitleHtml:{type:String},okTitle:{type:String,default:function(){return Ft(Yl,"okTitle")}},okTitleHtml:{type:String},cancelVariant:{type:String,default:function(){return Ft(Yl,"cancelVariant")}},okVariant:{type:String,default:function(){return Ft(Yl,"okVariant")}},lazy:{type:Boolean,default:!1},busy:{type:Boolean,default:!1},static:{type:Boolean,default:!1},autoFocusButton:{type:String,default:null,validator:function(t){return it(t)||B(["ok","cancel","close"],t)}}},Jl=t.extend({name:Yl,mixins:[tn,Ml,xa,Ll,$e,zl],inheritAttrs:!1,model:{prop:"visible",event:"change"},props:Zl,data:function(){return{isHidden:!0,isVisible:!1,isTransitioning:!1,isShow:!1,isBlock:!1,isOpening:!1,isClosing:!1,ignoreBackdropClick:!1,isModalOverflowing:!1,return_focus:this.returnFocus||null,scrollbarWidth:0,zIndex:Ul.getBaseZIndex(),isTop:!0,isBodyOverflowing:!1}},computed:{modalClasses:function(){return[{fade:!this.noFade,show:this.isShow},this.modalClass]},modalStyles:function(){var t="".concat(this.scrollbarWidth,"px");return{paddingLeft:!this.isBodyOverflowing&&this.isModalOverflowing?t:"",paddingRight:this.isBodyOverflowing&&!this.isModalOverflowing?t:"",display:this.isBlock?"block":"none"}},dialogClasses:function(){var t;return[(t={},r(t,"modal-".concat(this.size),this.size),r(t,"modal-dialog-centered",this.centered),r(t,"modal-dialog-scrollable",this.scrollable),t),this.dialogClass]},headerClasses:function(){var t;return[(t={},r(t,"bg-".concat(this.headerBgVariant),this.headerBgVariant),r(t,"text-".concat(this.headerTextVariant),this.headerTextVariant),r(t,"border-".concat(this.headerBorderVariant),this.headerBorderVariant),t),this.headerClass]},titleClasses:function(){return[{"sr-only":this.titleSrOnly},this.titleClass]},bodyClasses:function(){var t;return[(t={},r(t,"bg-".concat(this.bodyBgVariant),this.bodyBgVariant),r(t,"text-".concat(this.bodyTextVariant),this.bodyTextVariant),t),this.bodyClass]},footerClasses:function(){var t;return[(t={},r(t,"bg-".concat(this.footerBgVariant),this.footerBgVariant),r(t,"text-".concat(this.footerTextVariant),this.footerTextVariant),r(t,"border-".concat(this.footerBorderVariant),this.footerBorderVariant),t),this.footerClass]},modalOuterStyle:function(){return{position:"absolute",zIndex:this.zIndex}},slotScope:function(){return{ok:this.onOk,cancel:this.onCancel,close:this.onClose,hide:this.hide,visible:this.isVisible}},computeIgnoreEnforceFocusSelector:function(){return k(this.ignoreEnforceFocusSelector).filter(ht).join(",").trim()}},watch:{visible:function(t,e){t!==e&&this[t?"show":"hide"]()}},created:function(){this._observer=null},mounted:function(){this.zIndex=Ul.getBaseZIndex(),this.listenOnRoot("bv::show::modal",this.showHandler),this.listenOnRoot("bv::hide::modal",this.hideHandler),this.listenOnRoot("bv::toggle::modal",this.toggleHandler),this.listenOnRoot("bv::modal::show",this.modalListener),!0===this.visible&&this.$nextTick(this.show)},beforeDestroy:function(){this._observer&&(this._observer.disconnect(),this._observer=null),this.isVisible&&(this.isVisible=!1,this.isShow=!1,this.isTransitioning=!1)},methods:{updateModel:function(t){t!==this.visible&&this.$emit("change",t)},buildEvent:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new BvModalEvent(t,s({cancelable:!1,target:this.$refs.modal||this.$el||null,relatedTarget:null,trigger:null},e,{vueTarget:this,componentId:this.safeId()}))},show:function(){if(!this.isVisible&&!this.isOpening)if(this.isClosing)this.$once("hidden",this.show);else{this.isOpening=!0,this.return_focus=this.return_focus||this.getActiveElement();var t=this.buildEvent("show",{cancelable:!0});if(this.emitEvent(t),t.defaultPrevented||this.isVisible)return this.isOpening=!1,void this.updateModel(!1);this.doShow()}},hide:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if(this.isVisible&&!this.isClosing){this.isClosing=!0;var e=this.buildEvent("hide",{cancelable:"FORCE"!==t,trigger:t||null});if("ok"===t?this.$emit("ok",e):"cancel"===t?this.$emit("cancel",e):"headerclose"===t&&this.$emit("close",e),this.emitEvent(e),e.defaultPrevented||!this.isVisible)return this.isClosing=!1,void this.updateModel(!0);this._observer&&(this._observer.disconnect(),this._observer=null),this.isVisible=!1,this.updateModel(!1)}},toggle:function(t){t&&(this.return_focus=t),this.isVisible?this.hide("toggle"):this.show()},getActiveElement:function(){if(z){var t=document.activeElement;if(t&&t!==document.body&&t.focus)return t}return null},getTabables:function(){return qt(Kl,this.$refs.content).filter(Wt).filter((function(t){return t.tabIndex>-1&&!t.disabled}))},doShow:function(){var t=this;Ul.modalsAreOpen&&this.noStacking?this.listenOnRootOnce("bv::modal::hidden",this.doShow):(Ul.registerModal(this),this.isHidden=!1,this.$nextTick((function(){t.isVisible=!0,t.isOpening=!1,t.updateModel(!0),t.$nextTick((function(){t._observer=ua(t.$refs.content,t.checkModalOverflow.bind(t),ql)}))})))},onBeforeEnter:function(){this.isTransitioning=!0,this.setResizeEvent(!0)},onEnter:function(){var t=this;this.isBlock=!0,zt((function(){zt((function(){t.isShow=!0}))}))},onAfterEnter:function(){var t=this;this.checkModalOverflow(),this.isTransitioning=!1,zt((function(){t.emitEvent(t.buildEvent("shown")),t.setEnforceFocus(!0),t.$nextTick((function(){t.focusFirst()}))}))},onBeforeLeave:function(){this.isTransitioning=!0,this.setResizeEvent(!1),this.setEnforceFocus(!1)},onLeave:function(){this.isShow=!1},onAfterLeave:function(){var t=this;this.isBlock=!1,this.isTransitioning=!1,this.isModalOverflowing=!1,this.isHidden=!0,this.$nextTick((function(){t.isClosing=!1,Ul.unregisterModal(t),t.returnFocusTo(),t.emitEvent(t.buildEvent("hidden"))}))},emitEvent:function(t){var e=t.type;this.emitOnRoot("bv::modal::".concat(e),t,t.componentId),this.$emit(e,t)},onDialogMousedown:function(){var t=this,e=this.$refs.modal;fa(e,"mouseup",(function i(n){pa(e,"mouseup",i,da),n.target===e&&(t.ignoreBackdropClick=!0)}),da)},onClickOut:function(t){this.ignoreBackdropClick?this.ignoreBackdropClick=!1:this.isVisible&&!this.noCloseOnBackdrop&&Jt(document.body,t.target)&&(Jt(this.$refs.content,t.target)||this.hide("backdrop"))},onOk:function(){this.hide("ok")},onCancel:function(){this.hide("cancel")},onClose:function(){this.hide("headerclose")},onEsc:function(t){t.keyCode===bi.ESC&&this.isVisible&&!this.noCloseOnEsc&&this.hide("esc")},focusHandler:function(t){var e=this.$refs.content,i=t.target;if(!(this.noEnforceFocus||!this.isTop||!this.isVisible||!e||document===i||Jt(e,i)||this.computeIgnoreEnforceFocusSelector&&Zt(this.computeIgnoreEnforceFocusSelector,i,!0))){var n=this.getTabables(),a=this.$refs,r=a.bottomTrap,o=a.topTrap;if(r&&i===r){if(Xl(n[0]))return}else if(o&&i===o&&Xl(n[n.length-1]))return;e.focus({preventScroll:!0})}},setEnforceFocus:function(t){this.listenDocument(t,"focusin",this.focusHandler)},setResizeEvent:function(t){this.listenWindow(t,"resize",this.checkModalOverflow),this.listenWindow(t,"orientationchange",this.checkModalOverflow)},showHandler:function(t,e){t===this.safeId()&&(this.return_focus=e||this.getActiveElement(),this.show())},hideHandler:function(t){t===this.safeId()&&this.hide("event")},toggleHandler:function(t,e){t===this.safeId()&&this.toggle(e)},modalListener:function(t){this.noStacking&&t.vueTarget!==this&&this.hide()},focusFirst:function(){var t=this;z&&zt((function(){var e=t.$refs.modal,i=t.$refs.content,n=t.getActiveElement();if(e&&i&&(!n||!Jt(i,n))){var a=t.$refs["ok-button"],r=t.$refs["cancel-button"],o=t.$refs["close-button"],s=t.autoFocusButton,l="ok"===s&&a?a.$el||a:"cancel"===s&&r?r.$el||r:"close"===s&&o?o.$el||o:i;Xl(l),l===i&&t.$nextTick((function(){e.scrollTop=0}))}}))},returnFocusTo:function(){var t=this.returnFocus||this.return_focus||null;this.return_focus=null,this.$nextTick((function(){(t=rt(t)?Kt(t):t)&&(t=t.$el||t,Xl(t))}))},checkModalOverflow:function(){if(this.isVisible){var t=this.$refs.modal;this.isModalOverflowing=t.scrollHeight>document.documentElement.clientHeight}},makeModal:function(t){var e=t();if(!this.hideHeader){var i=this.normalizeSlot("modal-header",this.slotScope);if(!i){var n=t();this.hideHeaderClose||(n=t(Pe,{ref:"close-button",props:{content:this.headerCloseContent,disabled:this.isTransitioning,ariaLabel:this.headerCloseLabel,textVariant:this.headerCloseVariant||this.headerTextVariant},on:{click:this.onClose}},[this.normalizeSlot("modal-header-close")]));var a=!this.hasNormalizedSlot("modal-title")&&this.titleHtml?{innerHTML:this.titleHtml}:{};i=[t(this.titleTag,{staticClass:"modal-title",class:this.titleClasses,attrs:{id:this.safeId("__BV_modal_title_")},domProps:a},[this.normalizeSlot("modal-title",this.slotScope)||di(this.title)]),n]}e=t("header",{ref:"header",staticClass:"modal-header",class:this.headerClasses,attrs:{id:this.safeId("__BV_modal_header_")}},[i])}var r=t("div",{ref:"body",staticClass:"modal-body",class:this.bodyClasses,attrs:{id:this.safeId("__BV_modal_body_")}},this.normalizeSlot("default",this.slotScope)),o=t();if(!this.hideFooter){var l=this.normalizeSlot("modal-footer",this.slotScope);if(!l){var u=t();if(!this.okOnly){var c=this.cancelTitleHtml?{innerHTML:this.cancelTitleHtml}:null;u=t(Oi,{ref:"cancel-button",props:{variant:this.cancelVariant,size:this.buttonSize,disabled:this.cancelDisabled||this.busy||this.isTransitioning},on:{click:this.onCancel}},[this.normalizeSlot("modal-cancel")||(c?t("span",{domProps:c}):di(this.cancelTitle))])}var d=this.okTitleHtml?{innerHTML:this.okTitleHtml}:null;l=[u,t(Oi,{ref:"ok-button",props:{variant:this.okVariant,size:this.buttonSize,disabled:this.okDisabled||this.busy||this.isTransitioning},on:{click:this.onOk}},[this.normalizeSlot("modal-ok")||(d?t("span",{domProps:d}):di(this.okTitle))])]}o=t("footer",{ref:"footer",staticClass:"modal-footer",class:this.footerClasses,attrs:{id:this.safeId("__BV_modal_footer_")}},[l])}var h=t("div",{ref:"content",staticClass:"modal-content",class:this.contentClass,attrs:{role:"document",id:this.safeId("__BV_modal_content_"),tabindex:"-1"}},[e,r,o]),f=t(),p=t();this.isVisible&&!this.noEnforceFocus&&(f=t("span",{ref:"topTrap",attrs:{tabindex:"0"}}),p=t("span",{ref:"bottomTrap",attrs:{tabindex:"0"}}));var m=t("div",{ref:"dialog",staticClass:"modal-dialog",class:this.dialogClasses,on:{mousedown:this.onDialogMousedown}},[f,h,p]),g=t("div",{ref:"modal",staticClass:"modal",class:this.modalClasses,style:this.modalStyles,directives:[{name:"show",rawName:"v-show",value:this.isVisible,expression:"isVisible"}],attrs:{id:this.safeId(),role:"dialog","aria-hidden":this.isVisible?null:"true","aria-modal":this.isVisible?"true":null,"aria-label":this.ariaLabel,"aria-labelledby":this.hideHeader||this.ariaLabel||!(this.hasNormalizedSlot("modal-title")||this.titleHtml||this.title)?null:this.safeId("__BV_modal_title_"),"aria-describedby":this.safeId("__BV_modal_body_")},on:{keydown:this.onEsc,click:this.onClickOut}},[m]);g=t("transition",{props:{enterClass:"",enterToClass:"",enterActiveClass:"",leaveClass:"",leaveActiveClass:"",leaveToClass:""},on:{beforeEnter:this.onBeforeEnter,enter:this.onEnter,afterEnter:this.onAfterEnter,beforeLeave:this.onBeforeLeave,leave:this.onLeave,afterLeave:this.onAfterLeave}},[g]);var v=t();!this.hideBackdrop&&this.isVisible&&(v=t("div",{staticClass:"modal-backdrop",attrs:{id:this.safeId("__BV_modal_backdrop_")}},[this.normalizeSlot("modal-backdrop")])),v=t(ke,{props:{noFade:this.noFade}},[v]);var b=this.static?{}:this.scopedStyleAttrs;return t("div",{key:"modal-outer-".concat(this._uid),style:this.modalOuterStyle,attrs:s({},b,{},this.$attrs,{id:this.safeId("__BV_modal_outer_")})},[g,v])}},render:function(t){return this.static?this.lazy&&this.isHidden?t():this.makeModal(t):this.isHidden?t():t(Nl,[this.makeModal(t)])}}),Ql="__bv_modal_directive__",tu=function(t){var e=t.modifiers,i=void 0===e?{}:e,n=t.arg,a=t.value;return rt(a)?a:rt(n)?n:I(i).reverse()[0]},eu=function(t){return t&&Xt(t,".dropdown-menu > li, li.nav-item")&&Kt("a, button",t)||t},iu=function(t){t&&"BUTTON"!==t.tagName&&(oe(t,"role")||ne(t,"role","button"),"A"===t.tagName||oe(t,"tabindex")||ne(t,"tabindex","0"))},nu=function(t){var e=t[Ql]||{},i=e.trigger,n=e.handler;i&&n&&(pa(i,"click",n,ca),pa(i,"keydown",n,ca),pa(t,"click",n,ca),pa(t,"keydown",n,ca)),delete t[Ql]},au=function(t,e,i){var n=t[Ql]||{},a=tu(e),r=eu(t);a===n.target&&r===n.trigger||(nu(t),function(t,e,i){var n=tu(e),a=eu(t);if(n&&a){var r=function(t){var e=t.currentTarget;if(!Ut(e)){var a=t.type,r=t.keyCode;"click"!==a&&("keydown"!==a||r!==bi.ENTER&&r!==bi.SPACE)||i.context.$root.$emit("bv::show::modal",n,e)}};t[Ql]={handler:r,target:n,trigger:a},iu(a),fa(a,"click",r,ca),"BUTTON"!==a.tagName&&"button"===re(a,"role")&&fa(a,"keydown",r,ca)}}(t,e,i)),iu(r)},ru={inserted:au,updated:function(){},componentUpdated:au,unbind:nu},ou=["id"].concat(b(I(N(Zl,["busy","lazy","noStacking","static","visible"])))),su=function(){},lu={msgBoxContent:"default",title:"modal-title",okTitle:"modal-ok",cancelTitle:"modal-cancel"},uu=function(t){return ou.reduce((function(e,i){return tt(t[i])||(e[i]=t[i]),e}),{})},cu=kt({components:{BModal:Jl},directives:{VBModal:ru},plugins:{BVModalPlugin:kt({plugins:{plugin:function(t){var e=t.extend({name:"BMsgBox",extends:Jl,destroyed:function(){this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)},mounted:function(){var t=this,e=function(){var e=t;t.$nextTick((function(){setTimeout((function(){return e.$destroy()}),0)}))};this.$parent.$once("hook:destroyed",e),this.$once("hidden",e),this.$router&&this.$route&&this.$once("hook:beforeDestroy",this.$watch("$router",e)),this.show()}}),n=function(t,i){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:su;if(!gt("$bvModal")&&!vt("$bvModal")){var a=new e({parent:t,propsData:s({},uu(Ft("BModal")||{}),{hideHeaderClose:!0,hideHeader:!(i.title||i.titleHtml)},N(i,I(lu)),{lazy:!1,busy:!1,visible:!1,noStacking:!1,noEnforceFocus:!1})});return I(lu).forEach((function(t){tt(i[t])||(a.$slots[lu[t]]=k(i[t]))})),new Promise((function(t,e){var i=!1;a.$once("hook:destroyed",(function(){i||e(new Error("BootstrapVue MsgBox destroyed before resolve"))})),a.$on("hide",(function(e){if(!e.defaultPrevented){var a=n(e);e.defaultPrevented||(i=!0,t(a))}}));var r=document.createElement("div");document.body.appendChild(r),a.$mount(r)}))}},r=function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0;if(e&&!vt("$bvModal")&&!gt("$bvModal")&&nt(a))return n(t,s({},uu(i),{msgBoxContent:e}),a)},o=function(){function t(e){i(this,t),C(this,{_vm:e,_root:e.$root}),$(this,{_vm:{enumerable:!0,configurable:!1,writable:!1},_root:{enumerable:!0,configurable:!1,writable:!1}})}return a(t,[{key:"show",value:function(t){if(t&&this._root){for(var e,i=arguments.length,n=new Array(i>1?i-1:0),a=1;a1?i-1:0),a=1;a1&&void 0!==arguments[1]?arguments[1]:{},i=s({},e,{okOnly:!0,okDisabled:!1,hideFooter:!1,msgBoxContent:t});return r(this._vm,t,i,(function(){return!0}))}},{key:"msgBoxConfirm",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=s({},e,{okOnly:!1,okDisabled:!1,cancelDisabled:!1,hideFooter:!1});return r(this._vm,t,i,(function(t){var e=t.trigger;return"ok"===e||"cancel"!==e&&null}))}}]),t}();t.mixin({beforeCreate:function(){this._bv__modal=new o(this)}}),t.prototype.hasOwnProperty("$bvModal")||_(t.prototype,"$bvModal",{get:function(){return this&&this._bv__modal||mt('"'.concat("$bvModal",'" must be accessed from a Vue instance "this" context.'),"BModal"),this._bv__modal}})}}})}}),du={tag:{type:String,default:"ul"},fill:{type:Boolean,default:!1},justified:{type:Boolean,default:!1},align:{type:String,default:null},tabs:{type:Boolean,default:!1},pills:{type:Boolean,default:!1},vertical:{type:Boolean,default:!1},small:{type:Boolean,default:!1},cardHeader:{type:Boolean,default:!1}},hu=t.extend({name:"BNav",functional:!0,props:du,render:function(t,e){var i,n,a=e.props,o=e.data,s=e.children;return t(a.tag,Te(o,{staticClass:"nav",class:(i={"nav-tabs":a.tabs,"nav-pills":a.pills&&!a.tabs,"card-header-tabs":!a.vertical&&a.cardHeader&&a.tabs,"card-header-pills":!a.vertical&&a.cardHeader&&a.pills&&!a.tabs,"flex-column":a.vertical,"nav-fill":!a.vertical&&a.fill,"nav-justified":!a.vertical&&a.justified},r(i,(n=a.align,"justify-content-".concat(n="left"===n?"start":"right"===n?"end":n)),!a.vertical&&a.align),r(i,"small",a.small),i)}),s)}}),fu=ai(),pu=t.extend({name:"BNavItem",functional:!0,props:s({},fu,{linkAttrs:{type:Object,default:function(){}},linkClasses:{type:[String,Object,Array],default:null}}),render:function(t,e){var i=e.props,n=e.data,a=e.listeners,r=e.children;return delete n.on,t("li",Te(n,{staticClass:"nav-item"}),[t(ri,{staticClass:"nav-link",class:i.linkClasses,attrs:i.linkAttrs,props:i,on:a},r)])}}),mu=t.extend({name:"BNavText",functional:!0,props:{},render:function(t,e){var i=e.data,n=e.children;return t("li",Te(i,{staticClass:"navbar-text"}),n)}}),gu=s({},N(mo,["inline"]),{formClass:{type:[String,Array,Object],default:null}}),vu=t.extend({name:"BNavForm",functional:!0,props:gu,render:function(t,e){var i=e.props,n=e.data,a=e.children,r=e.listeners,o=void 0===r?{}:r,l=n.attrs;n.attrs={},n.on={};var u=t(go,{class:i.formClass,props:s({},i,{inline:!0}),attrs:l,on:o},a);return t("li",Te(n,{staticClass:"form-inline"}),[u])}}),bu=Ve(["text","html","menuClass","toggleClass","noCaret","role","lazy"],ao),yu=t.extend({name:"BNavItemDropdown",mixins:[tn,io,$e],props:bu,computed:{isNav:function(){return!0},dropdownClasses:function(){return[this.directionClass,{show:this.visible}]},menuClasses:function(){return[this.menuClass,{"dropdown-menu-right":this.right,show:this.visible}]},toggleClasses:function(){return[this.toggleClass,{"dropdown-toggle-no-caret":this.noCaret}]}},render:function(t){var e=t(ri,{ref:"toggle",staticClass:"nav-link dropdown-toggle",class:this.toggleClasses,props:{href:"#",disabled:this.disabled},attrs:{id:this.safeId("_BV_button_"),"aria-haspopup":"true","aria-expanded":this.visible?"true":"false"},on:{mousedown:this.onMousedown,click:this.toggle,keydown:this.toggle}},[this.$slots["button-content"]||this.$slots.text||t("span",{domProps:hi(this.html,this.text)})]),i=t("ul",{staticClass:"dropdown-menu",class:this.menuClasses,ref:"menu",attrs:{tabindex:"-1","aria-labelledby":this.safeId("_BV_button_")},on:{keydown:this.onKeydown}},!this.lazy||this.visible?this.normalizeSlot("default",{hide:this.hide}):[t()]);return t("li",{staticClass:"nav-item b-nav-dropdown dropdown",class:this.dropdownClasses,attrs:{id:this.safeId()}},[e,i])}}),Su=kt({components:{BNav:hu,BNavItem:pu,BNavText:mu,BNavForm:vu,BNavItemDropdown:yu,BNavItemDd:yu,BNavDropdown:yu,BNavDd:yu},plugins:{DropdownPlugin:To}}),Tu={tag:{type:String,default:"nav"},type:{type:String,default:"light"},variant:{type:String,default:function(){return Ft("BNavbar","variant")}},toggleable:{type:[Boolean,String],default:!1},fixed:{type:String},sticky:{type:Boolean,default:!1},print:{type:Boolean,default:!1}},wu=t.extend({name:"BNavbar",mixins:[$e],props:Tu,provide:function(){return{bvNavbar:this}},computed:{breakpointClass:function(){var t=null,e=Et()[0],i=this.toggleable;return i&&rt(i)&&i!==e?t="navbar-expand-".concat(i):!1===i&&(t="navbar-expand"),t}},render:function(t){var e;return t(this.tag,{staticClass:"navbar",class:[(e={"d-print":this.print,"sticky-top":this.sticky},r(e,"navbar-".concat(this.type),this.type),r(e,"bg-".concat(this.variant),this.variant),r(e,"fixed-".concat(this.fixed),this.fixed),e),this.breakpointClass],attrs:{role:"nav"===this.tag?null:"navigation"}},[this.normalizeSlot("default")])}}),Bu=Ve(["tag","fill","justified","align","small"],du),ku=t.extend({name:"BNavbarNav",functional:!0,props:Bu,render:function(t,e){var i,n,a=e.props,o=e.data,s=e.children;return t(a.tag,Te(o,{staticClass:"navbar-nav",class:(i={"nav-fill":a.fill,"nav-justified":a.justified},r(i,(n=a.align,"justify-content-".concat(n="left"===n?"start":"right"===n?"end":n)),a.align),r(i,"small",a.small),i)}),s)}}),Cu=ai();Cu.href.default=void 0,Cu.to.default=void 0;var xu=s({},Cu,{tag:{type:String,default:"div"}}),$u=t.extend({name:"BNavbarBrand",functional:!0,props:xu,render:function(t,e){var i=e.props,n=e.data,a=e.children,r=i.to||i.href;return t(r?ri:i.tag,Te(n,{staticClass:"navbar-brand",props:r?Ve(Cu,i):{}}),a)}}),_u=t.extend({name:"BNavbarToggle",mixins:[xa,$e],props:{label:{type:String,default:function(){return Ft("BNavbarToggle","label")}},target:{type:String,required:!0}},data:function(){return{toggleState:!1}},created:function(){this.listenOnRoot("bv::collapse::state",this.handleStateEvt),this.listenOnRoot("bv::collapse::sync::state",this.handleStateEvt)},methods:{onClick:function(t){this.$emit("click",t),t.defaultPrevented||this.$root.$emit("bv::toggle::collapse",this.target)},handleStateEvt:function(t,e){t===this.target&&(this.toggleState=e)}},render:function(t){return t("button",{class:["navbar-toggler"],attrs:{type:"button","aria-label":this.label,"aria-controls":this.target,"aria-expanded":this.toggleState?"true":"false"},on:{click:this.onClick}},[this.normalizeSlot("default")||t("span",{class:["navbar-toggler-icon"]})])}}),Du=kt({components:{BNavbar:wu,BNavbarNav:ku,BNavbarBrand:$u,BNavbarToggle:_u,BNavToggle:_u},plugins:{NavPlugin:Su,CollapsePlugin:Ra,DropdownPlugin:To}}),Pu=function(t){return Array.apply(null,{length:t})},Iu=function(t){var e=he(t)||1;return e<1?5:e},Ou=function(t,e){var i=he(t)||1;return i>e?e:i<1?1:i},Fu=function(t){if(t.keyCode===bi.SPACE)return t.preventDefault(),t.stopImmediatePropagation(),t.stopPropagation(),t.currentTarget.click(),!1},Eu={mixins:[$e],model:{prop:"value",event:"input"},props:{disabled:{type:Boolean,default:!1},value:{type:[Number,String],default:null,validator:function(t){var e=he(t);return!(!et(t)&&(isNaN(e)||e<1))||(mt('"v-model" value must be a number greater than "0"',"BPagination"),!1)}},limit:{type:[Number,String],default:5,validator:function(t){var e=he(t);return!(isNaN(e)||e<1)||(mt('Prop "limit" must be a number greater than "0"',"BPagination"),!1)}},align:{type:String,default:"left"},pills:{type:Boolean,default:!1},hideGotoEndButtons:{type:Boolean,default:!1},ariaLabel:{type:String,default:"Pagination"},labelFirstPage:{type:String,default:"Go to first page"},firstText:{type:String,default:"«"},firstNumber:{type:Boolean,default:!1},firstClass:{type:[String,Array,Object],default:null},labelPrevPage:{type:String,default:"Go to previous page"},prevText:{type:String,default:"‹"},prevClass:{type:[String,Array,Object],default:null},labelNextPage:{type:String,default:"Go to next page"},nextText:{type:String,default:"›"},nextClass:{type:[String,Array,Object],default:null},labelLastPage:{type:String,default:"Go to last page"},lastText:{type:String,default:"»"},lastNumber:{type:Boolean,default:!1},lastClass:{type:[String,Array,Object],default:null},labelPage:{type:[String,Function],default:"Go to page"},pageClass:{type:[String,Array,Object],default:null},hideEllipsis:{type:Boolean,default:!1},ellipsisText:{type:String,default:"…"},ellipsisClass:{type:[String,Array,Object],default:null}},data:function(){var t=he(this.value);return{currentPage:t>0?t:-1,localNumberOfPages:1,localLimit:5}},computed:{btnSize:function(){return this.size?"pagination-".concat(this.size):""},alignment:function(){var t=this.align;return"center"===t?"justify-content-center":"end"===t||"right"===t?"justify-content-end":"fill"===t?"text-center":""},styleClass:function(){return this.pills?"b-pagination-pills":""},computedCurrentPage:function(){return Ou(this.currentPage,this.localNumberOfPages)},paginationParams:function(){var t=this.localLimit,e=this.localNumberOfPages,i=this.computedCurrentPage,n=this.hideEllipsis,a=this.firstNumber,r=this.lastNumber,o=!1,s=!1,l=t,u=1;e<=t?l=e:i3?(n&&!r||(s=!0,l=t-(a?0:1)),l=Math.min(l,t)):e-i+23?(n&&!a||(o=!0,l=t-(r?0:1)),u=e-l+1):(t>3&&(l=t-2,o=!(n&&!a),s=!(n&&!r)),u=i-Math.floor(l/2)),u<1?(u=1,o=!1):u>e-l&&(u=e-l+1,s=!1),o&&a&&u<4&&(l+=2,u=1,o=!1);var c=u+l-1;return s&&r&&c>e-3&&(l+=c===e-2?2:3,s=!1),t<=3&&(a&&1===u?l=Math.min(l+1,e,t+1):r&&e===u+l-1&&(u=Math.max(u-1,1),l=Math.min(e-u+1,e,t+1))),{showFirstDots:o,showLastDots:s,numberOfLinks:l=Math.min(l,e-u+1),startNumber:u}},pageList:function(){var t=this.paginationParams,e=t.numberOfLinks,i=t.startNumber,n=this.computedCurrentPage,a=function(t,e){return Pu(e).map((function(e,i){return{number:t+i,classes:null}}))}(i,e);if(a.length>3){var r=n-i,o="bv-d-xs-down-none";if(0===r)for(var s=3;sr+1;c--)a[c].classes=o}}return a}},watch:{value:function(t,e){t!==e&&(this.currentPage=Ou(t,this.localNumberOfPages))},currentPage:function(t,e){t!==e&&this.$emit("input",t>0?t:null)},limit:function(t,e){t!==e&&(this.localLimit=Iu(t))}},created:function(){var t=this;this.localLimit=Iu(this.limit),this.$nextTick((function(){t.currentPage=t.currentPage>t.localNumberOfPages?t.localNumberOfPages:t.currentPage}))},methods:{handleKeyNav:function(t){var e=t.keyCode,i=t.shiftKey;e===bi.LEFT||e===bi.UP?(t.preventDefault(),i?this.focusFirst():this.focusPrev()):e!==bi.RIGHT&&e!==bi.DOWN||(t.preventDefault(),i?this.focusLast():this.focusNext())},getButtons:function(){return qt("a.page-link",this.$el).filter((function(t){return Wt(t)}))},setBtnFocus:function(t){t.focus()},focusCurrent:function(){var t=this;this.$nextTick((function(){var e=t.getButtons().find((function(e){return he(re(e,"aria-posinset"))===t.computedCurrentPage}));e&&e.focus?t.setBtnFocus(e):t.focusFirst()}))},focusFirst:function(){var t=this;this.$nextTick((function(){var e=t.getButtons().find((function(t){return!Ut(t)}));e&&e.focus&&e!==document.activeElement&&t.setBtnFocus(e)}))},focusLast:function(){var t=this;this.$nextTick((function(){var e=t.getButtons().reverse().find((function(t){return!Ut(t)}));e&&e.focus&&e!==document.activeElement&&t.setBtnFocus(e)}))},focusPrev:function(){var t=this;this.$nextTick((function(){var e=t.getButtons(),i=e.indexOf(document.activeElement);i>0&&!Ut(e[i-1])&&e[i-1].focus&&t.setBtnFocus(e[i-1])}))},focusNext:function(){var t=this;this.$nextTick((function(){var e=t.getButtons(),i=e.indexOf(document.activeElement);in,m=i<1?1:i>n?n:i,g={disabled:p,page:m,index:m-1},v=e.normalizeSlot(o,g)||Ge(s)||t(),b=t(p?"span":ri,{staticClass:"page-link",props:p?{}:e.linkProps(i),attrs:{role:"menuitem",tabindex:p?null:"-1","aria-label":a,"aria-controls":e.ariaControls||null,"aria-disabled":p?"true":null},on:p?{}:{click:function(t){e.onClick(i,t)},keydown:Fu}},[v]);return t("li",{key:f,staticClass:"page-item",class:[{disabled:p,"flex-fill":c},l],attrs:{role:"presentation","aria-hidden":p?"true":null}},[b])},p=function(i){return t("li",{key:"ellipsis-".concat(i?"last":"first"),staticClass:"page-item",class:["disabled","bv-d-xs-down-none",c?"flex-fill":"",e.ellipsisClass],attrs:{role:"separator"}},[t("span",{staticClass:"page-link"},[e.normalizeSlot("ellipsis-text")||Ge(e.ellipsisText)||t()])])},m=function(i,a){var o=d(i.number)&&!h,s=r?null:o||h&&0===a?"0":"-1",l={role:"menuitemradio","aria-disabled":r?"true":null,"aria-controls":e.ariaControls||null,"aria-label":nt(e.labelPage)?e.labelPage(i.number):"".concat(e.labelPage," ").concat(i.number),"aria-checked":o?"true":"false","aria-posinset":i.number,"aria-setsize":n,tabindex:s},u=Ge(e.makePage(i.number)),f={page:i.number,index:i.number-1,content:u,active:o,disabled:r},p=t(r?"span":ri,{props:r?{}:e.linkProps(i.number),staticClass:"page-link",attrs:l,on:r?{}:{click:function(t){e.onClick(i.number,t)},keydown:Fu}},[e.normalizeSlot("page",f)||u]);return t("li",{key:"page-".concat(i.number),staticClass:"page-item",class:[{disabled:r,active:o,"flex-fill":c},i.classes,e.pageClass],attrs:{role:"presentation"}},[p])},g=t();this.firstNumber||this.hideGotoEndButtons||(g=f(1,this.labelFirstPage,"first-text",this.firstText,this.firstClass,1,"pagination-goto-first")),i.push(g),i.push(f(u-1,this.labelPrevPage,"prev-text",this.prevText,this.prevClass,1,"pagination-goto-prev")),i.push(this.firstNumber&&1!==a[0]?m({number:1},0):t()),i.push(s?p(!1):t()),this.pageList.forEach((function(t,n){var r=s&&e.firstNumber&&1!==a[0]?1:0;i.push(m(t,n+r))})),i.push(l?p(!0):t()),i.push(this.lastNumber&&a[a.length-1]!==n?m({number:n},-1):t()),i.push(f(u+1,this.labelNextPage,"next-text",this.nextText,this.nextClass,n,"pagination-goto-next"));var v=t();this.lastNumber||this.hideGotoEndButtons||(v=f(n,this.labelLastPage,"last-text",this.lastText,this.lastClass,n,"pagination-goto-last")),i.push(v);var b=t("ul",{ref:"ul",staticClass:"pagination",class:["b-pagination",this.btnSize,this.alignment,this.styleClass],attrs:{role:"menubar","aria-disabled":r?"true":"false","aria-label":this.ariaLabel||null},on:{keydown:this.handleKeyNav}},i);return this.isNav?t("nav",{attrs:{"aria-disabled":r?"true":null,"aria-hidden":r?"true":"false"}},[b]):b}},Vu={size:{type:String,default:function(){return Ft("BPagination","size")}},perPage:{type:[Number,String],default:20},totalRows:{type:[Number,String],default:0},ariaControls:{type:String,default:null}},Nu=function(t){var e=he(t)||20;return e<1?1:e},Au=function(t){var e=he(t)||0;return e<0?0:e},Mu=kt({components:{BPagination:t.extend({name:"BPagination",mixins:[Eu],props:Vu,computed:{numberOfPages:function(){var t=Math.ceil(Au(this.totalRows)/Nu(this.perPage));return t<1?1:t},pageSizeNumberOfPages:function(){return{perPage:Nu(this.perPage),totalRows:Au(this.totalRows),numberOfPages:this.numberOfPages}}},watch:{pageSizeNumberOfPages:function(t,e){it(e)||(t.perPage!==e.perPage&&t.totalRows===e.totalRows?this.currentPage=1:t.numberOfPages!==e.numberOfPages&&this.currentPage>t.numberOfPages&&(this.currentPage=1)),this.localNumberOfPages=t.numberOfPages}},created:function(){var t=this;this.localNumberOfPages=this.numberOfPages;var e=he(this.value)||0;e>0?this.currentPage=e:this.$nextTick((function(){t.currentPage=0}))},mounted:function(){this.localNumberOfPages=this.numberOfPages},methods:{onClick:function(t,e){var i=this;t>this.numberOfPages?t=this.numberOfPages:t<1&&(t=1),this.currentPage=t,this.$emit("change",this.currentPage),this.$nextTick((function(){var t=e.target;Wt(t)&&i.$el.contains(t)&&t.focus?t.focus():i.focusCurrent()}))},makePage:function(t){return t},linkProps:function(){return{href:"#"}}}})}}),Ru="BPaginationNav",Lu={size:{type:String,default:function(){return Ft(Ru,"size")}},numberOfPages:{type:[Number,String],default:1,validator:function(t){var e=he(t);return!(isNaN(e)||e<1)||(mt('Prop "number-of-pages" must be a number greater than "0"',Ru),!1)}},baseUrl:{type:String,default:"/"},useRouter:{type:Boolean,default:!1},linkGen:{type:Function,default:null},pageGen:{type:Function,default:null},pages:{type:Array,default:null},noPageDetect:{type:Boolean,default:!1},activeClass:{type:String},exact:{type:Boolean,default:!1},exactActiveClass:{type:String},noPrefetch:{type:Boolean,default:!1}},Hu=kt({components:{BPaginationNav:t.extend({name:Ru,mixins:[Eu],props:Lu,computed:{isNav:function(){return!0},computedValue:function(){var t=he(this.value);return isNaN(t)||t<1?null:t}},watch:{numberOfPages:function(){var t=this;this.$nextTick((function(){t.setNumberOfPages()}))},pages:function(){var t=this;this.$nextTick((function(){t.setNumberOfPages()}))}},created:function(){this.setNumberOfPages()},mounted:function(){var t=this;this.$router&&this.$watch("$route",(function(){t.$nextTick((function(){zt((function(){t.guessCurrentPage()}))}))}))},methods:{setNumberOfPages:function(){var t,e,i=this;w(this.pages)&&this.pages.length>0?this.localNumberOfPages=this.pages.length:this.localNumberOfPages=(t=this.numberOfPages,(e=he(t)||1)<1?1:e),this.$nextTick((function(){i.guessCurrentPage()}))},onClick:function(t,e){var i=this;t!==this.currentPage&&(zt((function(){i.currentPage=t,i.$emit("change",t)})),this.$nextTick((function(){try{(e.currentTarget||e.target).blur()}catch(t){}})))},getPageInfo:function(t){if(!w(this.pages)||0===this.pages.length||tt(this.pages[t-1])){var e="".concat(this.baseUrl).concat(t);return{link:this.useRouter?{path:e}:e,text:Ge(t)}}var i=this.pages[t-1];if(F(i)){var n=i.link;return{link:F(n)?n:this.useRouter?{path:n}:n,text:Ge(i.text||t)}}return{link:Ge(i),text:Ge(t)}},makePage:function(t){var e=this.getPageInfo(t);return this.pageGen&&nt(this.pageGen)?this.pageGen(t,e):e.text},makeLink:function(t){var e=this.getPageInfo(t);return this.linkGen&&nt(this.linkGen)?this.linkGen(t,e):e.link},linkProps:function(t){var e=this.makeLink(t),i={target:this.target||null,rel:this.rel||null,disabled:this.disabled,exact:this.exact,activeClass:this.activeClass,exactActiveClass:this.exactActiveClass,append:this.append,replace:this.replace,noPrefetch:this.noPrefetch};return this.useRouter||F(e)?i.to=e:i.href=e,i},resolveLink:function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";try{(t=document.createElement("a")).href=ni({to:e},"a","/","/"),document.body.appendChild(t);var i=t,n=i.pathname,a=i.hash,r=i.search;return document.body.removeChild(t),{path:n,hash:a,query:ei(r)}}catch(e){try{t&&t.parentNode&&t.parentNode.removeChild(t)}catch(t){}return{}}},resolveRoute:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";try{var e=this.$router.resolve(t,this.$route).route;return{path:e.path,hash:e.hash,query:e.query}}catch(t){return{}}},guessCurrentPage:function(){var t=this.computedValue,e=this.$router,i=this.$route;if(!this.noPageDetect&&!t&&(z||!z&&e))for(var n=e&&i?{path:i.path,hash:i.hash,query:i.query}:{},a=z?window.location||document.location:null,r=a?{path:a.pathname,hash:a.hash,query:ei(a.search)}:{},o=1;!t&&o<=this.localNumberOfPages;o++){var s=this.makeLink(o);t=e&&(F(s)||this.useRouter)?Hi(this.resolveRoute(s),n)?o:null:z?Hi(this.resolveLink(s),r)?o:null:-1}this.currentPage=t>0?t:0}}})}}),zu={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left",TOPLEFT:"top",TOPRIGHT:"top",RIGHTTOP:"right",RIGHTBOTTOM:"right",BOTTOMLEFT:"bottom",BOTTOMRIGHT:"bottom",LEFTTOP:"left",LEFTBOTTOM:"left"},ju={AUTO:0,TOPLEFT:-1,TOP:0,TOPRIGHT:1,RIGHTTOP:-1,RIGHT:0,RIGHTBOTTOM:1,BOTTOMLEFT:-1,BOTTOM:0,BOTTOMRIGHT:1,LEFTTOP:-1,LEFT:0,LEFTBOTTOM:1},Gu=t.extend({name:"BVPopper",props:{target:{type:[HTMLElement,SVGElement],default:null},placement:{type:String,default:"top"},fallbackPlacement:{type:[String,Array],default:"flip"},offset:{type:Number,default:0},boundary:{type:[String,HTMLElement],default:"scrollParent"},boundaryPadding:{type:Number,default:5},arrowPadding:{type:Number,default:6}},data:function(){return{noFade:!1,localShow:!0,attachment:this.getAttachment(this.placement)}},computed:{templateType:function(){return"unknown"},popperConfig:function(){var t=this,e=this.placement;return{placement:this.getAttachment(e),modifiers:{offset:{offset:this.getOffset(e)},flip:{behavior:this.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{padding:this.boundaryPadding,boundariesElement:this.boundary}},onCreate:function(e){e.originalPlacement!==e.placement&&t.popperPlacementChange(e)},onUpdate:function(e){t.popperPlacementChange(e)}}}},created:function(){var t=this;this.$_popper=null,this.localShow=!0,this.$on("show",(function(e){t.popperCreate(e)})),this.$on("hidden",(function(){t.$nextTick(t.$destroy)})),this.$parent.$once("hook:destroyed",this.$destroy)},beforeMount:function(){this.attachment=this.getAttachment(this.placement)},mounted:function(){},updated:function(){this.popperUpdate()},beforeDestroy:function(){this.popperDestroy()},destroyed:function(){var t=this.$el;t&&t.parentNode&&t.parentNode.removeChild(t)},methods:{hide:function(){this.localShow=!1},getAttachment:function(t){return zu[String(t).toUpperCase()]||"auto"},getOffset:function(t){if(!this.offset){var e=this.$refs.arrow||Kt(".arrow",this.$el),i=(parseFloat(le(e).width)||0)+(parseFloat(this.arrowPadding)||0);switch(ju[String(t).toUpperCase()]||0){case 1:return"+50%p - ".concat(i,"px");case-1:return"-50%p + ".concat(i,"px");default:return 0}}return this.offset},popperCreate:function(t){this.popperDestroy(),this.$_popper=new Gr(this.target,t,this.popperConfig)},popperDestroy:function(){this.$_popper&&this.$_popper.destroy(),this.$_popper=null},popperUpdate:function(){this.$_popper&&this.$_popper.scheduleUpdate()},popperPlacementChange:function(t){this.attachment=this.getAttachment(t.placement)},renderTemplate:function(t){return t("div")}},render:function(t){var e=this;return t(ke,{props:{appear:!0,noFade:this.noFade},on:{beforeEnter:function(t){return e.$emit("show",t)},afterEnter:function(t){return e.$emit("shown",t)},beforeLeave:function(t){return e.$emit("hide",t)},afterLeave:function(t){return e.$emit("hidden",t)}}},[this.localShow?this.renderTemplate(t):t()])}}),Wu=t.extend({name:"BVTooltipTemplate",extends:Gu,mixins:[zl],props:{id:{type:String,default:null},html:{type:Boolean,default:!1}},data:function(){return{title:"",content:"",variant:null,customClass:null,interactive:!0}},computed:{templateType:function(){return"tooltip"},templateClasses:function(){var t;return[(t={noninteractive:!this.interactive},r(t,"b-".concat(this.templateType,"-").concat(this.variant),this.variant),r(t,"bs-".concat(this.templateType,"-").concat(this.attachment),this.attachment),t),this.customClass]},templateAttributes:function(){return s({id:this.id,role:"tooltip",tabindex:"-1"},this.scopedStyleAttrs)},templateListeners:function(){var t=this;return{mouseenter:function(e){t.$emit("mouseenter",e)},mouseleave:function(e){t.$emit("mouseleave",e)},focusin:function(e){t.$emit("focusin",e)},focusout:function(e){t.$emit("focusout",e)}}}},methods:{renderTemplate:function(t){var e=nt(this.title)?this.title({}):it(this.title)?t():this.title,i=this.html&&!nt(this.title)?{innerHTML:this.title}:{};return t("div",{staticClass:"tooltip b-tooltip",class:this.templateClasses,attrs:this.templateAttributes,on:this.templateListeners},[t("div",{ref:"arrow",staticClass:"arrow"}),t("div",{staticClass:"tooltip-inner",domProps:i},[e])])}}}),Uu={title:"",content:"",variant:null,customClass:null,triggers:"",placement:"auto",fallbackPlacement:"flip",target:null,container:null,noFade:!1,boundary:"scrollParent",boundaryPadding:5,offset:0,delay:0,arrowPadding:6,interactive:!0,disabled:!1,id:null,html:!1},Yu=t.extend({name:"BVTooltip",props:{},data:function(){return s({},Uu,{activeTrigger:{hover:!1,click:!1,focus:!1},localShow:!1})},computed:{templateType:function(){return"tooltip"},computedId:function(){return this.id||"__bv_".concat(this.templateType,"_").concat(this._uid,"__")},computedDelay:function(){var t={show:0,hide:0};return E(this.delay)?(t.show=Math.max(parseInt(this.delay.show,10)||0,0),t.hide=Math.max(parseInt(this.delay.hide,10)||0,0)):(ot(this.delay)||rt(this.delay))&&(t.show=t.hide=Math.max(parseInt(this.delay,10)||0,0)),t},computedTriggers:function(){return k(this.triggers).filter(Boolean).join(" ").trim().toLowerCase().split(/\s+/).sort()},isWithActiveTrigger:function(){for(var t in this.activeTrigger)if(this.activeTrigger[t])return!0;return!1},computedTemplateData:function(){return{title:this.title,content:this.content,variant:this.variant,customClass:this.customClass,noFade:this.noFade,interactive:this.interactive}}},watch:{computedTriggers:function(t,e){var i=this;Hi(t,e)||this.$nextTick((function(){i.unListen(),e.forEach((function(e){B(t,e)||i.activeTrigger[e]&&(i.activeTrigger[e]=!1)})),i.listen()}))},computedTemplateData:function(){this.handleTemplateUpdate()},disabled:function(t){t?this.disable():this.enable()}},created:function(){var t=this;this.$_tip=null,this.$_hoverTimeout=null,this.$_hoverState="",this.$_visibleInterval=null,this.$_enabled=!this.disabled,this.$_noop=la.bind(this),this.$parent&&this.$parent.$once("hook:beforeDestroy",this.$destroy),this.$nextTick((function(){var e=t.getTarget();e&&Jt(document.body,e)?(t.scopeId=Hl(t.$parent),t.listen()):mt("Unable to find target element in document.",t.templateType)}))},updated:function(){this.$nextTick(this.handleTemplateUpdate)},deactivated:function(){this.forceHide()},beforeDestroy:function(){this.unListen(),this.setWhileOpenListeners(!1),this.clearHoverTimeout(),this.clearVisibilityInterval(),this.destroyTemplate()},methods:{getTemplate:function(){return Wu},updateData:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=!1;I(Uu).forEach((function(n){tt(e[n])||t[n]===e[n]||(t[n]=e[n],"title"===n&&(i=!0))})),i&&this.localShow&&this.fixTitle()},createTemplateAndShow:function(){var t=this.getContainer(),e=this.getTemplate(),i=this.$_tip=new e({parent:this,propsData:{id:this.computedId,html:this.html,placement:this.placement,fallbackPlacement:this.fallbackPlacement,target:this.getPlacementTarget(),boundary:this.getBoundary(),offset:parseInt(this.offset,10)||0,arrowPadding:parseInt(this.arrowPadding,10)||0,boundaryPadding:parseInt(this.boundaryPadding,10)||0}});this.handleTemplateUpdate(),i.$once("show",this.onTemplateShow),i.$once("shown",this.onTemplateShown),i.$once("hide",this.onTemplateHide),i.$once("hidden",this.onTemplateHidden),i.$once("hook:destroyed",this.destroyTemplate),i.$on("focusin",this.handleEvent),i.$on("focusout",this.handleEvent),i.$on("mouseenter",this.handleEvent),i.$on("mouseleave",this.handleEvent),i.$mount(t.appendChild(document.createElement("div")))},hideTemplate:function(){this.$_tip&&this.$_tip.hide(),this.clearActiveTriggers(),this.$_hoverState=""},destroyTemplate:function(){this.setWhileOpenListeners(!1),this.clearHoverTimeout(),this.$_hoverState="",this.clearActiveTriggers(),this.localPlacementTarget=null;try{this.$_tip&&this.$_tip.$destroy()}catch(t){}this.$_tip=null,this.removeAriaDescribedby(),this.restoreTitle(),this.localShow=!1},getTemplateElement:function(){return this.$_tip?this.$_tip.$el:null},handleTemplateUpdate:function(){var t=this,e=this.$_tip;if(e){["title","content","variant","customClass","noFade","interactive"].forEach((function(i){e[i]!==t[i]&&(e[i]=t[i])}))}},show:function(){var t=this.getTarget();if(t&&Jt(document.body,t)&&Wt(t)&&!this.dropdownOpen()&&(!it(this.title)&&""!==this.title||!it(this.content)&&""!==this.content)&&!this.$_tip&&!this.localShow){this.localShow=!0;var e=this.buildEvent("show",{cancelable:!0});this.emitEvent(e),e.defaultPrevented?this.destroyTemplate():(this.fixTitle(),this.addAriaDescribedby(),this.createTemplateAndShow())}},hide:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.getTemplateElement();if(e&&this.localShow){var i=this.buildEvent("hide",{cancelable:!t});this.emitEvent(i),i.defaultPrevented||this.hideTemplate()}else this.restoreTitle()},forceHide:function(){this.getTemplateElement()&&this.localShow&&(this.setWhileOpenListeners(!1),this.clearHoverTimeout(),this.$_hoverState="",this.clearActiveTriggers(),this.$_tip&&(this.$_tip.noFade=!0),this.hide(!0))},enable:function(){this.$_enabled=!0,this.emitEvent(this.buildEvent("enabled"))},disable:function(){this.$_enabled=!1,this.emitEvent(this.buildEvent("disabled"))},onTemplateShow:function(){this.setWhileOpenListeners(!0)},onTemplateShown:function(){var t=this.$_hoverState;this.$_hoverState="","out"===t&&this.leave(null),this.emitEvent(this.buildEvent("shown"))},onTemplateHide:function(){this.setWhileOpenListeners(!1)},onTemplateHidden:function(){this.destroyTemplate(),this.emitEvent(this.buildEvent("hidden"))},getTarget:function(){var t=this.target?this.target.$el||this.target:null;return t=rt(t)?Qt(t.replace(/^#/,"")):t,t=nt(t)?t():t,Gt(t)?t:null},getPlacementTarget:function(){return this.getTarget()},getTargetId:function(){var t=this.getTarget();return t&&t.id?t.id:null},getContainer:function(){var t=!!this.container&&(this.container.$el||this.container),e=document.body,i=this.getTarget();return!1===t?Zt(".modal-content",i)||e:rt(t)&&Qt(t.replace(/^#/,""))||e},getBoundary:function(){return this.boundary?this.boundary.$el||this.boundary:"scrollParent"},isInModal:function(){var t=this.getTarget();return t&&Zt(".modal-content",t)},isDropdown:function(){var t=this.getTarget();return t&&ie(t,"dropdown")},dropdownOpen:function(){var t=this.getTarget();return this.isDropdown()&&t&&Kt(".dropdown-menu.show",t)},clearHoverTimeout:function(){this.$_hoverTimeout&&(clearTimeout(this.$_hoverTimeout),this.$_hoverTimeout=null)},clearVisibilityInterval:function(){this.$_visibleInterval&&(clearInterval(this.$_visibleInterval),this.$_visibleInterval=null)},clearActiveTriggers:function(){for(var t in this.activeTrigger)this.activeTrigger[t]=!1},addAriaDescribedby:function(){var t=this.getTarget(),e=re(t,"aria-describedby")||"";e=e.split(/\s+/).concat(this.computedId).join(" ").trim(),ne(t,"aria-describedby",e)},removeAriaDescribedby:function(){var t=this,e=this.getTarget(),i=re(e,"aria-describedby")||"";(i=i.split(/\s+/).filter((function(e){return e!==t.computedId})).join(" ").trim())?ne(e,"aria-describedby",i):ae(e,"aria-describedby")},fixTitle:function(){var t=this.getTarget();t&&re(t,"title")&&(ne(t,"data-original-title",re(t,"title")||""),ne(t,"title",""))},restoreTitle:function(){var t=this.getTarget();t&&oe(t,"data-original-title")&&(ne(t,"title",re(t,"data-original-title")||""),ae(t,"data-original-title"))},buildEvent:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new BvEvent(t,s({cancelable:!1,target:this.getTarget(),relatedTarget:this.getTemplateElement()||null,componentId:this.computedId,vueTarget:this},e))},emitEvent:function(t){var e=t.type,i=this.$root;i&&i.$emit&&i.$emit("bv::".concat(this.templateType,"::").concat(e),t),this.$emit(e,t)},listen:function(){var t=this,e=this.getTarget();e&&(this.setRootListener(!0),this.computedTriggers.forEach((function(i){"click"===i?fa(e,"click",t.handleEvent,da):"focus"===i?(fa(e,"focusin",t.handleEvent,da),fa(e,"focusout",t.handleEvent,da)):"blur"===i?fa(e,"focusout",t.handleEvent,da):"hover"===i&&(fa(e,"mouseenter",t.handleEvent,da),fa(e,"mouseleave",t.handleEvent,da))}),this))},unListen:function(){var t=this,e=this.getTarget();this.setRootListener(!1),["click","focusin","focusout","mouseenter","mouseleave"].forEach((function(i){e&&pa(e,i,t.handleEvent,da)}),this)},setRootListener:function(t){var e=this.$root;if(e){var i=t?"$on":"$off",n=this.templateType;e[i]("bv::hide::".concat(n),this.doHide),e[i]("bv::show::".concat(n),this.doShow),e[i]("bv::disable::".concat(n),this.doDisable),e[i]("bv::enable::".concat(n),this.doEnable)}},setWhileOpenListeners:function(t){this.setModalListener(t),this.setDropdownListener(t),this.visibleCheck(t),this.setOnTouchStartListener(t)},visibleCheck:function(t){var e=this;this.clearVisibilityInterval();var i=this.getTarget(),n=this.getTemplateElement();t&&(this.$_visibleInterval=setInterval((function(){!n||!e.localShow||i.parentNode&&Wt(i)||e.forceHide()}),100))},setModalListener:function(t){this.isInModal()&&this.$root[t?"$on":"$off"]("bv::modal::hidden",this.forceHide)},setOnTouchStartListener:function(t){var e=this;"ontouchstart"in document.documentElement&&T(document.body.children).forEach((function(i){ma(t,i,"mouseover",e.$_noop)}))},setDropdownListener:function(t){var e=this.getTarget();e&&this.$root&&this.isDropdown&&e.__vue__&&e.__vue__[t?"$on":"$off"]("shown",this.forceHide)},handleEvent:function(t){var e=this.getTarget();if(e&&!Ut(e)&&this.$_enabled&&!this.dropdownOpen()){var i=t.type,n=this.computedTriggers;if("click"===i&&B(n,"click"))this.click(t);else if("mouseenter"===i&&B(n,"hover"))this.enter(t);else if("focusin"===i&&B(n,"focus"))this.enter(t);else if("focusout"===i&&(B(n,"focus")||B(n,"blur"))||"mouseleave"===i&&B(n,"hover")){var a=this.getTemplateElement(),r=t.target,o=t.relatedTarget;if(a&&Jt(a,r)&&Jt(e,o)||a&&Jt(e,r)&&Jt(a,o)||a&&Jt(a,r)&&Jt(a,o)||Jt(e,r)&&Jt(e,o))return;this.leave(t)}}},doHide:function(t){t&&this.getTargetId()!==t&&this.computedId!==t||this.forceHide()},doShow:function(t){t&&this.getTargetId()!==t&&this.computedId!==t||this.show()},doDisable:function(t){t&&this.getTargetId()!==t&&this.computedId!==t||this.disable()},doEnable:function(t){t&&this.getTargetId()!==t&&this.computedId!==t||this.enable()},click:function(){this.$_enabled&&!this.dropdownOpen()&&(this.activeTrigger.click=!this.activeTrigger.click,this.isWithActiveTrigger?this.enter(null):this.leave(null))},toggle:function(){this.$_enabled&&!this.dropdownOpen()&&(this.localShow?this.leave(null):this.enter(null))},enter:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;e&&(this.activeTrigger["focusin"===e.type?"focus":"hover"]=!0),this.localShow||"in"===this.$_hoverState?this.$_hoverState="in":(this.clearHoverTimeout(),this.$_hoverState="in",this.computedDelay.show?(this.fixTitle(),this.$_hoverTimeout=setTimeout((function(){"in"===t.$_hoverState?t.show():t.localShow||t.restoreTitle()}),this.computedDelay.show)):this.show())},leave:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;e&&(this.activeTrigger["focusout"===e.type?"focus":"hover"]=!1,"focusout"===e.type&&B(this.computedTriggers,"blur")&&(this.activeTrigger.click=!1,this.activeTrigger.hover=!1)),this.isWithActiveTrigger||(this.clearHoverTimeout(),this.$_hoverState="out",this.computedDelay.hide?this.$_hoverTimeout=setTimeout((function(){"out"===t.$_hoverState&&t.hide()}),this.computedDelay.hide):this.hide())}}}),qu="BTooltip",Ku=t.extend({name:qu,props:{title:{type:String},target:{type:[String,HTMLElement,SVGElement,Function,Object],required:!0},triggers:{type:[String,Array],default:"hover focus"},placement:{type:String,default:"top"},fallbackPlacement:{type:[String,Array],default:"flip",validator:function(t){return w(t)&&t.every((function(t){return rt(t)}))||B(["flip","clockwise","counterclockwise"],t)}},variant:{type:String,default:function(){return Ft(qu,"variant")}},customClass:{type:String,default:function(){return Ft(qu,"customClass")}},delay:{type:[Number,Object,String],default:function(){return Ft(qu,"delay")}},boundary:{type:[String,HTMLElement,Object],default:function(){return Ft(qu,"boundary")}},boundaryPadding:{type:[Number,String],default:function(){return Ft(qu,"boundaryPadding")}},offset:{type:[Number,String],default:0},noFade:{type:Boolean,default:!1},container:{type:[String,HTMLElement,Object]},show:{type:Boolean,default:!1},noninteractive:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},id:{type:String,default:null}},data:function(){return{localShow:this.show,localTitle:"",localContent:""}},computed:{templateData:function(){return{title:this.localTitle,content:this.localContent,target:this.target,triggers:this.triggers,placement:this.placement,fallbackPlacement:this.fallbackPlacement,variant:this.variant,customClass:this.customClass,container:this.container,boundary:this.boundary,boundaryPadding:this.boundaryPadding,delay:this.delay,offset:this.offset,noFade:this.noFade,interactive:!this.noninteractive,disabled:this.disabled,id:this.id}},templateTitleContent:function(){return{title:this.title,content:this.content}}},watch:{show:function(t,e){t!==e&&t!==this.localShow&&this.$_bv_toolpop&&(t?this.$_bv_toolpop.show():this.$_bv_toolpop.forceHide())},disabled:function(t){t?this.doDisable():this.doEnable()},localShow:function(t){this.$emit("update:show",t)},templateData:function(){var t=this;this.$nextTick((function(){t.$_bv_toolpop&&t.$_bv_toolpop.updateData(t.templateData)}))},templateTitleContent:function(){this.$nextTick(this.updateContent)}},created:function(){this.$_bv_toolpop=null},updated:function(){this.$nextTick(this.updateContent)},beforeDestroy:function(){this.$off("open",this.doOpen),this.$off("close",this.doClose),this.$off("disable",this.doDisable),this.$off("enable",this.doEnable),this.$_bv_toolpop&&this.$_bv_toolpop.$destroy(),this.$_bv_toolpop=null},mounted:function(){var t=this;this.$nextTick((function(){var e=t.getComponent();t.updateContent();var i=Hl(t)||Hl(t.$parent),n=t.$_bv_toolpop=new e({parent:t,_scopeId:i||void 0});n.updateData(t.templateData),n.$on("show",t.onShow),n.$on("shown",t.onShown),n.$on("hide",t.onHide),n.$on("hidden",t.onHidden),n.$on("disabled",t.onDisabled),n.$on("enabled",t.onEnabled),t.disabled&&t.doDisable(),t.$on("open",t.doOpen),t.$on("close",t.doClose),t.$on("disable",t.doDisable),t.$on("enable",t.doEnable),t.localShow&&t.$_bv_toolpop&&t.$_bv_toolpop.show()}))},methods:{getComponent:function(){return Yu},updateContent:function(){this.setTitle(this.$scopedSlots.default||this.title)},setTitle:function(t){t=it(t)?"":t,this.localTitle!==t&&(this.localTitle=t)},setContent:function(t){t=it(t)?"":t,this.localContent!==t&&(this.localContent=t)},onShow:function(t){this.$emit("show",t),t&&(this.localShow=!t.defaultPrevented)},onShown:function(t){this.localShow=!0,this.$emit("shown",t)},onHide:function(t){this.$emit("hide",t)},onHidden:function(t){this.$emit("hidden",t),this.localShow=!1},onDisabled:function(t){t&&"disabled"===t.type&&(this.$emit("update:disabled",!0),this.$emit("disabled",t))},onEnabled:function(t){t&&"enabled"===t.type&&(this.$emit("update:disabled",!1),this.$emit("enabled",t))},doOpen:function(){!this.localShow&&this.$_bv_toolpop&&this.$_bv_toolpop.show()},doClose:function(){this.localShow&&this.$_bv_toolpop&&this.$_bv_toolpop.hide()},doDisable:function(){this.$_bv_toolpop&&this.$_bv_toolpop.disable()},doEnable:function(){this.$_bv_toolpop&&this.$_bv_toolpop.enable()}},render:function(t){return t()}}),Xu=t.extend({name:"BVPopoverTemplate",extends:Wu,computed:{templateType:function(){return"popover"}},methods:{renderTemplate:function(t){var e=nt(this.title)?this.title({}):this.title,i=nt(this.content)?this.content({}):this.content,n=this.html&&!nt(this.title)?{innerHTML:this.title}:{},a=this.html&&!nt(this.content)?{innerHTML:this.content}:{};return t("div",{staticClass:"popover b-popover",class:this.templateClasses,attrs:this.templateAttributes,on:this.templateListeners},[t("div",{ref:"arrow",staticClass:"arrow"}),it(e)||""===e?t():t("h3",{staticClass:"popover-header",domProps:n},[e]),it(i)||""===i?t():t("div",{staticClass:"popover-body",domProps:a},[i])])}}}),Zu=t.extend({name:"BVPopover",extends:Yu,computed:{templateType:function(){return"popover"}},methods:{getTemplate:function(){return Xu}}}),Ju="BPopover",Qu=t.extend({name:Ju,extends:Ku,inheritAttrs:!1,props:{title:{type:String},content:{type:String},triggers:{type:[String,Array],default:"click"},placement:{type:String,default:"right"},variant:{type:String,default:function(){return Ft(Ju,"variant")}},customClass:{type:String,default:function(){return Ft(Ju,"customClass")}},delay:{type:[Number,Object,String],default:function(){return Ft(Ju,"delay")}},boundary:{type:[String,HTMLElement,Object],default:function(){return Ft(Ju,"boundary")}},boundaryPadding:{type:[Number,String],default:function(){return Ft(Ju,"boundaryPadding")}}},methods:{getComponent:function(){return Zu},updateContent:function(){this.setContent(this.$scopedSlots.default||this.content),this.setTitle(this.$scopedSlots.title||this.title)}}}),tc="__BV_Popover__",ec={focus:!0,hover:!0,click:!0,blur:!0,manual:!0},ic=/^html$/i,nc=/^nofade$/i,ac=/^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/i,rc=/^(window|viewport|scrollParent)$/i,oc=/^d\d+$/i,sc=/^ds\d+$/i,lc=/^dh\d+$/i,uc=/^o-?\d+$/i,cc=/^v-.+$/i,dc=/\s+/,hc=function(t,e,i){if(z){var n=function(t,e){var i="BPopover",n={title:void 0,content:void 0,trigger:"",placement:"right",fallbackPlacement:"flip",container:!1,animation:!0,offset:0,disabled:!1,id:null,html:!1,delay:Ft(i,"delay"),boundary:String(Ft(i,"boundary")),boundaryPadding:parseInt(Ft(i,"boundaryPadding"),10)||0,variant:Ft(i,"variant"),customClass:Ft(i,"customClass")};if(rt(t.value)||ot(t.value)?n.content=t.value:nt(t.value)?n.content=t.value:E(t.value)&&(n=s({},n,{},t.value)),t.arg&&(n.container="#".concat(t.arg)),tt(n.title)){var a=e.data||{};n.title=a.attrs&&!it(a.attrs.title)?a.attrs.title:void 0}E(n.delay)||(n.delay={show:parseInt(n.delay,10)||0,hide:parseInt(n.delay,10)||0}),I(t.modifiers).forEach((function(t){if(ic.test(t))n.html=!0;else if(nc.test(t))n.animation=!1;else if(ac.test(t))n.placement=t;else if(rc.test(t))t="scrollparent"===t?"scrollParent":t,n.boundary=t;else if(oc.test(t)){var e=parseInt(t.slice(1),10)||0;n.delay.show=e,n.delay.hide=e}else sc.test(t)?n.delay.show=parseInt(t.slice(2),10)||0:lc.test(t)?n.delay.hide=parseInt(t.slice(2),10)||0:uc.test(t)?n.offset=parseInt(t.slice(1),10)||0:cc.test(t)&&(n.variant=t.slice(2)||null)}));var r={};return k(n.trigger||"").filter(ht).join(" ").trim().toLowerCase().split(dc).forEach((function(t){ec[t]&&(r[t]=!0)})),I(t.modifiers).forEach((function(t){t=t.toLowerCase(),ec[t]&&(r[t]=!0)})),n.trigger=I(r).join(" "),"blur"===n.trigger&&(n.trigger="focus"),n.trigger||(n.trigger="click"),n}(e,i);if(!t[tc]){var a=i.context;t[tc]=new Zu({parent:a,_scopeId:Hl(a,void 0)}),t[tc].__bv_prev_data__={},t[tc].$on("show",(function(){var e={};nt(n.title)&&(e.title=n.title(t)),nt(n.content)&&(e.content=n.content(t)),I(e).length>0&&t[tc].updateData(e)}))}var r={title:n.title,content:n.content,triggers:n.trigger,placement:n.placement,fallbackPlacement:n.fallbackPlacement,variant:n.variant,customClass:n.customClass,container:n.container,boundary:n.boundary,delay:n.delay,offset:n.offset,noFade:!n.animation,id:n.id,disabled:n.disabled,html:n.html},o=t[tc].__bv_prev_data__;if(t[tc].__bv_prev_data__=r,!Hi(r,o)){var l={target:t};I(r).forEach((function(e){r[e]!==o[e]&&(l[e]="title"!==e&&"content"!==e||!nt(r[e])?r[e]:r[e](t))})),t[tc].updateData(l)}}},fc=kt({directives:{VBPopover:{bind:function(t,e,i){hc(t,e,i)},componentUpdated:function(t,e,i){i.context.$nextTick((function(){hc(t,e,i)}))},unbind:function(t){!function(t){t[tc]&&(t[tc].$destroy(),t[tc]=null),delete t[tc]}(t)}}}}),pc=kt({components:{BPopover:Qu},plugins:{VBPopoverPlugin:fc}}),mc=t.extend({name:"BProgressBar",mixins:[$e],inject:{bvProgress:{default:function(){return{}}}},props:{value:{type:[Number,String],default:0},label:{type:String,default:null},labelHtml:{type:String},max:{type:[Number,String],default:null},precision:{type:[Number,String],default:null},variant:{type:String,default:function(){return Ft("BProgressBar","variant")}},striped:{type:Boolean,default:null},animated:{type:Boolean,default:null},showProgress:{type:Boolean,default:null},showValue:{type:Boolean,default:null}},computed:{progressBarClasses:function(){return[this.computedVariant?"bg-".concat(this.computedVariant):"",this.computedStriped||this.computedAnimated?"progress-bar-striped":"",this.computedAnimated?"progress-bar-animated":""]},progressBarStyles:function(){return{width:this.computedValue/this.computedMax*100+"%"}},computedValue:function(){return fe(this.value)||0},computedMax:function(){var t=fe(this.max);return isNaN(t)?fe(this.bvProgress.max)||100:t},computedPrecision:function(){var t=he(this.precision);return isNaN(t)?he(this.bvProgress.precision)||0:t},computedProgress:function(){var t=this.computedPrecision,e=Math.pow(10,t);return pe(100*e*this.computedValue/this.computedMax/e,t)},computedVariant:function(){return this.variant||this.bvProgress.variant},computedStriped:function(){return at(this.striped)?this.striped:this.bvProgress.striped||!1},computedAnimated:function(){return at(this.animated)?this.animated:this.bvProgress.animated||!1},computedShowProgress:function(){return at(this.showProgress)?this.showProgress:this.bvProgress.showProgress||!1},computedShowValue:function(){return at(this.showValue)?this.showValue:this.bvProgress.showValue||!1}},render:function(t){var e=t();return this.hasNormalizedSlot("default")?e=this.normalizeSlot("default"):this.label||this.labelHtml?e=t("span",{domProps:hi(this.labelHtml,this.label)}):this.computedShowProgress?e=this.computedProgress:this.computedShowValue&&(e=pe(this.computedValue,this.computedPrecision)),t("div",{staticClass:"progress-bar",class:this.progressBarClasses,style:this.progressBarStyles,attrs:{role:"progressbar","aria-valuemin":"0","aria-valuemax":Ge(this.computedMax),"aria-valuenow":pe(this.computedValue,this.computedPrecision)}},[e])}}),gc=kt({components:{BProgress:t.extend({name:"BProgress",mixins:[$e],provide:function(){return{bvProgress:this}},props:{variant:{type:String,default:function(){return Ft("BProgress","variant")}},striped:{type:Boolean,default:!1},animated:{type:Boolean,default:!1},height:{type:String,default:null},precision:{type:[Number,String],default:0},showProgress:{type:Boolean,default:!1},showValue:{type:Boolean,default:!1},max:{type:[Number,String],default:100},value:{type:[Number,String],default:0}},computed:{progressHeight:function(){return{height:this.height||null}}},render:function(t){var e=this.normalizeSlot("default");return e||(e=t(mc,{props:{value:this.value,max:this.max,precision:this.precision,variant:this.variant,animated:this.animated,striped:this.striped,showProgress:this.showProgress,showValue:this.showValue}})),t("div",{class:["progress"],style:this.progressHeight},[e])}}),BProgressBar:mc}}),vc=kt({components:{BSpinner:t.extend({name:"BSpinner",functional:!0,props:{type:{type:String,default:"border"},label:{type:String,default:null},variant:{type:String,default:function(){return Ft("BSpinner","variant")}},small:{type:Boolean,default:!1},role:{type:String,default:"status"},tag:{type:String,default:"span"}},render:function(t,e){var i,n=e.props,a=e.data,o=e.slots,s=e.scopedSlots,l=o(),u=xe("label",{},s||{},l)||n.label;return u&&(u=t("span",{staticClass:"sr-only"},u)),t(n.tag,Te(a,{attrs:{role:u?n.role||"status":null,"aria-hidden":u?null:"true"},class:(i={},r(i,"spinner-".concat(n.type),n.type),r(i,"spinner-".concat(n.type,"-sm"),n.small),r(i,"text-".concat(n.variant),n.variant),i)}),[u||t()])}})}}),bc={methods:{hasListener:function(t){var e=this.$listeners||{},i=this._events||{};return!tt(e[t])||w(i[t])&&i[t].length>0}}},yc=/_/g,Sc=/([a-z])([A-Z])/g,Tc=/(\s|^)(\w)/g,wc=function(t){return t.replace(yc," ").replace(Sc,(function(t,e,i){return e+" "+i})).replace(Tc,(function(t,e,i){return e+i.toUpperCase()}))},Bc={_rowVariant:!0,_cellVariants:!0,_showDetails:!0},kc=["a","a *","button","button *","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(","),Cc=function(t,e){var i=[];if(w(t)&&t.filter(ht).forEach((function(t){if(rt(t))i.push({key:t,label:wc(t)});else if(F(t)&&t.key&&rt(t.key))i.push(V(t));else if(F(t)&&1===I(t).length){var e=I(t)[0],n=function(t,e){var i=null;return rt(e)?i={key:t,label:e}:nt(e)?i={key:t,formatter:e}:F(e)?(i=V(e)).key=i.key||t:!1!==e&&(i={key:t}),i}(e,t[e]);n&&i.push(n)}})),0===i.length&&w(e)&&e.length>0){var n=e[0];I(n).forEach((function(t){Bc[t]||i.push({key:t,label:wc(t)})}))}var a={};return i.filter((function(t){return!a[t.key]&&(a[t.key]=!0,t.label=rt(t.label)?t.label:wc(t.key),!0)}))},xc={props:{items:{type:Array,default:function(){return[]}},fields:{type:Array,default:null},primaryKey:{type:String,default:null},value:{type:Array,default:function(){return[]}}},data:function(){return{localItems:w(this.items)?this.items.slice():[]}},computed:{computedFields:function(){return Cc(this.fields,this.localItems)},computedFieldsObj:function(){var t=this.$parent;return this.computedFields.reduce((function(e,i){if(e[i.key]=V(i),i.formatter){var n=i.formatter;rt(n)&&nt(t[n])?n=t[n]:nt(n)||(n=void 0),e[i.key].formatter=n}return e}),{})},computedItems:function(){return(this.paginatedItems||this.sortedItems||this.filteredItems||this.localItems||[]).slice()},context:function(){return{filter:this.localFilter,sortBy:this.localSortBy,sortDesc:this.localSortDesc,perPage:parseInt(this.perPage,10)||0,currentPage:parseInt(this.currentPage,10)||1,apiUrl:this.apiUrl}}},watch:{items:function(t){w(t)?this.localItems=t.slice():it(t)&&(this.localItems=[])},computedItems:function(t){this.$emit("input",t)},context:function(t,e){Hi(t,e)||this.$emit("context-changed",t)}},mounted:function(){this.$emit("input",this.computedItems)},methods:{getFieldFormatter:function(t){var e=this.computedFieldsObj[t];return e?e.formatter:void 0}}},$c={props:{stacked:{type:[Boolean,String],default:!1}},computed:{isStacked:function(){return""===this.stacked||this.stacked},isStackedAlways:function(){return!0===this.isStacked},stackedTableClasses:function(){return r({"b-table-stacked":this.isStackedAlways},"b-table-stacked-".concat(this.stacked),!this.isStackedAlways&&this.isStacked)}}},_c=function(t,e,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return I(t).reduce((function(a,r){if(!Bc[r]&&!(e&&e.length>0&&B(e,r))&&(!(i&&i.length>0)||B(i,r))){var o=n[r]||{},s=t[r],l=o.filterByFormatted,u=nt(l)?l:l?o.formatter:null;a[r]=nt(u)?u(s,r,t):s}return a}),{})},Dc=function t(e){return it(e)?"":F(e)&&!st(e)?I(e).sort().filter((function(t){return!it(t)})).map((function(i){return t(e[i])})).join(" "):Ge(e)},Pc='Prop "filter-debounce" is deprecated. Use the debounce feature of "" instead.',Ic=/[\s\uFEFF\xA0]+/g,Oc={props:{filter:{type:[String,RegExp,Object,Array],default:null},filterFunction:{type:Function,default:null},filterIgnoredFields:{type:Array},filterIncludedFields:{type:Array},filterDebounce:{type:[Number,String],deprecated:Pc,default:0,validator:function(t){return/^\d+/.test(String(t))}}},data:function(){return{isFiltered:!1,localFilter:this.filterSanitize(this.filter)}},computed:{computedFilterIgnored:function(){return this.filterIgnoredFields?k(this.filterIgnoredFields).filter(Boolean):null},computedFilterIncluded:function(){return this.filterIncludedFields?k(this.filterIncludedFields).filter(Boolean):null},computedFilterDebounce:function(){var t=he(this.filterDebounce)||0;return t>0&&mt(Pc,"BTable"),t},localFiltering:function(){return!this.hasProvider||!!this.noProviderFiltering},filteredCheck:function(){return{filteredItems:this.filteredItems,localItems:this.localItems,localFilter:this.localFilter}},localFilterFn:function(){return nt(this.filterFunction)?this.filterFunction:null},filteredItems:function(){var t=this.localItems||[],e=this.localFilter,i=this.localFiltering?this.filterFnFactory(this.localFilterFn,e)||this.defaultFilterFnFactory(e):null;return i&&t.length>0?t.filter(i):t}},watch:{computedFilterDebounce:function(t){!t&&this.$_filterTimer&&(clearTimeout(this.$_filterTimer),this.$_filterTimer=null,this.localFilter=this.filterSanitize(this.filter))},filter:{deep:!0,handler:function(t){var e=this,i=this.computedFilterDebounce;clearTimeout(this.$_filterTimer),this.$_filterTimer=null,i&&i>0?this.$_filterTimer=setTimeout((function(){e.localFilter=e.filterSanitize(t)}),i):this.localFilter=this.filterSanitize(t)}},filteredCheck:function(t){var e=t.filteredItems,i=t.localFilter,n=!1;i?Hi(i,[])||Hi(i,{})?n=!1:i&&(n=!0):n=!1,n&&this.$emit("filtered",e,e.length),this.isFiltered=n},isFiltered:function(t,e){!1===t&&!0===e&&this.$emit("filtered",this.localItems,this.localItems.length)}},created:function(){var t=this;this.$_filterTimer=null,this.$nextTick((function(){t.isFiltered=Boolean(t.localFilter)}))},beforeDestroy:function(){clearTimeout(this.$_filterTimer),this.$_filterTimer=null},methods:{filterSanitize:function(t){return!this.localFiltering||this.localFilterFn||rt(t)||ct(t)?dt(t):""},filterFnFactory:function(t,e){if(!t||!nt(t)||!e||Hi(e,[])||Hi(e,{}))return null;return function(i){return t(i,e)}},defaultFilterFnFactory:function(t){var e=this;if(!t||!rt(t)&&!ct(t))return null;var i=t;if(rt(i)){var n=je(t).replace(Ic,"\\s+");i=new RegExp(".*".concat(n,".*"),"i")}return function(t){return i.lastIndex=0,i.test((n=t,a=e.computedFilterIgnored,r=e.computedFilterIncluded,o=e.computedFieldsObj,F(n)?Dc(_c(n,a,r,o)):""));var n,a,r,o}}}},Fc=function(t,e){return t.map((function(t,e){return[e,t]})).sort(function(t,e){return this(t[1],e[1])||t[0]-e[0]}.bind(e)).map((function(t){return t[1]}))},Ec={props:{sortBy:{type:String,default:""},sortDesc:{type:Boolean,default:!1},sortDirection:{type:String,default:"asc",validator:function(t){return B(["asc","desc","last"],t)}},sortCompare:{type:Function,default:null},sortCompareOptions:{type:Object,default:function(){return{numeric:!0}}},sortCompareLocale:{type:[String,Array]},sortNullLast:{type:Boolean,default:!1},noSortReset:{type:Boolean,default:!1},labelSortAsc:{type:String,default:"Click to sort Ascending"},labelSortDesc:{type:String,default:"Click to sort Descending"},labelSortClear:{type:String,default:"Click to clear sorting"},noLocalSorting:{type:Boolean,default:!1},noFooterSorting:{type:Boolean,default:!1},sortIconLeft:{type:Boolean,default:!1}},data:function(){return{localSortBy:this.sortBy||"",localSortDesc:this.sortDesc||!1}},computed:{localSorting:function(){return this.hasProvider?!!this.noProviderSorting:!this.noLocalSorting},isSortable:function(){return this.computedFields.some((function(t){return t.sortable}))},sortedItems:function(){var t=(this.filteredItems||this.localItems||[]).slice(),e=this.localSortBy,i=this.localSortDesc,n=this.sortCompare,a=this.localSorting,r=s({},this.sortCompareOptions,{usage:"sort"}),o=this.sortCompareLocale||void 0,l=this.sortNullLast;if(e&&a){var u=(this.computedFieldsObj[e]||{}).sortByFormatted,c=nt(u)?u:u?this.getFieldFormatter(e):void 0;return Fc(t,(function(t,a){var s=null;return nt(n)&&(s=n(t,a,e,i,c,r,o)),(it(s)||!1===s)&&(s=function(t,e,i,n,a,r,o,s){var l=pt(t,i,null),u=pt(e,i,null);return nt(a)&&(l=a(l,i,t),u=a(u,i,e)),l=it(l)?"":l,u=it(u)?"":u,st(l)&&st(u)||ot(l)&&ot(u)?lu?1:0:s&&""===l&&""!==u?1:s&&""!==l&&""===u?-1:Dc(l).localeCompare(Dc(u),o,r)}(t,a,e,0,c,r,o,l)),(s||0)*(i?-1:1)}))}return t}},watch:{isSortable:function(t){t?this.isSortable&&this.$on("head-clicked",this.handleSort):this.$off("head-clicked",this.handleSort)},sortDesc:function(t){t!==this.localSortDesc&&(this.localSortDesc=t||!1)},sortBy:function(t){t!==this.localSortBy&&(this.localSortBy=t||"")},localSortDesc:function(t,e){t!==e&&this.$emit("update:sortDesc",t)},localSortBy:function(t,e){t!==e&&this.$emit("update:sortBy",t)}},created:function(){this.isSortable&&this.$on("head-clicked",this.handleSort)},methods:{handleSort:function(t,e,i,n){var a=this;if(this.isSortable&&(!n||!this.noFooterSorting)){var r=!1,o=function(){var t=e.sortDirection||a.sortDirection;"asc"===t?a.localSortDesc=!1:"desc"===t&&(a.localSortDesc=!0)};e.sortable?(t===this.localSortBy?this.localSortDesc=!this.localSortDesc:(this.localSortBy=t,o()),r=!0):this.localSortBy&&!this.noSortReset&&(this.localSortBy="",o(),r=!0),r&&this.$emit("sort-changed",this.context)}},sortTheadThClasses:function(t,e,i){return{"b-table-sort-icon-left":e.sortable&&this.sortIconLeft&&!(i&&this.noFooterSorting)}},sortTheadThAttrs:function(t,e,i){if(!this.isSortable||i&&this.noFooterSorting)return{};var n=e.sortable;return{"aria-sort":n&&this.localSortBy===t?this.localSortDesc?"descending":"ascending":n?"none":null}},sortTheadThLabel:function(t,e,i){if(!this.isSortable||i&&this.noFooterSorting)return null;var n="";if(e.sortable)if(this.localSortBy===t)n=this.localSortDesc?this.labelSortAsc:this.labelSortDesc;else{n=this.localSortDesc?this.labelSortDesc:this.labelSortAsc;var a=this.sortDirection||e.sortDirection;"asc"===a?n=this.labelSortAsc:"desc"===a&&(n=this.labelSortDesc)}else this.noSortReset||(n=this.localSortBy?this.labelSortClear:"");return We(n)||null}}},Vc={props:{perPage:{type:[Number,String],default:0},currentPage:{type:[Number,String],default:1}},computed:{localPaging:function(){return!this.hasProvider||!!this.noProviderPaging},paginatedItems:function(){var t=this.sortedItems||this.filteredItems||this.localItems||[],e=Math.max(parseInt(this.currentPage,10)||1,1),i=Math.max(parseInt(this.perPage,10)||0,0);return this.localPaging&&i&&(t=t.slice((e-1)*i,e*i)),t}}},Nc={props:{caption:{type:String,default:null},captionHtml:{type:String}},computed:{captionId:function(){return this.isStacked?this.safeId("_caption_"):null}},methods:{renderCaption:function(){var t=this.$createElement,e=this.normalizeSlot("table-caption"),i=t();if(e||this.caption||this.captionHtml){var n={key:"caption",attrs:{id:this.captionId}};e||(n.domProps=hi(this.captionHtml,this.caption)),i=t("caption",n,[e])}return i}}},Ac={methods:{renderColgroup:function(){var t=this.$createElement,e=this.computedFields,i=t();return this.hasNormalizedSlot("table-colgroup")&&(i=t("colgroup",{key:"colgroup"},[this.normalizeSlot("table-colgroup",{columns:e.length,fields:e})])),i}}},Mc=["TD","TH","TR"],Rc=function(t){if(!t||!t.target)return!1;var e=t.target;if(e.disabled||-1!==Mc.indexOf(e.tagName))return!1;if(Zt(".dropdown-menu",e))return!0;var i="LABEL"===e.tagName?e:Zt("label",e);if(i){var n=re(i,"for"),a=n?Qt(n):Kt("input, select, textarea",i);if(a&&!a.disabled)return!0}return Xt(e,kc)},Lc=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document,e=ue();return!!(e&&""!==e.toString().trim()&&e.containsNode&&Gt(t))&&e.containsNode(t,!0)},Hc={headVariant:{type:String,default:null}},zc=t.extend({name:"BThead",mixins:[$e],inheritAttrs:!1,provide:function(){return{bvTableRowGroup:this}},inject:{bvTable:{default:function(){return{}}}},props:Hc,computed:{isThead:function(){return!0},isDark:function(){return this.bvTable.dark},isStacked:function(){return this.bvTable.isStacked},isResponsive:function(){return this.bvTable.isResponsive},isStickyHeader:function(){return!this.isStacked&&this.bvTable.stickyHeader},hasStickyHeader:function(){return!this.isStacked&&this.bvTable.stickyHeader},tableVariant:function(){return this.bvTable.tableVariant},theadClasses:function(){return[this.headVariant?"thead-".concat(this.headVariant):null]},theadAttrs:function(){return s({role:"rowgroup"},this.$attrs)}},render:function(t){return t("thead",{class:this.theadClasses,attrs:this.theadAttrs,on:this.$listeners},this.normalizeSlot("default"))}}),jc={footVariant:{type:String,default:null}},Gc=t.extend({name:"BTfoot",mixins:[$e],inheritAttrs:!1,provide:function(){return{bvTableRowGroup:this}},inject:{bvTable:{default:function(){return{}}}},props:jc,computed:{isTfoot:function(){return!0},isDark:function(){return this.bvTable.dark},isStacked:function(){return this.bvTable.isStacked},isResponsive:function(){return this.bvTable.isResponsive},isStickyHeader:function(){return!1},hasStickyHeader:function(){return!this.isStacked&&this.bvTable.stickyHeader},tableVariant:function(){return this.bvTable.tableVariant},tfootClasses:function(){return[this.footVariant?"thead-".concat(this.footVariant):null]},tfootAttrs:function(){return s({role:"rowgroup"},this.$attrs)}},render:function(t){return t("tfoot",{class:this.tfootClasses,attrs:this.tfootAttrs,on:this.$listeners},this.normalizeSlot("default"))}}),Wc={variant:{type:String,default:null}},Uc=t.extend({name:"BTr",mixins:[$e],inheritAttrs:!1,provide:function(){return{bvTableTr:this}},inject:{bvTableRowGroup:{default:function(){return{}}}},props:Wc,computed:{inTbody:function(){return this.bvTableRowGroup.isTbody},inThead:function(){return this.bvTableRowGroup.isThead},inTfoot:function(){return this.bvTableRowGroup.isTfoot},isDark:function(){return this.bvTableRowGroup.isDark},isStacked:function(){return this.bvTableRowGroup.isStacked},isResponsive:function(){return this.bvTableRowGroup.isResponsive},isStickyHeader:function(){return this.bvTableRowGroup.isStickyHeader},hasStickyHeader:function(){return!this.isStacked&&this.bvTableRowGroup.hasStickyHeader},tableVariant:function(){return this.bvTableRowGroup.tableVariant},headVariant:function(){return this.inThead?this.bvTableRowGroup.headVariant:null},footVariant:function(){return this.inTfoot?this.bvTableRowGroup.footVariant:null},isRowDark:function(){return"light"!==this.headVariant&&"light"!==this.footVariant&&("dark"===this.headVariant||"dark"===this.footVariant||this.isDark)},trClasses:function(){return[this.variant?"".concat(this.isRowDark?"bg":"table","-").concat(this.variant):null]},trAttrs:function(){return s({role:"row"},this.$attrs)}},render:function(t){return t("tr",{class:this.trClasses,attrs:this.trAttrs,on:this.$listeners},this.normalizeSlot("default"))}}),Yc=/^\d+$/,qc=function(t){return t=parseInt(t,10),Yc.test(String(t))&&t>0?t:null},Kc=function(t){return it(t)||qc(t)>0},Xc={variant:{type:String,default:null},colspan:{type:[Number,String],default:null,validator:Kc},rowspan:{type:[Number,String],default:null,validator:Kc},stackedHeading:{type:String,default:null},stickyColumn:{type:Boolean,default:!1}},Zc=t.extend({name:"BTableCell",mixins:[$e],inheritAttrs:!1,inject:{bvTableTr:{default:function(){return{}}}},props:Xc,computed:{tag:function(){return"td"},inTbody:function(){return this.bvTableTr.inTbody},inThead:function(){return this.bvTableTr.inThead},inTfoot:function(){return this.bvTableTr.inTfoot},isDark:function(){return this.bvTableTr.isDark},isStacked:function(){return this.bvTableTr.isStacked},isStackedCell:function(){return this.inTbody&&this.isStacked},isResponsive:function(){return this.bvTableTr.isResponsive},isStickyHeader:function(){return this.bvTableTr.isStickyHeader},hasStickyHeader:function(){return this.bvTableTr.hasStickyHeader},isStickyColumn:function(){return!this.isStacked&&(this.isResponsive||this.hasStickyHeader)&&this.stickyColumn},rowVariant:function(){return this.bvTableTr.variant},headVariant:function(){return this.bvTableTr.headVariant},footVariant:function(){return this.bvTableTr.footVariant},tableVariant:function(){return this.bvTableTr.tableVariant},computedColspan:function(){return qc(this.colspan)},computedRowspan:function(){return qc(this.rowspan)},cellClasses:function(){var t=this.variant;return(!t&&this.isStickyHeader&&!this.headVariant||!t&&this.isStickyColumn)&&(t=this.rowVariant||this.tableVariant||"b-table-default"),[t?"".concat(this.isDark?"bg":"table","-").concat(t):null,this.isStickyColumn?"b-table-sticky-column":null]},cellAttrs:function(){var t=this.inThead||this.inTfoot,e=this.computedColspan,i=this.computedRowspan,n="cell",a=null;return t?(n="columnheader",a=e>0?"colspan":"col"):"th"===this.tag&&(n="rowheader",a=i>0?"rowgroup":"row"),s({colspan:e,rowspan:i,role:n,scope:a},this.$attrs,{"data-label":this.isStackedCell&&!it(this.stackedHeading)?Ge(this.stackedHeading):null})}},render:function(t){var e=[this.normalizeSlot("default")];return t(this.tag,{class:this.cellClasses,attrs:this.cellAttrs,on:this.$listeners},[this.isStackedCell?t("div",[e]):e])}}),Jc=t.extend({name:"BTh",extends:Zc,computed:{tag:function(){return"th"}}}),Qc={props:{headVariant:{type:String,default:function(){return Ft("BTable","headVariant")}},headRowVariant:{type:String,default:null},theadClass:{type:[String,Array,Object]},theadTrClass:{type:[String,Array,Object]}},methods:{fieldClasses:function(t){return[t.class?t.class:"",t.thClass?t.thClass:""]},headClicked:function(t,e,i){this.stopIfBusy&&this.stopIfBusy(t)||Rc(t)||Lc(this.$el)||(t.stopPropagation(),t.preventDefault(),this.$emit("head-clicked",e.key,e,t,i))},renderThead:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.$createElement,n=this.computedFields||[];if(this.isStackedAlways||0===n.length)return i();var a=this.isSelectable?this.selectAllRows:function(){},r=this.isSelectable?this.clearSelected:function(){},o=function(n,o){var l=null;n.label.trim()||n.headerTitle||(l=wc(n.key));var u=t.hasListener("head-clicked")||t.isSortable,c={};u&&(c.click=function(i){t.headClicked(i,n,e)},c.keydown=function(i){var a=i.keyCode;a!==bi.ENTER&&a!==bi.SPACE||t.headClicked(i,n,e)});var d=t.isSortable?t.sortTheadThAttrs(n.key,n,e):{},h=t.isSortable?t.sortTheadThClasses(n.key,n,e):null,f=t.isSortable?t.sortTheadThLabel(n.key,n,e):null,p={key:n.key,class:[t.fieldClasses(n),h],props:{variant:n.variant,stickyColumn:n.stickyColumn},style:n.thStyle||{},attrs:s({tabindex:u?"0":null,abbr:n.headerAbbr||null,title:n.headerTitle||null,"aria-colindex":o+1,"aria-label":l},t.getThValues(null,n.key,n.thAttr,e?"foot":"head",{}),{},d),on:c},m=["head(".concat(n.key,")"),"head(".concat(n.key.toLowerCase(),")"),"head()"];e&&(m=["foot(".concat(n.key,")"),"foot(".concat(n.key.toLowerCase(),")"),"foot()"].concat(b(m)));var g={label:n.label,column:n.key,field:n,isFoot:e,selectAllRows:a,clearSelected:r},v=t.normalizeSlot(m,g)||(n.labelHtml?i("div",{domProps:hi(n.labelHtml)}):n.label),y=f?i("span",{staticClass:"sr-only"}," (".concat(f,")")):null;return i(Jc,p,[v,y].filter(ht))},l=n.map(o).filter(ht),u=[];if(e){var c={variant:it(this.footRowVariant)?this.headRowVariant:this.footRowVariant};u.push(i(Uc,{class:this.tfootTrClass,props:c},l))}else{var d={columns:n.length,fields:n,selectAllRows:a,clearSelected:r};u.push(this.normalizeSlot("thead-top",d)||i()),u.push(i(Uc,{class:this.theadTrClass,props:{variant:this.headRowVariant}},l))}return i(e?Gc:zc,{key:e?"bv-tfoot":"bv-thead",class:(e?this.tfootClass:this.theadClass)||null,props:e?{footVariant:this.footVariant||this.headVariant||null}:{headVariant:this.headVariant||null}},u)}}},td={props:{footClone:{type:Boolean,default:!1},footVariant:{type:String,default:function(){return Ft("BTable","footVariant")}},footRowVariant:{type:String,default:null},tfootClass:{type:[String,Array,Object],default:null},tfootTrClass:{type:[String,Array,Object],default:null}},methods:{renderTFootCustom:function(){var t=this.$createElement;return this.hasNormalizedSlot("custom-foot")?t(Gc,{key:"bv-tfoot-custom",class:this.tfootClass||null,props:{footVariant:this.footVariant||this.headVariant||null}},this.normalizeSlot("custom-foot",{items:this.computedItems.slice(),fields:this.computedFields.slice(),columns:this.computedFields.length})):t()},renderTfoot:function(){return this.footClone?this.renderThead(!0):this.renderTFootCustom()}}},ed={tbodyTransitionProps:{type:Object},tbodyTransitionHandlers:{type:Object}},id=t.extend({name:"BTbody",mixins:[$e],inheritAttrs:!1,provide:function(){return{bvTableRowGroup:this}},inject:{bvTable:{default:function(){return{}}}},props:ed,computed:{isTbody:function(){return!0},isDark:function(){return this.bvTable.dark},isStacked:function(){return this.bvTable.isStacked},isResponsive:function(){return this.bvTable.isResponsive},isStickyHeader:function(){return!1},hasStickyHeader:function(){return!this.isStacked&&this.bvTable.stickyHeader},tableVariant:function(){return this.bvTable.tableVariant},isTransitionGroup:function(){return this.tbodyTransitionProps||this.tbodyTransitionHandlers},tbodyAttrs:function(){return s({role:"rowgroup"},this.$attrs)},tbodyProps:function(){return this.tbodyTransitionProps?s({},this.tbodyTransitionProps,{tag:"tbody"}):{}}},render:function(t){var e={props:this.tbodyProps,attrs:this.tbodyAttrs};return this.isTransitionGroup?(e.on=this.tbodyTransitionHandlers||{},e.nativeOn=this.$listeners||{}):e.on=this.$listeners||{},t(this.isTransitionGroup?"transition-group":"tbody",e,this.normalizeSlot("default"))}}),nd={mixins:[{props:{tbodyTrClass:{type:[String,Array,Object,Function],default:null},tbodyTrAttr:{type:[Object,Function],default:null},detailsTdClass:{type:[String,Array,Object],default:null}},methods:{getTdValues:function(t,e,i,n){var a=this.$parent;if(i){var r=pt(t,e,"");return nt(i)?i(r,e,t):rt(i)&&nt(a[i])?a[i](r,e,t):i}return n},getThValues:function(t,e,i,n,a){var r=this.$parent;if(i){var o=pt(t,e,"");return nt(i)?i(o,e,t,n):rt(i)&&nt(r[i])?r[i](o,e,t,n):i}return a},getFormattedValue:function(t,e){var i=e.key,n=this.getFieldFormatter(i),a=pt(t,i,null);return nt(n)&&(a=n(a,i,t)),it(a)?"":a},toggleDetailsFactory:function(t,e){var i=this;return function(){t&&i.$set(e,"_showDetails",!e._showDetails)}},rowHovered:function(t){this.tbodyRowEvtStopped(t)||this.emitTbodyRowEvent("row-hovered",t)},rowUnhovered:function(t){this.tbodyRowEvtStopped(t)||this.emitTbodyRowEvent("row-unhovered",t)},renderTbodyRowCell:function(t,e,i,n){var a=this,r=this.$createElement,o=this.hasNormalizedSlot("row-details"),l=this.getFormattedValue(i,t),u=t.key,c=!this.isStacked&&(this.isResponsive||this.stickyHeader)&&t.stickyColumn,d=c?t.isRowHeader?Jc:Zc:t.isRowHeader?"th":"td",h=i._cellVariants&&i._cellVariants[u]?i._cellVariants[u]:t.variant||null,f={key:"row-".concat(n,"-cell-").concat(e,"-").concat(u),class:[t.class?t.class:"",this.getTdValues(i,u,t.tdClass,"")],props:{},attrs:s({"aria-colindex":String(e+1)},t.isRowHeader?this.getThValues(i,u,t.thAttr,"row",{}):this.getTdValues(i,u,t.tdAttr,{}))};c?f.props={stackedHeading:this.isStacked?t.label:null,stickyColumn:!0,variant:h}:(f.attrs["data-label"]=this.isStacked&&!it(t.label)?Ge(t.label):null,f.attrs.role=t.isRowHeader?"rowheader":"cell",f.attrs.scope=t.isRowHeader?"row":null,h&&f.class.push("".concat(this.dark?"bg":"table","-").concat(h)));var p={item:i,index:n,field:t,unformatted:pt(i,u,""),value:l,toggleDetails:this.toggleDetailsFactory(o,i),detailsShowing:Boolean(i._showDetails)};this.supportsSelectableRows&&(p.rowSelected=this.isRowSelected(n),p.selectRow=function(){return a.selectRow(n)},p.unselectRow=function(){return a.unselectRow(n)});var m=this.$_bodyFieldSlotNameCache[u],g=m?this.normalizeSlot(m,p):Ge(l);return this.isStacked&&(g=[r("div",[g])]),r(d,f,[g])},renderTbodyRow:function(t,e){var i=this,n=this.$createElement,a=this.computedFields,r=this.striped,o=this.hasNormalizedSlot("row-details"),l=t._showDetails&&o,u=this.$listeners["row-clicked"]||this.hasSelectableRowClick,c=[],d=l?this.safeId("_details_".concat(e,"_")):null,h=a.map((function(n,a){return i.renderTbodyRowCell(n,a,t,e)})),f=null;this.currentPage&&this.perPage&&this.perPage>0&&(f=String((this.currentPage-1)*this.perPage+e+1));var p=this.primaryKey,m=Ge(pt(t,p))||null,g=m||Ge(e),v=m?this.safeId("_row_".concat(m)):null,b=this.selectableRowClasses?this.selectableRowClasses(e):{},y=this.selectableRowAttrs?this.selectableRowAttrs(e):{},S=nt(this.tbodyTrClass)?this.tbodyTrClass(t,"row"):this.tbodyTrClass,T=nt(this.tbodyTrAttr)?this.tbodyTrAttr(t,"row"):this.tbodyTrAttr;if(c.push(n(Uc,{key:"__b-table-row-".concat(g,"__"),ref:"itemRows",refInFor:!0,class:[S,b,l?"b-table-has-details":""],props:{variant:t._rowVariant||null},attrs:s({id:v},T,{tabindex:u?"0":null,"data-pk":m||null,"aria-details":d,"aria-owns":d,"aria-rowindex":f},y),on:{mouseenter:this.rowHovered,mouseleave:this.rowUnhovered}},h)),l){var w={item:t,index:e,fields:a,toggleDetails:this.toggleDetailsFactory(o,t)};this.supportsSelectableRows&&(w.rowSelected=this.isRowSelected(e),w.selectRow=function(){return i.selectRow(e)},w.unselectRow=function(){return i.unselectRow(e)});var B=n(Zc,{props:{colspan:a.length},class:this.detailsTdClass},[this.normalizeSlot("row-details",w)]);r&&c.push(n("tr",{key:"__b-table-details-stripe__".concat(g),staticClass:"d-none",attrs:{"aria-hidden":"true",role:"presentation"}}));var k=nt(this.tbodyTrClass)?this.tbodyTrClass(t,"row-details"):this.tbodyTrClass,C=nt(this.tbodyTrAttr)?this.tbodyTrAttr(t,"row-details"):this.tbodyTrAttr;c.push(n(Uc,{key:"__b-table-details__".concat(g),staticClass:"b-table-details",class:[k],props:{variant:t._rowVariant||null},attrs:s({},C,{id:d,tabindex:"-1"})},[B]))}else o&&(c.push(n()),r&&c.push(n()));return c}}}],props:s({},ed,{tbodyClass:{type:[String,Array,Object]}}),methods:{getTbodyTrs:function(){var t=this.$refs||{},e=t.tbody?t.tbody.$el||t.tbody:null,i=(t.itemRows||[]).map((function(t){return t.$el||t}));return e&&e.children&&e.children.length>0&&i&&i.length>0?T(e.children).filter((function(t){return B(i,t)})):[]},getTbodyTrIndex:function(t){if(!Gt(t))return-1;var e="TR"===t.tagName?t:Zt("tr",t,!0);return e?this.getTbodyTrs().indexOf(e):-1},emitTbodyRowEvent:function(t,e){if(t&&this.hasListener(t)&&e&&e.target){var i=this.getTbodyTrIndex(e.target);if(i>-1){var n=this.computedItems[i];this.$emit(t,n,i,e)}}},tbodyRowEvtStopped:function(t){return this.stopIfBusy&&this.stopIfBusy(t)},onTbodyRowKeydown:function(t){var e=t.target;if(!this.tbodyRowEvtStopped(t)&&"TR"===e.tagName&&e===document.activeElement&&0===e.tabIndex){var i=t.keyCode;if(B([bi.ENTER,bi.SPACE],i))t.stopPropagation(),t.preventDefault(),this.onTBodyRowClicked(t);else if(B([bi.UP,bi.DOWN,bi.HOME,bi.END],i)){var n=this.getTbodyTrIndex(e);if(n>-1){t.stopPropagation(),t.preventDefault();var a=this.getTbodyTrs(),r=t.shiftKey;i===bi.HOME||r&&i===bi.UP?a[0].focus():i===bi.END||r&&i===bi.DOWN?a[a.length-1].focus():i===bi.UP&&n>0?a[n-1].focus():i===bi.DOWN&&n0&&this.selectedRows.some(ht)},selectableIsMultiSelect:function(){return this.isSelectable&&B(["range","multi"],this.selectMode)},selectableTableClasses:function(){var t;return r(t={"b-table-selectable":this.isSelectable},"b-table-select-".concat(this.selectMode),this.isSelectable),r(t,"b-table-selecting",this.selectableHasSelection),r(t,"b-table-selectable-no-click",this.isSelectable&&!this.hasSelectableRowClick),t},selectableTableAttrs:function(){return{"aria-multiselectable":this.isSelectable?this.selectableIsMultiSelect?"true":"false":null}}},watch:{computedItems:function(t,e){var i=!1;if(this.isSelectable&&this.selectedRows.length>0){i=w(t)&&w(e)&&t.length===e.length;for(var n=0;i&&n=0&&t0&&(this.selectedLastClicked=-1,this.selectedRows=this.selectableIsMultiSelect?Pu(t).map((function(){return!0})):[!0])},isRowSelected:function(t){return!(!ot(t)||!this.selectedRows[t])},clearSelected:function(){this.selectedLastClicked=-1,this.selectedRows=[]},selectableRowClasses:function(t){if(this.isSelectable&&this.isRowSelected(t)){var e=this.selectedVariant;return r({"b-table-row-selected":!0},"".concat(this.dark?"bg":"table","-").concat(e),e)}return{}},selectableRowAttrs:function(t){return{"aria-selected":this.isSelectable?this.isRowSelected(t)?"true":"false":null}},setSelectionHandlers:function(t){var e=t&&!this.noSelectOnClick?"$on":"$off";this[e]("row-clicked",this.selectionHandler),this[e]("filtered",this.clearSelected),this[e]("context-changed",this.clearSelected)},selectionHandler:function(t,e,i){if(this.isSelectable&&!this.noSelectOnClick){var n=this.selectMode,a=this.selectedRows.slice(),r=!a[e];if("single"===n)a=[];else if("range"===n)if(this.selectedLastRow>-1&&i.shiftKey){for(var o=Math.min(this.selectedLastRow,e);o<=Math.max(this.selectedLastRow,e);o++)a[o]=!0;r=!0}else i.ctrlKey||i.metaKey||(a=[],r=!0),this.selectedLastRow=r?e:-1;a[e]=r,this.selectedRows=a}else this.clearSelected()}}},ud={mixins:[xa],props:{items:{type:[Array,Function],default:function(){return[]}},noProviderPaging:{type:Boolean,default:!1},noProviderSorting:{type:Boolean,default:!1},noProviderFiltering:{type:Boolean,default:!1},apiUrl:{type:String,default:""}},computed:{hasProvider:function(){return nt(this.items)},providerTriggerContext:function(){var t={apiUrl:this.apiUrl,filter:null,sortBy:null,sortDesc:null,perPage:null,currentPage:null};return this.noProviderFiltering||(t.filter=this.localFilter),this.noProviderSorting||(t.sortBy=this.localSortBy,t.sortDesc=this.localSortDesc),this.noProviderPaging||(t.perPage=this.perPage,t.currentPage=this.currentPage),V(t)}},watch:{items:function(t){(this.hasProvider||nt(t))&&this.$nextTick(this._providerUpdate)},providerTriggerContext:function(t,e){Hi(t,e)||this.$nextTick(this._providerUpdate)}},mounted:function(){var t=this;!this.hasProvider||this.localItems&&0!==this.localItems.length||this._providerUpdate(),this.listenOnRoot("bv::refresh::table",(function(e){e!==t.id&&e!==t||t.refresh()}))},methods:{refresh:function(){this.$off("refreshed",this.refresh),this.computedBusy?this.localBusy&&this.hasProvider&&this.$on("refreshed",this.refresh):(this.clearSelected(),this.hasProvider?this.$nextTick(this._providerUpdate):this.localItems=w(this.items)?this.items.slice():[])},_providerSetLocal:function(t){this.localItems=w(t)?t.slice():[],this.localBusy=!1,this.$emit("refreshed"),this.id&&this.emitOnRoot("bv::table::refreshed",this.id)},_providerUpdate:function(){var t=this;this.hasProvider&&(this.computedBusy?this.$nextTick(this.refresh):(this.localBusy=!0,this.$nextTick((function(){try{var e=t.items(t.context,t._providerSetLocal);!it(i=e)&&nt(i.then)&&nt(i.catch)?e.then((function(e){t._providerSetLocal(e)})):w(e)?t._providerSetLocal(e):2!==t.items.length&&(mt("Provider function didn't request callback and did not return a promise or data.","BTable"),t.localBusy=!1)}catch(e){mt("Provider function error [".concat(e.name,"] ").concat(e.message,"."),"BTable"),t.localBusy=!1,t.$off("refreshed",t.refresh)}var i}))))}}},cd={inheritAttrs:!1,provide:function(){return{bvTable:this}},props:{striped:{type:Boolean,default:!1},bordered:{type:Boolean,default:!1},borderless:{type:Boolean,default:!1},outlined:{type:Boolean,default:!1},dark:{type:Boolean,default:!1},hover:{type:Boolean,default:!1},small:{type:Boolean,default:!1},fixed:{type:Boolean,default:!1},responsive:{type:[Boolean,String],default:!1},stickyHeader:{type:[Boolean,String],default:!1},noBorderCollapse:{type:Boolean,default:!1},captionTop:{type:Boolean,default:!1},tableVariant:{type:String,default:null},tableClass:{type:[String,Array,Object],default:null}},computed:{isResponsive:function(){var t=""===this.responsive||this.responsive;return!this.isStacked&&t},isStickyHeader:function(){var t=""===this.stickyHeader||this.stickyHeader;return!this.isStacked&&t},wrapperClasses:function(){return[this.isStickyHeader?"b-table-sticky-header":"",!0===this.isResponsive?"table-responsive":this.isResponsive?"table-responsive-".concat(this.responsive):""].filter(ht)},wrapperStyles:function(){return this.isStickyHeader&&!at(this.isStickyHeader)?{maxHeight:this.isStickyHeader}:{}},tableClasses:function(){var t=this.isTableSimple?this.hover:this.hover&&this.computedItems.length>0&&!this.computedBusy;return[this.tableClass,{"table-striped":this.striped,"table-hover":t,"table-dark":this.dark,"table-bordered":this.bordered,"table-borderless":this.borderless,"table-sm":this.small,border:this.outlined,"b-table-fixed":this.fixed,"b-table-caption-top":this.captionTop,"b-table-no-border-collapse":this.noBorderCollapse},this.tableVariant?"".concat(this.dark?"bg":"table","-").concat(this.tableVariant):"",this.stackedTableClasses,this.selectableTableClasses]},tableAttrs:function(){var t=[(this.$attrs||{})["aria-describedby"],this.captionId].filter(ht).join(" ")||null,e=this.computedItems,i=this.filteredItems,n=this.computedFields,a=this.selectableTableAttrs||{},r=this.isTableSimple?{}:{"aria-busy":this.computedBusy?"true":"false","aria-colcount":Ge(n.length),"aria-describedby":t};return s({"aria-rowcount":e&&i&&i.length>e.length?Ge(i.length):null},this.$attrs,{id:this.safeId(),role:"table"},r,{},a)}},render:function(t){var e=[];this.isTableSimple?e.push(this.normalizeSlot("default")):(e.push(this.renderCaption?this.renderCaption():null),e.push(this.renderColgroup?this.renderColgroup():null),e.push(this.renderThead?this.renderThead():null),e.push(this.renderTbody?this.renderTbody():null),e.push(this.renderTfoot?this.renderTfoot():null));var i=t("table",{key:"b-table",staticClass:"table b-table",class:this.tableClasses,attrs:this.tableAttrs},e.filter(ht));return this.wrapperClasses.length>0?t("div",{key:"wrap",class:this.wrapperClasses,style:this.wrapperStyles},[i]):i}},dd=t.extend({name:"BTable",mixins:[bc,tn,$e,xc,cd,$c,Qc,td,nd,$c,Oc,Ec,Vc,Nc,Ac,ld,ad,rd,od,sd,ud]}),hd=t.extend({name:"BTableLite",mixins:[bc,tn,$e,xc,cd,$c,Qc,td,nd,Nc,Ac]}),fd=t.extend({name:"BTableSimple",mixins:[tn,$e,cd,$c],computed:{isTableSimple:function(){return!0}}}),pd=kt({components:{BTable:dd},plugins:{TableLitePlugin:kt({components:{BTableLite:hd}}),TableSimplePlugin:kt({components:{BTableSimple:fd,BTbody:id,BThead:zc,BTfoot:Gc,BTr:Uc,BTd:Zc,BTh:Jc}})}}),md=N(du,["tabs","isNavBar","cardHeader"]),gd=function(t){return!t.disabled},vd=t.extend({name:"BTabButtonHelper",inject:{bvTabs:{default:function(){return{}}}},props:{tab:{default:null},tabs:{type:Array,default:function(){return[]}},id:{type:String,default:null},controls:{type:String,default:null},tabIndex:{type:Number,default:null},posInSet:{type:Number,default:null},setSize:{type:Number,default:null},noKeyNav:{type:Boolean,default:!1}},methods:{focus:function(){this.$refs&&this.$refs.link&&this.$refs.link.focus&&this.$refs.link.focus()},handleEvt:function(t){var e=function(){t.preventDefault(),t.stopPropagation()};if(!this.tab.disabled){var i=t.type,n=t.keyCode,a=t.shiftKey;"click"===i?(e(),this.$emit("click",t)):"keydown"===i&&n===bi.SPACE?(e(),this.$emit("click",t)):"keydown"!==i||this.noKeyNav||(n===bi.UP||n===bi.LEFT||n===bi.HOME?(e(),a||n===bi.HOME?this.$emit("first",t):this.$emit("prev",t)):n!==bi.DOWN&&n!==bi.RIGHT&&n!==bi.END||(e(),a||n===bi.END?this.$emit("last",t):this.$emit("next",t)))}}},render:function(t){var e=t(ri,{ref:"link",staticClass:"nav-link",class:[{active:this.tab.localActive&&!this.tab.disabled,disabled:this.tab.disabled},this.tab.titleLinkClass,this.tab.localActive?this.bvTabs.activeNavItemClass:null],props:{disabled:this.tab.disabled},attrs:{role:"tab",id:this.id,tabindex:this.tabIndex,"aria-selected":this.tab.localActive&&!this.tab.disabled?"true":"false","aria-setsize":this.setSize,"aria-posinset":this.posInSet,"aria-controls":this.controls},on:{click:this.handleEvt,keydown:this.handleEvt}},[this.tab.normalizeSlot("title")||this.tab.title]);return t("li",{staticClass:"nav-item",class:[this.tab.titleItemClass],attrs:{role:"presentation"}},[e])}}),bd=kt({components:{BTabs:t.extend({name:"BTabs",mixins:[tn,$e],provide:function(){return{bvTabs:this}},model:{prop:"value",event:"input"},props:s({},md,{tag:{type:String,default:"div"},card:{type:Boolean,default:!1},end:{type:Boolean,default:!1},noFade:{type:Boolean,default:!1},noNavStyle:{type:Boolean,default:!1},noKeyNav:{type:Boolean,default:!1},lazy:{type:Boolean,default:!1},contentClass:{type:[String,Array,Object],default:null},navClass:{type:[String,Array,Object],default:null},navWrapperClass:{type:[String,Array,Object],default:null},activeNavItemClass:{type:[String,Array,Object],default:null},activeTabClass:{type:[String,Array,Object],default:null},value:{type:Number,default:null}}),data:function(){var t=parseInt(this.value,10);return{currentTab:t=isNaN(t)?-1:t,tabs:[],registeredTabs:[],isMounted:!1}},computed:{fade:function(){return!this.noFade},localNavClass:function(){var t=[];return this.card&&this.vertical&&t.push("card-header","h-100","border-bottom-0","rounded-0"),[].concat(t,[this.navClass])}},watch:{currentTab:function(t){var e=-1;this.tabs.forEach((function(i,n){t!==n||i.disabled?i.localActive=!1:(i.localActive=!0,e=n)})),this.$emit("input",e)},value:function(t,e){if(t!==e){t=parseInt(t,10),t=isNaN(t)?-1:t,e=parseInt(e,10)||0;var i=this.tabs;i[t]&&!i[t].disabled?this.activateTab(i[t]):t0){var i=t.map((function(t){return"#".concat(t.safeId())})).join(", ");e=qt(i,this.$el).map((function(t){return t.id})).filter(ht)}return Fc(t,(function(t,i){return e.indexOf(t.safeId())-e.indexOf(i.safeId())}))},updateTabs:function(){var t=this.getTabs(),e=t.indexOf(t.slice().reverse().find((function(t){return t.localActive&&!t.disabled})));if(e<0){var i=this.currentTab;i>=t.length?e=t.indexOf(t.slice().reverse().find(gd)):t[i]&&!t[i].disabled&&(e=i)}e<0&&(e=t.indexOf(t.find(gd))),t.forEach((function(t){t.localActive=!1})),t[e]&&(t[e].localActive=!0),this.tabs=t,this.currentTab=e},getButtonForTab:function(t){return(this.$refs.buttons||[]).find((function(e){return e.tab===t}))},updateButton:function(t){var e=this.getButtonForTab(t);e&&e.$forceUpdate&&e.$forceUpdate()},activateTab:function(t){var e=!1;if(t){var i=this.tabs.indexOf(t);if(!t.disabled&&i>-1&&i!==this.currentTab){var n=new BvEvent("activate-tab",{cancelable:!0,vueTarget:this,componentId:this.safeId()});this.$emit(n.type,i,this.currentTab,n),n.defaultPrevented||(e=!0,this.currentTab=i)}}return e||this.currentTab===this.value||this.$emit("input",this.currentTab),e},deactivateTab:function(t){return!!t&&this.activateTab(this.tabs.filter((function(e){return e!==t})).find(gd))},focusButton:function(t){var e=this;this.$nextTick((function(){var i=e.getButtonForTab(t);i&&i.focus&&i.focus()}))},emitTabClick:function(t,e){lt(e)&&t&&t.$emit&&!t.disabled&&t.$emit("click",e)},clickTab:function(t,e){this.activateTab(t),this.emitTabClick(t,e)},firstTab:function(t){var e=this.tabs.find(gd);this.activateTab(e)&&t&&(this.focusButton(e),this.emitTabClick(e,t))},previousTab:function(t){var e=Math.max(this.currentTab,0),i=this.tabs.slice(0,e).reverse().find(gd);this.activateTab(i)&&t&&(this.focusButton(i),this.emitTabClick(i,t))},nextTab:function(t){var e=Math.max(this.currentTab,-1),i=this.tabs.slice(e+1).find(gd);this.activateTab(i)&&t&&(this.focusButton(i),this.emitTabClick(i,t))},lastTab:function(t){var e=this.tabs.slice().reverse().find(gd);this.activateTab(e)&&t&&(this.focusButton(e),this.emitTabClick(e,t))}},render:function(t){var e=this,i=this.tabs,n=i.find((function(t){return t.localActive&&!t.disabled})),a=i.find((function(t){return!t.disabled})),r=i.map((function(r,o){var s=null;return e.noKeyNav||(s=-1,(n===r||!n&&a===r)&&(s=null)),t(vd,{key:r._uid||o,ref:"buttons",refInFor:!0,props:{tab:r,tabs:i,id:r.controlledBy||(r.safeId?r.safeId("_BV_tab_button_"):null),controls:r.safeId?r.safeId():null,tabIndex:s,setSize:i.length,posInSet:o+1,noKeyNav:e.noKeyNav},on:{click:function(t){e.clickTab(r,t)},first:e.firstTab,prev:e.previousTab,next:e.nextTab,last:e.lastTab}})})),o=t(hu,{ref:"nav",class:this.localNavClass,attrs:{role:"tablist",id:this.safeId("_BV_tab_controls_")},props:{fill:this.fill,justified:this.justified,align:this.align,tabs:!this.noNavStyle&&!this.pills,pills:!this.noNavStyle&&this.pills,vertical:this.vertical,small:this.small,cardHeader:this.card&&!this.vertical}},[this.normalizeSlot("tabs-start")||t(),r,this.normalizeSlot("tabs-end")||t()]);o=t("div",{key:"bv-tabs-nav",class:[{"card-header":this.card&&!this.vertical&&!this.end,"card-footer":this.card&&!this.vertical&&this.end,"col-auto":this.vertical},this.navWrapperClass]},[o]);var s=t();i&&0!==i.length||(s=t("div",{key:"bv-empty-tab",class:["tab-pane","active",{"card-body":this.card}]},this.normalizeSlot("empty")));var l=t("div",{ref:"tabsContainer",key:"bv-tabs-container",staticClass:"tab-content",class:[{col:this.vertical},this.contentClass],attrs:{id:this.safeId("_BV_tab_container_")}},k(this.normalizeSlot("default"),s));return t(this.tag,{staticClass:"tabs",class:{row:this.vertical,"no-gutters":this.vertical&&this.card},attrs:{id:this.safeId()}},[this.end?l:t(),[o],this.end?t():l])}}),BTab:t.extend({name:"BTab",mixins:[tn,$e],inject:{bvTabs:{default:function(){return{}}}},props:{active:{type:Boolean,default:!1},tag:{type:String,default:"div"},buttonId:{type:String,default:""},title:{type:String,default:""},titleItemClass:{type:[String,Array,Object],default:null},titleLinkClass:{type:[String,Array,Object],default:null},disabled:{type:Boolean,default:!1},noBody:{type:Boolean,default:!1},lazy:{type:Boolean,default:!1}},data:function(){return{localActive:this.active&&!this.disabled,show:!1}},computed:{tabClasses:function(){return[{active:this.localActive,disabled:this.disabled,"card-body":this.bvTabs.card&&!this.noBody},this.localActive?this.bvTabs.activeTabClass:null]},controlledBy:function(){return this.buttonId||this.safeId("__BV_tab_button__")},computedNoFade:function(){return!this.bvTabs.fade},computedLazy:function(){return this.bvTabs.lazy||this.lazy},_isTab:function(){return!0}},watch:{localActive:function(t){this.$emit("update:active",t)},active:function(t,e){t!==e&&(t?this.activate():this.deactivate()||this.$emit("update:active",this.localActive))},disabled:function(t,e){t!==e&&t&&this.localActive&&this.bvTabs.firstTab&&(this.localActive=!1,this.bvTabs.firstTab())}},mounted:function(){this.registerTab(),this.show=this.localActive},updated:function(){this.hasNormalizedSlot("title")&&this.bvTabs.updateButton&&this.bvTabs.updateButton(this)},destroyed:function(){this.unregisterTab()},methods:{registerTab:function(){this.bvTabs.registerTab&&this.bvTabs.registerTab(this)},unregisterTab:function(){this.bvTabs.unregisterTab&&this.bvTabs.unregisterTab(this)},activate:function(){return!(!this.bvTabs.activateTab||this.disabled)&&this.bvTabs.activateTab(this)},deactivate:function(){return!(!this.bvTabs.deactivateTab||!this.localActive)&&this.bvTabs.deactivateTab(this)}},render:function(t){var e=t(this.tag,{ref:"panel",staticClass:"tab-pane",class:this.tabClasses,directives:[{name:"show",rawName:"v-show",value:this.localActive,expression:"localActive"}],attrs:{role:"tabpanel",id:this.safeId(),"aria-hidden":this.localActive?"false":"true","aria-labelledby":this.controlledBy||null}},[this.localActive||!this.computedLazy?this.normalizeSlot("default"):t()]);return t(ke,{props:{mode:"out-in",noFade:this.computedNoFade}},[e])}})}});function yd(t){return(yd="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Sd(t){return function(t){if(Array.isArray(t)){for(var e=0,i=new Array(t.length);e1&&void 0!==arguments[1]&&arguments[1],i=t.to,n=t.from;if(i&&(n||!1!==e)&&this.transports[i])if(e)this.transports[i]=[];else{var a=this.$_getTransportIndex(t);if(a>=0){var r=this.transports[i].slice(0);r.splice(a,1),this.transports[i]=r}}},registerTarget:function(t,e,i){Td&&(this.trackInstances&&!i&&this.targets[t]&&console.warn("[portal-vue]: Target ".concat(t," already exists")),this.$set(this.targets,t,Object.freeze([e])))},unregisterTarget:function(t){this.$delete(this.targets,t)},registerSource:function(t,e,i){Td&&(this.trackInstances&&!i&&this.sources[t]&&console.warn("[portal-vue]: source ".concat(t," already exists")),this.$set(this.sources,t,Object.freeze([e])))},unregisterSource:function(t){this.$delete(this.sources,t)},hasTarget:function(t){return!(!this.targets[t]||!this.targets[t][0])},hasSource:function(t){return!(!this.sources[t]||!this.sources[t][0])},hasContentFor:function(t){return!!this.transports[t]&&!!this.transports[t].length},$_getTransportIndex:function(t){var e=t.to,i=t.from;for(var n in this.transports[e])if(this.transports[e][n].from===i)return+n;return-1}}}))(kd),_d=1,Dd=t.extend({name:"portal",props:{disabled:{type:Boolean},name:{type:String,default:function(){return String(_d++)}},order:{type:Number,default:0},slim:{type:Boolean},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"DIV"},to:{type:String,default:function(){return String(Math.round(1e7*Math.random()))}}},created:function(){var t=this;this.$nextTick((function(){$d.registerSource(t.name,t)}))},mounted:function(){this.disabled||this.sendUpdate()},updated:function(){this.disabled?this.clear():this.sendUpdate()},beforeDestroy:function(){$d.unregisterSource(this.name),this.clear()},watch:{to:function(t,e){e&&e!==t&&this.clear(e),this.sendUpdate()}},methods:{clear:function(t){var e={from:this.name,to:t||this.to};$d.close(e)},normalizeSlots:function(){return this.$scopedSlots.default?[this.$scopedSlots.default]:this.$slots.default},normalizeOwnChildren:function(t){return"function"==typeof t?t(this.slotProps):t},sendUpdate:function(){var t=this.normalizeSlots();if(t){var e={from:this.name,to:this.to,passengers:Sd(t),order:this.order};$d.open(e)}else this.clear()}},render:function(t){var e=this.$slots.default||this.$scopedSlots.default||[],i=this.tag;return e&&this.disabled?e.length<=1&&this.slim?this.normalizeOwnChildren(e)[0]:t(i,[this.normalizeOwnChildren(e)]):this.slim?t():t(i,{class:{"v-portal":!0},style:{display:"none"},key:"v-portal-placeholder"})}}),Pd=t.extend({name:"portalTarget",props:{multiple:{type:Boolean,default:!1},name:{type:String,required:!0},slim:{type:Boolean,default:!1},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"div"},transition:{type:[String,Object,Function]}},data:function(){return{transports:$d.transports,firstRender:!0}},created:function(){var t=this;this.$nextTick((function(){$d.registerTarget(t.name,t)}))},watch:{ownTransports:function(){this.$emit("change",this.children().length>0)},name:function(t,e){$d.unregisterTarget(e),$d.registerTarget(t,this)}},mounted:function(){var t=this;this.transition&&this.$nextTick((function(){t.firstRender=!1}))},beforeDestroy:function(){$d.unregisterTarget(this.name)},computed:{ownTransports:function(){var t=this.transports[this.name]||[];return this.multiple?t:0===t.length?[]:[t[t.length-1]]},passengers:function(){return function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.reduce((function(t,i){var n=i.passengers[0],a="function"==typeof n?n(e):i.passengers;return t.concat(a)}),[])}(this.ownTransports,this.slotProps)}},methods:{children:function(){return 0!==this.passengers.length?this.passengers:this.$scopedSlots.default?this.$scopedSlots.default(this.slotProps):this.$slots.default||[]},noWrapper:function(){var t=this.slim&&!this.transition;return t&&this.children().length>1&&console.warn("[portal-vue]: PortalTarget with `slim` option received more than one child element."),t}},render:function(t){var e=this.noWrapper(),i=this.children(),n=this.transition||this.tag;return e?i[0]:this.slim&&!n?t():t(n,{props:{tag:this.transition&&this.tag?this.tag:void 0},class:{"vue-portal-target":!0}},i)}}),Id=0,Od=["disabled","name","order","slim","slotProps","tag","to"],Fd=["multiple","transition"],Ed=(t.extend({name:"MountingPortal",inheritAttrs:!1,props:{append:{type:[Boolean,String]},bail:{type:Boolean},mountTo:{type:String,required:!0},disabled:{type:Boolean},name:{type:String,default:function(){return"mounted_"+String(Id++)}},order:{type:Number,default:0},slim:{type:Boolean},slotProps:{type:Object,default:function(){return{}}},tag:{type:String,default:"DIV"},to:{type:String,default:function(){return String(Math.round(1e7*Math.random()))}},multiple:{type:Boolean,default:!1},targetSlim:{type:Boolean},targetSlotProps:{type:Object,default:function(){return{}}},targetTag:{type:String,default:"div"},transition:{type:[String,Object,Function]}},created:function(){if("undefined"!=typeof document){var t=document.querySelector(this.mountTo);if(t){var e=this.$props;if($d.targets[e.name])e.bail?console.warn("[portal-vue]: Target ".concat(e.name," is already mounted.\n Aborting because 'bail: true' is set")):this.portalTarget=$d.targets[e.name];else{var i=e.append;if(i){var n="string"==typeof i?i:"DIV",a=document.createElement(n);t.appendChild(a),t=a}var r=wd(this.$props,Fd);r.slim=this.targetSlim,r.tag=this.targetTag,r.slotProps=this.targetSlotProps,r.name=this.to,this.portalTarget=new Pd({el:t,parent:this.$parent||this,propsData:r})}}else console.error("[portal-vue]: Mount Point '".concat(this.mountTo,"' not found in document"))}},beforeDestroy:function(){var t=this.portalTarget;if(this.append){var e=t.$el;e.parentNode.removeChild(e)}t.$destroy()},render:function(t){if(!this.portalTarget)return console.warn("[portal-vue] Target wasn't mounted"),t();if(!this.$scopedSlots.manual){var e=wd(this.$props,Od);return t(Dd,{props:e,attrs:this.$attrs,on:this.$listeners,scopedSlots:this.$scopedSlots},this.$slots.default)}var i=this.$scopedSlots.manual({to:this.to});return Array.isArray(i)&&(i=i[0]),i||t()}}),{name:{type:String,required:!0},ariaLive:{type:String,default:function(){return Ft("BToaster","ariaLive")}},ariaAtomic:{type:String,default:function(){return Ft("BToaster","ariaAtomic")}},role:{type:String,default:function(){return Ft("BToaster","role")}}}),Vd=t.extend({data:function(){return{name:"b-toaster"}},methods:{onAfterEnter:function(t){var e=this;zt((function(){ee(t,"".concat(e.name,"-enter-to"))}))}},render:function(t){return t("transition-group",{props:{tag:"div",name:this.name},on:{afterEnter:this.onAfterEnter}},this.$slots.default)}}),Nd=t.extend({name:"BToaster",props:Ed,data:function(){return{doRender:!1,dead:!1,staticName:this.name}},beforeMount:function(){var t=this;this.staticName=this.name,$d.hasTarget(this.staticName)?(mt('A "" with name "'.concat(this.name,'" already exists in the document.'),"BToaster"),this.dead=!0):(this.doRender=!0,this.$once("hook:beforeDestroy",(function(){t.$root.$emit("bv::toaster::destroyed",t.staticName)})))},destroyed:function(){this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)},render:function(t){var e=t("div",{class:["d-none",{"b-dead-toaster":this.dead}]});if(this.doRender){var i=t(Pd,{staticClass:"b-toaster-slot",props:{name:this.staticName,multiple:!0,tag:"div",slim:!1,transition:Vd}});e=t("div",{staticClass:"b-toaster",class:[this.staticName],attrs:{id:this.staticName,role:this.role||null,"aria-live":this.ariaLive,"aria-atomic":this.ariaAtomic}},[i])}return e}}),Ad={id:{type:String,default:null},title:{type:String,default:null},toaster:{type:String,default:function(){return Ft("BToast","toaster")}},visible:{type:Boolean,default:!1},variant:{type:String,default:function(){return Ft("BToast","variant")}},isStatus:{type:Boolean,default:!1},appendToast:{type:Boolean,default:!1},noAutoHide:{type:Boolean,default:!1},autoHideDelay:{type:[Number,String],default:function(){return Ft("BToast","autoHideDelay")}},noCloseButton:{type:Boolean,default:!1},noFade:{type:Boolean,default:!1},noHoverPause:{type:Boolean,default:!1},solid:{type:Boolean,default:!1},toastClass:{type:[String,Object,Array],default:function(){return Ft("BToast","toastClass")}},headerClass:{type:[String,Object,Array],default:function(){return Ft("BToast","headerClass")}},bodyClass:{type:[String,Object,Array],default:function(){return Ft("BToast","bodyClass")}},href:{type:String,default:null},to:{type:[String,Object],default:null},static:{type:Boolean,default:!1}},Md=t.extend({name:"BToast",mixins:[tn,xa,$e,zl],inheritAttrs:!1,model:{prop:"visible",event:"change"},props:Ad,data:function(){return{isMounted:!1,doRender:!1,localShow:!1,isTransitioning:!1,isHiding:!1,order:0,timer:null,dismissStarted:0,resumeDismiss:0}},computed:{bToastClasses:function(){return r({"b-toast-solid":this.solid,"b-toast-append":this.appendToast,"b-toast-prepend":!this.appendToast},"b-toast-".concat(this.variant),this.variant)},slotScope:function(){return{hide:this.hide}},computedDuration:function(){return Math.max(he(this.autoHideDelay)||0,1e3)},computedToaster:function(){return String(this.toaster)},transitionHandlers:function(){return{beforeEnter:this.onBeforeEnter,afterEnter:this.onAfterEnter,beforeLeave:this.onBeforeLeave,afterLeave:this.onAfterLeave}}},watch:{visible:function(t){t?this.show():this.hide()},localShow:function(t){t!==this.visible&&this.$emit("change",t)},toaster:function(){this.$nextTick(this.ensureToaster)},static:function(t){t&&this.localShow&&this.ensureToaster()}},mounted:function(){var t=this;this.isMounted=!0,this.$nextTick((function(){t.visible&&zt((function(){t.show()}))})),this.listenOnRoot("bv::show::toast",(function(e){e===t.safeId()&&t.show()})),this.listenOnRoot("bv::hide::toast",(function(e){e&&e!==t.safeId()||t.hide()})),this.listenOnRoot("bv::toaster::destroyed",(function(e){e===t.computedToaster&&t.hide()}))},beforeDestroy:function(){this.clearDismissTimer()},methods:{show:function(){var t=this;if(!this.localShow){this.ensureToaster();var e=this.buildEvent("show");this.emitEvent(e),this.dismissStarted=this.resumeDismiss=0,this.order=Date.now()*(this.appendToast?1:-1),this.isHiding=!1,this.doRender=!0,this.$nextTick((function(){zt((function(){t.localShow=!0}))}))}},hide:function(){var t=this;if(this.localShow){var e=this.buildEvent("hide");this.emitEvent(e),this.setHoverHandler(!1),this.dismissStarted=this.resumeDismiss=0,this.clearDismissTimer(),this.isHiding=!0,zt((function(){t.localShow=!1}))}},buildEvent:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new BvEvent(t,s({cancelable:!1,target:this.$el||null,relatedTarget:null},e,{vueTarget:this,componentId:this.safeId()}))},emitEvent:function(t){var e=t.type;this.$root.$emit("bv::toast:".concat(e),t),this.$emit(e,t)},ensureToaster:function(){if(!this.static&&!$d.hasTarget(this.computedToaster)){var t=document.createElement("div");document.body.appendChild(t),new Nd({parent:this.$root,propsData:{name:this.computedToaster}}).$mount(t)}},startDismissTimer:function(){this.clearDismissTimer(),this.noAutoHide||(this.timer=setTimeout(this.hide,this.resumeDismiss||this.computedDuration),this.dismissStarted=Date.now(),this.resumeDismiss=0)},clearDismissTimer:function(){clearTimeout(this.timer),this.timer=null},setHoverHandler:function(t){var e=this.$refs["b-toast"];ma(t,e,"mouseenter",this.onPause,da),ma(t,e,"mouseleave",this.onUnPause,da)},onPause:function(){if(!this.noAutoHide&&!this.noHoverPause&&this.timer&&!this.resumeDismiss){var t=Date.now()-this.dismissStarted;t>0&&(this.clearDismissTimer(),this.resumeDismiss=Math.max(this.computedDuration-t,1e3))}},onUnPause:function(){this.noAutoHide||this.noHoverPause||!this.resumeDismiss?this.resumeDismiss=this.dismissStarted=0:this.startDismissTimer()},onLinkClick:function(){var t=this;this.$nextTick((function(){zt((function(){t.hide()}))}))},onBeforeEnter:function(){this.isTransitioning=!0},onAfterEnter:function(){this.isTransitioning=!1;var t=this.buildEvent("shown");this.emitEvent(t),this.startDismissTimer(),this.setHoverHandler(!0)},onBeforeLeave:function(){this.isTransitioning=!0},onAfterLeave:function(){this.isTransitioning=!1,this.order=0,this.resumeDismiss=this.dismissStarted=0;var t=this.buildEvent("hidden");this.emitEvent(t),this.doRender=!1},makeToast:function(t){var e=this,i=[],n=this.normalizeSlot("toast-title",this.slotScope);n?i.push(n):this.title&&i.push(t("strong",{staticClass:"mr-2"},this.title)),this.noCloseButton||i.push(t(Pe,{staticClass:"ml-auto mb-1",on:{click:function(){e.hide()}}}));var a=t();i.length>0&&(a=t("header",{staticClass:"toast-header",class:this.headerClass},i));var r=this.href||this.to,o=t(r?ri:"div",{staticClass:"toast-body",class:this.bodyClass,props:r?{to:this.to,href:this.href}:{},on:r?{click:this.onLinkClick}:{}},[this.normalizeSlot("default",this.slotScope)||t()]);return t("div",{key:"toast-".concat(this._uid),ref:"toast",staticClass:"toast",class:this.toastClass,attrs:s({},this.$attrs,{tabindex:"0",id:this.safeId()})},[a,o])}},render:function(t){if(!this.doRender||!this.isMounted)return t();var e="b-toast-".concat(this._uid),i=this.static?{}:this.scopedStyleAttrs;return t(Dd,{props:{name:e,to:this.computedToaster,order:this.order,slim:!0,disabled:this.static}},[t("div",{key:e,ref:"b-toast",staticClass:"b-toast",class:this.bToastClasses,attrs:s({},i,{id:this.safeId("_toast_outer"),role:this.isHiding?null:this.isStatus?"status":"alert","aria-live":this.isHiding?null:this.isStatus?"polite":"assertive","aria-atomic":this.isHiding?null:"true"})},[t(ke,{props:{noFade:this.noFade},on:this.transitionHandlers},[this.localShow?this.makeToast(t):t()])])])}}),Rd=["id"].concat(b(I(N(Ad,["static","visible"])))),Ld={toastContent:"default",title:"toast-title"},Hd=function(t){return Rd.reduce((function(e,i){return tt(t[i])||(e[i]=t[i]),e}),{})},zd=kt({components:{BToast:Md,BToaster:Nd},plugins:{BVToastPlugin:kt({plugins:{plugin:function(t){var e=t.extend({name:"BToastPop",extends:Md,destroyed:function(){this.$el&&this.$el.parentNode&&this.$el.parentNode.removeChild(this.$el)},mounted:function(){var t=this,e=function(){t.localShow=!1,t.doRender=!1,t.$nextTick((function(){t.$nextTick((function(){zt((function(){t.$destroy()}))}))}))};this.$parent.$once("hook:destroyed",e),this.$once("hidden",e),this.listenOnRoot("bv::toaster::destroyed",(function(i){i===t.toaster&&e()}))}}),n=function(t,i){if(!gt("$bvToast")){var n=new e({parent:i,propsData:s({},Hd(Ft("BToast")||{}),{},N(t,I(Ld)),{static:!1,visible:!0})});I(Ld).forEach((function(e){var a=t[e];tt(a)||("title"===e&&rt(a)&&(a=[i.$createElement("strong",{class:"mr-2"},a)]),n.$slots[Ld[e]]=k(a))}));var a=document.createElement("div");document.body.appendChild(a),n.$mount(a)}},r=function(){function t(e){i(this,t),C(this,{_vm:e,_root:e.$root}),$(this,{_vm:{enumerable:!0,configurable:!1,writable:!1},_root:{enumerable:!0,configurable:!1,writable:!1}})}return a(t,[{key:"toast",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t&&!gt("$bvToast")&&n(s({},Hd(e),{toastContent:t}),this._vm)}},{key:"show",value:function(t){t&&this._root.$emit("bv::show::toast",t)}},{key:"hide",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this._root.$emit("bv::hide::toast",t)}}]),t}();t.mixin({beforeCreate:function(){this._bv__toast=new r(this)}}),t.prototype.hasOwnProperty("$bvToast")||_(t.prototype,"$bvToast",{get:function(){return this&&this._bv__toast||mt('"'.concat("$bvToast",'" must be accessed from a Vue instance "this" context.'),"BToast"),this._bv__toast}})}}})}}),jd="__BV_Tooltip__",Gd={focus:!0,hover:!0,click:!0,blur:!0,manual:!0},Wd=/^html$/i,Ud=/^noninteractive$/i,Yd=/^nofade$/i,qd=/^(auto|top(left|right)?|bottom(left|right)?|left(top|bottom)?|right(top|bottom)?)$/i,Kd=/^(window|viewport|scrollParent)$/i,Xd=/^d\d+$/i,Zd=/^ds\d+$/i,Jd=/^dh\d+$/i,Qd=/^o-?\d+$/i,th=/^v-.+$/i,eh=/\s+/,ih=function(t,e,i){if(z){var n=function(t,e){var i="BTooltip",n={title:void 0,trigger:"",placement:"top",fallbackPlacement:"flip",container:!1,animation:!0,offset:0,id:null,html:!1,interactive:!0,disabled:!1,delay:Ft(i,"delay"),boundary:String(Ft(i,"boundary")),boundaryPadding:parseInt(Ft(i,"boundaryPadding"),10)||0,variant:Ft(i,"variant"),customClass:Ft(i,"customClass")};if(rt(t.value)||ot(t.value)?n.title=t.value:nt(t.value)?n.title=t.value:E(t.value)&&(n=s({},n,{},t.value)),tt(n.title)){var a=e.data||{};n.title=a.attrs&&!it(a.attrs.title)?a.attrs.title:void 0}E(n.delay)||(n.delay={show:parseInt(n.delay,10)||0,hide:parseInt(n.delay,10)||0}),t.arg&&(n.container="#".concat(t.arg)),I(t.modifiers).forEach((function(t){if(Wd.test(t))n.html=!0;else if(Ud.test(t))n.interactive=!1;else if(Yd.test(t))n.animation=!1;else if(qd.test(t))n.placement=t;else if(Kd.test(t))t="scrollparent"===t?"scrollParent":t,n.boundary=t;else if(Xd.test(t)){var e=parseInt(t.slice(1),10)||0;n.delay.show=e,n.delay.hide=e}else Zd.test(t)?n.delay.show=parseInt(t.slice(2),10)||0:Jd.test(t)?n.delay.hide=parseInt(t.slice(2),10)||0:Qd.test(t)?n.offset=parseInt(t.slice(1),10)||0:th.test(t)&&(n.variant=t.slice(2)||null)}));var r={};return k(n.trigger||"").filter(ht).join(" ").trim().toLowerCase().split(eh).forEach((function(t){Gd[t]&&(r[t]=!0)})),I(t.modifiers).forEach((function(t){t=t.toLowerCase(),Gd[t]&&(r[t]=!0)})),n.trigger=I(r).join(" "),"blur"===n.trigger&&(n.trigger="focus"),n.trigger||(n.trigger="hover focus"),n}(e,i);if(!t[jd]){var a=i.context;t[jd]=new Yu({parent:a,_scopeId:Hl(a,void 0)}),t[jd].__bv_prev_data__={},t[jd].$on("show",(function(){nt(n.title)&&t[jd].updateData({title:n.title(t)})}))}var r={title:n.title,triggers:n.trigger,placement:n.placement,fallbackPlacement:n.fallbackPlacement,variant:n.variant,customClass:n.customClass,container:n.container,boundary:n.boundary,delay:n.delay,offset:n.offset,noFade:!n.animation,id:n.id,interactive:n.interactive,disabled:n.disabled,html:n.html},o=t[jd].__bv_prev_data__;if(t[jd].__bv_prev_data__=r,!Hi(r,o)){var l={target:t};I(r).forEach((function(e){r[e]!==o[e]&&(l[e]="title"===e&&nt(r[e])?r[e](t):r[e])})),t[jd].updateData(l)}}},nh=kt({directives:{VBTooltip:{bind:function(t,e,i){ih(t,e,i)},componentUpdated:function(t,e,i){i.context.$nextTick((function(){ih(t,e,i)}))},unbind:function(t){!function(t){t[jd]&&(t[jd].$destroy(),t[jd]=null),delete t[jd]}(t)}}}}),ah=kt({plugins:{AlertPlugin:Ee,BadgePlugin:ui,BreadcrumbPlugin:vi,ButtonPlugin:Fi,ButtonGroupPlugin:Ni,ButtonToolbarPlugin:Ri,CalendarPlugin:$n,CardPlugin:sa,CarouselPlugin:wa,CollapsePlugin:Ra,DropdownPlugin:To,EmbedPlugin:Bo,FormPlugin:Eo,FormCheckboxPlugin:Wo,FormDatepickerPlugin:ts,FormFilePlugin:as,FormGroupPlugin:vs,FormInputPlugin:Bs,FormRadioPlugin:Cs,FormSelectPlugin:Is,FormSpinbuttonPlugin:zs,FormTagsPlugin:Qs,FormTextareaPlugin:el,ImagePlugin:il,InputGroupPlugin:cl,JumbotronPlugin:ml,LayoutPlugin:Tl,LinkPlugin:wl,ListGroupPlugin:_l,MediaPlugin:El,ModalPlugin:cu,NavPlugin:Su,NavbarPlugin:Du,PaginationPlugin:Mu,PaginationNavPlugin:Hu,PopoverPlugin:pc,ProgressPlugin:gc,SpinnerPlugin:vc,TablePlugin:pd,TabsPlugin:bd,ToastPlugin:zd,TooltipPlugin:kt({components:{BTooltip:Ku},plugins:{VBTooltipPlugin:nh}})}}),rh=kt({directives:{VBHover:Ko}}),oh=kt({directives:{VBModal:ru}}),sh={element:"body",offset:10,method:"auto",throttle:75},lh={element:"(string|element|component)",offset:"number",method:"string",throttle:"number"},uh="dropdown-item",ch="active",dh={ACTIVE:".active",NAV_LIST_GROUP:".nav, .list-group",NAV_LINKS:".nav-link",NAV_ITEMS:".nav-item",LIST_ITEMS:".list-group-item",DROPDOWN:".dropdown, .dropup",DROPDOWN_ITEMS:".dropdown-item",DROPDOWN_TOGGLE:".dropdown-toggle"},hh="offset",fh="position",ph=/^.*(#[^#]+)$/,mh=["webkitTransitionEnd","transitionend","otransitionend","oTransitionEnd"],gh=function(t){return function(t){return Object.prototype.toString.call(t)}(t).match(/\s([a-zA-Z]+)/)[1].toLowerCase()},vh=function(){function t(e,n,a){i(this,t),this.$el=e,this.$scroller=null,this.$selector=[dh.NAV_LINKS,dh.LIST_ITEMS,dh.DROPDOWN_ITEMS].join(","),this.$offsets=[],this.$targets=[],this.$activeTarget=null,this.$scrollHeight=0,this.$resizeTimeout=null,this.$obs_scroller=null,this.$obs_targets=null,this.$root=a||null,this.$config=null,this.updateConfig(n)}return a(t,[{key:"updateConfig",value:function(t,e){this.$scroller&&(this.unlisten(),this.$scroller=null);var i=s({},this.constructor.Default,{},t);if(e&&(this.$root=e),function(t,e,i){for(var n in i)if(Object.prototype.hasOwnProperty.call(i,n)){var a=i[n],r=e[n],o=r&&Gt(r)?"element":gh(r);o=r&&r._isVue?"component":o,new RegExp(a).test(o)||mt("".concat(t,': Option "').concat(n,'" provided type "').concat(o,'" but expected type "').concat(a,'"'))}}(this.constructor.Name,i,this.constructor.DefaultType),this.$config=i,this.$root){var n=this;this.$root.$nextTick((function(){n.listen()}))}else this.listen()}},{key:"dispose",value:function(){this.unlisten(),clearTimeout(this.$resizeTimeout),this.$resizeTimeout=null,this.$el=null,this.$config=null,this.$scroller=null,this.$selector=null,this.$offsets=null,this.$targets=null,this.$activeTarget=null,this.$scrollHeight=null}},{key:"listen",value:function(){var t=this,e=this.getScroller();e&&"BODY"!==e.tagName&&fa(e,"scroll",this,da),fa(window,"scroll",this,da),fa(window,"resize",this,da),fa(window,"orientationchange",this,da),mh.forEach((function(e){fa(window,e,t,da)})),this.setObservers(!0),this.handleEvent("refresh")}},{key:"unlisten",value:function(){var t=this,e=this.getScroller();this.setObservers(!1),e&&"BODY"!==e.tagName&&pa(e,"scroll",this,da),pa(window,"scroll",this,da),pa(window,"resize",this,da),pa(window,"orientationchange",this,da),mh.forEach((function(e){pa(window,e,t,da)}))}},{key:"setObservers",value:function(t){var e=this;this.$obs_scroller&&(this.$obs_scroller.disconnect(),this.$obs_scroller=null),this.$obs_targets&&(this.$obs_targets.disconnect(),this.$obs_targets=null),t&&(this.$obs_targets=ua(this.$el,(function(){e.handleEvent("mutation")}),{subtree:!0,childList:!0,attributes:!0,attributeFilter:["href"]}),this.$obs_scroller=ua(this.getScroller(),(function(){e.handleEvent("mutation")}),{subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:["id","style","class"]}))}},{key:"handleEvent",value:function(t){var e=rt(t)?t:t.type,i=this;"scroll"===e?(this.$obs_scroller||this.listen(),this.process()):/(resize|orientationchange|mutation|refresh)/.test(e)&&(i.$resizeTimeout||(i.$resizeTimeout=setTimeout((function(){i.refresh(),i.process(),i.$resizeTimeout=null}),i.$config.throttle)))}},{key:"refresh",value:function(){var t=this,e=this.getScroller();if(e){var i=e!==e.window?fh:hh,n="auto"===this.$config.method?i:this.$config.method,a=n===fh?de:ce,r=n===fh?this.getScrollTop():0;return this.$offsets=[],this.$targets=[],this.$scrollHeight=this.getScrollHeight(),qt(this.$selector,this.$el).map((function(t){return re(t,"href")})).filter((function(t){return t&&ph.test(t||"")})).map((function(t){var i=t.replace(ph,"$1").trim();if(!i)return null;var n=Kt(i,e);return n&&Wt(n)?{offset:parseInt(a(n).top,10)+r,target:i}:null})).filter(Boolean).sort((function(t,e){return t.offset-e.offset})).reduce((function(e,i){return e[i.target]||(t.$offsets.push(i.offset),t.$targets.push(i.target),e[i.target]=!0),e}),{}),this}}},{key:"process",value:function(){var t=this.getScrollTop()+this.$config.offset,e=this.getScrollHeight(),i=this.$config.offset+e-this.getOffsetHeight();if(this.$scrollHeight!==e&&this.refresh(),t>=i){var n=this.$targets[this.$targets.length-1];this.$activeTarget!==n&&this.activate(n)}else{if(this.$activeTarget&&t0)return this.$activeTarget=null,void this.clear();for(var a=this.$offsets.length;a--;){this.$activeTarget!==this.$targets[a]&&t>=this.$offsets[a]&&(tt(this.$offsets[a+1])||t0&&this.$root&&this.$root.$emit("bv::scrollspy::activate",t,i)}},{key:"clear",value:function(){var t=this;qt("".concat(this.$selector,", ").concat(dh.NAV_ITEMS),this.$el).filter((function(t){return ie(t,ch)})).forEach((function(e){return t.setActiveState(e,!1)}))}},{key:"setActiveState",value:function(t,e){t&&(e?te(t,ch):ee(t,ch))}}],[{key:"Name",get:function(){return"v-b-scrollspy"}},{key:"Default",get:function(){return sh}},{key:"DefaultType",get:function(){return lh}}]),t}(),bh="__BV_ScrollSpy__",yh=/^\d+$/,Sh=/^(auto|position|offset)$/,Th=function(t,e,i){if(z){var n=function(t){var e={};return t.arg&&(e.element="#".concat(t.arg)),I(t.modifiers).forEach((function(t){yh.test(t)?e.offset=parseInt(t,10):Sh.test(t)&&(e.method=t)})),rt(t.value)?e.element=t.value:ot(t.value)?e.offset=Math.round(t.value):F(t.value)&&I(t.value).filter((function(t){return!!vh.DefaultType[t]})).forEach((function(i){e[i]=t.value[i]})),e}(e);t[bh]?t[bh].updateConfig(n,i.context.$root):t[bh]=new vh(t,n,i.context.$root)}},wh=kt({plugins:{VBHoverPlugin:rh,VBModalPlugin:oh,VBPopoverPlugin:fc,VBScrollspyPlugin:kt({directives:{VBScrollspy:{bind:function(t,e,i){Th(t,e,i)},inserted:function(t,e,i){Th(t,e,i)},update:function(t,e,i){e.value!==e.oldValue&&Th(t,e,i)},componentUpdated:function(t,e,i){e.value!==e.oldValue&&Th(t,e,i)},unbind:function(t){!function(t){t[bh]&&(t[bh].dispose(),t[bh]=null,delete t[bh])}(t)}}}}),VBTogglePlugin:kt({directives:{VBToggle:Ma}}),VBTooltipPlugin:nh,VBVisiblePlugin:kt({directives:{VBVisible:Jn}})}}),Bh=/^BIcon/,kh=(s({icon:{type:String,default:null}},en,{stacked:{type:Boolean,default:!1}}),{install:Bt({plugins:{componentsPlugin:ah,directivesPlugin:wh}}),NAME:"BootstrapVue"});return Bd=kh,A&&window.Vue&&window.Vue.use(Bd),A&&Bd.NAME&&(window[Bd.NAME]=Bd),kh})); +//# sourceMappingURL=bootstrap-vue.min.js.map \ No newline at end of file diff --git a/asset/js/setup.js b/asset/js/setup.js index 114e5a70e8..e353b490f3 100644 --- a/asset/js/setup.js +++ b/asset/js/setup.js @@ -29,17 +29,22 @@ function setupAnchors() { const headerSelector = jQuery('header'); const isFixed = headerSelector.filter('.header-fixed').length !== 0; const headerHeight = headerSelector.height(); - const bufferHeight = 1; + const bufferHeight = 0; if (isFixed) { jQuery('.nav-inner').css('padding-top', `calc(${headerHeight}px)`); jQuery('#content-wrapper').css('padding-top', `calc(${headerHeight}px)`); insertCss( `span.anchor { - display: block; position: relative; top: calc(-${headerHeight}px - ${bufferHeight}rem) }`, ); + insertCss(`span.card-container::before { + display: block; + content: ''; + margin-top: calc(-${headerHeight}px - ${bufferHeight}rem); + height: calc(${headerHeight}px + ${bufferHeight}rem); + }`); } jQuery('h1, h2, h3, h4, h5, h6, .header-wrapper').each((index, heading) => { if (heading.id) { @@ -47,16 +52,9 @@ function setupAnchors() { () => jQuery(heading).find('.fa.fa-anchor').css('visibility', 'visible')); jQuery(heading).on('mouseleave', () => jQuery(heading).find('.fa.fa-anchor').css('visibility', 'hidden')); - if (isFixed) { - /** - * Fixing the top navbar would break anchor navigation, - * by creating empty spans above the tag we can prevent - * the headings from being covered by the navbar. - */ - const spanId = heading.id; - heading.insertAdjacentHTML('beforebegin', ``); - jQuery(heading).removeAttr('id'); // to avoid duplicated id problem - } + } + if (isFixed) { + jQuery(heading).removeAttr('id'); // to avoid duplicated id problem } }); jQuery('.fa-anchor').each((index, anchor) => { @@ -171,6 +169,39 @@ function setupWithSearch() { setupSiteNav(); } +function makeInnerGetterFor(attribute) { + return (element) => { + const innerElement = element.querySelector(`[data-mb-html-for="${attribute}"]`); + return innerElement === null ? '' : innerElement.innerHTML; + }; +} + +function makeHtmlGetterFor(componentType, attribute) { + return (element) => { + const contentWrapper = document.getElementById(element.attributes.for.value); + return contentWrapper.dataset.mbComponentType === componentType + ? makeInnerGetterFor(attribute)(contentWrapper) : ''; + }; +} + +/* eslint-disable no-unused-vars */ +/* + These getters are used by triggers to get their popover/tooltip content. + We need to create a completely new popover/tooltip for each trigger due to bootstrap-vue's implementation, + so this is how we retrieve our contents. +*/ +const popoverContentGetter = makeHtmlGetterFor('popover', 'content'); +const popoverHeaderGetter = makeHtmlGetterFor('popover', 'header'); +const popoverInnerContentGetter = makeInnerGetterFor('content'); +const popoverInnerHeaderGetter = makeInnerGetterFor('header'); + +const popoverGenerator = { title: popoverHeaderGetter, content: popoverContentGetter }; +const popoverInnerGenerator = { title: popoverInnerHeaderGetter, content: popoverInnerContentGetter }; + +const tooltipContentGetter = makeHtmlGetterFor('tooltip', '_content'); +const tooltipInnerContentGetter = makeInnerGetterFor('_content'); +/* eslint-enable no-unused-vars */ + if (enableSearch) { setupWithSearch(); } else { diff --git a/asset/js/vue-strap.min.js b/asset/js/vue-strap.min.js index 798ed2a1ba..83a92c1011 100644 --- a/asset/js/vue-strap.min.js +++ b/asset/js/vue-strap.min.js @@ -1,4 +1,4 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.VueStrap=t():e.VueStrap=t()}(this,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}return n.m=e,n.c=t,n.p="",n(0)}([function(e,t,n){"use strict";var r=C(n(1)),o=C(n(36)),i=C(n(71)),a=C(n(74)),s=C(n(81)),u=C(n(91)),l=C(n(96)),c=C(n(118)),f=C(n(123)),d=C(n(143)),p=C(n(108)),h=C(n(148)),v=C(n(186)),m=C(n(191)),g=C(n(196)),y=C(n(201)),b=C(n(206)),x=C(n(213)),w=C(n(218)),_=C(n(176));function C(e){return e&&e.__esModule?e:{default:e}}var S={affix:o.default,box:b.default,dropdown:a.default,modal:s.default,navbar:u.default,panel:l.default,pic:c.default,popover:f.default,question:d.default,retriever:p.default,searchbar:h.default,tab:v.default,tabGroup:m.default,tabs:g.default,thumbnail:y.default,tipBox:b.default,tooltip:x.default,trigger:w.default,typeahead:_.default},k={closeable:i.default};var T={install:function e(t){e.installed||(e.installed=!0,(0,r.default)(k).forEach(function(e){t.directive(e,k[e])}),(0,r.default)(S).forEach(function(e){t.component(e,S[e])}))},components:{}};(0,r.default)(S).forEach(function(e){T.components[e]=S[e]}),e.exports=T},function(e,t,n){e.exports={default:n(2),__esModule:!0}},function(e,t,n){n(3),e.exports=n(23).Object.keys},function(e,t,n){var r=n(4),o=n(6);n(21)("keys",function(){return function(e){return o(r(e))}})},function(e,t,n){var r=n(5);e.exports=function(e){return Object(r(e))}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var r=n(7),o=n(20);e.exports=Object.keys||function(e){return r(e,o)}},function(e,t,n){var r=n(8),o=n(9),i=n(12)(!1),a=n(16)("IE_PROTO");e.exports=function(e,t){var n,s=o(e),u=0,l=[];for(n in s)n!=a&&r(s,n)&&l.push(n);for(;t.length>u;)r(s,n=t[u++])&&(~i(l,n)||l.push(n));return l}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var r=n(10),o=n(5);e.exports=function(e){return r(o(e))}},function(e,t,n){var r=n(11);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var r=n(9),o=n(13),i=n(15);e.exports=function(e){return function(t,n,a){var s,u=r(t),l=o(u.length),c=i(a,l);if(e&&n!=n){for(;l>c;)if((s=u[c++])!=s)return!0}else for(;l>c;c++)if((e||c in u)&&u[c]===n)return e||c||0;return!e&&-1}}},function(e,t,n){var r=n(14),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t,n){var r=n(14),o=Math.max,i=Math.min;e.exports=function(e,t){return(e=r(e))<0?o(e+t,0):i(e,t)}},function(e,t,n){var r=n(17)("keys"),o=n(19);e.exports=function(e){return r[e]||(r[e]=o(e))}},function(e,t,n){var r=n(18),o=r["__core-js_shared__"]||(r["__core-js_shared__"]={});e.exports=function(e){return o[e]||(o[e]={})}},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,n){var r=n(22),o=n(23),i=n(32);e.exports=function(e,t){var n=(o.Object||{})[e]||Object[e],a={};a[e]=t(n),r(r.S+r.F*i(function(){n(1)}),"Object",a)}},function(e,t,n){var r=n(18),o=n(23),i=n(24),a=n(26),s=function(e,t,n){var u,l,c,f=e&s.F,d=e&s.G,p=e&s.S,h=e&s.P,v=e&s.B,m=e&s.W,g=d?o:o[t]||(o[t]={}),y=g.prototype,b=d?r:p?r[t]:(r[t]||{}).prototype;for(u in d&&(n=t),n)(l=!f&&b&&void 0!==b[u])&&u in g||(c=l?b[u]:n[u],g[u]=d&&"function"!=typeof b[u]?n[u]:v&&l?i(c,r):m&&b[u]==c?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(c):h&&"function"==typeof c?i(Function.call,c):c,h&&((g.virtual||(g.virtual={}))[u]=c,e&s.R&&y&&!y[u]&&a(y,u,c)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,e.exports=s},function(e,t){var n=e.exports={version:"2.5.3"};"number"==typeof __e&&(__e=n)},function(e,t,n){var r=n(25);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){var r=n(27),o=n(35);e.exports=n(31)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var r=n(28),o=n(30),i=n(34),a=Object.defineProperty;t.f=n(31)?Object.defineProperty:function(e,t,n){if(r(e),t=i(t,!0),r(n),o)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){var r=n(29);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){e.exports=!n(31)&&!n(32)(function(){return 7!=Object.defineProperty(n(33)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){e.exports=!n(32)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var r=n(29),o=n(18).document,i=r(o)&&r(o.createElement);e.exports=function(e){return i?o.createElement(e):{}}},function(e,t,n){var r=n(29);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){var r,o;r=n(37);var i=n(70);o=r=r||{},"object"!=typeof r.default&&"function"!=typeof r.default||(Object.keys(r).some(function(e){return"default"!==e&&"__esModule"!==e})&&console.error("named exports are not supported in *.vue files."),o=r=r.default),"function"==typeof o&&(o=o.options),o.__file="D:\\GitHub\\yamgent\\vue-strap\\src\\Affix.vue",o.render=i.render,o.staticRenderFns=i.staticRenderFns,o.functional&&console.error("[vue-loader] Affix.vue: functional components are not supported and should be defined in plain js files using render functions."),e.exports=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(38),o=function(e){return e&&e.__esModule?e:{default:e}}(n(39));t.default={props:{offset:{type:Number,default:0}},data:function(){return{affixed:!1}},computed:{offsetNumber:function(){return(0,r.toNumber)(this.offset)},top:function(){return this.offsetNumber>0?this.offsetNumber+"px":null}},methods:{checkScroll:function(){var e=this;if(this.$el.offsetWidth||this.$el.offsetHeight||this.$el.getClientRects().length){var t={},n={},r=this.$el.getBoundingClientRect(),o=document.body;["Top","Left"].forEach(function(i){var a=i.toLowerCase(),s=window["page"+("Top"===i?"Y":"X")+"Offset"],u="scroll"+i;"number"!=typeof s&&"number"!=typeof(s=document.documentElement[u])&&(s=document.body[u]),t[a]=s,n[a]=t[a]+r[a]-(e.$el["client"+i]||o["client"+i]||0)});var i=t.top>n.top-this.offsetNumber;this.affixed!==i&&(this.affixed=i)}}},mounted:function(){var e=this;(0,o.default)(window).on("scroll resize",function(){return e.checkScroll()}),setTimeout(function(){return e.checkScroll()},0)},beforeDestroy:function(){var e=this;(0,o.default)(window).off("scroll resize",function(){return e.checkScroll()})}}},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.toBoolean=function(e){return"string"==typeof e?""===e||"true"===e||"false"!==e&&"null"!==e&&"undefined"!==e&&e:e},t.toNumber=function(e){return"number"==typeof e?e:void 0===e||null===e||isNaN(Number(e))?null:Number(e)},t.getJSON=function(e){var t=new window.XMLHttpRequest,n={},r={then:function(e,t){return r.done(e).fail(t)},catch:function(e){return r.fail(e)},always:function(e){return r.done(e).fail(e)}};return["done","fail"].forEach(function(e){n[e]=[],r[e]=function(t){return t instanceof Function&&n[e].push(t),r}}),r.done(JSON.parse),t.onreadystatechange=function(){if(4===t.readyState){var e={status:t.status};if(200===t.status)try{var r=t.responseText;for(var o in n.done){var i=n.done[o](r);void 0!==i&&(r=i)}}catch(e){n.fail.forEach(function(t){return t(e)})}else n.fail.forEach(function(t){return t(e)})}},t.open("GET",e),t.setRequestHeader("Accept","application/json"),t.send(),r},t.getScrollBarWidth=function(){if(document.documentElement.scrollHeight<=document.documentElement.clientHeight)return 0;var e=document.createElement("p");e.style.width="100%",e.style.height="200px";var t=document.createElement("div");t.style.position="absolute",t.style.top="0px",t.style.left="0px",t.style.visibility="hidden",t.style.width="200px",t.style.height="150px",t.style.overflow="hidden",t.appendChild(e),document.body.appendChild(t);var n=e.offsetWidth;t.style.overflow="scroll";var r=e.offsetWidth;n===r&&(r=t.clientWidth);return document.body.removeChild(t),n-r},t.translations=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"en";return window.VueStrapLang?window.VueStrapLang(e):{daysOfWeek:["Su","Mo","Tu","We","Th","Fr","Sa"],limit:"Limit reached ({{limit}} items max).",loading:"Loading...",minLength:"Min. Length",months:["January","February","March","April","May","June","July","August","September","October","November","December"],notSelected:"Nothing Selected",required:"Required",search:"Search"}},t.delayer=function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:100;function o(e){return/^[0-9]+$/.test(e)?Number(e)||1:null}return function(){for(var i=this,a=arguments.length,s=Array(a),u=0;u1&&(n=t[1]);return n},t.VueFixer=function(e){var t={computed:{vue2:function(){return!this.$dispatch}}};window.Vue&&window.Vue.partial?(e.beforeCreate&&(t.create=e.beforeCreate,delete e.beforeCreate),e.beforeMount&&(e.beforeCompile=e.beforeMount,delete e.beforeMount),e.mounted&&(e.ready=e.mounted,delete e.mounted)):(e.beforeCompile&&(e.beforeMount=e.beforeCompile,delete e.beforeCompile),e.compiled&&(t.compiled=e.compiled,delete e.compiled),e.ready&&(e.mounted=e.ready,delete e.ready));e.mixins||(e.mixins=[]);return e.mixins.unshift(t),e};t.coerce={boolean:function(e){return"string"==typeof e?""===e||"true"===e||"false"!==e&&"null"!==e&&"undefined"!==e&&e:e},number:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return"number"==typeof e?e:void 0===e||null===e||isNaN(Number(e))?t:Number(e)},string:function(e){return void 0===e||null===e?"":e+""},pattern:function(e){return e instanceof Function||e instanceof RegExp?e:"string"==typeof e?new RegExp(e):null}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=u(n(40)),o=u(n(43)),i=u(n(63)),a=u(n(68)),s=u(n(69));function u(e){return e&&e.__esModule?e:{default:e}}var l=Array.prototype,c=new Error("Passed arguments must be of Node"),f=void 0,d=[],p=[];function h(e){return e instanceof window.Node}function v(e){return e instanceof window.NodeList||e instanceof g||e instanceof window.HTMLCollection||e instanceof Array}function m(e){return(e=e.trim()).length?e.replace(/\s+/," ").split(" "):[]}var g=function(){function e(t){(0,a.default)(this,e);var n=t;if(t[0]===window?n=[window]:"string"==typeof t[0]?(n=(t[1]||document).querySelectorAll(t[0]),t[1]&&(this.owner=t[1])):0 in t&&!h(t[0])&&t[0]&&"length"in t[0]&&(n=t[0],t[1]&&(this.owner=t[1])),n){for(var r in n)this[r]=n[r];this.length=n.length}else this.length=0}return(0,s.default)(e,[{key:"concat",value:function(){var e=l.slice.call(this);for(var t=arguments.length,n=Array(t),r=0;r1&&void 0!==arguments[1])||arguments[1];return this&&this.length&&e?(this.each(function(t){d.push({el:t,callback:e})}),f||(f=function(e){d.forEach(function(t){t.el.contains(e.target)||t.el===e.target||t.callback.call(t.el,e,t.el)})},document.addEventListener("click",f,!1),t&&document.addEventListener("touchstart",f,!1)),this):this}},{key:"offBlur",value:function(e){return this.each(function(t){d=d.filter(function(n){return!(n&&n.el===t&&(!e||n.callback===e))&&t})}),this}},{key:"asArray",get:function(){return l.slice.call(this)}}]),e}(),y=g.prototype;function b(e,t){var n=[];return l.forEach.call(e,function(r){if(h(r))~n.indexOf(r)||n.push(r);else if(v(r))for(var o in r)n.push(r[o]);else if(null!==r)return e.get=y.get,e.set=y.set,e.call=y.call,e.owner=t,e}),C(n,t)}(0,i.default)(l).forEach(function(e){"join"!==e&&"copyWithin"!==e&&"fill"!==e&&void 0===y[e]&&(y[e]=l[e])}),window.Symbol&&o.default&&(y[o.default]=y.values=l[o.default]);var x=document.createElement("div");function w(e){var t=this;y[e]||(x[e]instanceof Function?y[e]=function(){for(var n=arguments.length,r=Array(n),o=0;o=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){var r=n(14),o=n(5);e.exports=function(e){return function(t,n){var i,a,s=String(o(t)),u=r(n),l=s.length;return u<0||u>=l?e?"":void 0:(i=s.charCodeAt(u))<55296||i>56319||u+1===l||(a=s.charCodeAt(u+1))<56320||a>57343?e?s.charAt(u):i:e?s.slice(u,u+2):a-56320+(i-55296<<10)+65536}}},function(e,t,n){"use strict";var r=n(48),o=n(22),i=n(49),a=n(26),s=n(8),u=n(50),l=n(51),c=n(55),f=n(57),d=n(56)("iterator"),p=!([].keys&&"next"in[].keys()),h=function(){return this};e.exports=function(e,t,n,v,m,g,y){l(n,t,v);var b,x,w,_=function(e){if(!p&&e in T)return T[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},C=t+" Iterator",S="values"==m,k=!1,T=e.prototype,E=T[d]||T["@@iterator"]||m&&T[m],j=!p&&E||_(m),N=m?S?_("entries"):j:void 0,M="Array"==t&&T.entries||E;if(M&&(w=f(M.call(new e)))!==Object.prototype&&w.next&&(c(w,C,!0),r||s(w,d)||a(w,d,h)),S&&E&&"values"!==E.name&&(k=!0,j=function(){return E.call(this)}),r&&!y||!p&&!k&&T[d]||a(T,d,j),u[t]=j,u[C]=h,m)if(b={values:S?j:_("values"),keys:g?j:_("keys"),entries:N},y)for(x in b)x in T||i(T,x,b[x]);else o(o.P+o.F*(p||k),t,b);return b}},function(e,t){e.exports=!0},function(e,t,n){e.exports=n(26)},function(e,t){e.exports={}},function(e,t,n){"use strict";var r=n(52),o=n(35),i=n(55),a={};n(26)(a,n(56)("iterator"),function(){return this}),e.exports=function(e,t,n){e.prototype=r(a,{next:o(1,n)}),i(e,t+" Iterator")}},function(e,t,n){var r=n(28),o=n(53),i=n(20),a=n(16)("IE_PROTO"),s=function(){},u=function(){var e,t=n(33)("iframe"),r=i.length;for(t.style.display="none",n(54).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write(" diff --git a/docs/dg-site.json b/docs/dg-site.json index 72cce89f1b..6f17569272 100644 --- a/docs/dg-site.json +++ b/docs/dg-site.json @@ -3,17 +3,11 @@ "titlePrefix": "MarkBind", "pages": [ { - "glob": "**/*.mbd" - }, - { - "glob": "*.md" + "glob": ["**/*.mbd", "*.md", "devGuide/*.md"] }, { "src": "index.md", "searchable": "no" - }, - { - "glob": "devGuide/*.md" } ], "headingIndexingLevel": 6, diff --git a/docs/images/copyCode.png b/docs/images/copyCode.png new file mode 100644 index 0000000000..0bd900728a Binary files /dev/null and b/docs/images/copyCode.png differ diff --git a/docs/site.json b/docs/site.json index 91ab123fe4..a35fc61d62 100644 --- a/docs/site.json +++ b/docs/site.json @@ -1,34 +1,19 @@ { "baseUrl": "", + "timeZone": "Asia/Singapore", "titlePrefix": "MarkBind", "pages": [ { - "glob": "**/*.mbd" + "glob": ["**/*.mbd", "*.md", "userGuide/*.md", "devGuide/*.md", "devGuide/*/*.md"] }, { - "glob": "*.md" - }, - { - "src": "index.md", - "searchable": "no" - }, - { - "glob": "userGuide/*.md" - }, - { - "src": "userGuide/fullSyntaxReference.md", + "src": [ + "index.md", + "userGuide/fullSyntaxReference.md", + "userGuide/syntaxCheatSheet.md", + "userGuide/readerFacingFeatures.md" + ], "searchable": "no" - }, - { - "src": "userGuide/syntaxCheatSheet.md", - "searchable": "no" - }, - { - "src": "userGuide/readerFacingFeatures.md", - "searchable": "no" - }, - { - "glob": "devGuide/*.md" } ], "plugins" : [ diff --git a/docs/ug-site.json b/docs/ug-site.json index e239c7673a..302d38cfc9 100644 --- a/docs/ug-site.json +++ b/docs/ug-site.json @@ -3,28 +3,15 @@ "titlePrefix": "MarkBind", "pages": [ { - "glob": "**/*.mbd" + "glob": ["**/*.mbd", "*.md", "userGuide/*.md"] }, { - "glob": "*.md" - }, - { - "src": "index.md", - "searchable": "no" - }, - { - "glob": "userGuide/*.md" - }, - { - "src": "userGuide/fullSyntaxReference.md", - "searchable": "no" - }, - { - "src": "userGuide/syntaxCheatSheet.md", - "searchable": "no" - }, - { - "src": "userGuide/readerFacingFeatures.md", + "src": [ + "index.md", + "userGuide/fullSyntaxReference.md", + "userGuide/syntaxCheatSheet.md", + "userGuide/readerFacingFeatures.md" + ], "searchable": "no" } ], diff --git a/docs/userGuide/cliCommands.md b/docs/userGuide/cliCommands.md index 857298002d..cc30ca2aaa 100644 --- a/docs/userGuide/cliCommands.md +++ b/docs/userGuide/cliCommands.md @@ -26,8 +26,10 @@ Usage: markbind
### `init` Command +
+ +**Format:** `markbind init [options] [root]` -**Format:** `markbind init [options] [root]`
**Alias:** `markbind i` **Description:** Initializes a directory into a MarkBind site by creating a skeleton structure for the website which includes a `index.md` and a `site.json`. @@ -37,7 +39,10 @@ Usage: markbind Root directory. Default is the current directory.
{{ icon_example }} `./myWebsite` -**`options`:** + + +**Options** :fas-cogs: + * `-c`, `--convert`
Convert an existing GitHub wiki or `docs` folder into a MarkBind website. See [Converting an existing Github project]({{ baseUrl }}/userGuide/markBindInTheProjectWorkflow.html#converting-existing-project-documentation-wiki) for more information. @@ -46,11 +51,15 @@ Usage: markbind * `markbind init ./myWebsite` : Initializes the site in `./myWebsite` directory. * `markbind init --convert` : Converts the Github wiki or `docs` folder in the current working directory into a MarkBind website. +
+
### `serve` Command +
+ +**Format:** `markbind serve [options] [root]` -**Format:** `markbind serve [options] [root]`
**Alias:** `markbind s` **Description:** Does the following steps: @@ -64,33 +73,55 @@ Usage: markbind **Arguments:** * `[root]`
- Root directory. Default is the current directory.
+ Root directory. The default is the directory where this command was executed.
{{ icon_example }} `./myWebsite` -**`options`:** -* `-f`, `--force-reload`
- Force live reload to process all files in the site, instead of just the relevant files. This option is useful when you are modifying a file that is not a file type monitored by the live preview feature. -* `-n`, `--no-open`
- Don't open a live preview in the browser automatically. + + +**Options** :fas-cogs: + * `-o `, `--one-page `
- Render and serve only a single page from your website.
- {{ icon_example }} `--one-page guide/index.md` -* `-p `, `--port `
- Serve the website in the specified port. + Serves only a single page from your website **initially**. If `` is not specified, it defaults to `index.md/mbf/mbdf`.
+ * Thereafter, when changes to source files have been made, only the page being viewed will be rebuilt if it was affected.
+ * Navigating to a new page will build the new page, if it has not been built before, or there were some changes to source files that affected it before navigating to it.
+ * {{ icon_example }} `--one-page guide/index.md` + + + +Essentially, this optional feature is very useful when writing content, more so if your build times are starting to slow down! + +The caveat is that not building all pages during the initial process, or not rebuilding all affected pages when a file changes, will cause your search results for these pages to be empty or outdated, until you navigate to them to trigger a rebuild. + + + * `-s `, `--site-config `
Specify the site config file (default: `site.json`)
{{ icon_example }} `-s otherSite.json` +* `-n`, `--no-open`
+ Don't open a live preview in the browser automatically. + +* `-f`, `--force-reload`
+ Force live reload to process all files in the site, instead of just the relevant files. This option is useful when you are modifying a file that is not a file type monitored by the live preview feature. + +* `-p `, `--port `
+ Serve the website in the specified port. + + {{ icon_examples }} * `markbind serve` * `markbind serve ./myWebsite` * `markbind serve -p 8888 -s otherSite.json` +
+
### `build` Command +
+ +**Format:** `markbind build [options] [root] [output]` -**Format:** `markbind build [options] [root] [output]`
**Alias:** `markbind b` **Description:** Generates the site to the directory named `_site` in the current directory. @@ -99,14 +130,19 @@ Usage: markbind * `[output]`
Put the generated files in the specified directory
{{ icon_example }} `../myOutDir` + * `[root] [output]`
Read source files from the `[root]` directory and put the generated files in the specified `[output]` directory
{{ icon_example }} `./myWebsite ../myOutDir` -**`options`:** + + +**Options** :fas-cogs: + * `--baseUrl `
Override the `baseUrl` property (read from the `site.json`) with the give `` value.
{{ icon_example }} `--baseUrl staging` + * `-s `, `--site-config `
Specify the site config file (default: `site.json`)
{{ icon_example }} `-s otherSite.json` @@ -116,27 +152,38 @@ Usage: markbind * `markbind build ./myWebsite ./myOutDir` * `markbind build ./stagingDir --baseUrl staging` +
+
### `deploy` Command +
+ +**Format:** `markbind deploy [options]` -**Format:** `markbind deploy [options]`
**Alias:** `markbind d` **Description:** Deploys the site to the repo's Github pages by pushing everything in the generated site (default dir: `_site`) to the `gh-pages` branch of the current git working directory's remote repo. -**`options`:** + + +**Options** :fas-cogs: + * `-t `, `--travis `
Deploy the site in Travis CI using the GitHub personal access token stored in ``. (default: `GITHUB_TOKEN`)
{{ icon_example }} `-t PA_TOKEN` %%{{ icon_info }} Related: [User Guide: Deploying the Website](deployingTheSite.html).%% +
+
### `--help` Option +
+ +**Format:** `markbind [command] --help` -**Format:** `markbind [command] --help`
**Alias:** `markbind [command] -h` **Description:** Prints a summary of MarkBind commands or a detailed usage guide for the given `command`. diff --git a/docs/userGuide/components/advanced.md b/docs/userGuide/components/advanced.md index 7843509881..8e9a248577 100644 --- a/docs/userGuide/components/advanced.md +++ b/docs/userGuide/components/advanced.md @@ -71,6 +71,55 @@ Using the normal syntax, you are only able to use markdown formatting on heading
+**Box Slot Options:** + +Slot name | Default class | +--- | --- | +icon | depends on box's `type` attribute | + +{{ icon_example }} Override the default icon for a certain type of box. + +```html + + :fas-home: + info + +``` + + + :fas-home: + info + + +{{ icon_example }} Use pictures (or even gifs) as the icon for a box. + +```html + + + some very useful info + +``` + + + + some very useful info + + +{{ icon_example }} Use [thumbnail]({{ baseUrl }}/userGuide/usingComponents.html#thumbnails) as the icon. + + +```html + + + use thumbnail as the icon + +``` + + + + use thumbnail as the icon + + **Panel Slot Options:** Slot name | Default class | Notes --- | --- | --- diff --git a/docs/userGuide/index.md b/docs/userGuide/index.md index 6d0f2c1ffd..cc575b71b0 100644 --- a/docs/userGuide/index.md +++ b/docs/userGuide/index.md @@ -1 +1,3 @@ - \ No newline at end of file + diff --git a/docs/userGuide/pages/locales.md b/docs/userGuide/pages/locales.md new file mode 100644 index 0000000000..3598b21ea8 --- /dev/null +++ b/docs/userGuide/pages/locales.md @@ -0,0 +1,440 @@ +```js +af_NA: "Afrikaans (Namibia)", +af_ZA: "Afrikaans (South Africa)", +af: "Afrikaans", +ak_GH: "Akan (Ghana)", +ak: "Akan", +sq_AL: "Albanian (Albania)", +sq: "Albanian", +am_ET: "Amharic (Ethiopia)", +am: "Amharic", +ar_DZ: "Arabic (Algeria)", +ar_BH: "Arabic (Bahrain)", +ar_EG: "Arabic (Egypt)", +ar_IQ: "Arabic (Iraq)", +ar_JO: "Arabic (Jordan)", +ar_KW: "Arabic (Kuwait)", +ar_LB: "Arabic (Lebanon)", +ar_LY: "Arabic (Libya)", +ar_MA: "Arabic (Morocco)", +ar_OM: "Arabic (Oman)", +ar_QA: "Arabic (Qatar)", +ar_SA: "Arabic (Saudi Arabia)", +ar_SD: "Arabic (Sudan)", +ar_SY: "Arabic (Syria)", +ar_TN: "Arabic (Tunisia)", +ar_AE: "Arabic (United Arab Emirates)", +ar_YE: "Arabic (Yemen)", +ar: "Arabic", +hy_AM: "Armenian (Armenia)", +hy: "Armenian", +as_IN: "Assamese (India)", +as: "Assamese", +asa_TZ: "Asu (Tanzania)", +asa: "Asu", +az_Cyrl: "Azerbaijani (Cyrillic)", +az_Cyrl_AZ: "Azerbaijani (Cyrillic, Azerbaijan)", +az_Latn: "Azerbaijani (Latin)", +az_Latn_AZ: "Azerbaijani (Latin, Azerbaijan)", +az: "Azerbaijani", +bm_ML: "Bambara (Mali)", +bm: "Bambara", +eu_ES: "Basque (Spain)", +eu: "Basque", +be_BY: "Belarusian (Belarus)", +be: "Belarusian", +bem_ZM: "Bemba (Zambia)", +bem: "Bemba", +bez_TZ: "Bena (Tanzania)", +bez: "Bena", +bn_BD: "Bengali (Bangladesh)", +bn_IN: "Bengali (India)", +bn: "Bengali", +bs_BA: "Bosnian (Bosnia and Herzegovina)", +bs: "Bosnian", +bg_BG: "Bulgarian (Bulgaria)", +bg: "Bulgarian", +my_MM: "Burmese (Myanmar [Burma])", +my: "Burmese", +yue_Hant_HK: "Cantonese (Traditional, Hong Kong SAR China)", +ca_ES: "Catalan (Spain)", +ca: "Catalan", +tzm_Latn: "Central Morocco Tamazight (Latin)", +tzm_Latn_MA: "Central Morocco Tamazight (Latin, Morocco)", +tzm: "Central Morocco Tamazight", +chr_US: "Cherokee (United States)", +chr: "Cherokee", +cgg_UG: "Chiga (Uganda)", +cgg: "Chiga", +zh_Hans: "Chinese (Simplified Han)", +zh_Hans_CN: "Chinese (Simplified Han, China)", +zh_Hans_HK: "Chinese (Simplified Han, Hong Kong SAR China)", +zh_Hans_MO: "Chinese (Simplified Han, Macau SAR China)", +zh_Hans_SG: "Chinese (Simplified Han, Singapore)", +zh_Hant: "Chinese (Traditional Han)", +zh_Hant_HK: "Chinese (Traditional Han, Hong Kong SAR China)", +zh_Hant_MO: "Chinese (Traditional Han, Macau SAR China)", +zh_Hant_TW: "Chinese (Traditional Han, Taiwan)", +zh: "Chinese", +kw_GB: "Cornish (United Kingdom)", +kw: "Cornish", +hr_HR: "Croatian (Croatia)", +hr: "Croatian", +cs_CZ: "Czech (Czech Republic)", +cs: "Czech", +da_DK: "Danish (Denmark)", +da: "Danish", +nl_BE: "Dutch (Belgium)", +nl_NL: "Dutch (Netherlands)", +nl: "Dutch", +ebu_KE: "Embu (Kenya)", +ebu: "Embu", +en_AS: "English (American Samoa)", +en_AU: "English (Australia)", +en_BE: "English (Belgium)", +en_BZ: "English (Belize)", +en_BW: "English (Botswana)", +en_CA: "English (Canada)", +en_GU: "English (Guam)", +en_HK: "English (Hong Kong SAR China)", +en_IN: "English (India)", +en_IE: "English (Ireland)", +en_IL: "English (Israel)", +en_JM: "English (Jamaica)", +en_MT: "English (Malta)", +en_MH: "English (Marshall Islands)", +en_MU: "English (Mauritius)", +en_NA: "English (Namibia)", +en_NZ: "English (New Zealand)", +en_MP: "English (Northern Mariana Islands)", +en_PK: "English (Pakistan)", +en_PH: "English (Philippines)", +en_SG: "English (Singapore)", +en_ZA: "English (South Africa)", +en_TT: "English (Trinidad and Tobago)", +en_UM: "English (U.S. Minor Outlying Islands)", +en_VI: "English (U.S. Virgin Islands)", +en_GB: "English (United Kingdom)", +en_US: "English (United States)", +en_ZW: "English (Zimbabwe)", +en: "English", +eo: "Esperanto", +et_EE: "Estonian (Estonia)", +et: "Estonian", +ee_GH: "Ewe (Ghana)", +ee_TG: "Ewe (Togo)", +ee: "Ewe", +fo_FO: "Faroese (Faroe Islands)", +fo: "Faroese", +fil_PH: "Filipino (Philippines)", +fil: "Filipino", +fi_FI: "Finnish (Finland)", +fi: "Finnish", +fr_BE: "French (Belgium)", +fr_BJ: "French (Benin)", +fr_BF: "French (Burkina Faso)", +fr_BI: "French (Burundi)", +fr_CM: "French (Cameroon)", +fr_CA: "French (Canada)", +fr_CF: "French (Central African Republic)", +fr_TD: "French (Chad)", +fr_KM: "French (Comoros)", +fr_CG: "French (Congo - Brazzaville)", +fr_CD: "French (Congo - Kinshasa)", +fr_CI: "French (Côte d’Ivoire)", +fr_DJ: "French (Djibouti)", +fr_GQ: "French (Equatorial Guinea)", +fr_FR: "French (France)", +fr_GA: "French (Gabon)", +fr_GP: "French (Guadeloupe)", +fr_GN: "French (Guinea)", +fr_LU: "French (Luxembourg)", +fr_MG: "French (Madagascar)", +fr_ML: "French (Mali)", +fr_MQ: "French (Martinique)", +fr_MC: "French (Monaco)", +fr_NE: "French (Niger)", +fr_RW: "French (Rwanda)", +fr_RE: "French (Réunion)", +fr_BL: "French (Saint Barthélemy)", +fr_MF: "French (Saint Martin)", +fr_SN: "French (Senegal)", +fr_CH: "French (Switzerland)", +fr_TG: "French (Togo)", +fr: "French", +ff_SN: "Fulah (Senegal)", +ff: "Fulah", +gl_ES: "Galician (Spain)", +gl: "Galician", +lg_UG: "Ganda (Uganda)", +lg: "Ganda", +ka_GE: "Georgian (Georgia)", +ka: "Georgian", +de_AT: "German (Austria)", +de_BE: "German (Belgium)", +de_DE: "German (Germany)", +de_LI: "German (Liechtenstein)", +de_LU: "German (Luxembourg)", +de_CH: "German (Switzerland)", +de: "German", +el_CY: "Greek (Cyprus)", +el_GR: "Greek (Greece)", +el: "Greek", +gu_IN: "Gujarati (India)", +gu: "Gujarati", +guz_KE: "Gusii (Kenya)", +guz: "Gusii", +ha_Latn: "Hausa (Latin)", +ha_Latn_GH: "Hausa (Latin, Ghana)", +ha_Latn_NE: "Hausa (Latin, Niger)", +ha_Latn_NG: "Hausa (Latin, Nigeria)", +ha: "Hausa", +haw_US: "Hawaiian (United States)", +haw: "Hawaiian", +he_IL: "Hebrew (Israel)", +he: "Hebrew", +hi_IN: "Hindi (India)", +hi: "Hindi", +hu_HU: "Hungarian (Hungary)", +hu: "Hungarian", +is_IS: "Icelandic (Iceland)", +is: "Icelandic", +ig_NG: "Igbo (Nigeria)", +ig: "Igbo", +id_ID: "Indonesian (Indonesia)", +id: "Indonesian", +ga_IE: "Irish (Ireland)", +ga: "Irish", +it_IT: "Italian (Italy)", +it_CH: "Italian (Switzerland)", +it: "Italian", +ja_JP: "Japanese (Japan)", +ja: "Japanese", +kea_CV: "Kabuverdianu (Cape Verde)", +kea: "Kabuverdianu", +kab_DZ: "Kabyle (Algeria)", +kab: "Kabyle", +kl_GL: "Kalaallisut (Greenland)", +kl: "Kalaallisut", +kln_KE: "Kalenjin (Kenya)", +kln: "Kalenjin", +kam_KE: "Kamba (Kenya)", +kam: "Kamba", +kn_IN: "Kannada (India)", +kn: "Kannada", +kk_Cyrl: "Kazakh (Cyrillic)", +kk_Cyrl_KZ: "Kazakh (Cyrillic, Kazakhstan)", +kk: "Kazakh", +km_KH: "Khmer (Cambodia)", +km: "Khmer", +ki_KE: "Kikuyu (Kenya)", +ki: "Kikuyu", +rw_RW: "Kinyarwanda (Rwanda)", +rw: "Kinyarwanda", +kok_IN: "Konkani (India)", +kok: "Konkani", +ko_KR: "Korean (South Korea)", +ko: "Korean", +khq_ML: "Koyra Chiini (Mali)", +khq: "Koyra Chiini", +ses_ML: "Koyraboro Senni (Mali)", +ses: "Koyraboro Senni", +lag_TZ: "Langi (Tanzania)", +lag: "Langi", +lv_LV: "Latvian (Latvia)", +lv: "Latvian", +lt_LT: "Lithuanian (Lithuania)", +lt: "Lithuanian", +luo_KE: "Luo (Kenya)", +luo: "Luo", +luy_KE: "Luyia (Kenya)", +luy: "Luyia", +mk_MK: "Macedonian (Macedonia)", +mk: "Macedonian", +jmc_TZ: "Machame (Tanzania)", +jmc: "Machame", +kde_TZ: "Makonde (Tanzania)", +kde: "Makonde", +mg_MG: "Malagasy (Madagascar)", +mg: "Malagasy", +ms_BN: "Malay (Brunei)", +ms_MY: "Malay (Malaysia)", +ms: "Malay", +ml_IN: "Malayalam (India)", +ml: "Malayalam", +mt_MT: "Maltese (Malta)", +mt: "Maltese", +gv_GB: "Manx (United Kingdom)", +gv: "Manx", +mr_IN: "Marathi (India)", +mr: "Marathi", +mas_KE: "Masai (Kenya)", +mas_TZ: "Masai (Tanzania)", +mas: "Masai", +mer_KE: "Meru (Kenya)", +mer: "Meru", +mfe_MU: "Morisyen (Mauritius)", +mfe: "Morisyen", +naq_NA: "Nama (Namibia)", +naq: "Nama", +ne_IN: "Nepali (India)", +ne_NP: "Nepali (Nepal)", +ne: "Nepali", +nd_ZW: "North Ndebele (Zimbabwe)", +nd: "North Ndebele", +nb_NO: "Norwegian Bokmål (Norway)", +nb: "Norwegian Bokmål", +nn_NO: "Norwegian Nynorsk (Norway)", +nn: "Norwegian Nynorsk", +nyn_UG: "Nyankole (Uganda)", +nyn: "Nyankole", +or_IN: "Oriya (India)", +or: "Oriya", +om_ET: "Oromo (Ethiopia)", +om_KE: "Oromo (Kenya)", +om: "Oromo", +ps_AF: "Pashto (Afghanistan)", +ps: "Pashto", +fa_AF: "Persian (Afghanistan)", +fa_IR: "Persian (Iran)", +fa: "Persian", +pl_PL: "Polish (Poland)", +pl: "Polish", +pt_BR: "Portuguese (Brazil)", +pt_GW: "Portuguese (Guinea-Bissau)", +pt_MZ: "Portuguese (Mozambique)", +pt_PT: "Portuguese (Portugal)", +pt: "Portuguese", +pa_Arab: "Punjabi (Arabic)", +pa_Arab_PK: "Punjabi (Arabic, Pakistan)", +pa_Guru: "Punjabi (Gurmukhi)", +pa_Guru_IN: "Punjabi (Gurmukhi, India)", +pa: "Punjabi", +ro_MD: "Romanian (Moldova)", +ro_RO: "Romanian (Romania)", +ro: "Romanian", +rm_CH: "Romansh (Switzerland)", +rm: "Romansh", +rof_TZ: "Rombo (Tanzania)", +rof: "Rombo", +ru_MD: "Russian (Moldova)", +ru_RU: "Russian (Russia)", +ru_UA: "Russian (Ukraine)", +ru: "Russian", +rwk_TZ: "Rwa (Tanzania)", +rwk: "Rwa", +saq_KE: "Samburu (Kenya)", +saq: "Samburu", +sg_CF: "Sango (Central African Republic)", +sg: "Sango", +seh_MZ: "Sena (Mozambique)", +seh: "Sena", +sr_Cyrl: "Serbian (Cyrillic)", +sr_Cyrl_BA: "Serbian (Cyrillic, Bosnia and Herzegovina)", +sr_Cyrl_ME: "Serbian (Cyrillic, Montenegro)", +sr_Cyrl_RS: "Serbian (Cyrillic, Serbia)", +sr_Latn: "Serbian (Latin)", +sr_Latn_BA: "Serbian (Latin, Bosnia and Herzegovina)", +sr_Latn_ME: "Serbian (Latin, Montenegro)", +sr_Latn_RS: "Serbian (Latin, Serbia)", +sr: "Serbian", +sn_ZW: "Shona (Zimbabwe)", +sn: "Shona", +ii_CN: "Sichuan Yi (China)", +ii: "Sichuan Yi", +si_LK: "Sinhala (Sri Lanka)", +si: "Sinhala", +sk_SK: "Slovak (Slovakia)", +sk: "Slovak", +sl_SI: "Slovenian (Slovenia)", +sl: "Slovenian", +xog_UG: "Soga (Uganda)", +xog: "Soga", +so_DJ: "Somali (Djibouti)", +so_ET: "Somali (Ethiopia)", +so_KE: "Somali (Kenya)", +so_SO: "Somali (Somalia)", +so: "Somali", +es_AR: "Spanish (Argentina)", +es_BO: "Spanish (Bolivia)", +es_CL: "Spanish (Chile)", +es_CO: "Spanish (Colombia)", +es_CR: "Spanish (Costa Rica)", +es_DO: "Spanish (Dominican Republic)", +es_EC: "Spanish (Ecuador)", +es_SV: "Spanish (El Salvador)", +es_GQ: "Spanish (Equatorial Guinea)", +es_GT: "Spanish (Guatemala)", +es_HN: "Spanish (Honduras)", +es_419: "Spanish (Latin America)", +es_MX: "Spanish (Mexico)", +es_NI: "Spanish (Nicaragua)", +es_PA: "Spanish (Panama)", +es_PY: "Spanish (Paraguay)", +es_PE: "Spanish (Peru)", +es_PR: "Spanish (Puerto Rico)", +es_ES: "Spanish (Spain)", +es_US: "Spanish (United States)", +es_UY: "Spanish (Uruguay)", +es_VE: "Spanish (Venezuela)", +es: "Spanish", +sw_KE: "Swahili (Kenya)", +sw_TZ: "Swahili (Tanzania)", +sw: "Swahili", +sv_FI: "Swedish (Finland)", +sv_SE: "Swedish (Sweden)", +sv: "Swedish", +gsw_CH: "Swiss German (Switzerland)", +gsw: "Swiss German", +shi_Latn: "Tachelhit (Latin)", +shi_Latn_MA: "Tachelhit (Latin, Morocco)", +shi_Tfng: "Tachelhit (Tifinagh)", +shi_Tfng_MA: "Tachelhit (Tifinagh, Morocco)", +shi: "Tachelhit", +dav_KE: "Taita (Kenya)", +dav: "Taita", +ta_IN: "Tamil (India)", +ta_LK: "Tamil (Sri Lanka)", +ta: "Tamil", +te_IN: "Telugu (India)", +te: "Telugu", +teo_KE: "Teso (Kenya)", +teo_UG: "Teso (Uganda)", +teo: "Teso", +th_TH: "Thai (Thailand)", +th: "Thai", +bo_CN: "Tibetan (China)", +bo_IN: "Tibetan (India)", +bo: "Tibetan", +ti_ER: "Tigrinya (Eritrea)", +ti_ET: "Tigrinya (Ethiopia)", +ti: "Tigrinya", +to_TO: "Tonga (Tonga)", +to: "Tonga", +tr_TR: "Turkish (Turkey)", +tr: "Turkish", +uk_UA: "Ukrainian (Ukraine)", +uk: "Ukrainian", +ur_IN: "Urdu (India)", +ur_PK: "Urdu (Pakistan)", +ur: "Urdu", +uz_Arab: "Uzbek (Arabic)", +uz_Arab_AF: "Uzbek (Arabic, Afghanistan)", +uz_Cyrl: "Uzbek (Cyrillic)", +uz_Cyrl_UZ: "Uzbek (Cyrillic, Uzbekistan)", +uz_Latn: "Uzbek (Latin)", +uz_Latn_UZ: "Uzbek (Latin, Uzbekistan)", +uz: "Uzbek", +vi_VN: "Vietnamese (Vietnam)", +vi: "Vietnamese", +vun_TZ: "Vunjo (Tanzania)", +vun: "Vunjo", +cy_GB: "Welsh (United Kingdom)", +cy: "Welsh", +yo_NG: "Yoruba (Nigeria)", +yo: "Yoruba", +zu_ZA: "Zulu (South Africa)", +zu: "Zulu" +``` + +%%[source: https://stackoverflow.com/a/28357857/5885921 ]%% \ No newline at end of file diff --git a/docs/userGuide/pages/timeZones.md b/docs/userGuide/pages/timeZones.md new file mode 100644 index 0000000000..07edaf191c --- /dev/null +++ b/docs/userGuide/pages/timeZones.md @@ -0,0 +1,352 @@ +```js +"Africa/Abidjan", +"Africa/Accra", +"Africa/Algiers", +"Africa/Bissau", +"Africa/Cairo", +"Africa/Casablanca", +"Africa/Ceuta", +"Africa/El_Aaiun", +"Africa/Johannesburg", +"Africa/Juba", +"Africa/Khartoum", +"Africa/Lagos", +"Africa/Maputo", +"Africa/Monrovia", +"Africa/Nairobi", +"Africa/Ndjamena", +"Africa/Sao_Tome", +"Africa/Tripoli", +"Africa/Tunis", +"Africa/Windhoek", +"America/Adak", +"America/Anchorage", +"America/Araguaina", +"America/Argentina/Buenos_Aires", +"America/Argentina/Catamarca", +"America/Argentina/Cordoba", +"America/Argentina/Jujuy", +"America/Argentina/La_Rioja", +"America/Argentina/Mendoza", +"America/Argentina/Rio_Gallegos", +"America/Argentina/Salta", +"America/Argentina/San_Juan", +"America/Argentina/San_Luis", +"America/Argentina/Tucuman", +"America/Argentina/Ushuaia", +"America/Asuncion", +"America/Atikokan", +"America/Bahia", +"America/Bahia_Banderas", +"America/Barbados", +"America/Belem", +"America/Belize", +"America/Blanc-Sablon", +"America/Boa_Vista", +"America/Bogota", +"America/Boise", +"America/Cambridge_Bay", +"America/Campo_Grande", +"America/Cancun", +"America/Caracas", +"America/Cayenne", +"America/Chicago", +"America/Chihuahua", +"America/Costa_Rica", +"America/Creston", +"America/Cuiaba", +"America/Curacao", +"America/Danmarkshavn", +"America/Dawson", +"America/Dawson_Creek", +"America/Denver", +"America/Detroit", +"America/Edmonton", +"America/Eirunepe", +"America/El_Salvador", +"America/Fort_Nelson", +"America/Fortaleza", +"America/Glace_Bay", +"America/Godthab", +"America/Goose_Bay", +"America/Grand_Turk", +"America/Guatemala", +"America/Guayaquil", +"America/Guyana", +"America/Halifax", +"America/Havana", +"America/Hermosillo", +"America/Indiana/Indianapolis", +"America/Indiana/Knox", +"America/Indiana/Marengo", +"America/Indiana/Petersburg", +"America/Indiana/Tell_City", +"America/Indiana/Vevay", +"America/Indiana/Vincennes", +"America/Indiana/Winamac", +"America/Inuvik", +"America/Iqaluit", +"America/Jamaica", +"America/Juneau", +"America/Kentucky/Louisville", +"America/Kentucky/Monticello", +"America/La_Paz", +"America/Lima", +"America/Los_Angeles", +"America/Maceio", +"America/Managua", +"America/Manaus", +"America/Martinique", +"America/Matamoros", +"America/Mazatlan", +"America/Menominee", +"America/Merida", +"America/Metlakatla", +"America/Mexico_City", +"America/Miquelon", +"America/Moncton", +"America/Monterrey", +"America/Montevideo", +"America/Nassau", +"America/New_York", +"America/Nipigon", +"America/Nome", +"America/Noronha", +"America/North_Dakota/Beulah", +"America/North_Dakota/Center", +"America/North_Dakota/New_Salem", +"America/Ojinaga", +"America/Panama", +"America/Pangnirtung", +"America/Paramaribo", +"America/Phoenix", +"America/Port-au-Prince", +"America/Port_of_Spain", +"America/Porto_Velho", +"America/Puerto_Rico", +"America/Punta_Arenas", +"America/Rainy_River", +"America/Rankin_Inlet", +"America/Recife", +"America/Regina", +"America/Resolute", +"America/Rio_Branco", +"America/Santarem", +"America/Santiago", +"America/Santo_Domingo", +"America/Sao_Paulo", +"America/Scoresbysund", +"America/Sitka", +"America/St_Johns", +"America/Swift_Current", +"America/Tegucigalpa", +"America/Thule", +"America/Thunder_Bay", +"America/Tijuana", +"America/Toronto", +"America/Vancouver", +"America/Whitehorse", +"America/Winnipeg", +"America/Yakutat", +"America/Yellowknife", +"Antarctica/Casey", +"Antarctica/Davis", +"Antarctica/DumontDUrville", +"Antarctica/Macquarie", +"Antarctica/Mawson", +"Antarctica/Palmer", +"Antarctica/Rothera", +"Antarctica/Syowa", +"Antarctica/Troll", +"Antarctica/Vostok", +"Asia/Almaty", +"Asia/Amman", +"Asia/Anadyr", +"Asia/Aqtau", +"Asia/Aqtobe", +"Asia/Ashgabat", +"Asia/Atyrau", +"Asia/Baghdad", +"Asia/Baku", +"Asia/Bangkok", +"Asia/Barnaul", +"Asia/Beirut", +"Asia/Bishkek", +"Asia/Brunei", +"Asia/Chita", +"Asia/Choibalsan", +"Asia/Colombo", +"Asia/Damascus", +"Asia/Dhaka", +"Asia/Dili", +"Asia/Dubai", +"Asia/Dushanbe", +"Asia/Famagusta", +"Asia/Gaza", +"Asia/Hebron", +"Asia/Ho_Chi_Minh", +"Asia/Hong_Kong", +"Asia/Hovd", +"Asia/Irkutsk", +"Asia/Jakarta", +"Asia/Jayapura", +"Asia/Jerusalem", +"Asia/Kabul", +"Asia/Kamchatka", +"Asia/Karachi", +"Asia/Kathmandu", +"Asia/Khandyga", +"Asia/Kolkata", +"Asia/Krasnoyarsk", +"Asia/Kuala_Lumpur", +"Asia/Kuching", +"Asia/Macau", +"Asia/Magadan", +"Asia/Makassar", +"Asia/Manila", +"Asia/Nicosia", +"Asia/Novokuznetsk", +"Asia/Novosibirsk", +"Asia/Omsk", +"Asia/Oral", +"Asia/Pontianak", +"Asia/Pyongyang", +"Asia/Qatar", +"Asia/Qostanay", +"Asia/Qyzylorda", +"Asia/Riyadh", +"Asia/Sakhalin", +"Asia/Samarkand", +"Asia/Seoul", +"Asia/Shanghai", +"Asia/Singapore", +"Asia/Srednekolymsk", +"Asia/Taipei", +"Asia/Tashkent", +"Asia/Tbilisi", +"Asia/Tehran", +"Asia/Thimphu", +"Asia/Tokyo", +"Asia/Tomsk", +"Asia/Ulaanbaatar", +"Asia/Urumqi", +"Asia/Ust-Nera", +"Asia/Vladivostok", +"Asia/Yakutsk", +"Asia/Yangon", +"Asia/Yekaterinburg", +"Asia/Yerevan", +"Atlantic/Azores", +"Atlantic/Bermuda", +"Atlantic/Canary", +"Atlantic/Cape_Verde", +"Atlantic/Faroe", +"Atlantic/Madeira", +"Atlantic/Reykjavik", +"Atlantic/South_Georgia", +"Atlantic/Stanley", +"Australia/Adelaide", +"Australia/Brisbane", +"Australia/Broken_Hill", +"Australia/Currie", +"Australia/Darwin", +"Australia/Eucla", +"Australia/Hobart", +"Australia/Lindeman", +"Australia/Lord_Howe", +"Australia/Melbourne", +"Australia/Perth", +"Australia/Sydney", +"Europe/Amsterdam", +"Europe/Andorra", +"Europe/Astrakhan", +"Europe/Athens", +"Europe/Belgrade", +"Europe/Berlin", +"Europe/Brussels", +"Europe/Bucharest", +"Europe/Budapest", +"Europe/Chisinau", +"Europe/Copenhagen", +"Europe/Dublin", +"Europe/Gibraltar", +"Europe/Helsinki", +"Europe/Istanbul", +"Europe/Kaliningrad", +"Europe/Kiev", +"Europe/Kirov", +"Europe/Lisbon", +"Europe/London", +"Europe/Luxembourg", +"Europe/Madrid", +"Europe/Malta", +"Europe/Minsk", +"Europe/Monaco", +"Europe/Moscow", +"Europe/Oslo", +"Europe/Paris", +"Europe/Prague", +"Europe/Riga", +"Europe/Rome", +"Europe/Samara", +"Europe/Saratov", +"Europe/Simferopol", +"Europe/Sofia", +"Europe/Stockholm", +"Europe/Tallinn", +"Europe/Tirane", +"Europe/Ulyanovsk", +"Europe/Uzhgorod", +"Europe/Vienna", +"Europe/Vilnius", +"Europe/Volgograd", +"Europe/Warsaw", +"Europe/Zaporozhye", +"Europe/Zurich", +"Indian/Chagos", +"Indian/Christmas", +"Indian/Cocos", +"Indian/Kerguelen", +"Indian/Mahe", +"Indian/Maldives", +"Indian/Mauritius", +"Indian/Reunion", +"Pacific/Apia", +"Pacific/Auckland", +"Pacific/Bougainville", +"Pacific/Chatham", +"Pacific/Chuuk", +"Pacific/Easter", +"Pacific/Efate", +"Pacific/Enderbury", +"Pacific/Fakaofo", +"Pacific/Fiji", +"Pacific/Funafuti", +"Pacific/Galapagos", +"Pacific/Gambier", +"Pacific/Guadalcanal", +"Pacific/Guam", +"Pacific/Honolulu", +"Pacific/Kiritimati", +"Pacific/Kosrae", +"Pacific/Kwajalein", +"Pacific/Majuro", +"Pacific/Marquesas", +"Pacific/Nauru", +"Pacific/Niue", +"Pacific/Norfolk", +"Pacific/Noumea", +"Pacific/Pago_Pago", +"Pacific/Palau", +"Pacific/Pitcairn", +"Pacific/Pohnpei", +"Pacific/Port_Moresby", +"Pacific/Rarotonga", +"Pacific/Tahiti", +"Pacific/Tarawa", +"Pacific/Tongatapu", +"Pacific/Wake", +"Pacific/Wallis" +``` + +%%[source: https://stackoverflow.com/a/54500197/5885921 ]%% \ No newline at end of file diff --git a/docs/userGuide/plugins/codeBlockCopyButtons.mbdf b/docs/userGuide/plugins/codeBlockCopyButtons.mbdf new file mode 100644 index 0000000000..4681894ab1 --- /dev/null +++ b/docs/userGuide/plugins/codeBlockCopyButtons.mbdf @@ -0,0 +1,20 @@ +#### `codeBlockCopyButtons`: Enabling code-blocks to be copied + +This plugin allows you to copy code in code-blocks on a button-click. + +To enable it, simply add `codeBlockCopyButtons` to your site's plugins. + +```js +site.json +{ + ... + "plugins": [ + "codeBlockCopyButtons" + ], +} +``` + +This is what it'll look like once added - + + + diff --git a/docs/userGuide/plugins/filterTags.mbdf b/docs/userGuide/plugins/tags.mbdf similarity index 96% rename from docs/userGuide/plugins/filterTags.mbdf rename to docs/userGuide/plugins/tags.mbdf index 4b63f6ce42..15e057d445 100644 --- a/docs/userGuide/plugins/filterTags.mbdf +++ b/docs/userGuide/plugins/tags.mbdf @@ -1,7 +1,9 @@ -#### `filterTags`: Toggling alternative contents in a page +## Tags You can use tags to selectively filter HTML elements when building a site. +### Toggling alternative contents in a page + Tags are specified by the `tags` attribute, **and can be attached to any HTML element**. During rendering, only elements that match tags specified in the `site.json` files will be rendered.
@@ -81,7 +83,7 @@ Alternatively, you can specify tags to render for a page in the front matter. Tags in `site.json` will be merged with the ones in the front matter, and are processed after front matter tags. See [Hiding Tags](../tweakingThePageStructure.html#hiding-tags) for more information. -#### Advanced Tagging Tips +### Advanced Tagging Tips You can use a `*` in a tag name to match elements more generally. A `*` in a tag will match any number of characters at its position. @@ -103,16 +105,14 @@ All 3 `

`s will be shown.

-#### Hiding Tags +### Hiding Tags Using `-` at the start of a tag hides all tags matching the expression. This is helpful for disabling a group of tags and enabling a particular tag.
{{ icon_example }} Using general tags: -```html -index.md - +```html {heading="index.md"} title: "Hello World" tags: ["language--java"] @@ -123,9 +123,7 @@ index.md

print("Hello world")

``` -```json -site.json - +```json {heading="site.json"} { ... "plugins" : [ diff --git a/docs/userGuide/puml.md b/docs/userGuide/puml.md index d46a132c3f..6bd174ca3b 100644 --- a/docs/userGuide/puml.md +++ b/docs/userGuide/puml.md @@ -30,19 +30,27 @@ A PlantUML diagram file (.puml) can be inserted into a Markbind page using a `

` tag, listed below: ****Options**** -Name | Type | Default | Description ---- | --- | --- | --- -alt | `string` | | **This must be specified.**
The alternative text of the diagram. -height | `string` | | The height of the diagram in pixels. -src | `string` | | **This must be specified.**
The URL of the diagram.
The URL can be specified as absolute or relative references. More info in: _[Intra-Site Links]({{baseUrl}}/userGuide/formattingContents.html#intraSiteLinks)_ -width | `string` | | The width of the diagram in pixels.
If both width and height are specified, width takes priority over height. It is to maintain the diagram's aspect ratio. +Name | Type | Description +--- | --- | --- +alt | `string` | **This must be specified.**
The alternative text of the diagram. +height | `string` | The height of the diagram in pixels. +name | `string` | The name of the output file. +src | `string` | The URL of the diagram if your PUML input is in another file.
The URL can be specified as absolute or relative references. More info in: _[Intra-Site Links]({{baseUrl}}/userGuide/formattingContents.html#intraSiteLinks)_ +width | `string` | The width of the diagram in pixels.
If both width and height are specified, width takes priority over height. It is to maintain the diagram's aspect ratio. ### Example +You could have your PUML be written in a separate file or inline. + +_Markbind page separate file_: +``` + +``` + _diagrams/sequence.puml_: ``` @startuml @@ -57,9 +65,20 @@ return success @enduml ``` -_Markbind page_: +_Markbind page inline_: ``` - + +@startuml +alice -> bob ++ : hello +bob -> bob ++ : self call +bob -> bib ++ #005500 : hello +bob -> george ** : create +return done +return rc +bob -> george !! : delete +return success +@enduml + ``` diff --git a/docs/userGuide/siteConfiguration.md b/docs/userGuide/siteConfiguration.md index 9d40769090..5ac44b6c66 100644 --- a/docs/userGuide/siteConfiguration.md +++ b/docs/userGuide/siteConfiguration.md @@ -98,8 +98,11 @@ _(Optional)_ **The theme for the generated site.** Uses the default Bootstrap th **An array of pages to be rendered.** -* **`src`**/**`glob`**: `src` can be used to specify a file e.g., `docs/index.md`.
- Alternatively, `glob` can be used to define a file pattern in the [_glob syntax_](https://en.wikipedia.org/wiki/Glob_(programming)) e.g., `**/*.md`. +* **`src/glob`** + * `src` can be used to specify a single file, or an array of files.
+ {{ icon_examples }} `docs/index.md` or `[ 'docs/index.md', 'docs/userGuide.md' ]` { .my-1 } + * `glob` can be used alternatively to define a file pattern in the [_glob syntax_](https://en.wikipedia.org/wiki/Glob_(programming)), or an array of such file patterns.
+ {{ icon_examples }} `**/*.md` or `[ '**/*.md', '**/*.mbdf' ]` { .my-2 } * **`title`**: The page `` for the generated web page. Titles specified here take priority over titles specified in the [front matter](addingPages.html#front-matter) of individual pages. * **`layout`**: The [layout](tweakingThePageStructure.html#page-layouts) to be used by the page. Default: `default`. * **`searchable`**: Specifies that the page(s) should be excluded from searching. Default: `yes`. @@ -198,3 +201,36 @@ The example above uses tags as an example of configuring plugin settings, refer #### **`enableSearch`** **Specifies that the website should use MarkBind's search functionality.** Default: `true`. See [User Guide: Making the Site Searchable](makingTheSiteSearchable.html) for more details. + +#### **`disableHtmlBeautify`** + +**Turn off html beautification done by [js-beautify](https://github.com/beautify-web/js-beautify) for html files generated by MarkBind.** By default, MarkBind beautifies the HTML files it generates, which helps in user-friendly viewing and editing. +You can choose to turn this option off to improve the performance of the MarkBind `build` process. +<br> +To turn off the option, add the following to `site.json` - +```js +... +"disableHtmlBeautify": true, +... +``` + +#### **`timeZone`** + +**Time zone of the [time stamp](reusingContents.html#built-in-variable-timestamp).** Default: `"UTC"`. + +<panel type="minimal" header="Time Zone Options"> + <include src="pages/timeZones.md" /> +</panel> + +<br> + +#### **`locale`** + +**Language by locale used for the [time stamp](reusingContents.html#built-in-variable-timestamp).** Default: `"en-GB"` (`English (United Kingdom)`). <br> +The date format is thus - <br> +`<Day>, <Date> <Month> <Year>, <24-hour Time> <Time Zone Code>`. + +<panel type="minimal" header="Locale Options"> + <include src="pages/locales.md" /> +</panel> +<br> diff --git a/docs/userGuide/syntax/boxes.mbdf b/docs/userGuide/syntax/boxes.mbdf index 6b18935742..5179a6615b 100644 --- a/docs/userGuide/syntax/boxes.mbdf +++ b/docs/userGuide/syntax/boxes.mbdf @@ -70,7 +70,7 @@ <box type="info" dismissible> dismissible info </box> -<box type="success" header="#### Header :rocket:" icon-size="2x"> +<box type="success" header="#### Header :rocket: { .no-index }" icon-size="2x"> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. <box type="warning" header="You can use **markdown** here! :pizza:" dismissible> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. @@ -219,6 +219,38 @@ As <code>light</code> and <code>seamless</code> are mutually exclusive styles, < </span> </include> +**You can remove the background, icon and borders of preset styles.** + +<box type="info"> +Custom styles (<code>background-color</code>, <code>border-color</code>, <code>border-left-color</code>, <code>icon</code>) as introduced in the previous section, takes precedence over and are not affected by <code>no-background</code>, <code>no-border</code>, <code>no-icon</code> +</box> + + +<include src="outputBox.md" boilerplate > +<span id="code"> + +```html +<box no-icon no-background type="success"> + success box without a tick icon and backgound +</box> + +<box no-border type="definition" light> + definition type box, light style without border +</box> +``` +</span> + +<span id="output"> +<box no-icon no-background type="success"> + success box without a tick icon and backgound +</box> + +<box no-border type="definition" light> + definition type box, light style without border +</box> +</span> +</include> + **You can also use icons and resize them accordingly.** <include src="outputBox.md" boilerplate > @@ -264,6 +296,12 @@ header <hr style="margin-top:0.2rem; margin-bottom:0" /> <small>heading <br> (de type | `String` | `'none'` | Supports: `info`, `warning`, `success`, `important`, `wrong`, `tip`, `definition`, or empty for default. light | `Boolean` | `false` | Uses a light color scheme for the box. seamless | `Boolean` | `false` | Uses a seamless style for the box. If `light` is specified, this style will not be activated. +no-border | `Boolean` | `false` | Removes border, except if styled by `border-color` or `border-left-color`. +no-backgound | `Boolean` | `false` | Removes background, except if styled by `backgound-color` option. +no-icon | `Boolean` | `false` | Removes icon, except if icon is displayed via `icon` option. +type | `String` | `'none'` | Supports: `info`, `warning`, `success`, `important`, `wrong`, `tip`, `definition`, or empty for default. +light | `Boolean` | `false` | Uses a light color scheme for the box. +seamless | `Boolean` | `false` | Uses a seamless style for the box. If `light` is specified, this style will not be activated. <span id="short" class="d-none"> ```html diff --git a/docs/userGuide/syntax/code.mbdf b/docs/userGuide/syntax/code.mbdf index d9b0c45701..d30752f700 100644 --- a/docs/userGuide/syntax/code.mbdf +++ b/docs/userGuide/syntax/code.mbdf @@ -1,11 +1,24 @@ ## Code -MarkBind can provide syntax coloring and line numbers for a code block (aka _Fenced Code Blocks_). +#### Fenced Code +MarkBind provides several features, some of which are added on top of the existing functionality of Markdown's _fenced code blocks_. + +<small>More info: https://www.markdownguide.org/extended-syntax#fenced-code-blocks</small> + + +Features: +- Syntax coloring +- Line numbering +- Line highlighting +- Code block headers + +##### Syntax coloring +To enable syntax coloring, specify a language next to the backticks before the fenced code block. <span id="main-example"> <include src="outputBox.md" boilerplate > <span id="code"> -```` +```` {.no-line-numbers} ```xml <foo> <bar type="name">goo</bar> @@ -24,12 +37,13 @@ MarkBind can provide syntax coloring and line numbers for a code block (aka _Fen </include> </span> -As seen above, line numbers are automatically provided for a code block. To hide line numbers, add the class `no-line-numbers ` to the code block like below: +##### Line numbering +Line numbers are provided by default. To hide line numbers, add the class `no-line-numbers` to the code block as below <include src="outputBox.md" boilerplate > <span id="code"> -```` +```` {.no-line-numbers} ```xml {.no-line-numbers} <foo> <bar type="name">goo</bar> @@ -47,9 +61,142 @@ As seen above, line numbers are automatically provided for a code block. To hide </span> </include> -<small>More info: https://www.markdownguide.org/extended-syntax#fenced-code-blocks</small> +You can have your line numbers start with a value other than `1` with the `start-from` attribute. + +<include src="outputBox.md" boilerplate > +<span id="code"> + +```` {.no-line-numbers} +```js {start-from=6} +function add(a, b) { + return a + b; +} +``` +```` +</span> +<span id="output"> + +```js {start-from=6} +function add(a, b) { + return a + b; +} +``` +</span> +</include> + + +##### Line highlighting +To highlight lines, add the attribute `highlight-lines` with the line numbers as value, as shown below. You can specify ranges or individual line numbers. + +<include src="outputBox.md" boilerplate > +<span id="code"> + +```` {.no-line-numbers} +```java {highlight-lines="2,4,6-8"} +import java.util.List; + +public class Inventory { + private List<Item> items; + + public int getItemCount(){ + return items.size(); + } + + //... +} +``` +```` +</span> +<span id="output"> + +```java {highlight-lines="2,4,6-8"} +import java.util.List; + +public class Inventory { + private List<Item> items; + + public int getItemCount(){ + return items.size(); + } + + //... +} +``` +</span> +</include> + +##### Heading +To add a heading, add the attribute `heading` with the heading text as the value, as shown below. + +<include src="outputBox.md" boilerplate > +<span id="code"> + +```` {.no-line-numbers} +```xml {heading="Heading title"} +<foo> + <bar type="name">goo</bar> +</foo> +``` +```` +</span> +<span id="output"> + +```xml {heading="Heading title"} +<foo> + <bar type="name">goo</bar> +</foo> +``` +</span> +</include> -In addition, MarkBind can apply syntax-coloring on inline code too. +Headings support inline Markdown, except for `Inline Code` and %%Dim%% text styles. + +<include src="outputBox.md" boilerplate > +<span id="code"> + +```` {.no-line-numbers} +```{heading="**Bold**, _Italic_, ___Bold and Italic___, ~~Strike through~~, ****Super Bold****, ++Underline++, ==Highlight==, :+1: :exclamation: :x: :construction:<br>We support page breaks"} +<foo></foo> +``` +```` +</span> +<span id="output"> + +```{heading="**Bold**, _Italic_, ___Bold and Italic___, ~~Strike through~~, ****Super Bold****, ++Underline++, ==Highlight==, :+1: :exclamation: :x: :construction:<br>We support page breaks"} +<foo></foo> +``` +</span> +</include> + +##### Using multiple features +You can also use multiple features together, as shown below. + +<include src="outputBox.md" boilerplate > +<span id="code"> + +```` {.no-line-numbers} +```xml {highlight-lines="2" heading="Heading title"} +<foo> + <bar type="name">goo</bar> +</foo> +``` +```` +</span> +<span id="output"> + +```xml {highlight-lines="2" heading="Heading title"} +<foo> + <bar type="name">goo</bar> +</foo> +``` +</span> +</include> + +#### Inline Code +##### Syntax coloring + + +MarkBind can apply syntax-coloring on inline code too. <include src="outputBox.md" boilerplate > <span id="code"> @@ -88,4 +235,4 @@ or the java code `public static void main(String[] args)`{.java}. ``` Syntax coloring for inline code: `<bar type="name">goo</bar>`{.xml} too! -</span> \ No newline at end of file +</span> diff --git a/docs/userGuide/syntax/extra/triggers.mbdf b/docs/userGuide/syntax/extra/triggers.mbdf index 56d70d2b91..ff6d7d0edd 100644 --- a/docs/userGuide/syntax/extra/triggers.mbdf +++ b/docs/userGuide/syntax/extra/triggers.mbdf @@ -14,5 +14,5 @@ Additionally, multiple Triggers could share the same overlay by providing them w Name | Type | Default | Description ---- | ---- | ------- | ------ -trigger | `String` | `hover` | How the overlay view is triggered.<br>Supports: `click`, `focus`, `hover`, `contextmenu`. +trigger | `String` | `hover` | How the overlay view is triggered.<br>Supports: `click`, `focus`, `hover`. for | `String` | `null` | The id for the overlay view to be shown. \ No newline at end of file diff --git a/docs/userGuide/syntax/footnotes.mbdf b/docs/userGuide/syntax/footnotes.mbdf index 7ae4379b6b..9cb6ad107c 100644 --- a/docs/userGuide/syntax/footnotes.mbdf +++ b/docs/userGuide/syntax/footnotes.mbdf @@ -44,6 +44,13 @@ note.] </include> </span> +<box type="warning"> + +Normal footnotes won't work when used inside the attributes of markbind components! +<br> +For example, it won't work in the `header` attribute of [panels](../usingComponents.html#panels). +</box> + <span id="short" class="d-none"> ```html diff --git a/docs/userGuide/syntax/modals.mbdf b/docs/userGuide/syntax/modals.mbdf index cdfbe0abea..4a26a25579 100644 --- a/docs/userGuide/syntax/modals.mbdf +++ b/docs/userGuide/syntax/modals.mbdf @@ -22,6 +22,15 @@ This is the same <trigger for="modal:loremipsum">trigger</trigger> as last one. Centered </modal> +<trigger for="modal:ok-text">This is a trigger for a modal with a custom OK button</trigger>. + +<modal header="OK button visible!" id="modal:ok-text" ok-text="Custom OK"> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore + magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +</modal> + ``` </span> <span id="output"> @@ -41,6 +50,15 @@ This is the same <trigger for="modal:loremipsum">trigger</trigger> as last one. <modal header="**Centered** :rocket:" id="modal:centered" center> Centered </modal> + + <trigger for="modal:ok-text">This is a trigger for a modal with a custom OK button</trigger>. + + <modal header="OK button visible!" id="modal:ok-text" ok-text="Custom OK"> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore + magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. + Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + </modal> </span> </include> @@ -54,9 +72,7 @@ Name | type | Default | Description header <hr style="margin-top:0.2rem; margin-bottom:0" /> <small>title <br> (deprecated)</small> | `String` | `''` | Header of the Modal component. Supports inline markdown text. ok-text | `String` | `''` | Text for the OK button. effect | `String` | `zoom` | Supports: `zoom`, `fade`. -id | `String` | | Used by [Trigger](#trigger) to activate the Modal by id. -width | `Number`, `String`, or `null` | `null` | Passing a `Number` will be translated to pixels.<br>`String` can be passed [CSS units](https://www.w3schools.com/cssref/css_units.asp), ( e.g. '50in' or '30vw' ).<br>`null` will default to Bootstrap's responsive sizing. -large | `Boolean` | `false` | Creates a [large Modal](https://getbootstrap.com/docs/4.0/components/modal/#optional-sizes). +id | `String` | | Used by [Trigger](#trigger) to activate the Modal by id.large | `Boolean` | `false` | Creates a [large Modal](https://getbootstrap.com/docs/4.0/components/modal/#optional-sizes). small | `Boolean` | `false` | Creates a [small Modal](https://getbootstrap.com/docs/4.0/components/modal/#optional-sizes). center | `Boolean` | `false` | Vertically centers the modal (in addition to the horizontal centering by default). backdrop | `Boolean` | `true` | Enables closing the Modal by clicking on the backdrop. diff --git a/docs/userGuide/syntax/navBars.mbdf b/docs/userGuide/syntax/navBars.mbdf index 80a67f661f..84ad703128 100644 --- a/docs/userGuide/syntax/navBars.mbdf +++ b/docs/userGuide/syntax/navBars.mbdf @@ -106,10 +106,15 @@ type | `String` | `primary` | Supports: `primary`, `dark`, `light`, `none`. <box type="tip"> -If you wish to further customize your navbar beyond the primary, dark, and light theme colors, specify the `type="none"` attribute and [insert your own custom styles](#inserting-custom-classes-into-components) via the `add-class` attribute. +If you wish to further customize your navbar beyond the primary, dark, and light theme colors, specify the `type="none"` attribute and [insert your own custom styles](#inserting-custom-classes-into-components) or <trigger trigger="click" for="modal:built-in-bg">use built-in background styles</trigger> via the `add-class` attribute. </box> +<modal header="Built-in background styles" id="modal:built-in-bg"> +<md>For instance, Bootstrap supports `.bg-danger`, `bg-info`, `bg-primary`, `bg-success`, `bg-warning` as background colors.</md> +<md>In `{your-site}/_markbind/headers/header.md`, you can change `<navbar type="dark/primary/light">` to `<navbar type="none" add-class="bg-warning/danger/info/primary/success">` to apply Bootstrap background styles.</md> +</modal> + <span id="short" class="d-none"> diff --git a/docs/userGuide/syntax/pageHead.mbdf b/docs/userGuide/syntax/pageHead.mbdf index 043caad28c..8975115082 100644 --- a/docs/userGuide/syntax/pageHead.mbdf +++ b/docs/userGuide/syntax/pageHead.mbdf @@ -10,13 +10,11 @@ Steps: {{ icon_example }} Suppose you want to insert the code below into the `<head>` of a page, and you have saved the code as **`_markbind/head/`**`myCustomLinks.md`: -<box> - -`<script src="`{{ showBaseUrlCode }}`/js/myCustomScript.js"></script>`<br> -`<link rel="stylesheet" href="`{{ showBaseUrlCode }}`/css/main.css">`<br> -`<link rel="stylesheet" href="`{{ showBaseUrlCode }}`/css/extra.css">` - -</box> +```html{.no-line-numbers} +<script src="{{ baseUrl }}/js/myCustomScript.js"></script> +<link rel="stylesheet" href="{{ baseUrl }}/css/main.css"> +<link rel="stylesheet" href="{{ baseUrl }}/css/extra.css"> +``` To specify that you want to insert `myCustomLinks.md` into the `<head>` of `myPage.html`, update the front matter of the `myPage.md` as follows: ```html @@ -34,15 +32,13 @@ To specify that you want to insert `myCustomLinks.md` into the `<head>` of `myPa {{ icon_example }} Here's how you can force the line `<script ... > ... </script>` to be inserted at the top of the `<head>` section. -<box> - -**`<head-top>`**<br> -  `<script src="`{{ showBaseUrlCode }}`/js/myCustomScript.js"></script>`<br> -**`</head-top>`**<br> -`<link rel="stylesheet" href="`{{ showBaseUrlCode }}`/css/main.css">`<br> -`<link rel="stylesheet" href="`{{ showBaseUrlCode }}`/css/extra.css">` - -</box> +```html {.no-line-numbers highlight-lines="1,3"} +<head-top> + <script src="{{ baseUrl }}/js/myCustomScript.js"></script> +</head-top> +<link rel="stylesheet" href="{{ baseUrl }}/css/main.css"> +<link rel="stylesheet" href="{{ baseUrl }}/css/extra.css"> +``` </div> @@ -62,15 +58,13 @@ To specify that you want to insert `myCustomLinks.md` into the `<head>` of `myPa `_markbind/head/myCustomLinks.md`: -<box> - -**`<head-top>`**<br> -  `<script src="`{{ showBaseUrlCode }}`/js/myCustomScript.js"></script>`<br> -**`</head-top>`**<br> -`<link rel="stylesheet" href="`{{ showBaseUrlCode }}`/css/main.css">`<br> -`<link rel="stylesheet" href="`{{ showBaseUrlCode }}`/css/extra.css">` - -</box> +```html{.no-line-numbers highlight-lines="1,3"} +<head-top> +<script src="`{{ baseUrl }}`/js/myCustomScript.js"></script> +</head-top> +<link rel="stylesheet" href="`{{ baseUrl }}`/css/main.css"> +<link rel="stylesheet" href="`{{ baseUrl }}`/css/extra.css"> +``` ```html <frontmatter> diff --git a/docs/userGuide/syntax/pageLayouts.mbdf b/docs/userGuide/syntax/pageLayouts.mbdf index 84af369ca1..f5fe9e24d5 100644 --- a/docs/userGuide/syntax/pageLayouts.mbdf +++ b/docs/userGuide/syntax/pageLayouts.mbdf @@ -1,3 +1,6 @@ +<!--- +TODO: Change to a proper escape tag once PR#1049 is ready. +--> <variable name="mainContentBody"> <code>{<span></span>{ MAIN_CONTENT_BODY }}</code> </variable> @@ -11,7 +14,7 @@ A layout consists of the following files: 1. A footer (filename: `footer.md`) 1. Tweaks to the `<head>` (`head.md`) 1. A site navigation menu (`navigation.md`) -1. An expressive layout template to embed your content (`page.md`) +1. An expressive layout template to embed your content (`page.md`) 1. Custom styles (`styles.css`) 1. Custom scripts (`scripts.js`) @@ -114,27 +117,18 @@ which injects the actual page content in every page. This allows you to build la {{ icon_example }} Adding statistics formula to the bottom of every page -<box> -<i>index.md</i> -<br><br> - - ```html + ```html {heading="index.md"} #### Main content of your page Content of your page ``` -</box> -<box> -<i>page.md</i> -<br><br> - {{ mainContentBody }} - ```html + ```html {heading="page.md"} + {{ mainContentBody }} <panel header="Statistics Formula for the class" type="primary"> <img src="path_to_your_formula.png" /> </panel> ``` -</box> Here's how the above content would appear: diff --git a/docs/userGuide/syntax/popovers.mbdf b/docs/userGuide/syntax/popovers.mbdf index 279fab7fc4..00a815bec4 100644 --- a/docs/userGuide/syntax/popovers.mbdf +++ b/docs/userGuide/syntax/popovers.mbdf @@ -36,8 +36,8 @@ <popover effect="scale" header="Header" content="Lorem ipsum dolor sit amet" placement="top" trigger="hover"> <button class="btn btn-secondary">Mouseenter</button> </popover> - <popover effect="scale" header="Header" content="Lorem ipsum dolor sit amet" placement="top" trigger="contextmenu"> - <button class="btn btn-secondary">Contextmenu (right click)</button> + <popover effect="scale" header="Header" content="Lorem ipsum dolor sit amet" placement="top" trigger="click"> + <button class="btn btn-secondary">Click</button> </popover> </p> <h4 class="no-index">Markdown</h4> @@ -93,9 +93,6 @@ <popover effect="scale" header="Header" content="Lorem ipsum dolor sit amet" placement="top" trigger="hover"> <button class="btn btn-secondary">Mouseenter</button> </popover> - <popover effect="scale" header="Header" content="Lorem ipsum dolor sit amet" placement="top" trigger="contextmenu"> - <button class="btn btn-secondary">Contextmenu (right click)</button> - </popover> </p> <h4 class="no-index">Markdown</h4> <p> @@ -146,8 +143,7 @@ This is the same <trigger for="pop:trigger_id">trigger</trigger> as last one. Name | Type | Default | Description ---- | ---- | ------- | ------ -trigger | `String` | `hover` | How the Popover is triggered.<br>Supports: `click`, `focus`, `hover`, `contextmenu`. -effect | `String` | `fade` | Transition effect for Popover.<br>Supports: `scale`, `fade`. +trigger | `String` | `hover` | How the Popover is triggered.<br>Supports: `click`, `focus`, `hover`. header <hr style="margin-top:0.2rem; margin-bottom:0" /> <small>title <br> (deprecated)</small> | `String` | `''` | Popover header, supports inline markdown text. content | `String` | `''` | Popover content, supports inline markdown text. placement | `String` | `top` | How to position the Popover.<br>Supports: `top`, `left`, `right`, `bottom`. diff --git a/docs/userGuide/syntax/siteNavigationMenus.mbdf b/docs/userGuide/syntax/siteNavigationMenus.mbdf index eedcc46b54..73762da659 100644 --- a/docs/userGuide/syntax/siteNavigationMenus.mbdf +++ b/docs/userGuide/syntax/siteNavigationMenus.mbdf @@ -3,26 +3,26 @@ **A _Site Navigation Menu_ (==_siteNav_ for short==) is a fixed menu on the ==left edge== of a page**, that can be used to show a road map of the main pages of your site. Steps to add a siteNav: -1. Format your siteNav as an unordered Markdown list and save it inside the `_markbind/navigation` directory. +1. Format your siteNav as an unordered Markdown list and save it inside the `_markbind/navigation` directory. You may include dividers in the siteNav via <a href="{{ baseUrl }}/userGuide/readerfacingfeatures#horizontal-rules">horizontal rules</a>. 2. Specify the file as the value of the `siteNav` attribute in the `<frontmatter>` of the page. <div class="indented"> {{ icon_example }} Here is an example siteNav code saved in **`_markbind/navigation/`**`mySiteNav.md` file: -<box> - -<code> -* [:house: Home]({{ showBaseUrlText }}/index.html)<br> -* Docs<br> -  * [User Guide]({{ showBaseUrlText }}/ug.html)<br> -  * [Dev Guide]({{ showBaseUrlText }}/dg.html)<br> -* [Search]({{ showBaseUrlText }}/search.html)<br> -  * [Google Search](https://www.google.com/)<br> -  * [YouTube Search](https://www.youtube.com/)<br> -* [Contact]({{ showBaseUrlText }}/contact.html) -</code> -</box> +```{.no-line-numbers} +* [:house: Home]({{ baseUrl }}/index.html) +--- +* Docs + * [User Guide]({{ baseUrl }}/ug.html) + * [Dev Guide]({{ baseUrl }}/dg.html) +--- +* [Search]({{ baseUrl }}/search.html) + * [Google Search](https://www.google.com/) + * [YouTube Search](https://www.youtube.com/) +--- +* [Contact]({{ baseUrl }}/contact.html) +``` Here's how another page can make use of the above siteNav: @@ -37,6 +37,7 @@ Here's how the above siteNav will appear: <ul style="list-style-type: none; margin-left:-1em"> <li style="margin-top: 10px"><a class="site-nav__a" href="/index.html">🏠 Home</a></li> + <hr> <li style="margin-top: 10px"> <button class="dropdown-btn">Docs <i class="dropdown-btn-icon"> <span class="glyphicon glyphicon-menu-down" aria-hidden="true"></span></i></button> @@ -47,12 +48,15 @@ Here's how the above siteNav will appear: </ul> </div> </li> + <hr> <li style="margin-top:10px"><a class="site-nav__a" href="">Search</a> <ul style="list-style-type: none; margin-left:-1em"> <li style="margin-top: 10px"><a class="site-nav__a" href="http://www.google.com">Google Search</a></li> <li style="margin-top: 10px"><a class="site-nav__a" href="http://www.youtube.com">YouTube Search</a></li> </ul> </li> + <hr> + <li style="margin-top:10px"><a class="site-nav__a" href="">Contact</a></li> </ul> </div> @@ -68,24 +72,22 @@ You may have additional HTML and Markdown content in a <tooltip content="the fil {{ icon_example }} A siteNav code using a `<navigation>` tag. -<box> - -<code> -# Site Map<br> -<strong><<span></span>navigation></strong><br> -* [:house: Home]({{ showBaseUrlText }}/index.html)<br> -* Docs<br> -  * [User Guide]({{ showBaseUrlText }}/ug.html)<br> -  * [Dev Guide]({{ showBaseUrlText }}/dg.html)<br> -* [Search]({{ showBaseUrlText }}/search.html)<br> -<strong><<span></span>/navigation></strong><br> -</code> -</box> +```{.no-line-numbers} +# Site Map +<navigation> +* [:house: Home]({{ baseUr }}/index.html) +* Docs + * [User Guide]({{ baseUrl }}/ug.html) + * [Dev Guide]({{ baseUrl }}/dg.html) +* [Search]({{ baseUrl }}/search.html) +</navigation> +``` + </div> More than one siteNav file can be in `_markbind/navigation/` directory but a page may not have more than one siteNav. -A siteNav has a fixed width of 300 pixels for its contents. A siteNavs is [_responsive_](https://www.w3schools.com/html/html_responsive.asp) in that it will collapse to a menu button when the screen width is smaller than 992 pixels. It will then be completely hidden when the screen size is smaller than 576 pixels. +A siteNav has a fixed width of 300 pixels for its contents. A siteNav is [_responsive_](https://www.w3schools.com/html/html_responsive.asp) in that it will collapse to a menu button when the screen width is smaller than 992 pixels. It will then be completely hidden when the screen size is smaller than 576 pixels. There is no limit to the number of nesting levels or the number of items in the menu, but note that any content exceeding a height of 1000 pixels will be cut off. @@ -94,17 +96,16 @@ If you wish to use a Layout but exclude its navigation file, specify `siteNav: n <span id="short" class="d-none"> -<code> -# Site Map<br> -<strong><<span></span>navigation></strong><br> -* [:house: Home]({{ showBaseUrlText }}/index.html)<br> -* Docs :expanded:<br> -  * [User Guide]({{ showBaseUrlText }}/ug.html)<br> -  * [Dev Guide]({{ showBaseUrlText }}/dg.html)<br> -* [Search]({{ showBaseUrlText }}/search.html)<br> -<strong><<span></span>/navigation></strong><br> -</code> -</box> +```{.no-line-numbers} +# Site Map +<navigation> +* [:house: Home]({{ baseUrl }}/index.html) +* Docs :expanded: + * [User Guide]({{ baseUrl }}/ug.html) + * [Dev Guide]({{ baseUrl }}/dg.html) +* [Search]({{ baseUrl }}/search.html) +</navigation> +``` ```html <frontmatter> diff --git a/docs/userGuide/syntax/tags.mbdf b/docs/userGuide/syntax/tags.mbdf index 3f30c21a46..00ace27d59 100644 --- a/docs/userGuide/syntax/tags.mbdf +++ b/docs/userGuide/syntax/tags.mbdf @@ -1,5 +1,5 @@ -<include src="../plugins/filterTags.mbdf" /> +<include src="../plugins/tags.mbdf" /> <span id="short" class="d-none"> - <include src="../plugins/filterTags.mbdf#short" /> + <include src="../plugins/tags.mbdf#short" /> </span> diff --git a/docs/userGuide/syntax/textStyles.mbdf b/docs/userGuide/syntax/textStyles.mbdf index 52ccc99bae..f0f06e29ab 100644 --- a/docs/userGuide/syntax/textStyles.mbdf +++ b/docs/userGuide/syntax/textStyles.mbdf @@ -41,12 +41,12 @@ Syntax added by MarkBind: <span id="code"> ```markdown -****Super Bold****, ++Underline++, ==Highlight==, %%Dim%% +****Super Bold****, ++Underline++, ==Highlight==, %%Dim%%, Super^script^, Sub~script~ ``` </span> <span id="output"> -****Super Bold****, ++Underline++, ==Highlight==, %%Dim%% +****Super Bold****, ++Underline++, ==Highlight==, %%Dim%%, Super^script^, Sub~script~ </span> </include> @@ -57,11 +57,11 @@ Syntax added by MarkBind: <span id="short" class="d-none"> ```markdown **Bold**, _Italic_, ___Bold and Italic___, `Inline Code` -~~Strike through~~, ****Super Bold****, ++Underline++, ==Highlight==, %%Dim%% +~~Strike through~~, ****Super Bold****, ++Underline++, ==Highlight==, %%Dim%%, Super^script^, Sub~script~ ``` </span> <span id="examples" class="d-none"> **Bold**, _Italic_, ___Bold and Italic___, `Inline Code` -~~Strike through~~, ****Super Bold****, ++Underline++, ==Highlight==, %%Dim%% -</span> \ No newline at end of file +~~Strike through~~, ****Super Bold****, ++Underline++, ==Highlight==, %%Dim%%, Super^script^, Sub~script~ +</span> diff --git a/docs/userGuide/syntax/tooltips.mbdf b/docs/userGuide/syntax/tooltips.mbdf index b8c9949ac5..67d15124ad 100644 --- a/docs/userGuide/syntax/tooltips.mbdf +++ b/docs/userGuide/syntax/tooltips.mbdf @@ -22,9 +22,6 @@ Trigger <tooltip effect="scale" content="Lorem ipsum dolor sit amet" placement="top" trigger="click"> <button class="btn btn-secondary">Click</button> </tooltip> - <tooltip effect="scale" content="Lorem ipsum dolor sit amet" placement="top" trigger="contextmenu"> - <button class="btn btn-secondary">Contextmenu (right click)</button> - </tooltip> <br /> <br /> <tooltip effect="scale" content="Lorem ipsum dolor sit amet" placement="top" trigger="focus"> @@ -61,9 +58,6 @@ Trigger <tooltip effect="scale" content="Lorem ipsum dolor sit amet" placement="top" trigger="click"> <button class="btn btn-secondary">Click</button> </tooltip> - <tooltip effect="scale" content="Lorem ipsum dolor sit amet" placement="top" trigger="contextmenu"> - <button class="btn btn-secondary">Contextmenu (right click)</button> - </tooltip> <br /> <br /> <tooltip effect="scale" content="Lorem ipsum dolor sit amet" placement="top" trigger="focus"> @@ -111,7 +105,7 @@ This is the same <trigger for="tt:trigger_id">trigger</trigger> as last one. Name | Type | Default | Description ---- | ---- | ------- | ------ -trigger | `String` | `hover` | How the tooltip is triggered.<br>Supports: `click`, `focus`, `hover`, `contextmenu`. +trigger | `String` | `hover` | How the tooltip is triggered.<br>Supports: `click`, `focus`, `hover`. content | `String` | `''` | Text content of the tooltip. placement | `String` | `top` | How to position the tooltip.<br>Supports: `top`, `left`, `right`, `bottom`. diff --git a/docs/userGuide/syntax/variables.mbdf b/docs/userGuide/syntax/variables.mbdf index fcbcb4b27a..4b712f4bc9 100644 --- a/docs/userGuide/syntax/variables.mbdf +++ b/docs/userGuide/syntax/variables.mbdf @@ -56,7 +56,9 @@ Represents the root directory of the project. Used for specifying intra-site lin ##### Built-in Variable: `timestamp` -<code>{<span></span>{ timestamp }}</code> is the time stamp (in UTC) that indicates when the page was generated. +<code>{<span></span>{ timestamp }}</code> is the time stamp that indicates when the page was generated. + +The default values of `"timeZone"` and `"locale"` are `"UTC"` and `"en-GB"` respectively. The following example showcases the use of the `"Asia/Singapore"` time zone. <div class="indented"> @@ -170,6 +172,26 @@ However, this is a combination of *both* syntaxes above, and thus this will allo </box> +### Defining variables with JSON + +You could also have your variables defined in a JSON file to define multiple variables in a more concise manner. + +{{ icon_example }} +`variables.md`: +```html +<variable from="variables.json" /> +``` + +`variables.json`: +```json +{ + "variable1": "This is the first variable", + "variable2": "This is the second variable" +} +``` + +Variables defined in JSON file will be scoped according to where it is being referenced. + ### Variables: Tips and Tricks **Variables can refer to other variables** that are declared earlier, including built-in variables. @@ -216,6 +238,25 @@ You must use the `safe` filter when using such variables: <code>{<span></span>{ const_note }}</code> :fas-arrow-right: <span style="color: blue">Note: </span> This is a constant. </div> +When defining variables with incomplete HTML fragments, we can define variables as a separate JSON file. + +{{ icon_example }} variables containing HTML fragments:<br> + +`index.md`: +```html +<variable from="variableFileName.json" /> +``` + +`variableFileName.json`: +```json +{ + "back_fragment": "Back</div>", + "front_fragment": "<div>Front" +} +``` + +<code>{<span></span>{ front_fragment }}</code> and <code>{<span></span>{ back_fragment }}</code> :fas-arrow-right: Front and Back + <span id="short" class="d-none"> Global variables: diff --git a/docs/userGuide/tweakingThePageStructure.md b/docs/userGuide/tweakingThePageStructure.md index 22b4b3a479..ddc5970bf2 100644 --- a/docs/userGuide/tweakingThePageStructure.md +++ b/docs/userGuide/tweakingThePageStructure.md @@ -4,7 +4,7 @@ <frontmatter> title: "User Guide: {{ title }}" layout: userGuide - pageNav: 3 + pageNav: 2 </frontmatter> <span id="link" class="d-none"> @@ -43,7 +43,7 @@ <hr><!-- ======================================================================================================= --> -<include src="plugins/filterTags.mbdf" /> +<include src="plugins/tags.mbdf" /> {% from "njk/common.njk" import previous_next %} {{ previous_next('usingPlugins', 'reusingContents') }} diff --git a/docs/userGuide/usingPlugins.md b/docs/userGuide/usingPlugins.md index b88dbe06da..e154828d93 100644 --- a/docs/userGuide/usingPlugins.md +++ b/docs/userGuide/usingPlugins.md @@ -3,6 +3,7 @@ <frontmatter> title: "User Guide: {{ title }}" layout: userGuide + pageNav: "default" </frontmatter> # Using Plugins @@ -177,6 +178,26 @@ This allows files specified by the `src` attributes of `<puml>` tags to be watch } ``` +#### Special tags + +By default, content in html tags are parsed as html and markdown. + +However, you might want to create a plugin that has certain special tags containing conflicting syntax +you do not wish to be parsed as html or markdown. + +You can implement the `getSpecialTags` method to blacklist the content in these special tags from parsing, +removing such potential conflicts. + +- `getSpecialTags(pluginContext)`: Called during initial site generation to blacklist special tags. + - `pluginContext`: User provided parameters for the plugin. This can be specified in the `site.json`. + - Should return an array of string tag names to be blacklisted, with each tag name being at least 2 characters long. + +<box type="important"> +Note however, that variable interpolation syntax <code>{<span>{</span> variable_name <span>}</span>}</code> will act as per normal. +Meaning, the user would still be able to use variables in your special tags! +</box> + + ### Advanced: Default plugins MarkBind has a set of default plugins that it uses to carry out some of its features. These are enabled by default for every project and should be left alone. @@ -206,7 +227,8 @@ Disabling the `anchors` plugin: MarkBind has a set of built-in plugins that can be used immediately without installation. <include src="plugins/algolia.mbdf" /> -<include src="plugins/filterTags.mbdf" /> +<include src="plugins/codeBlockCopyButtons.mbdf" /> +<include src="plugins/tags.mbdf" /> <include src="plugins/googleAnalytics.mbdf" /> {% from "njk/common.njk" import previous_next %} diff --git a/index.js b/index.js index 518daea50d..19010fb091 100755 --- a/index.js +++ b/index.js @@ -21,6 +21,8 @@ const Site = require('./src/Site'); const { ACCEPTED_COMMANDS, ACCEPTED_COMMANDS_ALIAS, + INDEX_MARKDOWN_FILE, + LAZY_LOADING_SITE_FILE_NAME, } = require('./src/constants'); const CLI_VERSION = require('./package.json').version; @@ -95,26 +97,30 @@ program .description('build then serve a website from a directory') .option('-f, --force-reload', 'force a full reload of all site files when a file is changed') .option('-n, --no-open', 'do not automatically open the site in browser') - .option('-o, --one-page <file>', 'render and serve only a single page in the site') + .option('-o, --one-page [file]', 'build and serve only a single page in the site initially,' + + 'building more pages when they are navigated to. Also lazily rebuilds only the page being viewed when' + + 'there are changes to the source files (if needed), building others when navigated to') .option('-p, --port <port>', 'port for server to listen on (Default is 8080)') .option('-s, --site-config <file>', 'specify the site config file (default: site.json)') .action((userSpecifiedRoot, options) => { let rootFolder; try { rootFolder = cliUtil.findRootFolder(userSpecifiedRoot, options.siteConfig); + + if (options.forceReload && options.onePage) { + handleError(new Error('Oops! You shouldn\'t need to use the --force-reload option with --one-page.')); + process.exit(); + } } catch (err) { handleError(err); } const logsFolder = path.join(rootFolder, '_markbind/logs'); const outputFolder = path.join(rootFolder, '_site'); - if (options.onePage) { - // replace slashes for paths on Windows - // eslint-disable-next-line no-param-reassign - options.onePage = ensurePosix(options.onePage); - } + let onePagePath = options.onePage === true ? INDEX_MARKDOWN_FILE : options.onePage; + onePagePath = onePagePath ? ensurePosix(onePagePath) : onePagePath; - const site = new Site(rootFolder, outputFolder, options.onePage, options.forceReload, options.siteConfig); + const site = new Site(rootFolder, outputFolder, onePagePath, options.forceReload, options.siteConfig); const addHandler = (filePath) => { logger.info(`[${new Date().toLocaleTimeString()}] Reload for file add: ${filePath}`); @@ -152,12 +158,15 @@ program }); }; + const onePageHtmlUrl = onePagePath && `/${onePagePath.replace(/\.(md|mbd|mbdf)$/, '.html')}`; + // server config const serverConfig = { - open: options.open && (options.onePage ? `/${options.onePage.replace(/\.(md|mbd)$/, '.html')}` : true), + open: options.open && (onePageHtmlUrl || true), logLevel: 0, root: outputFolder, port: options.port || 8080, + middleware: [], mount: [], }; @@ -167,6 +176,47 @@ program .readSiteConfig() .then((config) => { serverConfig.mount.push([config.baseUrl || '/', outputFolder]); + + if (onePagePath) { + const lazyReloadMiddleware = function (req, res, next) { + const urlExtension = path.posix.extname(req.url); + + const hasEndingSlash = req.url.endsWith('/'); + const hasNoExtension = urlExtension === ''; + const isHtmlFileRequest = urlExtension === '.html' || hasEndingSlash || hasNoExtension; + + if (!isHtmlFileRequest || req.url.endsWith('._include_.html')) { + next(); + return; + } + + if (hasNoExtension && !hasEndingSlash) { + // Urls of type 'host/userGuide' - check if 'userGuide' is a raw file or does not exist + const diskFilePath = path.resolve(rootFolder, req.url); + if (!fs.existsSync(diskFilePath) || !fs.isDirectorySync(diskFilePath)) { + // Request for a raw file + next(); + return; + } + } + + const urlWithoutBaseUrl = req.url.replace(config.baseUrl, ''); + // Map 'hostname/userGuide/' and 'hostname/userGuide' to hostname/userGuide/index. + const urlWithIndex = (hasNoExtension || hasEndingSlash) + ? path.posix.join(urlWithoutBaseUrl, 'index') + : urlWithoutBaseUrl; + const urlWithoutExtension = fsUtil.removeExtension(urlWithIndex); + + const didInitiateRebuild = site.changeCurrentPage(urlWithoutExtension); + if (didInitiateRebuild) { + req.url = ensurePosix(path.join(config.baseUrl || '/', LAZY_LOADING_SITE_FILE_NAME)); + } + next(); + }; + + serverConfig.middleware.push(lazyReloadMiddleware); + } + return site.generate(); }) .then(() => { diff --git a/package-lock.json b/package-lock.json index 2ed1a0dec0..9170a4d38d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "markbind-cli", - "version": "2.11.0", + "version": "2.13.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -94,9 +94,9 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", - "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", "dev": true }, "@babel/helper-split-export-declaration": { @@ -167,13 +167,22 @@ "integrity": "sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig==", "dev": true }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, "@babel/plugin-syntax-object-rest-spread": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz", - "integrity": "sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/runtime": { @@ -250,10 +259,16 @@ "to-fast-properties": "^2.0.0" } }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, "@cnakazawa/watch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", - "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, "requires": { "exec-sh": "^0.3.2", @@ -273,108 +288,102 @@ "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.7.2.tgz", "integrity": "sha512-Ha4HshKdCVKgu4TVCtG8XyPPYdzTzNW4/fvPnn+LT7AosRABryhlRv4cc4+o84dgpvVJN9reN7jo/c+nYujFug==" }, - "@jest/console": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", - "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "@istanbuljs/load-nyc-config": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz", + "integrity": "sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg==", "dev": true, "requires": { - "@jest/source-map": "^24.9.0", - "chalk": "^2.0.1", - "slash": "^2.0.0" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true } } }, + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true + }, + "@jest/console": { + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.1.0.tgz", + "integrity": "sha512-3P1DpqAMK/L07ag/Y9/Jup5iDEG9P4pRAuZiMQnU0JB3UOvCyYCjCoxr7sIA80SeyUCUKrr24fKAxVpmBgQonA==", + "dev": true, + "requires": { + "@jest/source-map": "^25.1.0", + "chalk": "^3.0.0", + "jest-util": "^25.1.0", + "slash": "^3.0.0" + } + }, "@jest/core": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", - "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", - "dev": true, - "requires": { - "@jest/console": "^24.7.1", - "@jest/reporters": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-25.1.0.tgz", + "integrity": "sha512-iz05+NmwCmZRzMXvMo6KFipW7nzhbpEawrKrkkdJzgytavPse0biEnCNr2wRlyCsp3SmKaEY+SGv7YWYQnIdig==", + "dev": true, + "requires": { + "@jest/console": "^25.1.0", + "@jest/reporters": "^25.1.0", + "@jest/test-result": "^25.1.0", + "@jest/transform": "^25.1.0", + "@jest/types": "^25.1.0", + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-changed-files": "^24.9.0", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-resolve-dependencies": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "jest-watcher": "^24.9.0", - "micromatch": "^3.1.10", - "p-each-series": "^1.0.0", + "graceful-fs": "^4.2.3", + "jest-changed-files": "^25.1.0", + "jest-config": "^25.1.0", + "jest-haste-map": "^25.1.0", + "jest-message-util": "^25.1.0", + "jest-regex-util": "^25.1.0", + "jest-resolve": "^25.1.0", + "jest-resolve-dependencies": "^25.1.0", + "jest-runner": "^25.1.0", + "jest-runtime": "^25.1.0", + "jest-snapshot": "^25.1.0", + "jest-util": "^25.1.0", + "jest-validate": "^25.1.0", + "jest-watcher": "^25.1.0", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", "realpath-native": "^1.1.0", - "rimraf": "^2.5.4", - "slash": "^2.0.0", - "strip-ansi": "^5.0.0" + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "fill-range": "^7.0.1" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "to-regex-range": "^5.0.1" } }, "graceful-fs": { @@ -383,123 +392,116 @@ "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", "dev": true }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "is-number": "^7.0.0" } } } }, "@jest/environment": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", - "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-25.1.0.tgz", + "integrity": "sha512-cTpUtsjU4cum53VqBDlcW0E4KbQF03Cn0jckGPW/5rrE9tb+porD3+hhLtHAwhthsqfyF+bizyodTlsRA++sHg==", "dev": true, "requires": { - "@jest/fake-timers": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0" + "@jest/fake-timers": "^25.1.0", + "@jest/types": "^25.1.0", + "jest-mock": "^25.1.0" } }, "@jest/fake-timers": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", - "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-25.1.0.tgz", + "integrity": "sha512-Eu3dysBzSAO1lD7cylZd/CVKdZZ1/43SF35iYBNV1Lvvn2Undp3Grwsv8PrzvbLhqwRzDd4zxrY4gsiHc+wygQ==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0" + "@jest/types": "^25.1.0", + "jest-message-util": "^25.1.0", + "jest-mock": "^25.1.0", + "jest-util": "^25.1.0", + "lolex": "^5.0.0" } }, "@jest/reporters": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", - "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-25.1.0.tgz", + "integrity": "sha512-ORLT7hq2acJQa8N+NKfs68ZtHFnJPxsGqmofxW7v7urVhzJvpKZG9M7FAcgh9Ee1ZbCteMrirHA3m5JfBtAaDg==", "dev": true, "requires": { - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^25.1.0", + "@jest/environment": "^25.1.0", + "@jest/test-result": "^25.1.0", + "@jest/transform": "^25.1.0", + "@jest/types": "^25.1.0", + "chalk": "^3.0.0", + "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", "glob": "^7.1.2", - "istanbul-lib-coverage": "^2.0.2", - "istanbul-lib-instrument": "^3.0.1", - "istanbul-lib-report": "^2.0.4", - "istanbul-lib-source-maps": "^3.0.1", - "istanbul-reports": "^2.2.6", - "jest-haste-map": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "node-notifier": "^5.4.2", - "slash": "^2.0.0", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.0", + "jest-haste-map": "^25.1.0", + "jest-resolve": "^25.1.0", + "jest-runtime": "^25.1.0", + "jest-util": "^25.1.0", + "jest-worker": "^25.1.0", + "node-notifier": "^6.0.0", + "slash": "^3.0.0", "source-map": "^0.6.0", - "string-length": "^2.0.0" + "string-length": "^3.1.0", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^4.0.1" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, "@jest/source-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", - "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-25.1.0.tgz", + "integrity": "sha512-ohf2iKT0xnLWcIUhL6U6QN+CwFWf9XnrM2a6ybL9NXxJjgYijjLSitkYHIdzkd8wFliH73qj/+epIpTiWjRtAA==", "dev": true, "requires": { "callsites": "^3.0.0", - "graceful-fs": "^4.1.15", + "graceful-fs": "^4.2.3", "source-map": "^0.6.0" }, "dependencies": { @@ -518,70 +520,70 @@ } }, "@jest/test-result": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", - "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.1.0.tgz", + "integrity": "sha512-FZzSo36h++U93vNWZ0KgvlNuZ9pnDnztvaM7P/UcTx87aPDotG18bXifkf1Ji44B7k/eIatmMzkBapnAzjkJkg==", "dev": true, "requires": { - "@jest/console": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/istanbul-lib-coverage": "^2.0.0" + "@jest/console": "^25.1.0", + "@jest/transform": "^25.1.0", + "@jest/types": "^25.1.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", - "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-25.1.0.tgz", + "integrity": "sha512-WgZLRgVr2b4l/7ED1J1RJQBOharxS11EFhmwDqknpknE0Pm87HLZVS2Asuuw+HQdfQvm2aXL2FvvBLxOD1D0iw==", "dev": true, "requires": { - "@jest/test-result": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0" + "@jest/test-result": "^25.1.0", + "jest-haste-map": "^25.1.0", + "jest-runner": "^25.1.0", + "jest-runtime": "^25.1.0" } }, "@jest/transform": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", - "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-25.1.0.tgz", + "integrity": "sha512-4ktrQ2TPREVeM+KxB4zskAT84SnmG1vaz4S+51aTefyqn3zocZUnliLLm5Fsl85I3p/kFPN4CRp1RElIfXGegQ==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/types": "^24.9.0", - "babel-plugin-istanbul": "^5.1.0", - "chalk": "^2.0.1", + "@jest/types": "^25.1.0", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^3.0.0", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.9.0", - "jest-regex-util": "^24.9.0", - "jest-util": "^24.9.0", - "micromatch": "^3.1.10", + "graceful-fs": "^4.2.3", + "jest-haste-map": "^25.1.0", + "jest-regex-util": "^25.1.0", + "jest-util": "^25.1.0", + "micromatch": "^4.0.2", "pirates": "^4.0.1", "realpath-native": "^1.1.0", - "slash": "^2.0.0", + "slash": "^3.0.0", "source-map": "^0.6.1", - "write-file-atomic": "2.4.1" + "write-file-atomic": "^3.0.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "fill-range": "^7.0.1" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "to-regex-range": "^5.0.1" } }, "graceful-fs": { @@ -590,32 +592,49 @@ "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", "dev": true }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "is-number": "^7.0.0" } } } }, "@jest/types": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", - "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.1.0.tgz", + "integrity": "sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" } }, "@mrmlnc/readdir-enhanced": { @@ -651,10 +670,19 @@ "lodash.deburr": "^4.1.0" } }, + "@sinonjs/commons": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.1.tgz", + "integrity": "sha512-Debi3Baff1Qu1Unc3mjJ96MgpbwTn43S1+9yJ0llWygPwDNu2aaWBD6yc9y/Z8XDRNhx7U+u2UDg2OGQXkclUQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, "@types/babel__core": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.3.tgz", - "integrity": "sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.6.tgz", + "integrity": "sha512-tTnhWszAqvXnhW7m5jQU9PomXSiKXk2sFxpahXvI20SZKu9ylPi8WtIxueZ6ehDWikPT0jeFujMj3X4ZHuf3Tg==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -665,9 +693,9 @@ } }, "@types/babel__generator": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.0.tgz", - "integrity": "sha512-c1mZUu4up5cp9KROs/QAw0gTeHrw/x7m52LcnvMxxOZ03DmLwPV0MlGmlgzV3cnSdjhJOZsj7E7FHeioai+egw==", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz", + "integrity": "sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==", "dev": true, "requires": { "@babel/types": "^7.0.0" @@ -684,9 +712,9 @@ } }, "@types/babel__traverse": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.8.tgz", - "integrity": "sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw==", + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.9.tgz", + "integrity": "sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw==", "dev": true, "requires": { "@babel/types": "^7.3.0" @@ -721,9 +749,9 @@ "dev": true }, "@types/istanbul-lib-report": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", - "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "*" @@ -789,18 +817,18 @@ } }, "@types/yargs": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.3.tgz", - "integrity": "sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ==", + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.4.tgz", + "integrity": "sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg==", "dev": true, "requires": { "@types/yargs-parser": "*" } }, "@types/yargs-parser": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz", - "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", "dev": true }, "a-sync-waterfall": { @@ -829,9 +857,9 @@ } }, "acorn": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", - "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", "dev": true }, "acorn-globals": { @@ -842,6 +870,14 @@ "requires": { "acorn": "^6.0.1", "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + } } }, "acorn-jsx": { @@ -869,10 +905,21 @@ } }, "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } }, "ansi-regex": { "version": "2.1.1", @@ -1048,12 +1095,6 @@ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -1118,131 +1159,57 @@ "dev": true }, "aws4": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.0.tgz", - "integrity": "sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", "dev": true }, "babel-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", - "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-25.1.0.tgz", + "integrity": "sha512-tz0VxUhhOE2y+g8R2oFrO/2VtVjA1lkJeavlhExuRBg3LdNJY9gwQ+Vcvqt9+cqy71MCTJhewvTB7Qtnnr9SWg==", "dev": true, "requires": { - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", + "@jest/transform": "^25.1.0", + "@jest/types": "^25.1.0", "@types/babel__core": "^7.1.0", - "babel-plugin-istanbul": "^5.1.0", - "babel-preset-jest": "^24.9.0", - "chalk": "^2.4.2", - "slash": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^25.1.0", + "chalk": "^3.0.0", + "slash": "^3.0.0" } }, "babel-plugin-istanbul": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", - "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.3.0", - "test-exclude": "^5.2.3" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - } + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" } }, "babel-plugin-jest-hoist": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", - "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.1.0.tgz", + "integrity": "sha512-oIsopO41vW4YFZ9yNYoLQATnnN46lp+MZ6H4VvPKFkcc2/fkl3CfE/NZZSmnEIEsJRmJAgkVEK0R7Zbl50CpTw==", "dev": true, "requires": { "@types/babel__traverse": "^7.0.6" } }, "babel-preset-jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", - "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-25.1.0.tgz", + "integrity": "sha512-eCGn64olaqwUMaugXsTtGAM2I0QTahjEtnRu0ql8Ie+gDWAc1N6wqN0k2NilnyTunM69Pad7gJY7LOtwLimoFQ==", "dev": true, "requires": { + "@babel/plugin-syntax-bigint": "^7.0.0", "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^24.9.0" + "babel-plugin-jest-hoist": "^25.1.0" } }, "bail": { @@ -1345,6 +1312,12 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" }, + "binaryextensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.2.0.tgz", + "integrity": "sha512-bHhs98rj/7i/RZpCSJ3uk55pLXOItjIrh2sRQZSM6OoktScX+LxJzvlU+FELp9j3TdcddTmmYArLSGptCTwjuw==", + "dev": true + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -1397,9 +1370,9 @@ } }, "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true }, "browser-resolve": { @@ -1699,60 +1672,40 @@ "dev": true }, "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" } }, "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } } } @@ -1783,6 +1736,12 @@ "integrity": "sha512-703bOOmytCYAX9cXYqoikYIx6twmFCXsnzRQheBcTG3nzKYBR4P/+wkYeH+Mvj7qUz8zZDtdyzbxfnEi/kYzRQ==", "dev": true }, + "collect-v8-coverage": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.0.tgz", + "integrity": "sha512-VKIhJgvk8E1W28m5avZ2Gv2Ruv5YiF56ug2oclvaG9md69BuZImMG2sk9g7QNKLUbtYAKQjXjYxbYZVUlMMKmQ==", + "dev": true + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -1933,6 +1892,11 @@ "which": "^1.2.9" } }, + "crypto-js": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.0.0.tgz", + "integrity": "sha512-bzHZN8Pn+gS7DQA6n+iUmBfl0hO5DJq++QP3U6uTucDtk/0iGpXd/Gg7CGR0p8tJhofJyaKoWBuJI4eAO00BBg==" + }, "css-select": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", @@ -1950,18 +1914,26 @@ "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" }, "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", "dev": true }, "cssstyle": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", - "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.2.0.tgz", + "integrity": "sha512-sEb3XFPx3jNnCAMtqrXPDeSgQr+jojtCeNf8cvMNMh1cG970+lljssvQDzPq6lmmJu2Vhqood/gtEomBiHOGnA==", "dev": true, "requires": { - "cssom": "0.3.x" + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } } }, "currently-unhandled": { @@ -1996,19 +1968,6 @@ "abab": "^2.0.0", "whatwg-mimetype": "^2.2.0", "whatwg-url": "^7.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } } }, "debug": { @@ -2116,9 +2075,9 @@ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true }, "diff": { @@ -2128,9 +2087,9 @@ "dev": true }, "diff-sequences": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", - "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.1.0.tgz", + "integrity": "sha512-nFIfVk5B/NStCsJ+zaPO4vYuLjlzQ6uFvPxzYyHlejNZ/UGa7G/n7peOXVrVNvRuyfstt+mZQYGpjxg9Z6N8Kw==", "dev": true }, "dir-glob": { @@ -2240,14 +2199,13 @@ } }, "editorconfig": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.13.3.tgz", - "integrity": "sha512-WkjsUNVCu+ITKDj73QDvi0trvpdDWdkDyHybDGSXPfekLCqwmpD7CP7iPbvBgosNuLcI96XTDwNa75JyFl7tEQ==", + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", "requires": { - "bluebird": "^3.0.5", - "commander": "^2.9.0", - "lru-cache": "^3.2.0", - "semver": "^5.1.0", + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", "sigmund": "^1.0.1" }, "dependencies": { @@ -2353,24 +2311,18 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", - "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", + "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", "dev": true, "requires": { - "esprima": "^3.1.3", + "esprima": "^4.0.1", "estraverse": "^4.2.0", "esutils": "^2.0.2", "optionator": "^0.8.1", "source-map": "~0.6.1" }, "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -2638,9 +2590,9 @@ }, "dependencies": { "acorn": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", "dev": true } } @@ -2786,28 +2738,17 @@ } }, "expect": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", - "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-25.1.0.tgz", + "integrity": "sha512-wqHzuoapQkhc3OKPlrpetsfueuEiMf3iWh0R8+duCu9PIjXoP7HgD5aeypwTnXUAjC8aMsiVDaWwlbJ1RlQ38g==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "ansi-styles": "^3.2.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.9.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - } + "@jest/types": "^25.1.0", + "ansi-styles": "^4.0.0", + "jest-get-type": "^25.1.0", + "jest-matcher-utils": "^25.1.0", + "jest-message-util": "^25.1.0", + "jest-regex-util": "^25.1.0" } }, "extend": { @@ -3906,27 +3847,8 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true - }, - "handlebars": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", - "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", "dev": true, - "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } + "optional": true }, "har-schema": { "version": "2.0.0", @@ -4014,6 +3936,12 @@ "whatwg-encoding": "^1.0.1" } }, + "html-escaper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.0.tgz", + "integrity": "sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==", + "dev": true + }, "html-tags": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz", @@ -4108,6 +4036,12 @@ "sshpk": "^1.7.0" } }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, "humanize-url": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/humanize-url/-/humanize-url-1.0.1.tgz", @@ -4148,65 +4082,22 @@ "dev": true }, "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", "dev": true, "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" }, "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { - "find-up": "^3.0.0" + "find-up": "^4.0.0" } } } @@ -4324,14 +4215,11 @@ } } }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true }, "is-accessor-descriptor": { "version": "0.1.6", @@ -4613,24 +4501,24 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", "dev": true }, "istanbul-lib-instrument": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", - "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", + "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", "dev": true, "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" + "@babel/core": "^7.7.5", + "@babel/parser": "^7.7.5", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" }, "dependencies": { "semver": { @@ -4642,37 +4530,24 @@ } }, "istanbul-lib-report": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", - "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", "dev": true, "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" - }, - "dependencies": { - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" } }, "istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", "dev": true, "requires": { "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", + "istanbul-lib-coverage": "^3.0.0", "source-map": "^0.6.1" }, "dependencies": { @@ -4685,35 +4560,12 @@ "ms": "^2.1.1" } }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -4723,462 +4575,500 @@ } }, "istanbul-reports": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", - "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-2osTcC8zcOSUkImzN2EWQta3Vdi4WjjKw99P2yWx5mLnigAM0Rd5uYFn1cf2i/Ois45GkNjaoTqc5CxgMSX80A==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "istextorbinary": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-3.3.0.tgz", + "integrity": "sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==", "dev": true, "requires": { - "handlebars": "^4.1.2" + "binaryextensions": "^2.2.0", + "textextensions": "^3.2.0" } }, "jest": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", - "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-25.1.0.tgz", + "integrity": "sha512-FV6jEruneBhokkt9MQk0WUFoNTwnF76CLXtwNMfsc0um0TlB/LG2yxUd0KqaFjEJ9laQmVWQWS0sG/t2GsuI0w==", "dev": true, "requires": { - "import-local": "^2.0.0", - "jest-cli": "^24.9.0" + "@jest/core": "^25.1.0", + "import-local": "^3.0.2", + "jest-cli": "^25.1.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, "jest-cli": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", - "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-25.1.0.tgz", + "integrity": "sha512-p+aOfczzzKdo3AsLJlhs8J5EW6ffVidfSZZxXedJ0mHPBOln1DccqFmGCoO8JWd4xRycfmwy1eoQkMsF8oekPg==", "dev": true, "requires": { - "@jest/core": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", + "@jest/core": "^25.1.0", + "@jest/test-result": "^25.1.0", + "@jest/types": "^25.1.0", + "chalk": "^3.0.0", "exit": "^0.1.2", - "import-local": "^2.0.0", + "import-local": "^3.0.2", "is-ci": "^2.0.0", - "jest-config": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", + "jest-config": "^25.1.0", + "jest-util": "^25.1.0", + "jest-validate": "^25.1.0", "prompts": "^2.0.1", "realpath-native": "^1.1.0", - "yargs": "^13.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "yargs": "^15.0.0" } } } }, "jest-changed-files": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", - "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "execa": "^1.0.0", - "throat": "^4.0.0" - } - }, - "jest-config": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", - "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-25.1.0.tgz", + "integrity": "sha512-bdL1aHjIVy3HaBO3eEQeemGttsq1BDlHgWcOjEOIAcga7OOEGWHD2WSu8HhL7I1F0mFFyci8VKU4tRNk+qtwDA==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.9.0", - "@jest/types": "^24.9.0", - "babel-jest": "^24.9.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^24.9.0", - "jest-environment-node": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "micromatch": "^3.1.10", - "pretty-format": "^24.9.0", - "realpath-native": "^1.1.0" + "@jest/types": "^25.1.0", + "execa": "^3.2.0", + "throat": "^5.0.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "cross-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", + "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "execa": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "pump": "^3.0.0" } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "path-key": "^3.0.0" + } + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" } } } }, - "jest-diff": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", - "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "jest-config": { + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-25.1.0.tgz", + "integrity": "sha512-tLmsg4SZ5H7tuhBC5bOja0HEblM0coS3Wy5LTCb2C8ZV6eWLewHyK+3qSq9Bi29zmWQ7ojdCd3pxpx4l4d2uGw==", "dev": true, "requires": { - "chalk": "^2.0.1", - "diff-sequences": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^25.1.0", + "@jest/types": "^25.1.0", + "babel-jest": "^25.1.0", + "chalk": "^3.0.0", + "glob": "^7.1.1", + "jest-environment-jsdom": "^25.1.0", + "jest-environment-node": "^25.1.0", + "jest-get-type": "^25.1.0", + "jest-jasmine2": "^25.1.0", + "jest-regex-util": "^25.1.0", + "jest-resolve": "^25.1.0", + "jest-util": "^25.1.0", + "jest-validate": "^25.1.0", + "micromatch": "^4.0.2", + "pretty-format": "^25.1.0", + "realpath-native": "^1.1.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "fill-range": "^7.0.1" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "to-regex-range": "^5.0.1" } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" } } } }, + "jest-diff": { + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.1.0.tgz", + "integrity": "sha512-nepXgajT+h017APJTreSieh4zCqnSHEJ1iT8HDlewu630lSJ4Kjjr9KNzm+kzGwwcpsDE6Snx1GJGzzsefaEHw==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "diff-sequences": "^25.1.0", + "jest-get-type": "^25.1.0", + "pretty-format": "^25.1.0" + } + }, "jest-docblock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", - "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-25.1.0.tgz", + "integrity": "sha512-370P/mh1wzoef6hUKiaMcsPtIapY25suP6JqM70V9RJvdKLrV4GaGbfUseUVk4FZJw4oTZ1qSCJNdrClKt5JQA==", "dev": true, "requires": { - "detect-newline": "^2.1.0" + "detect-newline": "^3.0.0" } }, "jest-each": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", - "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-25.1.0.tgz", + "integrity": "sha512-R9EL8xWzoPySJ5wa0DXFTj7NrzKpRD40Jy+zQDp3Qr/2QmevJgkN9GqioCGtAJ2bW9P/MQRznQHQQhoeAyra7A==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "@jest/types": "^25.1.0", + "chalk": "^3.0.0", + "jest-get-type": "^25.1.0", + "jest-util": "^25.1.0", + "pretty-format": "^25.1.0" } }, "jest-environment-jsdom": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", - "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-25.1.0.tgz", + "integrity": "sha512-ILb4wdrwPAOHX6W82GGDUiaXSSOE274ciuov0lztOIymTChKFtC02ddyicRRCdZlB5YSrv3vzr1Z5xjpEe1OHQ==", "dev": true, "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0", - "jsdom": "^11.5.1" + "@jest/environment": "^25.1.0", + "@jest/fake-timers": "^25.1.0", + "@jest/types": "^25.1.0", + "jest-mock": "^25.1.0", + "jest-util": "^25.1.0", + "jsdom": "^15.1.1" } }, "jest-environment-node": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", - "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-25.1.0.tgz", + "integrity": "sha512-U9kFWTtAPvhgYY5upnH9rq8qZkj6mYLup5l1caAjjx9uNnkLHN2xgZy5mo4SyLdmrh/EtB9UPpKFShvfQHD0Iw==", "dev": true, "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0" + "@jest/environment": "^25.1.0", + "@jest/fake-timers": "^25.1.0", + "@jest/types": "^25.1.0", + "jest-mock": "^25.1.0", + "jest-util": "^25.1.0" } }, "jest-get-type": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", - "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.1.0.tgz", + "integrity": "sha512-yWkBnT+5tMr8ANB6V+OjmrIJufHtCAqI5ic2H40v+tRqxDmE0PGnIiTyvRWFOMtmVHYpwRqyazDbTnhpjsGvLw==", "dev": true }, "jest-haste-map": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", - "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.1.0.tgz", + "integrity": "sha512-/2oYINIdnQZAqyWSn1GTku571aAfs8NxzSErGek65Iu5o8JYb+113bZysRMcC/pjE5v9w0Yz+ldbj9NxrFyPyw==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", + "@jest/types": "^25.1.0", + "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.3", + "jest-serializer": "^25.1.0", + "jest-util": "^25.1.0", + "jest-worker": "^25.1.0", + "micromatch": "^4.0.2", "sane": "^4.0.3", "walker": "^1.0.7" }, "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "dev": true, + "optional": true + }, "graceful-fs": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", "dev": true - } - } - }, - "jest-jasmine2": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", - "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", - "dev": true, - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^24.9.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0", - "throat": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "braces": "^3.0.1", + "picomatch": "^2.0.5" } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "is-number": "^7.0.0" } } } }, + "jest-jasmine2": { + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-25.1.0.tgz", + "integrity": "sha512-GdncRq7jJ7sNIQ+dnXvpKO2MyP6j3naNK41DTTjEAhLEdpImaDA9zSAZwDhijjSF/D7cf4O5fdyUApGBZleaEg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^25.1.0", + "@jest/source-map": "^25.1.0", + "@jest/test-result": "^25.1.0", + "@jest/types": "^25.1.0", + "chalk": "^3.0.0", + "co": "^4.6.0", + "expect": "^25.1.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^25.1.0", + "jest-matcher-utils": "^25.1.0", + "jest-message-util": "^25.1.0", + "jest-runtime": "^25.1.0", + "jest-snapshot": "^25.1.0", + "jest-util": "^25.1.0", + "pretty-format": "^25.1.0", + "throat": "^5.0.0" + } + }, "jest-leak-detector": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", - "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-25.1.0.tgz", + "integrity": "sha512-3xRI264dnhGaMHRvkFyEKpDeaRzcEBhyNrOG5oT8xPxOyUAblIAQnpiR3QXu4wDor47MDTiHbiFcbypdLcLW5w==", "dev": true, "requires": { - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" + "jest-get-type": "^25.1.0", + "pretty-format": "^25.1.0" } }, "jest-matcher-utils": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", - "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-25.1.0.tgz", + "integrity": "sha512-KGOAFcSFbclXIFE7bS4C53iYobKI20ZWleAdAFun4W1Wz1Kkej8Ng6RRbhL8leaEvIOjGXhGf/a1JjO8bkxIWQ==", "dev": true, "requires": { - "chalk": "^2.0.1", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "chalk": "^3.0.0", + "jest-diff": "^25.1.0", + "jest-get-type": "^25.1.0", + "pretty-format": "^25.1.0" } }, "jest-message-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", - "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.1.0.tgz", + "integrity": "sha512-Nr/Iwar2COfN22aCqX0kCVbXgn8IBm9nWf4xwGr5Olv/KZh0CZ32RKgZWMVDXGdOahicM10/fgjdimGNX/ttCQ==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", + "@jest/test-result": "^25.1.0", + "@jest/types": "^25.1.0", "@types/stack-utils": "^1.0.1", - "chalk": "^2.0.1", - "micromatch": "^3.1.10", - "slash": "^2.0.0", + "chalk": "^3.0.0", + "micromatch": "^4.0.2", + "slash": "^3.0.0", "stack-utils": "^1.0.1" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "fill-range": "^7.0.1" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "to-regex-range": "^5.0.1" } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" } } } }, "jest-mock": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", - "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.1.0.tgz", + "integrity": "sha512-28/u0sqS+42vIfcd1mlcg4ZVDmSUYuNvImP4X2lX5hRMLW+CN0BeiKVD4p+ujKKbSPKd3rg/zuhCF+QBLJ4vag==", "dev": true, "requires": { - "@jest/types": "^24.9.0" + "@jest/types": "^25.1.0" } }, "jest-pnp-resolver": { @@ -5188,460 +5078,241 @@ "dev": true }, "jest-regex-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", - "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-25.1.0.tgz", + "integrity": "sha512-9lShaDmDpqwg+xAd73zHydKrBbbrIi08Kk9YryBEBybQFg/lBWR/2BDjjiSE7KIppM9C5+c03XiDaZ+m4Pgs1w==", "dev": true }, "jest-resolve": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", - "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-25.1.0.tgz", + "integrity": "sha512-XkBQaU1SRCHj2Evz2Lu4Czs+uIgJXWypfO57L7JYccmAXv4slXA6hzNblmcRmf7P3cQ1mE7fL3ABV6jAwk4foQ==", "dev": true, "requires": { - "@jest/types": "^24.9.0", + "@jest/types": "^25.1.0", "browser-resolve": "^1.11.3", - "chalk": "^2.0.1", + "chalk": "^3.0.0", "jest-pnp-resolver": "^1.2.1", "realpath-native": "^1.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } } }, "jest-resolve-dependencies": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", - "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-25.1.0.tgz", + "integrity": "sha512-Cu/Je38GSsccNy4I2vL12ZnBlD170x2Oh1devzuM9TLH5rrnLW1x51lN8kpZLYTvzx9j+77Y5pqBaTqfdzVzrw==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-snapshot": "^24.9.0" + "@jest/types": "^25.1.0", + "jest-regex-util": "^25.1.0", + "jest-snapshot": "^25.1.0" } }, "jest-runner": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", - "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-25.1.0.tgz", + "integrity": "sha512-su3O5fy0ehwgt+e8Wy7A8CaxxAOCMzL4gUBftSs0Ip32S0epxyZPDov9Znvkl1nhVOJNf4UwAsnqfc3plfQH9w==", "dev": true, "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.4.2", + "@jest/console": "^25.1.0", + "@jest/environment": "^25.1.0", + "@jest/test-result": "^25.1.0", + "@jest/types": "^25.1.0", + "chalk": "^3.0.0", "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-docblock": "^24.3.0", - "jest-haste-map": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-leak-detector": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", + "graceful-fs": "^4.2.3", + "jest-config": "^25.1.0", + "jest-docblock": "^25.1.0", + "jest-haste-map": "^25.1.0", + "jest-jasmine2": "^25.1.0", + "jest-leak-detector": "^25.1.0", + "jest-message-util": "^25.1.0", + "jest-resolve": "^25.1.0", + "jest-runtime": "^25.1.0", + "jest-util": "^25.1.0", + "jest-worker": "^25.1.0", "source-map-support": "^0.5.6", - "throat": "^4.0.0" + "throat": "^5.0.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, "graceful-fs": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } } } }, "jest-runtime": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", - "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", - "dev": true, - "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/source-map": "^24.3.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "chalk": "^2.0.1", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-25.1.0.tgz", + "integrity": "sha512-mpPYYEdbExKBIBB16ryF6FLZTc1Rbk9Nx0ryIpIMiDDkOeGa0jQOKVI/QeGvVGlunKKm62ywcioeFVzIbK03bA==", + "dev": true, + "requires": { + "@jest/console": "^25.1.0", + "@jest/environment": "^25.1.0", + "@jest/source-map": "^25.1.0", + "@jest/test-result": "^25.1.0", + "@jest/transform": "^25.1.0", + "@jest/types": "^25.1.0", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0", + "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", + "graceful-fs": "^4.2.3", + "jest-config": "^25.1.0", + "jest-haste-map": "^25.1.0", + "jest-message-util": "^25.1.0", + "jest-mock": "^25.1.0", + "jest-regex-util": "^25.1.0", + "jest-resolve": "^25.1.0", + "jest-snapshot": "^25.1.0", + "jest-util": "^25.1.0", + "jest-validate": "^25.1.0", "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "strip-bom": "^3.0.0", - "yargs": "^13.3.0" + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.0.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, "glob": { "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "jest-serializer": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", - "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", - "dev": true - }, - "jest-snapshot": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", - "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "expect": "^24.9.0", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^24.9.0", - "semver": "^6.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "jest-util": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", - "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", - "dev": true, - "requires": { - "@jest/console": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/source-map": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "callsites": "^3.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", - "mkdirp": "^0.5.1", - "slash": "^2.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "jest-validate": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", - "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", - "dev": true, - "requires": { - "@jest/types": "^24.9.0", - "camelcase": "^5.3.1", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "leven": "^3.1.0", - "pretty-format": "^24.9.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "jest-watcher": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", - "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", - "dev": true, - "requires": { - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "jest-util": "^24.9.0", - "string-length": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true } } }, - "jest-worker": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", - "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "jest-serializer": { + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.1.0.tgz", + "integrity": "sha512-20Wkq5j7o84kssBwvyuJ7Xhn7hdPeTXndnwIblKDR2/sy1SUm6rWWiG9kSCgJPIfkDScJCIsTtOKdlzfIHOfKA==", + "dev": true + }, + "jest-snapshot": { + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-25.1.0.tgz", + "integrity": "sha512-xZ73dFYN8b/+X2hKLXz4VpBZGIAn7muD/DAg+pXtDzDGw3iIV10jM7WiHqhCcpDZfGiKEj7/2HXAEPtHTj0P2A==", "dev": true, "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "@babel/types": "^7.0.0", + "@jest/types": "^25.1.0", + "chalk": "^3.0.0", + "expect": "^25.1.0", + "jest-diff": "^25.1.0", + "jest-get-type": "^25.1.0", + "jest-matcher-utils": "^25.1.0", + "jest-message-util": "^25.1.0", + "jest-resolve": "^25.1.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^25.1.0", + "semver": "^7.1.1" }, "dependencies": { - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "semver": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.3.tgz", + "integrity": "sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA==", + "dev": true } } }, + "jest-util": { + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.1.0.tgz", + "integrity": "sha512-7did6pLQ++87Qsj26Fs/TIwZMUFBXQ+4XXSodRNy3luch2DnRXsSnmpVtxxQ0Yd6WTipGpbhh2IFP1mq6/fQGw==", + "dev": true, + "requires": { + "@jest/types": "^25.1.0", + "chalk": "^3.0.0", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1" + } + }, + "jest-validate": { + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-25.1.0.tgz", + "integrity": "sha512-kGbZq1f02/zVO2+t1KQGSVoCTERc5XeObLwITqC6BTRH3Adv7NZdYqCpKIZLUgpLXf2yISzQ465qOZpul8abXA==", + "dev": true, + "requires": { + "@jest/types": "^25.1.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "jest-get-type": "^25.1.0", + "leven": "^3.1.0", + "pretty-format": "^25.1.0" + } + }, + "jest-watcher": { + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-25.1.0.tgz", + "integrity": "sha512-Q9eZ7pyaIr6xfU24OeTg4z1fUqBF/4MP6J801lyQfg7CsnZ/TCzAPvCfckKdL5dlBBEKBeHV0AdyjFZ5eWj4ig==", + "dev": true, + "requires": { + "@jest/test-result": "^25.1.0", + "@jest/types": "^25.1.0", + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "jest-util": "^25.1.0", + "string-length": "^3.1.0" + } + }, + "jest-worker": { + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.1.0.tgz", + "integrity": "sha512-ZHhHtlxOWSxCoNOKHGbiLzXnl42ga9CxDr27H36Qn+15pQZd3R/F24jrmjDelw9j/iHUIWMWs08/u2QN50HHOg==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, "js-beautify": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.7.5.tgz", - "integrity": "sha512-9OhfAqGOrD7hoQBLJMTA+BKuKmoEtTJXzZ7WDF/9gvjtey1koVLuZqIY6c51aPDjbNdNtIXAkiWKVhziawE9Og==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.10.3.tgz", + "integrity": "sha512-wfk/IAWobz1TfApSdivH5PJ0miIHgDoYb1ugSqHcODPmaYu46rYe5FVuIEkhjg8IQiv6rDNPyhsqbsohI/C2vQ==", "requires": { - "config-chain": "~1.1.5", - "editorconfig": "^0.13.2", - "mkdirp": "~0.5.0", - "nopt": "~3.0.1" + "config-chain": "^1.1.12", + "editorconfig": "^0.15.3", + "glob": "^7.1.3", + "mkdirp": "~0.5.1", + "nopt": "~4.0.1" + }, + "dependencies": { + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "js-tokens": { @@ -5666,45 +5337,37 @@ "dev": true }, "jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", - "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", + "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", "dev": true, "requires": { "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", + "acorn": "^7.1.0", + "acorn-globals": "^4.3.2", "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", + "cssom": "^0.4.1", + "cssstyle": "^2.0.0", + "data-urls": "^1.1.0", "domexception": "^1.0.1", - "escodegen": "^1.9.1", + "escodegen": "^1.11.1", "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", + "nwsapi": "^2.2.0", + "parse5": "5.1.0", "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", + "request": "^2.88.0", + "request-promise-native": "^1.0.7", + "saxes": "^3.1.9", "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", + "tough-cookie": "^3.0.1", "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^7.0.0", "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", - "dev": true - } } }, "jsesc": { @@ -5781,9 +5444,9 @@ } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, "kleur": { "version": "3.0.3", @@ -5797,12 +5460,6 @@ "integrity": "sha512-Vi3nxDGMm/z+lAaCjvAR1u+7fiv+sG6gU/iYDj5QOF8h76ytK9EW/EKfF0NeTyiGBi8Jy6Hklty/vxISrLox3w==", "dev": true }, - "left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", - "dev": true - }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -6151,21 +5808,21 @@ } } }, + "lolex": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", + "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, "longest-streak": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.3.tgz", "integrity": "sha512-9lz5IVdpwsKLMzQi0MQ+oD9EA0mIGcWYP7jXMTZVXP8D42PwuAk+M/HBFYQoxt1G5OR8m7aSIgb1UymfWGBWEw==", "dev": true }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, "loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", @@ -6177,27 +5834,27 @@ } }, "lru-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", - "integrity": "sha1-cXibO39Tmb7IVl3aOKow0qCX7+4=", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "requires": { - "pseudomap": "^1.0.1" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.2.tgz", + "integrity": "sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w==", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "semver": "^6.0.0" }, "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } @@ -6679,12 +6336,6 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true - }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -6704,16 +6355,33 @@ "dev": true }, "node-notifier": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", - "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-6.0.0.tgz", + "integrity": "sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw==", "dev": true, + "optional": true, "requires": { "growly": "^1.3.0", - "is-wsl": "^1.1.0", - "semver": "^5.5.0", + "is-wsl": "^2.1.1", + "semver": "^6.3.0", "shellwords": "^0.1.1", - "which": "^1.3.0" + "which": "^1.3.1" + }, + "dependencies": { + "is-wsl": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.1.tgz", + "integrity": "sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==", + "dev": true, + "optional": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "optional": true + } } }, "node-releases": { @@ -6734,11 +6402,12 @@ } }, "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", "requires": { - "abbrev": "1" + "abbrev": "1", + "osenv": "^0.1.4" } }, "normalize-package-data": { @@ -7036,13 +6705,69 @@ } }, "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + } } }, "object.pick": { @@ -7095,53 +6820,45 @@ "mimic-fn": "^2.1.0" } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - } - } - }, "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "requires": { "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", + "fast-levenshtein": "~2.0.6", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "word-wrap": "~1.2.3" } }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, - "p-each-series": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", - "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", - "dev": true, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "requires": { - "p-reduce": "^1.0.0" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, + "p-each-series": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.1.0.tgz", + "integrity": "sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ==", + "dev": true + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -7164,12 +6881,6 @@ "p-limit": "^2.2.0" } }, - "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", - "dev": true - }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -7208,9 +6919,9 @@ } }, "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", "dev": true }, "parseurl": { @@ -7599,31 +7310,22 @@ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" }, "pretty-format": { - "version": "24.9.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", - "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.1.0.tgz", + "integrity": "sha512-46zLRSGLd02Rp+Lhad9zzuNZ+swunitn8zIpfD2B4OPCRLXbM87RJT2aBLBWYOznNUML/2l/ReMyWNC80PJBUQ==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" + "@jest/types": "^25.1.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } } } }, @@ -7638,13 +7340,13 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, "prompts": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.0.tgz", - "integrity": "sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.1.tgz", + "integrity": "sha512-qIP2lQyCwYbdzcqHIUi2HAxiWixhoM9OdLCWf8txXsapC/X9YdsCoeyRIXE/GP+Q0J37Q7+XN/MFqbUa7IzXNA==", "dev": true, "requires": { "kleur": "^3.0.3", - "sisteransi": "^1.0.3" + "sisteransi": "^1.0.4" } }, "proto-list": { @@ -7658,9 +7360,9 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "psl": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.6.0.tgz", - "integrity": "sha512-SYKKmVel98NCOYXpkwUqZqh0ahZeeKfmisiLIcEZdsb+WbLv02g/dI5BUmZnIyOe7RzZtLax81nnb2HbvC2tzA==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", + "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==", "dev": true }, "pump": { @@ -7701,9 +7403,9 @@ "dev": true }, "react-is": { - "version": "16.12.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.12.0.tgz", - "integrity": "sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==", + "version": "16.13.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.0.tgz", + "integrity": "sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA==", "dev": true }, "read-pkg": { @@ -7912,9 +7614,9 @@ "dev": true }, "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -7924,7 +7626,7 @@ "extend": "~3.0.2", "forever-agent": "~0.6.1", "form-data": "~2.3.2", - "har-validator": "~5.1.0", + "har-validator": "~5.1.3", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -7934,17 +7636,11 @@ "performance-now": "^2.1.0", "qs": "~6.5.2", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", + "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" }, "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, "safe-buffer": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", @@ -7952,13 +7648,13 @@ "dev": true }, "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" + "psl": "^1.1.28", + "punycode": "^2.1.1" } } } @@ -7981,6 +7677,18 @@ "request-promise-core": "1.1.3", "stealthy-require": "^1.1.1", "tough-cookie": "^2.3.3" + }, + "dependencies": { + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } } }, "require-directory": { @@ -8005,18 +7713,18 @@ } }, "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "requires": { - "resolve-from": "^3.0.0" + "resolve-from": "^5.0.0" }, "dependencies": { "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true } } @@ -8048,12 +7756,28 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, "rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "rsvp": { @@ -8124,11 +7848,14 @@ } } }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "requires": { + "xmlchars": "^2.1.1" + } }, "semver": { "version": "5.6.0", @@ -8200,7 +7927,8 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true + "dev": true, + "optional": true }, "sigmund": { "version": "1.0.1", @@ -8220,9 +7948,9 @@ "dev": true }, "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, "slice-ansi": { @@ -8530,28 +8258,28 @@ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, "string-length": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", - "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", + "integrity": "sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==", "dev": true, "requires": { "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" + "strip-ansi": "^5.2.0" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.1.0" } } } @@ -8656,6 +8384,12 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, "strip-indent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", @@ -8931,6 +8665,24 @@ } } }, + "supports-hyperlinks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz", + "integrity": "sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + } + } + }, "svg-tags": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", @@ -8995,27 +8747,27 @@ } } }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, "test-exclude": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", - "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "requires": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" }, "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -9029,98 +8781,6 @@ "once": "^1.3.0", "path-is-absolute": "^1.0.0" } - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", - "dev": true, - "requires": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" - } } } }, @@ -9130,10 +8790,16 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "textextensions": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz", + "integrity": "sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==", + "dev": true + }, "throat": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", - "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", "dev": true }, "through": { @@ -9214,11 +8880,12 @@ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", "dev": true, "requires": { + "ip-regex": "^2.1.0", "psl": "^1.1.28", "punycode": "^2.1.1" } @@ -9299,6 +8966,12 @@ "prelude-ls": "~1.1.2" } }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", @@ -9319,33 +8992,6 @@ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" }, - "uglify-js": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.1.tgz", - "integrity": "sha512-pnOF7jY82wdIhATVn87uUY/FHU+MDUdPLkmGFvGoclQmeu229eTkbG5gjGGBi3R7UuYYSEeYXY/TTY5j2aym2g==", - "dev": true, - "optional": true, - "requires": { - "commander": "~2.20.3", - "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "optional": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } - }, "unherit": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.2.tgz", @@ -9521,13 +9167,71 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + } } }, "utils-merge": { @@ -9546,6 +9250,25 @@ "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", "dev": true }, + "v8-to-istanbul": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-4.1.2.tgz", + "integrity": "sha512-G9R+Hpw0ITAmPSr47lSlc5A1uekSYzXxTMlFxso2xoffwo4jQnzbv1p9yXIinO8UMZKfAFewaCHwWvnH4Jb4Ug==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -9624,12 +9347,23 @@ } }, "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", "dev": true, "requires": { - "browser-process-hrtime": "^0.1.2" + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" } }, "walk-sync": { @@ -9687,9 +9421,9 @@ "dev": true }, "whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "dev": true, "requires": { "lodash.sortby": "^4.7.0", @@ -9811,12 +9545,6 @@ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -9861,24 +9589,22 @@ } }, "write-file-atomic": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", - "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.3.tgz", + "integrity": "sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ==", + "dev": true }, "x-is-string": { "version": "0.1.0", @@ -9892,6 +9618,12 @@ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", "dev": true }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -9904,6 +9636,11 @@ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, "yaml": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.7.2.tgz", @@ -9914,98 +9651,28 @@ } }, "yargs": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.0.tgz", + "integrity": "sha512-g/QCnmjgOl1YJjGsnUg2SatC7NUYEiLXJqxNOQU9qSpjzGtGXda9b+OKccr1kLTy8BN9yqEyqfq5lxlwdc13TA==", "dev": true, "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^3.0.0", + "string-width": "^4.2.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^13.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } + "yargs-parser": "^18.1.0" } }, "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.0.tgz", + "integrity": "sha512-o/Jr6JBOv6Yx3pL+5naWSoIA2jJ+ZkMYQG/ie9qFbukBe4uzmBatlXFOiu/tNKRWEtyf+n5w7jc/O16ufqOTdQ==", "dev": true, "requires": { "camelcase": "^5.0.0", diff --git a/package.json b/package.json index 18adf26e7e..96c54a79e8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "markbind-cli", - "version": "2.11.0", + "version": "2.13.1", "description": "Command line interface for MarkBind", "main": "index.js", "bin": { @@ -26,6 +26,7 @@ "cheerio": "^0.22.0", "chokidar": "^3.3.0", "commander": "^3.0.2", + "crypto-js": "^4.0.0", "fastmatter": "^2.1.1", "figlet": "^1.2.4", "find-up": "^4.1.0", @@ -34,7 +35,7 @@ "highlight.js": "^9.14.2", "htmlparser2": "^3.10.1", "ignore": "^5.1.4", - "js-beautify": "~1.7.5", + "js-beautify": "^1.10.3", "live-server": "^1.2.1", "lodash": "^4.17.15", "markdown-it": "^8.4.2", @@ -46,11 +47,11 @@ "markdown-it-linkify-images": "^1.1.1", "markdown-it-mark": "^2.0.0", "markdown-it-regexp": "^0.4.0", + "markdown-it-sub": "^1.0.0", + "markdown-it-sup": "^1.0.0", "markdown-it-table-of-contents": "^0.4.4", "markdown-it-task-lists": "^1.4.1", "markdown-it-video": "^0.6.3", - "markdown-it-sub": "^1.0.0", - "markdown-it-sup": "^1.0.0", "nunjucks": "^3.2.0", "path-is-inside": "^1.0.2", "progress": "^2.0.3", @@ -88,7 +89,8 @@ "eslint-config-airbnb-base": "^14.0.0", "eslint-plugin-import": "^2.18.2", "eslint-plugin-lodash": "^6.0.0", - "jest": "^24.9.0", + "istextorbinary": "^3.3.0", + "jest": "^25.1.0", "memfs": "^3.0.1", "stylelint": "^12.0.0", "stylelint-config-standard": "^19.0.0" diff --git a/src/LazyLiveReloadLoadingSite.html b/src/LazyLiveReloadLoadingSite.html new file mode 100644 index 0000000000..834773557c --- /dev/null +++ b/src/LazyLiveReloadLoadingSite.html @@ -0,0 +1,66 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="UTF-8"> + <title>Building ... + + +

+
... building your page ...
+ + + + diff --git a/src/Page.js b/src/Page.js index c1713c3e21..c3c5b1fbc2 100644 --- a/src/Page.js +++ b/src/Page.js @@ -4,8 +4,8 @@ const fs = require('fs-extra-promise'); const htmlBeautify = require('js-beautify').html; const nunjucks = require('nunjucks'); const path = require('path'); -const pathIsInside = require('path-is-inside'); const Promise = require('bluebird'); +const nunjuckUtils = require('./lib/markbind/src/utils/nunjuckUtils'); const _ = {}; _.isString = require('lodash/isString'); @@ -19,6 +19,7 @@ const logger = require('./util/logger'); const MarkBind = require('./lib/markbind/src/parser'); const md = require('./lib/markbind/src/lib/markdown-it'); const utils = require('./lib/markbind/src/utils'); +const urlUtils = require('./lib/markbind/src/utils/urls'); const CLI_VERSION = require('../package.json').version; @@ -61,6 +62,7 @@ class Page { this.content = pageConfig.content || ''; this.faviconUrl = pageConfig.faviconUrl; this.frontmatterOverride = pageConfig.frontmatter || {}; + this.disableHtmlBeautify = pageConfig.disableHtmlBeautify; this.layout = pageConfig.layout; this.layoutsAssetPath = pageConfig.layoutsAssetPath; this.rootPath = pageConfig.rootPath; @@ -77,8 +79,6 @@ class Page { // the source file for rendering this page this.sourcePath = pageConfig.sourcePath; - // the temp path for writing intermediate result - this.tempPath = pageConfig.tempPath; // the output path of this page this.resultPath = pageConfig.resultPath; @@ -96,6 +96,8 @@ class Page { // Flag to indicate whether this page has a site nav this.hasSiteNav = false; + + this.fixedHeader = false; } prepareTemplateData() { @@ -440,7 +442,7 @@ class Page { // Retrieve Expressive Layouts page and insert content fs.readFileAsync(layoutPagePath, 'utf8') .then(result => markbinder.includeData(layoutPagePath, result, layoutFileConfig)) - .then(result => nj.renderString(result, template)) + .then(result => nunjuckUtils.renderEscaped(nj, result, template)) .then((result) => { this.collectIncludedFiles(markbinder.getDynamicIncludeSrc()); this.collectIncludedFiles(markbinder.getStaticIncludeSrc()); @@ -456,6 +458,7 @@ class Page { /** * Inserts the page layout's header to the start of the page + * Determines if a fixed header is present, update page config accordingly * @param pageData a page with its front matter collected */ insertHeaderFile(pageData) { @@ -476,12 +479,18 @@ class Page { } // Retrieve Markdown file contents const headerContent = fs.readFileSync(headerPath, 'utf8'); + // Decide if fixed header is applied + const headerSelector = cheerio.load(headerContent)('header'); + if (headerSelector.length >= 1 + && headerSelector[0].attribs.class === 'header-fixed') { + this.fixedHeader = true; + } // Set header file as an includedFile this.includedFiles.add(headerPath); // Map variables - const newBaseUrl = Page.calculateNewBaseUrl(this.sourcePath, this.rootPath, this.baseUrlMap) || ''; - const userDefinedVariables = this.userDefinedVariablesMap[path.join(this.rootPath, newBaseUrl)]; - return `${nunjucks.renderString(headerContent, userDefinedVariables)}\n${pageData}`; + const parentSite = urlUtils.getParentSiteAbsolutePath(this.sourcePath, this.rootPath, this.baseUrlMap); + const userDefinedVariables = this.userDefinedVariablesMap[parentSite]; + return `${nunjuckUtils.renderEscaped(nunjucks, headerContent, userDefinedVariables)}\n${pageData}`; } /** @@ -509,9 +518,9 @@ class Page { // Set footer file as an includedFile this.includedFiles.add(footerPath); // Map variables - const newBaseUrl = Page.calculateNewBaseUrl(this.sourcePath, this.rootPath, this.baseUrlMap) || ''; - const userDefinedVariables = this.userDefinedVariablesMap[path.join(this.rootPath, newBaseUrl)]; - return `${pageData}\n${nunjucks.renderString(footerContent, userDefinedVariables)}`; + const parentSite = urlUtils.getParentSiteAbsolutePath(this.sourcePath, this.rootPath, this.baseUrlMap); + const userDefinedVariables = this.userDefinedVariablesMap[parentSite]; + return `${pageData}\n${nunjuckUtils.renderEscaped(nunjucks, footerContent, userDefinedVariables)}`; } /** @@ -546,9 +555,9 @@ class Page { // Set siteNav file as an includedFile this.includedFiles.add(siteNavPath); // Map variables - const newBaseUrl = Page.calculateNewBaseUrl(this.sourcePath, this.rootPath, this.baseUrlMap) || ''; - const userDefinedVariables = this.userDefinedVariablesMap[path.join(this.rootPath, newBaseUrl)]; - const siteNavMappedData = nunjucks.renderString(siteNavContent, userDefinedVariables); + const parentSite = urlUtils.getParentSiteAbsolutePath(this.sourcePath, this.rootPath, this.baseUrlMap); + const userDefinedVariables = this.userDefinedVariablesMap[parentSite]; + const siteNavMappedData = nunjuckUtils.renderEscaped(nunjucks, siteNavContent, userDefinedVariables); // Convert to HTML const siteNavDataSelector = cheerio.load(siteNavMappedData); if (siteNavDataSelector('navigation').length > 1) { @@ -658,14 +667,14 @@ class Page { const pageNavTitleHtml = this.generatePageNavTitleHtml(); const pageNavHeadingHTML = this.generatePageNavHeadingHtml(); this.pageSectionsHtml[`#${PAGE_NAV_ID}`] - = htmlBeautify(`\n', { indent_size: 2 }); + = `\n'; } } @@ -696,14 +705,14 @@ class Page { // Set head file as an includedFile this.includedFiles.add(headFilePath); // Map variables - const newBaseUrl = Page.calculateNewBaseUrl(this.sourcePath, this.rootPath, this.baseUrlMap) || ''; - const userDefinedVariables = this.userDefinedVariablesMap[path.join(this.rootPath, newBaseUrl)]; - const headFileMappedData = nunjucks.renderString(headFileContent, userDefinedVariables) + const parentSite = urlUtils.getParentSiteAbsolutePath(this.sourcePath, this.rootPath, this.baseUrlMap); + const userDefinedVariables = this.userDefinedVariablesMap[parentSite]; + const headFileMappedData = nunjuckUtils.renderEscaped(nunjucks, headFileContent, userDefinedVariables) .trim(); // Split top and bottom contents const $ = cheerio.load(headFileMappedData, { xmlMode: false }); if ($('head-top').length) { - collectedTopContent.push(nunjucks.renderString($('head-top') + collectedTopContent.push(nunjuckUtils.renderEscaped(nunjucks, $('head-top') .html(), { baseUrl, hostBaseUrl, @@ -714,7 +723,7 @@ class Page { $('head-top') .remove(); } - collectedBottomContent.push(nunjucks.renderString($.html(), { + collectedBottomContent.push(nunjuckUtils.renderEscaped(nunjucks, $.html(), { baseUrl, hostBaseUrl, }) @@ -756,13 +765,13 @@ class Page { if (pageSection.length === 0) { return; } - this.pageSectionsHtml[section] = htmlBeautify($.html(section), { indent_size: 2 }) - .trim(); + this.pageSectionsHtml[section] = $.html(section); pageSection.remove(); - this.content = htmlBeautify($.html(), { indent_size: 2 }); + this.content = $.html(); } collectAllPageSections() { + this.pageSectionsHtml = {}; // This resets the pageSectionsHTML whenever we collect. this.collectPageSection('header'); this.collectPageSection(`#${SITE_NAV_ID}`); this.collectPageSection('footer'); @@ -780,6 +789,7 @@ class Page { rootPath: this.rootPath, userDefinedVariablesMap: this.userDefinedVariablesMap, headerIdMap: this.headerIdMap, + fixedHeader: this.fixedHeader, }; return new Promise((resolve, reject) => { markbinder.includeFile(this.sourcePath, fileConfig) @@ -797,17 +807,22 @@ class Page { .then(result => this.insertFooterFile(result)) .then(result => Page.insertTemporaryStyles(result)) .then(result => markbinder.resolveBaseUrl(result, fileConfig)) - .then(result => fs.outputFileAsync(this.tempPath, result)) - .then(() => markbinder.renderFile(this.tempPath, fileConfig)) + .then((result) => { + // this.fixedHeader may be updated in previous step insertHeaderFile + // we need to reflect the update and pass it to the renderer, if necessary + fileConfig.fixedHeader = this.fixedHeader; + return markbinder.render(result, this.sourcePath, fileConfig); + }) .then(result => this.postRender(result)) .then(result => this.collectPluginsAssets(result)) .then(result => markbinder.processDynamicResources(this.sourcePath, result)) .then(result => MarkBind.unwrapIncludeSrc(result)) .then((result) => { - this.content = htmlBeautify(result, { indent_size: 2 }); + this.content = result; - const newBaseUrl = Page.calculateNewBaseUrl(this.sourcePath, this.rootPath, this.baseUrlMap); - const baseUrl = newBaseUrl ? `${this.baseUrl}/${newBaseUrl}` : this.baseUrl; + const { relative } = urlUtils.getParentSiteAbsoluteAndRelativePaths(this.sourcePath, this.rootPath, + this.baseUrlMap); + const baseUrl = relative ? `${this.baseUrl}/${utils.ensurePosix(relative)}` : this.baseUrl; const hostBaseUrl = this.baseUrl; this.addLayoutFiles(); @@ -821,10 +836,12 @@ class Page { this.collectAllPageSections(); this.buildPageNav(); - return fs.outputFileAsync(this.resultPath, htmlBeautify( - this.template.render(this.prepareTemplateData()), - { indent_size: 2 }, - )); + const renderedTemplate = this.template.render(this.prepareTemplateData()); + const outputTemplateHTML = this.disableHtmlBeautify + ? renderedTemplate + : htmlBeautify(renderedTemplate, Page.htmlBeautifyOptions); + + return fs.outputFileAsync(this.resultPath, outputTemplateHTML); }) .then(() => { const resolvingFiles = []; @@ -1024,7 +1041,6 @@ class Page { * @param builtFiles set of files already pre-rendered by another page */ resolveDependency(dependency, builtFiles) { - const source = dependency.from; const file = dependency.asIfTo; return new Promise((resolve, reject) => { const resultDir = path.dirname(path.resolve(this.resultPath, path.relative(this.sourcePath, file))); @@ -1040,13 +1056,6 @@ class Page { const markbinder = new MarkBind({ errorHandler: logger.error, }); - let tempPath; - if (FsUtil.isInRoot(this.rootPath, file)) { - tempPath = path.join(path.dirname(this.tempPath), path.relative(this.rootPath, file)); - } else { - logger.info(`Converting dynamic external resource ${file} to ${resultPath}`); - tempPath = path.join(path.dirname(this.tempPath), '.external', path.basename(file)); - } return markbinder.includeFile(dependency.to, { baseUrlMap: this.baseUrlMap, userDefinedVariablesMap: this.userDefinedVariablesMap, @@ -1054,29 +1063,35 @@ class Page { cwf: file, }) .then(result => Page.removeFrontMatter(result)) + .then(result => this.collectPluginSources(result)) + .then(result => this.preRender(result)) .then(result => markbinder.resolveBaseUrl(result, { baseUrlMap: this.baseUrlMap, rootPath: this.rootPath, - isDynamic: true, - dynamicSource: source, })) - .then(result => fs.outputFileAsync(tempPath, result)) - .then(() => markbinder.renderFile(tempPath, { + .then(result => markbinder.render(result, this.sourcePath, { baseUrlMap: this.baseUrlMap, rootPath: this.rootPath, headerIdMap: {}, })) + .then(result => this.postRender(result)) + .then(result => this.collectPluginsAssets(result)) .then(result => markbinder.processDynamicResources(file, result)) + .then(result => MarkBind.unwrapIncludeSrc(result)) .then((result) => { // resolve the site base url here - const newBaseUrl = Page.calculateNewBaseUrl(file, this.rootPath, this.baseUrlMap); - const baseUrl = newBaseUrl ? `${this.baseUrl}/${newBaseUrl}` : this.baseUrl; + const { relative } = urlUtils.getParentSiteAbsoluteAndRelativePaths(file, this.rootPath, + this.baseUrlMap); + const baseUrl = relative ? `${this.baseUrl}/${utils.ensurePosix(relative)}` : this.baseUrl; const hostBaseUrl = this.baseUrl; const content = nunjucks.renderString(result, { baseUrl, hostBaseUrl, }); - return fs.outputFileAsync(resultPath, htmlBeautify(content, { indent_size: 2 })); + const outputContentHTML = this.disableHtmlBeautify + ? content + : htmlBeautify(content, Page.htmlBeautifyOptions); + return fs.outputFileAsync(resultPath, outputContentHTML); }) .then(() => { // Recursion call to resolve nested dependency @@ -1109,23 +1124,6 @@ class Page { + '
'; } - static calculateNewBaseUrl(filePath, root, lookUp) { - function calculate(file, result) { - if (file === root || !pathIsInside(file, root)) { - return undefined; - } - const parent = path.dirname(file); - if (lookUp.has(parent) && result.length === 1) { - return path.relative(root, result[0]); - } else if (lookUp.has(parent)) { - return calculate(parent, [parent]); - } - return calculate(parent, result); - } - - return calculate(filePath, []); - } - static removePageHeaderAndFooter(pageData) { const $ = cheerio.load(pageData); const pageHeaderAndFooter = $('header', 'footer'); diff --git a/src/Site.js b/src/Site.js index 0fbe178e8c..e493f1399a 100644 --- a/src/Site.js +++ b/src/Site.js @@ -8,9 +8,14 @@ const Promise = require('bluebird'); const ProgressBar = require('progress'); const walkSync = require('walk-sync'); const MarkBind = require('./lib/markbind/src/parser'); +const nunjuckUtils = require('./lib/markbind/src/utils/nunjuckUtils'); +const injectHtmlParser2SpecialTags = require('./lib/markbind/src/patches/htmlparser2'); +const injectMarkdownItSpecialTags = require( + './lib/markbind/src/lib/markdown-it/markdown-it-escape-special-tags'); const _ = {}; _.difference = require('lodash/difference'); +_.flatMap = require('lodash/flatMap'); _.get = require('lodash/get'); _.has = require('lodash/has'); _.includes = require('lodash/includes'); @@ -45,6 +50,9 @@ const { LAYOUT_DEFAULT_NAME, LAYOUT_FOLDER_PATH, LAYOUT_SITE_FOLDER_NAME, + LAZY_LOADING_SITE_FILE_NAME, + LAZY_LOADING_BUILD_TIME_RECOMMENDATION_LIMIT, + LAZY_LOADING_REBUILD_TIME_RECOMMENDATION_LIMIT, MARKBIND_PLUGIN_PREFIX, MARKBIND_WEBSITE_URL, PAGE_TEMPLATE_NAME, @@ -121,11 +129,17 @@ class Site { this.addressablePages = []; this.baseUrlMap = new Set(); this.forceReload = forceReload; - this.onePagePath = onePagePath; this.plugins = {}; this.siteConfig = {}; this.siteConfigPath = siteConfigPath; this.userDefinedVariablesMap = {}; + + // Lazy reload properties + this.onePagePath = onePagePath; + this.currentPageViewed = onePagePath + ? path.resolve(this.rootPath, FsUtil.removeExtension(onePagePath)) + : ''; + this.toRebuild = new Set(); } /** @@ -167,6 +181,22 @@ class Site { }); } + /** + * Changes the site variable of the current page being viewed, building it if necessary. + * @param normalizedUrl BaseUrl-less and extension-less url of the page + * @return Boolean of whether the page needed to be rebuilt + */ + changeCurrentPage(normalizedUrl) { + this.currentPageViewed = path.join(this.rootPath, normalizedUrl); + + if (this.toRebuild.has(this.currentPageViewed)) { + this.rebuildPageBeingViewed(this.currentPageViewed); + return true; + } + + return false; + } + readSiteConfig(baseUrl) { return new Promise((resolve, reject) => { const siteConfigPath = path.join(this.rootPath, this.siteConfigPath); @@ -198,7 +228,6 @@ class Site { createPage(config) { const sourcePath = path.join(this.rootPath, config.pageSrc); - const tempPath = path.join(this.tempPath, config.pageSrc); const resultPath = path.join(this.outputPath, Site.setExtension(config.pageSrc, '.html')); return new Page({ baseUrl: this.siteConfig.baseUrl, @@ -208,6 +237,7 @@ class Site { faviconUrl: config.faviconUrl, frontmatter: config.frontmatter, globalOverride: this.siteConfig.globalOverride || {}, + disableHtmlBeautify: this.siteConfig.disableHtmlBeautify, pageTemplate: this.pageTemplate, plugins: this.plugins || {}, rootPath: this.rootPath, @@ -222,7 +252,6 @@ class Site { headingIndexingLevel: this.siteConfig.headingIndexingLevel || HEADING_INDEXING_LEVEL_DEFAULT, userDefinedVariablesMap: this.userDefinedVariablesMap, sourcePath, - tempPath, resultPath, asset: { bootstrap: path.relative(path.dirname(resultPath), @@ -402,10 +431,11 @@ class Site { * Updates the paths to be traversed as addressable pages and returns a list of filepaths to be deleted */ updateAddressablePages() { - const oldAddressablePages = this.addressablePages.slice(); + const oldAddressablePagesSources = this.addressablePages.slice().map(page => page.src); this.collectAddressablePages(); - return _.difference(oldAddressablePages.map(page => page.src), - this.addressablePages.map(page => page.src)) + const newAddressablePagesSources = this.addressablePages.map(page => page.src); + + return _.difference(oldAddressablePagesSources, newAddressablePagesSources) .map(filePath => Site.setExtension(filePath, '.html')); } @@ -414,36 +444,38 @@ class Site { */ collectAddressablePages() { const { pages } = this.siteConfig; - const addressableGlobs = pages.filter(page => page.glob); - this.addressablePages = pages.filter(page => page.src); + const pagesFromSrc = _.flatMap(pages.filter(page => page.src), page => (Array.isArray(page.src) + ? page.src.map(pageSrc => ({ ...page, src: pageSrc })) + : [page])); const set = new Set(); - const duplicatePages = this.addressablePages + const duplicatePages = pagesFromSrc .filter(page => set.size === set.add(page.src).size) .map(page => page.src); if (duplicatePages.length > 0) { return Promise.reject( new Error(`Duplicate page entries found in site config: ${_.uniq(duplicatePages).join(', ')}`)); } - const globPaths = addressableGlobs.reduce((globPages, addressableGlob) => - globPages.concat(walkSync(this.rootPath, { - directories: false, - globs: [addressableGlob.glob], - ignore: [CONFIG_FOLDER_NAME, SITE_FOLDER_NAME], - }).map(globPath => ({ - src: globPath, - searchable: addressableGlob.searchable, - layout: addressableGlob.layout, - frontmatter: addressableGlob.frontmatter, - }))), []); - // Add pages collected by walkSync and merge properties for pages + const pagesFromGlobs = _.flatMap(pages.filter(page => page.glob), page => walkSync(this.rootPath, { + directories: false, + globs: Array.isArray(page.glob) ? page.glob : [page.glob], + ignore: [CONFIG_FOLDER_NAME, SITE_FOLDER_NAME], + }).map(filePath => ({ + src: filePath, + searchable: page.searchable, + layout: page.layout, + frontmatter: page.frontmatter, + }))); + /* + Add pages collected from globs and merge properties for pages + Page properties collected from src have priority over page properties from globs, + while page properties from later entries take priority over earlier ones. + */ const filteredPages = {}; - globPaths.concat(this.addressablePages).forEach((page) => { + pagesFromGlobs.concat(pagesFromSrc).forEach((page) => { const filteredPage = _.omitBy(page, _.isUndefined); - if (page.src in filteredPages) { - filteredPages[page.src] = { ...filteredPages[page.src], ...filteredPage }; - } else { - filteredPages[page.src] = filteredPage; - } + filteredPages[page.src] = page.src in filteredPages + ? { ...filteredPages[page.src], ...filteredPage } + : filteredPage; }); this.addressablePages = Object.values(filteredPages); @@ -473,10 +505,10 @@ class Site { this.baseUrlMap.forEach((base) => { const userDefinedVariables = {}; Object.assign(userDefinedVariables, markbindVariable); - + const userDefinedVariablesPath = path.resolve(base, USER_VARIABLES_PATH); + const userDefinedVariablesDir = path.dirname(userDefinedVariablesPath); let content; try { - const userDefinedVariablesPath = path.resolve(base, USER_VARIABLES_PATH); content = fs.readFileSync(userDefinedVariablesPath, 'utf8'); } catch (e) { content = ''; @@ -491,9 +523,27 @@ class Site { const $ = cheerio.load(content); $('variable,span').each(function () { const name = $(this).attr('name') || $(this).attr('id'); - // Process the content of the variable with nunjucks, in case it refers to other variables. - const html = nunjucks.renderString($(this).html(), userDefinedVariables); - userDefinedVariables[name] = html; + const variableSource = $(this).attr('from'); + + if (variableSource !== undefined) { + try { + const variableFilePath = path.resolve(userDefinedVariablesDir, variableSource); + const jsonData = fs.readFileSync(variableFilePath); + const varData = JSON.parse(jsonData); + Object.entries(varData).forEach(([varName, varValue]) => { + // Process the content of the variable with nunjucks, in case it refers to other variables. + const variableValue = nunjuckUtils.renderEscaped(nunjucks, varValue, userDefinedVariables); + + userDefinedVariables[varName] = variableValue; + }); + } catch (err) { + logger.warn(`Error ${err.message}`); + } + } else { + // Process the content of the variable with nunjucks, in case it refers to other variables. + const html = nunjuckUtils.renderEscaped(nunjucks, $(this).html(), userDefinedVariables); + userDefinedVariables[name] = html; + } }); }); } @@ -518,24 +568,33 @@ class Site { fs.emptydirSync(this.tempPath); // Clean the output folder; create it if not exist. fs.emptydirSync(this.outputPath); - logger.info(`Website generation started at ${startTime.toLocaleTimeString()}`); + const lazyWebsiteGenerationString = this.onePagePath ? '(lazy) ' : ''; + logger.info(`Website generation ${lazyWebsiteGenerationString}started at ${ + startTime.toLocaleTimeString()}`); return new Promise((resolve, reject) => { this.readSiteConfig(baseUrl) .then(() => this.collectAddressablePages()) .then(() => this.collectBaseUrl()) .then(() => this.collectUserDefinedVariablesMap()) .then(() => this.collectPlugins()) + .then(() => this.collectPluginSpecialTags()) .then(() => this.buildAssets()) - .then(() => this.buildSourceFiles()) + .then(() => (this.onePagePath ? this.lazyBuildSourceFiles() : this.buildSourceFiles())) .then(() => this.copyMarkBindAsset()) .then(() => this.copyFontAwesomeAsset()) .then(() => this.copyOcticonsAsset()) .then(() => this.copyLayouts()) - .then(() => this.updateSiteData()) + .then(() => this.updateSiteData(this.onePagePath || undefined)) .then(() => { const endTime = new Date(); const totalBuildTime = (endTime - startTime) / 1000; - logger.info(`Website generation complete! Total build time: ${totalBuildTime}s`); + logger.info(`Website generation ${lazyWebsiteGenerationString}complete! Total build time: ${ + totalBuildTime}s`); + + if (!this.onePagePath && totalBuildTime > LAZY_LOADING_BUILD_TIME_RECOMMENDATION_LIMIT) { + logger.info('Your site took quite a while to build...' + + 'Have you considered using markbind serve -o when writing content to speed things up?'); + } }) .then(resolve) .catch((error) => { @@ -561,6 +620,44 @@ class Site { }); } + /** + * Adds all pages except the current page being viewed to toRebuild, flagging them for lazy building later. + */ + lazyBuildAllPagesNotViewed() { + this.pages.forEach((page) => { + const normalizedUrl = FsUtil.removeExtension(page.sourcePath); + if (normalizedUrl !== this.currentPageViewed) { + this.toRebuild.add(normalizedUrl); + } + }); + + return Promise.resolve(); + } + + /** + * Only build landing page of the site, building more as the author goes to different links. + */ + lazyBuildSourceFiles() { + return new Promise((resolve, reject) => { + logger.info('Generating landing page...'); + this.generateLandingPage() + .then(() => { + const lazyLoadingSpinnerHtmlFilePath = path.join(__dirname, LAZY_LOADING_SITE_FILE_NAME); + const outputSpinnerHtmlFilePath = path.join(this.outputPath, LAZY_LOADING_SITE_FILE_NAME); + + return fs.copyAsync(lazyLoadingSpinnerHtmlFilePath, outputSpinnerHtmlFilePath); + }) + .then(() => fs.removeAsync(this.tempPath)) + .then(() => this.lazyBuildAllPagesNotViewed()) + .then(() => logger.info('Landing page built, other pages will be built as you navigate to them!')) + .then(resolve) + .catch((error) => { + // if error, remove the site and temp folders + Site.rejectHandler(reject, error, [this.tempPath, this.outputPath]); + }); + }); + } + _rebuildAffectedSourceFiles(filePaths) { const filePathArray = Array.isArray(filePaths) ? filePaths : [filePaths]; const uniquePaths = _.uniq(filePathArray); @@ -577,14 +674,73 @@ class Site { }); } + _rebuildPageBeingViewed(normalizedUrls) { + const startTime = new Date(); + const normalizedUrlArray = Array.isArray(normalizedUrls) ? normalizedUrls : [normalizedUrls]; + const uniqueUrls = _.uniq(normalizedUrlArray); + uniqueUrls.forEach(normalizedUrl => logger.info( + `Building ${normalizedUrl} as some of its dependencies were changed since the last visit`)); + MarkBind.resetVariables(); + + /* + Lazy loading only builds the page being viewed, but the user may be quick enough + to trigger multiple page builds before the first one has finished building, + hence we need to take this into account. + */ + const regeneratePagesBeingViewed = uniqueUrls.map(normalizedUrl => + new Promise((resolve, reject) => { + this._setTimestampVariable(); + const pageToRebuild = this.pages.find(page => + FsUtil.removeExtension(page.sourcePath) === normalizedUrl); + + if (!pageToRebuild) { + Site.rejectHandler(reject, + new Error(`Failed to rebuild ${normalizedUrl} during lazy loading`), + [this.tempPath, this.outputPath]); + } + + this.toRebuild.delete(normalizedUrl); + pageToRebuild.userDefinedVariablesMap = this.userDefinedVariablesMap; + pageToRebuild.generate(new Set()) + .then(() => { + pageToRebuild.collectHeadingsAndKeywords(); + + return this.writeSiteData(); + }) + .then(() => { + const endTime = new Date(); + const totalBuildTime = (endTime - startTime) / 1000; + logger.info(`Lazy website regeneration complete! Total build time: ${totalBuildTime}s`); + }) + .then(resolve) + .catch((error) => { + logger.error(error); + reject(new Error(`Failed to rebuild ${normalizedUrl} during lazy loading`)); + }); + }), + ); + + return Promise.all(regeneratePagesBeingViewed) + .then(() => fs.removeAsync(this.tempPath)); + } + _rebuildSourceFiles() { - logger.warn('Rebuilding all source files'); + logger.info('File added or removed, updating list of site\'s pages...'); return new Promise((resolve, reject) => { Promise.resolve('') .then(() => this.updateAddressablePages()) - // ignore the warning on next line as IDE doesn't understand `delay` very well .then(filesToRemove => this.removeAsset(filesToRemove)) - .then(() => this.buildSourceFiles()) + .then(() => { + if (this.onePagePath) { + this.mapAddressablePagesToPages(this.addressablePages || [], this.getFavIconUrl()); + + return this.rebuildPageBeingViewed(this.currentPageViewed) + .then(() => this.lazyBuildAllPagesNotViewed()); + } + + logger.warn('Rebuilding all pages...'); + return this.buildSourceFiles(); + }) .then(resolve) .catch((error) => { // if error, remove the site and temp folders @@ -736,53 +892,76 @@ class Site { .forEach(plugin => this.loadPlugin(plugin, true)); } + getFavIconUrl() { + const { baseUrl, faviconPath } = this.siteConfig; + + if (faviconPath) { + if (!fs.existsSync(path.join(this.rootPath, faviconPath))) { + logger.warn(`${faviconPath} does not exist`); + } + return url.join('/', baseUrl, faviconPath); + } else if (fs.existsSync(path.join(this.rootPath, FAVICON_DEFAULT_PATH))) { + return url.join('/', baseUrl, FAVICON_DEFAULT_PATH); + } + + return undefined; + } + + mapAddressablePagesToPages(addressablePages, faviconUrl) { + this.pages = addressablePages.map(page => this.createPage({ + faviconUrl, + pageSrc: page.src, + title: page.title, + layout: page.layout, + frontmatter: page.frontmatter, + searchable: page.searchable !== 'no', + externalScripts: page.externalScripts, + })); + } + + /** + * Collects the special tags of the site's plugins, and injects them into the parsers. + */ + collectPluginSpecialTags() { + const tagsToIgnore = new Set(); + + Object.values(this.plugins).forEach((plugin) => { + if (!plugin.getSpecialTags) { + return; + } + + plugin.getSpecialTags(plugin.pluginsContext) + .forEach((tagName) => { + if (!tagName) { + return; + } + + tagsToIgnore.add(tagName.toLowerCase()); + }); + }); + + injectHtmlParser2SpecialTags(tagsToIgnore); + injectMarkdownItSpecialTags(tagsToIgnore); + Page.htmlBeautifyOptions = { + indent_size: 2, + content_unformatted: ['pre', 'textarea', ...tagsToIgnore], + }; + } + /** * Renders all pages specified in site configuration file to the output folder */ generatePages() { // Run MarkBind include and render on each source file. // Render the final rendered page to the output folder. - const { baseUrl, faviconPath } = this.siteConfig; const addressablePages = this.addressablePages || []; const builtFiles = new Set(); const processingFiles = []; - let faviconUrl; - if (faviconPath) { - faviconUrl = url.join('/', baseUrl, faviconPath); - if (!fs.existsSync(path.join(this.rootPath, faviconPath))) { - logger.warn(`${faviconPath} does not exist`); - } - } else if (fs.existsSync(path.join(this.rootPath, FAVICON_DEFAULT_PATH))) { - faviconUrl = url.join('/', baseUrl, FAVICON_DEFAULT_PATH); - } + const faviconUrl = this.getFavIconUrl(); this._setTimestampVariable(); - if (this.onePagePath) { - const page = addressablePages.find(p => p.src === this.onePagePath); - if (!page) { - return Promise.reject(new Error(`${this.onePagePath} is not specified in the site configuration.`)); - } - this.pages.push(this.createPage({ - faviconUrl, - pageSrc: page.src, - title: page.title, - layout: page.layout, - frontmatter: page.frontmatter, - searchable: page.searchable !== 'no', - externalScripts: page.externalScripts, - })); - } else { - this.pages = addressablePages.map(page => this.createPage({ - faviconUrl, - pageSrc: page.src, - title: page.title, - layout: page.layout, - frontmatter: page.frontmatter, - searchable: page.searchable !== 'no', - externalScripts: page.externalScripts, - })); - } + this.mapAddressablePagesToPages(addressablePages, faviconUrl); const progressBar = new ProgressBar(`[:bar] :current / ${this.pages.length} pages built`, { total: this.pages.length }); @@ -802,7 +981,27 @@ class Site { }); } + /** + * Renders only the starting page for lazy loading to the output folder. + */ + generateLandingPage() { + const addressablePages = this.addressablePages || []; + const faviconUrl = this.getFavIconUrl(); + + this._setTimestampVariable(); + this.mapAddressablePagesToPages(addressablePages, faviconUrl); + + const landingPage = this.pages.find(page => page.src === this.onePagePath); + if (!landingPage) { + return Promise.reject(new Error(`${this.onePagePath} is not specified in the site configuration.`)); + } + + return landingPage.generate(new Set()); + } + regenerateAffectedPages(filePaths) { + const startTime = new Date(); + const builtFiles = new Set(); const processingFiles = []; const shouldRebuildAllPages = this.collectUserDefinedVariablesMapIfNeeded(filePaths) || this.forceReload; @@ -811,13 +1010,25 @@ class Site { } this._setTimestampVariable(); this.pages.forEach((page) => { - if (shouldRebuildAllPages || filePaths.some((filePath) => { + const doFilePathsHaveSourceFiles = filePaths.some((filePath) => { const isIncludedFile = page.includedFiles.has(filePath); const isPluginSourceFile = page.pluginSourceFiles.has(filePath); return isIncludedFile || isPluginSourceFile; - })) { - // eslint-disable-next-line no-param-reassign + }); + + if (shouldRebuildAllPages || doFilePathsHaveSourceFiles) { + if (this.onePagePath) { + const normalizedSource = FsUtil.removeExtension(page.sourcePath); + const isPageBeingViewed = normalizedSource === this.currentPageViewed; + + if (!isPageBeingViewed) { + this.toRebuild.add(normalizedSource); + return; + } + } + + // eslint-disable-next-line no-param-reassign page.userDefinedVariablesMap = this.userDefinedVariablesMap; processingFiles.push(page.generate(builtFiles) .catch((err) => { @@ -831,8 +1042,22 @@ class Site { return new Promise((resolve, reject) => { Promise.all(processingFiles) - .then(() => this.updateSiteData(shouldRebuildAllPages ? undefined : filePaths)) + .then(() => { + // For lazy loading, we defer updating site data pages not being viewed, + // even if all pages should be rebuilt, until they are navigated to. + const shouldUpdateAllSiteData = shouldRebuildAllPages && !this.onePagePath; + return this.updateSiteData(shouldUpdateAllSiteData ? undefined : filePaths); + }) .then(() => logger.info('Pages rebuilt')) + .then(() => { + const endTime = new Date(); + const totalBuildTime = (endTime - startTime) / 1000; + logger.info(`Website regeneration complete! Total build time: ${totalBuildTime}s`); + if (!this.onePagePath && totalBuildTime > LAZY_LOADING_REBUILD_TIME_RECOMMENDATION_LIMIT) { + logger.info('Your pages took quite a while to rebuild...' + + 'Have you considered using markbind serve -o when writing content to speed things up?'); + } + }) .then(resolve) .catch(reject); }); @@ -847,8 +1072,9 @@ class Site { */ updateSiteData(filePaths) { const generateForAllPages = filePaths === undefined; + const filePathsToUpdateData = Array.isArray(filePaths) ? filePaths : [filePaths]; this.pages.forEach((page) => { - if (generateForAllPages || filePaths.some(filePath => page.includedFiles.has(filePath))) { + if (generateForAllPages || filePathsToUpdateData.some(filePath => page.includedFiles.has(filePath))) { page.collectHeadingsAndKeywords(); } }); @@ -1014,7 +1240,17 @@ class Site { } _setTimestampVariable() { - const time = new Date().toUTCString(); + const timeZone = this.siteConfig.timeZone ? this.siteConfig.timeZone : 'UTC'; + const locale = this.siteConfig.locale ? this.siteConfig.locale : 'en-GB'; + const options = { + weekday: 'short', + year: 'numeric', + month: 'short', + day: 'numeric', + timeZone, + timeZoneName: 'short', + }; + const time = new Date().toLocaleTimeString(locale, options); Object.keys(this.userDefinedVariablesMap).forEach((base) => { this.userDefinedVariablesMap[base].timestamp = time; }); @@ -1028,6 +1264,9 @@ class Site { */ Site.prototype.buildAsset = delay(Site.prototype._buildMultipleAssets, 1000); +Site.prototype.rebuildPageBeingViewed + = delay(Site.prototype._rebuildPageBeingViewed, 1000); + /** * Rebuild pages that are affected by changes in filePaths * @param filePaths a single path or an array of paths corresponding to the files that have changed diff --git a/src/constants.js b/src/constants.js index 35d7c0a41e..f89bf66f9f 100644 --- a/src/constants.js +++ b/src/constants.js @@ -56,6 +56,9 @@ module.exports = { SITE_CONFIG_NAME: 'site.json', SITE_DATA_NAME: 'siteData.json', LAYOUT_SITE_FOLDER_NAME: 'layouts', + LAZY_LOADING_SITE_FILE_NAME: 'LazyLiveReloadLoadingSite.html', + LAZY_LOADING_BUILD_TIME_RECOMMENDATION_LIMIT: 30000, + LAZY_LOADING_REBUILD_TIME_RECOMMENDATION_LIMIT: 5000, USER_VARIABLES_PATH: '_markbind/variables.md', WIKI_SITE_NAV_PATH: '_Sidebar.md', WIKI_FOOTER_PATH: '_Footer.md', diff --git a/src/lib/markbind/package-lock.json b/src/lib/markbind/package-lock.json index 81d838648b..8c0551c17d 100644 --- a/src/lib/markbind/package-lock.json +++ b/src/lib/markbind/package-lock.json @@ -1,6 +1,6 @@ { "name": "markbind", - "version": "2.11.0", + "version": "2.12.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -39,9 +39,9 @@ "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==" }, "acorn": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", "dev": true }, "acorn-jsx": { diff --git a/src/lib/markbind/package.json b/src/lib/markbind/package.json index 7f1a88f709..de7ad5b0a8 100644 --- a/src/lib/markbind/package.json +++ b/src/lib/markbind/package.json @@ -1,6 +1,6 @@ { "name": "markbind", - "version": "2.11.0", + "version": "2.12.0", "description": "MarkBind core module.", "main": "src/parser.js", "keywords": [ @@ -16,6 +16,7 @@ "@sindresorhus/slugify": "^0.9.1", "bluebird": "^3.7.2", "cheerio": "^0.22.0", + "ensure-posix-path": "^1.1.1", "fastmatter": "^2.1.1", "highlight.js": "^9.14.2", "htmlparser2": "^3.10.1", diff --git a/src/lib/markbind/src/lib/markdown-it/index.js b/src/lib/markbind/src/lib/markdown-it/index.js index 55ae6a443f..a22717f39c 100644 --- a/src/lib/markbind/src/lib/markdown-it/index.js +++ b/src/lib/markbind/src/lib/markdown-it/index.js @@ -8,15 +8,17 @@ const slugify = require('@sindresorhus/slugify'); // markdown-it plugins markdownIt.use(require('markdown-it-mark')) .use(require('markdown-it-ins')) + .use(require('markdown-it-sub')) + .use(require('markdown-it-sup')) .use(require('markdown-it-imsize'), {autofill: false}) .use(require('markdown-it-table-of-contents')) .use(require('markdown-it-task-lists'), {enabled: true}) .use(require('markdown-it-linkify-images'), {imgClass: 'img-fluid'}) .use(require('markdown-it-attrs')) - .use(require('../markdown-it-shared/markdown-it-dimmed')) + .use(require('./markdown-it-dimmed')) .use(require('./markdown-it-radio-button')) .use(require('./markdown-it-block-embed')) - .use(require('../markdown-it-shared/markdown-it-icons')) + .use(require('./markdown-it-icons')) .use(require('./markdown-it-footnotes')); // fix link @@ -30,6 +32,18 @@ markdownIt.renderer.rules.table_close = (tokens, idx) => { return ''; }; +function getAttributeAndDelete(token, attr) { + const index = token.attrIndex(attr); + if (index === -1) { + return undefined; + } + // tokens are stored as an array of two-element-arrays: + // e.g. [ ['highlight-lines', '1,2,3'], ['start-from', '1'] ] + const value = token.attrs[index][1]; + token.attrs.splice(index, 1); + return value; +} + // syntax highlight code fences and add line numbers markdownIt.renderer.rules.fence = (tokens, idx, options, env, slf) => { const token = tokens[idx]; @@ -64,18 +78,72 @@ markdownIt.renderer.rules.fence = (tokens, idx, options, env, slf) => { if (!highlighted) { lines = markdownIt.utils.escapeHtml(str).split('\n'); } - lines.pop(); // last line is always a single '\n' newline, so we remove it - /* wrap all lines with so we can number them - if a line is empty we put a 0 width non breaking space - */ - str = lines.map(line => `${line || '​'}`).join(''); + const startFromOneBased = Math.max(1, parseInt(getAttributeAndDelete(token, 'start-from'), 10) || 1); + const startFromZeroBased = startFromOneBased - 1; + + if (startFromOneBased > 1) { + // counter is incremented on each span, so we need to subtract 1 + token.attrJoin('style', `counter-reset: line ${startFromZeroBased};`); + } + + const highlightLinesInput = getAttributeAndDelete(token, 'highlight-lines'); + let lineNumbersAndRanges = []; + if (highlightLinesInput) { + // example input format: "1,4-7,8,11-55" + // output: [[1],[4,7],[8],[11,55]] + // the output is an array contaning either single line numbers [lineNum] or ranges [start, end] + // ',' delimits either single line numbers (eg: 1) or ranges (eg: 4-7) + const highlightLines = highlightLinesInput.split(','); + // if it's the single number, it will just be parsed as an int, (eg: ['1'] --> [1] ) + // if it's a range, it will be parsed as as an array of two ints (eg: ['4-7'] --> [4,6]) + function parseAndZeroBaseLineNumber(numberString) { + // authors provide line numbers to highlight based on the 'start-from' attribute if it exists + // so we need to shift them all back down to start at 0 + return parseInt(numberString, 10) - startFromZeroBased; + } + lineNumbersAndRanges = highlightLines.map(elem => elem.split('-').map(parseAndZeroBaseLineNumber)); + } + + lines.pop(); // last line is always a single '\n' newline, so we remove it + // wrap all lines with so we can number them + str = lines.map((line, index) => { + // if a line is empty we put a 0 width non breaking space + const content = line || '​'; + const currentLineNumber = index + 1; + // check if there is at least one range or line number that matches the current line number + // Note: The algorithm is based off markdown-it-highlight-lines (https://github.com/egoist/markdown-it-highlight-lines/blob/master/src/index.js) + // This is an O(n^2) solution wrt to the number of lines + // I opt to use this approach because it's simple, and it is unlikely that the number of elements in `lineNumbersAndRanges` will be large + // There is possible room for improvement for a more efficient algo that is O(n). + const inRange = lineNumbersAndRanges.some(([start, end]) => { + if (start && end) { + return currentLineNumber >= start && currentLineNumber <= end; + } + return currentLineNumber === start; + }); + if (inRange) { + return `${content}`; + } + return `${content}`; + }).join(''); token.attrJoin('class', 'hljs'); if (highlighted) { token.attrJoin('class', lang); } - return `
${str}
`; + + const heading = token.attrGet('heading'); + const codeBlockContent = `
${str}
`; + if (heading) { + const renderedHeading = markdownIt.renderInline(heading); + const headingStyle = (renderedHeading === heading) ? 'code-block-heading' : 'code-block-heading inline-markdown-heading'; + return '
' + + `
${renderedHeading}
` + + `
${codeBlockContent}
` + + '
'; + } + return codeBlockContent; }; // highlight inline code @@ -95,7 +163,7 @@ markdownIt.renderer.rules.code_inline = (tokens, idx, options, env, slf) => { } }; -const fixedNumberEmojiDefs = require('../markdown-it-shared/markdown-it-emoji-fixed'); +const fixedNumberEmojiDefs = require('./markdown-it-emoji-fixed'); markdownIt.use(require('markdown-it-emoji'), { defs: fixedNumberEmojiDefs }); diff --git a/src/lib/markbind/src/lib/markdown-it-shared/markdown-it-dimmed.js b/src/lib/markbind/src/lib/markdown-it/markdown-it-dimmed.js similarity index 100% rename from src/lib/markbind/src/lib/markdown-it-shared/markdown-it-dimmed.js rename to src/lib/markbind/src/lib/markdown-it/markdown-it-dimmed.js diff --git a/src/lib/markbind/src/lib/markdown-it-shared/markdown-it-emoji-fixed.js b/src/lib/markbind/src/lib/markdown-it/markdown-it-emoji-fixed.js similarity index 100% rename from src/lib/markbind/src/lib/markdown-it-shared/markdown-it-emoji-fixed.js rename to src/lib/markbind/src/lib/markdown-it/markdown-it-emoji-fixed.js diff --git a/src/lib/markbind/src/lib/markdown-it/markdown-it-escape-special-tags.js b/src/lib/markbind/src/lib/markdown-it/markdown-it-escape-special-tags.js new file mode 100644 index 0000000000..d0b31c2a9b --- /dev/null +++ b/src/lib/markbind/src/lib/markdown-it/markdown-it-escape-special-tags.js @@ -0,0 +1,95 @@ +const markdownIt = require('./index'); + +/* + Custom patch for the api to escape content in certain special tags + Adapted from the default markdown-it html_block rule and replaces it. + */ + +function escape_plugin(md, tagsToIgnore) { + const block_names = require('markdown-it/lib/common/html_blocks'); + const HTML_OPEN_CLOSE_TAG_RE = require('markdown-it/lib/common/html_re').HTML_OPEN_CLOSE_TAG_RE; + + const specialTagsRegex = Array.from(tagsToIgnore) + .concat(['script|pre|style']) + .join('|'); + const startingSpecialTagRegex = new RegExp(`^<(${specialTagsRegex})(?=(\\s|>|$))`, 'i'); + const endingSpecialTagRegex = new RegExp(`<\\/(${specialTagsRegex})>`, 'i'); + + const HTML_SEQUENCES = [ + [ startingSpecialTagRegex, endingSpecialTagRegex, true ], + [ /^/, true ], + [ /^<\?/, /\?>/, true ], + [ /^/, true ], + [ /^/, true ], + [ new RegExp('^|$))', 'i'), /^$/, true ], + [ new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + '\\s*$'), /^$/, false ] + ]; + + + function escape_special_tags(state, startLine, endLine, silent) { + let i, nextLine, token, lineText, + pos = state.bMarks[startLine] + state.tShift[startLine], + max = state.eMarks[startLine]; + + // if it's indented more than 3 spaces, it should be a code block + if (state.sCount[startLine] - state.blkIndent >= 4) { return false; } + + if (!state.md.options.html) { return false; } + + if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; } + + lineText = state.src.slice(pos, max); + + for (i = 0; i < HTML_SEQUENCES.length; i++) { + if (HTML_SEQUENCES[i][0].test(lineText)) { break; } + } + + if (i === HTML_SEQUENCES.length) { return false; } + + if (silent) { + // true if this sequence can be a terminator, false otherwise + return HTML_SEQUENCES[i][2]; + } + + nextLine = startLine + 1; + + // If we are here - we detected HTML block. + // Let's roll down till block end. + if (!HTML_SEQUENCES[i][1].test(lineText)) { + for (; nextLine < endLine; nextLine++) { + if (state.sCount[nextLine] < state.blkIndent) { break; } + + pos = state.bMarks[nextLine] + state.tShift[nextLine]; + max = state.eMarks[nextLine]; + lineText = state.src.slice(pos, max); + + if (HTML_SEQUENCES[i][1].test(lineText)) { + if (lineText.length !== 0) { nextLine++; } + break; + } + } + } + + state.line = nextLine; + + token = state.push('html_block', '', 0); + token.map = [ startLine, nextLine ]; + token.content = state.getLines(startLine, nextLine, state.blkIndent, true); + + return true; + } + + md.block.ruler.at('html_block', escape_special_tags, { + alt: [ 'paragraph', 'reference', 'blockquote' ] + }); +} + +/** + * Sets up the plugin with the provided tag names to ignore. + * Replaces any previously injected tags. + */ +function injectTags(tagsToIgnore) { + markdownIt.use(escape_plugin, tagsToIgnore); +} + +module.exports = injectTags; diff --git a/src/lib/markbind/src/lib/markdown-it-shared/markdown-it-icons.js b/src/lib/markbind/src/lib/markdown-it/markdown-it-icons.js similarity index 100% rename from src/lib/markbind/src/lib/markdown-it-shared/markdown-it-icons.js rename to src/lib/markbind/src/lib/markdown-it/markdown-it-icons.js diff --git a/src/lib/markbind/src/lib/vue-attribute-renderer/index.js b/src/lib/markbind/src/lib/vue-attribute-renderer/index.js deleted file mode 100644 index aa3f724955..0000000000 --- a/src/lib/markbind/src/lib/vue-attribute-renderer/index.js +++ /dev/null @@ -1,28 +0,0 @@ -/* - * markdownIt instance using a different set of plugins for parsing and rendering - * markdown in vue components' attributes. - * - * Todo standardise this with the main markdown parser - */ - -const markdownIt = require('markdown-it')({ - html: true, - linkify: true, -}); - -markdownIt.use(require('markdown-it-mark')) - .use(require('markdown-it-ins')) - .use(require('markdown-it-sub')) - .use(require('markdown-it-sup')) - .use(require('../markdown-it-shared/markdown-it-dimmed')) - .use(require('../markdown-it-shared/markdown-it-icons')) - .use(require('markdown-it-imsize'), { - autofill: false, - }); - -const fixedNumberEmojiDefs = require('../markdown-it-shared/markdown-it-emoji-fixed'); -markdownIt.use(require('markdown-it-emoji'), { - defs: fixedNumberEmojiDefs, -}); - -module.exports = markdownIt; diff --git a/src/lib/markbind/src/parser.js b/src/lib/markbind/src/parser.js index 7a8fc3a11c..1aa19fa63d 100644 --- a/src/lib/markbind/src/parser.js +++ b/src/lib/markbind/src/parser.js @@ -4,10 +4,12 @@ const htmlparser = require('htmlparser2'); require('./patches/htmlparser2'); const nunjucks = require('nunjucks'); const path = require('path'); const Promise = require('bluebird'); -const url = require('url'); -const pathIsInside = require('path-is-inside'); const slugify = require('@sindresorhus/slugify'); +const ensurePosix = require('ensure-posix-path'); const componentParser = require('./parsers/componentParser'); +const componentPreprocessor = require('./preprocessors/componentPreprocessor'); +const nunjuckUtils = require('./utils/nunjuckUtils'); +const logger = require('../../../util/logger'); const _ = {}; _.clone = require('lodash/clone'); @@ -15,11 +17,10 @@ _.cloneDeep = require('lodash/cloneDeep'); _.hasIn = require('lodash/hasIn'); _.isArray = require('lodash/isArray'); _.isEmpty = require('lodash/isEmpty'); -_.pick = require('lodash/pick'); -const CyclicReferenceError = require('./handlers/cyclicReferenceError.js'); const md = require('./lib/markdown-it'); const utils = require('./utils'); +const urlUtils = require('./utils/urls'); cheerio.prototype.options.xmlMode = true; // Enable xml mode for self-closing tag cheerio.prototype.options.decodeEntities = false; // Don't escape HTML entities @@ -27,7 +28,6 @@ cheerio.prototype.options.decodeEntities = false; // Don't escape HTML entities const { ATTRIB_INCLUDE_PATH, ATTRIB_CWF, - BOILERPLATE_FOLDER_NAME, IMPORTED_VARIABLE_PREFIX, } = require('./constants'); @@ -69,6 +69,7 @@ class Parser { */ // eslint-disable-next-line class-methods-use-this extractPageVariables(fileName, data, userDefinedVariables, includedVariables) { + const fileDir = path.dirname(fileName); const $ = cheerio.load(data); const pageVariables = {}; Parser.VARIABLE_LOOKUP.set(fileName, new Map()); @@ -94,21 +95,42 @@ class Parser { importedVariables[name] = `{{${alias}.${name}}}`; }); }); - $('variable').each(function () { - const variableElement = $(this); - const variableName = variableElement.attr('name'); - if (!variableName) { - // eslint-disable-next-line no-console - console.warn(`Missing 'name' for variable in ${fileName}\n`); - return; - } + const setPageVariable = (variableName, rawVariableValue) => { + const otherVariables = { + ...importedVariables, + ...pageVariables, + ...userDefinedVariables, + ...includedVariables, + }; + const variableValue = nunjuckUtils.renderEscaped(nunjucks, rawVariableValue, otherVariables); if (!pageVariables[variableName]) { - const variableValue = nunjucks.renderString(md.renderInline(variableElement.html()), { - ...importedVariables, ...pageVariables, ...userDefinedVariables, ...includedVariables, - }); pageVariables[variableName] = variableValue; Parser.VARIABLE_LOOKUP.get(fileName).set(variableName, variableValue); } + }; + $('variable').each(function () { + const variableElement = $(this); + const variableName = variableElement.attr('name'); + const variableSource = $(this).attr('from'); + if (variableSource !== undefined) { + try { + const variableFilePath = path.resolve(fileDir, variableSource); + const jsonData = fs.readFileSync(variableFilePath); + const varData = JSON.parse(jsonData); + Object.entries(varData).forEach(([varName, varValue]) => { + setPageVariable(varName, varValue); + }); + } catch (err) { + logger.warn(`Error ${err.message}`); + } + } else { + if (!variableName) { + // eslint-disable-next-line no-console + console.warn(`Missing 'name' for variable in ${fileName}\n`); + return; + } + setPageVariable(variableName, md.renderInline(variableElement.html())); + } }); return { ...importedVariables, ...pageVariables }; } @@ -129,44 +151,32 @@ class Parser { return _.clone(this.missingIncludeSrc); } - static _preprocessThumbnails(element) { - const isImage = _.hasIn(element.attribs, 'src') && element.attribs.src !== ''; - if (isImage) { - return element; - } - const text = _.hasIn(element.attribs, 'text') ? element.attribs.text : ''; - if (text === '') { - return element; - } - const renderedText = md.renderInline(text); - // eslint-disable-next-line no-param-reassign - element.children = cheerio.parseHTML(renderedText); - return element; - } - - _renderIncludeFile(filePath, element, context, config, asIfAt = filePath) { + _renderIncludeFile(filePath, node, context, config, asIfAt = filePath) { try { this._fileCache[filePath] = this._fileCache[filePath] ? this._fileCache[filePath] : fs.readFileSync(filePath, 'utf8'); } catch (e) { // Read file fail - const missingReferenceErrorMessage = `Missing reference in: ${element.attribs[ATTRIB_CWF]}`; + const missingReferenceErrorMessage = `Missing reference in: ${node.attribs[ATTRIB_CWF]}`; e.message += `\n${missingReferenceErrorMessage}`; this._onError(e); - return Parser.createErrorNode(element, e); + return utils.createErrorNode(node, e); } const fileContent = this._fileCache[filePath]; // cache the file contents to save some I/O - const { parent, relative } = Parser.calculateNewBaseUrls(asIfAt, config.rootPath, config.baseUrlMap); - const userDefinedVariables = config.userDefinedVariablesMap[path.resolve(parent, relative)]; + const parentSitePath = urlUtils.getParentSiteAbsolutePath(asIfAt, config.rootPath, config.baseUrlMap); + const userDefinedVariables = config.userDefinedVariablesMap[parentSitePath]; // Extract included variables from the PARENT file - const includeVariables = Parser.extractIncludeVariables(element, context.variables); + const includeVariables = Parser.extractIncludeVariables(node, context.variables); // Extract page variables from the CHILD file const pageVariables = this.extractPageVariables(asIfAt, fileContent, userDefinedVariables, includeVariables); - const content - = nunjucks.renderString(fileContent, - { ...pageVariables, ...includeVariables, ...userDefinedVariables }, - { path: filePath }); + const content = nunjuckUtils.renderEscaped(nunjucks, fileContent, { + ...pageVariables, + ...includeVariables, + ...userDefinedVariables, + }, { + path: filePath, + }); const childContext = _.cloneDeep(context); childContext.cwf = asIfAt; childContext.variables = includeVariables; @@ -181,238 +191,67 @@ class Parser { }); const aliases = new Map(); Parser.FILE_ALIASES.set(cwf, aliases); - $('import[from]').each((index, element) => { - const filePath = path.resolve(path.dirname(cwf), element.attribs.from); - const variableNames = Object.keys(element.attribs) + $('import[from]').each((index, node) => { + const filePath = path.resolve(path.dirname(cwf), node.attribs.from); + const variableNames = Object.keys(node.attribs) .filter(name => name !== 'from' && name !== 'as'); // If no namespace is provided, we use the smallest name as one const largestName = variableNames.sort()[0]; // ... and prepend it with $__MARKBIND__ to reduce collisions. const generatedAlias = IMPORTED_VARIABLE_PREFIX + largestName; - const alias = _.hasIn(element.attribs, 'as') - ? element.attribs.as + const alias = _.hasIn(node.attribs, 'as') + ? node.attribs.as : generatedAlias; aliases.set(alias, filePath); this.staticIncludeSrc.push({ from: context.cwf, to: filePath }); // Render inner file content const { content: renderedContent, childContext, userDefinedVariables } - = this._renderIncludeFile(filePath, element, context, config); - if (!Parser.PROCESSED_INNER_VARIABLES.has(filePath)) { - Parser.PROCESSED_INNER_VARIABLES.add(filePath); - this._extractInnerVariables(renderedContent, childContext, config); - } + = this._renderIncludeFile(filePath, node, context, config); + this.extractInnerVariablesIfNotProcessed(renderedContent, childContext, config, filePath); const innerVariables = this.getImportedVariableMap(filePath); + Parser.VARIABLE_LOOKUP.get(filePath).forEach((value, variableName, map) => { - map.set(variableName, nunjucks.renderString(value, { ...userDefinedVariables, ...innerVariables })); + map.set(variableName, nunjuckUtils.renderEscaped(nunjucks, value, { + ...userDefinedVariables, ...innerVariables, + })); }); }); } - _preprocess(node, context, config) { - const element = node; - const self = this; - element.attribs = element.attribs || {}; - element.attribs[ATTRIB_CWF] = path.resolve(context.cwf); - if (element.name === 'thumbnail') { - return Parser._preprocessThumbnails(element); - } - const requiresSrc = ['include'].includes(element.name); - if (requiresSrc && _.isEmpty(element.attribs.src)) { - const error = new Error(`Empty src attribute in ${element.name} in: ${element.attribs[ATTRIB_CWF]}`); - this._onError(error); - return Parser.createErrorNode(element, error); - } - const shouldProcessSrc = ['include', 'panel'].includes(element.name); - const hasSrc = _.hasIn(element.attribs, 'src'); - let isUrl; - let includeSrc; - let filePath; - let actualFilePath; - if (hasSrc && shouldProcessSrc) { - isUrl = utils.isUrl(element.attribs.src); - includeSrc = url.parse(element.attribs.src); - filePath = isUrl - ? element.attribs.src - : path.resolve(path.dirname(context.cwf), decodeURIComponent(includeSrc.path)); - actualFilePath = filePath; - const isBoilerplate = _.hasIn(element.attribs, 'boilerplate'); - if (isBoilerplate) { - element.attribs.boilerplate = element.attribs.boilerplate || path.basename(filePath); - actualFilePath - = Parser.calculateBoilerplateFilePath(element.attribs.boilerplate, filePath, config); - this.boilerplateIncludeSrc.push({ from: context.cwf, to: actualFilePath }); - } - const isOptional = element.name === 'include' && _.hasIn(element.attribs, 'optional'); - if (!utils.fileExists(actualFilePath)) { - if (isOptional) { - return Parser.createEmptyNode(); - } - this.missingIncludeSrc.push({ from: context.cwf, to: actualFilePath }); - const error - = new Error(`No such file: ${actualFilePath}\nMissing reference in ${element.attribs[ATTRIB_CWF]}`); - this._onError(error); - return Parser.createErrorNode(element, error); - } - } - if (element.name === 'include') { - const isInline = _.hasIn(element.attribs, 'inline'); - const isDynamic = _.hasIn(element.attribs, 'dynamic'); - const isOptional = _.hasIn(element.attribs, 'optional'); - const isTrim = _.hasIn(element.attribs, 'trim'); - element.name = isInline ? 'span' : 'div'; - element.attribs[ATTRIB_INCLUDE_PATH] = filePath; - if (isOptional && !includeSrc.hash) { - // optional includes of whole files have been handled, but segments still need to be processed - delete element.attribs.optional; - } - if (isDynamic) { - element.name = 'panel'; - element.attribs.src = filePath; - element.attribs['no-close'] = true; - element.attribs['no-switch'] = true; - if (includeSrc.hash) { - element.attribs.fragment = includeSrc.hash.substring(1); - } - element.attribs.header = element.attribs.name || ''; - delete element.attribs.dynamic; - this.dynamicIncludeSrc.push({ from: context.cwf, to: actualFilePath, asIfTo: element.attribs.src }); - return element; - } - if (isUrl) { - return element; // only keep url path for dynamic - } - this.staticIncludeSrc.push({ from: context.cwf, to: actualFilePath }); - const isIncludeSrcMd = utils.isMarkdownFileExt(utils.getExt(filePath)); - if (isIncludeSrcMd && context.source === 'html') { - // HTML include markdown, use special tag to indicate markdown code. - element.name = 'markdown'; - } - const { content, childContext, userDefinedVariables } - = this._renderIncludeFile(actualFilePath, element, context, config, filePath); - childContext.source = isIncludeSrcMd ? 'md' : 'html'; - childContext.callStack.push(context.cwf); - if (!Parser.PROCESSED_INNER_VARIABLES.has(filePath)) { - Parser.PROCESSED_INNER_VARIABLES.add(filePath); - this._extractInnerVariables(content, childContext, config); - } - const innerVariables = this.getImportedVariableMap(filePath); - const fileContent = nunjucks.renderString(content, { ...userDefinedVariables, ...innerVariables }); - // Delete variable attributes in include - Object.keys(element.attribs).forEach((attribute) => { - if (attribute.startsWith('var-')) { - delete element.attribs[attribute]; - } - }); - delete element.attribs.boilerplate; - delete element.attribs.src; - delete element.attribs.inline; - delete element.attribs.trim; - if (includeSrc.hash) { - // directly get segment from the src - const segmentSrc = cheerio.parseHTML(fileContent, true); - const $ = cheerio.load(segmentSrc); - const hashContent = $(includeSrc.hash).html(); - let actualContent = (hashContent && isTrim) ? hashContent.trim() : hashContent; - if (actualContent === null) { - if (isOptional) { - // set empty content for optional segment include that does not exist - actualContent = ''; - } else { - const error - = new Error(`No such segment '${includeSrc.hash.substring(1)}' in file: ${actualFilePath}` - + `\nMissing reference in ${element.attribs[ATTRIB_CWF]}`); - this._onError(error); - return Parser.createErrorNode(element, error); - } - } - if (isOptional) { - // optional includes of segments have now been handled, so delete the attribute - delete element.attribs.optional; - } - if (isIncludeSrcMd) { - if (context.mode === 'include') { - actualContent = isInline ? actualContent : utils.wrapContent(actualContent, '\n\n', '\n'); - } else { - actualContent = md.render(actualContent); - } - actualContent = Parser._rebaseReferenceForStaticIncludes(actualContent, element, config); - } - const wrapperType = isInline ? 'span' : 'div'; - element.children - = cheerio.parseHTML( - `<${wrapperType} data-included-from="${filePath}">${actualContent}`, - true); - } else { - let actualContent = (fileContent && isTrim) ? fileContent.trim() : fileContent; - if (isIncludeSrcMd) { - if (context.mode === 'include') { - actualContent = isInline ? actualContent : utils.wrapContent(actualContent, '\n\n', '\n'); - } else { - actualContent = md.render(actualContent); - } - } - const wrapperType = isInline ? 'span' : 'div'; - element.children - = cheerio.parseHTML( - `<${wrapperType} data-included-from="${filePath}">${actualContent}`, - true); - } - if (element.children && element.children.length > 0) { - if (childContext.callStack.length > CyclicReferenceError.MAX_RECURSIVE_DEPTH) { - const error = new CyclicReferenceError(childContext.callStack); - this._onError(error); - return Parser.createErrorNode(element, error); - } - element.children = element.children.map(e => self._preprocess(e, childContext, config)); - } - } else if ((element.name === 'panel') && hasSrc) { - if (!isUrl && includeSrc.hash) { - element.attribs.fragment = includeSrc.hash.substring(1); // save hash to fragment attribute - } - element.attribs.src = filePath; - this.dynamicIncludeSrc.push({ from: context.cwf, to: actualFilePath, asIfTo: filePath }); - return element; - } else if (element.name === 'variable' || element.name === 'import') { - return Parser.createEmptyNode(); - } else { - if (element.name === 'body') { - // eslint-disable-next-line no-console - console.warn(` tag found in ${element.attribs[ATTRIB_CWF]}. This may cause formatting errors.`); - } - if (element.children && element.children.length > 0) { - element.children = element.children.map(e => self._preprocess(e, context, config)); - } + extractInnerVariablesIfNotProcessed(content, childContext, config, filePathToExtract) { + if (!Parser.PROCESSED_INNER_VARIABLES.has(filePathToExtract)) { + Parser.PROCESSED_INNER_VARIABLES.add(filePathToExtract); + this._extractInnerVariables(content, childContext, config); } - return element; } processDynamicResources(context, html) { - const self = this; const $ = cheerio.load(html, { xmlMode: false, decodeEntities: false, }); + + const { rootPath } = this; + function getAbsoluteResourcePath(elem, relativeResourcePath) { + const firstParent = elem.closest('div[data-included-from], span[data-included-from]'); + const originalSrc = utils.ensurePosix(firstParent.attr('data-included-from') || context); + const originalSrcFolder = path.posix.dirname(originalSrc); + const fullResourcePath = path.posix.join(originalSrcFolder, relativeResourcePath); + const resolvedResourcePath = path.posix.relative(utils.ensurePosix(rootPath), fullResourcePath); + return path.posix.join('{{hostBaseUrl}}', resolvedResourcePath); + } + $('img, pic, thumbnail').each(function () { const elem = $(this); - if (elem[0].name === 'thumbnail' && elem.attr('src') === undefined) { - // Thumbnail tag without src + if (!elem.attr('src')) { return; } const resourcePath = utils.ensurePosix(elem.attr('src')); - if (resourcePath === undefined || resourcePath === '') { - // Found empty img/pic resource in resourcePath - return; - } if (utils.isAbsolutePath(resourcePath) || utils.isUrl(resourcePath)) { // Do not rewrite. return; } - const firstParent = elem.closest('div[data-included-from], span[data-included-from]'); - const originalSrc = utils.ensurePosix(firstParent.attr('data-included-from') || context); - const originalSrcFolder = path.posix.dirname(originalSrc); - const fullResourcePath = path.posix.join(originalSrcFolder, resourcePath); - const resolvedResourcePath = path.posix.relative(utils.ensurePosix(self.rootPath), fullResourcePath); - const absoluteResourcePath = path.posix.join('{{hostBaseUrl}}', resolvedResourcePath); + const absoluteResourcePath = getAbsoluteResourcePath(elem, resourcePath); $(this).attr('src', absoluteResourcePath); }); $('a, link').each(function () { @@ -426,12 +265,7 @@ class Parser { // Do not rewrite. return; } - const firstParent = elem.closest('div[data-included-from], span[data-included-from]'); - const originalSrc = utils.ensurePosix(firstParent.attr('data-included-from') || context); - const originalSrcFolder = path.posix.dirname(originalSrc); - const fullResourcePath = path.posix.join(originalSrcFolder, resourcePath); - const resolvedResourcePath = path.posix.relative(utils.ensurePosix(self.rootPath), fullResourcePath); - const absoluteResourcePath = path.posix.join('{{hostBaseUrl}}', resolvedResourcePath); + const absoluteResourcePath = getAbsoluteResourcePath(elem, resourcePath); $(this).attr('href', absoluteResourcePath); }); return $.html(); @@ -448,22 +282,22 @@ class Parser { return $.html(); } - _parse(node, context, config) { - const element = node; - const self = this; - if (_.isArray(element)) { - return element.map(el => self._parse(el, context, config)); + _parse(node, config) { + if (_.isArray(node)) { + return node.map(el => this._parse(el, config)); } - if (Parser.isText(element)) { - return element; + if (Parser.isText(node)) { + return node; } - if (element.name) { - element.name = element.name.toLowerCase(); + if (node.name) { + node.name = node.name.toLowerCase(); } - if ((/^h[1-6]$/).test(element.name) && !element.attribs.id) { - const textContent = utils.getTextContent(element); - const slugifiedHeading = slugify(textContent, { decamelize: false }); + if ((/^h[1-6]$/).test(node.name) && !node.attribs.id) { + const textContent = utils.getTextContent(node); + // remove the '<' and '>' symbols that markdown-it uses to escape '<' and '>' + const cleanedContent = textContent.replace(/<|>/g, ''); + const slugifiedHeading = slugify(cleanedContent, { decamelize: false }); let headerId = slugifiedHeading; const { headerIdMap } = config; @@ -474,59 +308,65 @@ class Parser { headerIdMap[slugifiedHeading] = 2; } - element.attribs.id = headerId; + node.attribs.id = headerId; + if (config.fixedHeader) { + node.children.push(cheerio.parseHTML(``)); + } } - switch (element.name) { + switch (node.name) { case 'md': - element.name = 'span'; + node.name = 'span'; cheerio.prototype.options.xmlMode = false; - element.children = cheerio.parseHTML(md.renderInline(cheerio.html(element.children)), true); + node.children = cheerio.parseHTML(md.renderInline(cheerio.html(node.children)), true); cheerio.prototype.options.xmlMode = true; break; case 'markdown': - element.name = 'div'; + node.name = 'div'; cheerio.prototype.options.xmlMode = false; - element.children = cheerio.parseHTML(md.render(cheerio.html(element.children)), true); + node.children = cheerio.parseHTML(md.render(cheerio.html(node.children)), true); cheerio.prototype.options.xmlMode = true; break; case 'panel': { - if (!_.hasIn(element.attribs, 'src')) { // dynamic panel + if (!_.hasIn(node.attribs, 'src')) { // dynamic panel break; } - const fileExists = utils.fileExists(element.attribs.src) + const fileExists = utils.fileExists(node.attribs.src) || utils.fileExists( - Parser.calculateBoilerplateFilePath( - element.attribs.boilerplate, - element.attribs.src, config)); + urlUtils.calculateBoilerplateFilePath( + node.attribs.boilerplate, + node.attribs.src, config)); if (fileExists) { - const { src, fragment } = element.attribs; + const { src, fragment } = node.attribs; const resultDir = path.dirname(path.join('{{hostBaseUrl}}', path.relative(config.rootPath, src))); const resultPath = path.join(resultDir, utils.setExtension(path.basename(src), '._include_.html')); - element.attribs.src = utils.ensurePosix(fragment ? `${resultPath}#${fragment}` : resultPath); + node.attribs.src = utils.ensurePosix(fragment ? `${resultPath}#${fragment}` : resultPath); } - delete element.attribs.boilerplate; + delete node.attribs.boilerplate; break; } default: break; } - componentParser.parseComponents(element, this._onError); + componentParser.parseComponents(node, this._onError); - if (element.children) { - element.children.forEach((child) => { - self._parse(child, context, config); + if (node.children) { + node.children.forEach((child) => { + this._parse(child, config); }); } - componentParser.postParseComponents(element, this._onError); + componentParser.postParseComponents(node, this._onError); + + if (config.fixedHeader && (/^h[1-6]$/).test(node.name) && node.attribs.id) { + cheerio(node).append(cheerio.parseHTML(``)); + } - return element; + return node; } _trimNodes(node) { - const self = this; if (node.name === 'pre' || node.name === 'code') { return; } @@ -539,76 +379,13 @@ class Parser { node.children.splice(n, 1); n--; } else if (child.type === 'tag') { - self._trimNodes(child); + this._trimNodes(child); } } /* eslint-enable no-plusplus */ } } - preprocess(file, pageData, context, config) { - const currentContext = context; - currentContext.mode = 'include'; - currentContext.callStack = []; - - return new Promise((resolve, reject) => { - const handler = new htmlparser.DomHandler((error, dom) => { - if (error) { - reject(error); - return; - } - const nodes = dom.map((d) => { - let processed; - try { - processed = this._preprocess(d, currentContext, config); - } catch (err) { - err.message += `\nError while preprocessing '${file}'`; - this._onError(err); - processed = Parser.createErrorNode(d, err); - } - return processed; - }); - resolve(cheerio.html(nodes)); - }); - - const parser = new htmlparser.Parser(handler, { - xmlMode: true, - decodeEntities: true, - }); - - const { parent, relative } = Parser.calculateNewBaseUrls(file, config.rootPath, config.baseUrlMap); - const userDefinedVariables = config.userDefinedVariablesMap[path.resolve(parent, relative)]; - const { additionalVariables } = config; - const pageVariables = this.extractPageVariables(file, pageData, userDefinedVariables, {}); - - let fileContent = nunjucks.renderString(pageData, - { - ...pageVariables, - ...userDefinedVariables, - ...additionalVariables, - }, - { path: file }); - this._extractInnerVariables(fileContent, currentContext, config); - const innerVariables = this.getImportedVariableMap(currentContext.cwf); - fileContent = nunjucks.renderString(fileContent, { - ...userDefinedVariables, - ...additionalVariables, - ...innerVariables, - }); - const fileExt = utils.getExt(file); - if (utils.isMarkdownFileExt(fileExt)) { - currentContext.source = 'md'; - parser.parseComplete(fileContent.toString()); - } else if (fileExt === 'html') { - currentContext.source = 'html'; - parser.parseComplete(fileContent); - } else { - const error = new Error(`Unsupported File Extension: '${fileExt}'`); - reject(error); - } - }); - } - includeFile(file, config) { const context = {}; context.cwf = config.cwf || file; // current working file @@ -623,11 +400,11 @@ class Parser { const nodes = dom.map((d) => { let processed; try { - processed = this._preprocess(d, context, config); + processed = componentPreprocessor.preProcessComponent(d, context, config, this); } catch (err) { err.message += `\nError while preprocessing '${file}'`; this._onError(err); - processed = Parser.createErrorNode(d, err); + processed = utils.createErrorNode(d, err); } return processed; }); @@ -640,7 +417,7 @@ class Parser { let actualFilePath = file; if (!utils.fileExists(file)) { const boilerplateFilePath - = Parser.calculateBoilerplateFilePath(path.basename(file), file, config); + = urlUtils.calculateBoilerplateFilePath(path.basename(file), file, config); if (utils.fileExists(boilerplateFilePath)) { actualFilePath = boilerplateFilePath; } @@ -651,18 +428,20 @@ class Parser { reject(err); return; } - const { parent, relative } - = Parser.calculateNewBaseUrls(file, config.rootPath, config.baseUrlMap); - const userDefinedVariables = config.userDefinedVariablesMap[path.resolve(parent, relative)]; + const parentSitePath = urlUtils.getParentSiteAbsolutePath(file, config.rootPath, config.baseUrlMap); + const userDefinedVariables = config.userDefinedVariablesMap[parentSitePath]; const pageVariables = this.extractPageVariables(file, data, userDefinedVariables, {}); - let fileContent - = nunjucks.renderString( - data, - { ...pageVariables, ...userDefinedVariables }, - { path: actualFilePath }); + let fileContent = nunjuckUtils.renderEscaped(nunjucks, data, { + ...pageVariables, + ...userDefinedVariables, + }, { + path: actualFilePath, + }); this._extractInnerVariables(fileContent, context, config); const innerVariables = this.getImportedVariableMap(context.cwf); - fileContent = nunjucks.renderString(fileContent, { ...userDefinedVariables, ...innerVariables }); + fileContent = nunjuckUtils.renderEscaped(nunjucks, fileContent, { + ...userDefinedVariables, ...innerVariables, + }); const fileExt = utils.getExt(file); if (utils.isMarkdownFileExt(fileExt)) { context.source = 'md'; @@ -685,22 +464,74 @@ class Parser { return new Promise((resolve, reject) => { let actualFilePath = file; if (!utils.fileExists(file)) { - const boilerplateFilePath = Parser.calculateBoilerplateFilePath(path.basename(file), file, config); + const boilerplateFilePath = urlUtils.calculateBoilerplateFilePath(path.basename(file), file, config); if (utils.fileExists(boilerplateFilePath)) { actualFilePath = boilerplateFilePath; } } - this.preprocess(actualFilePath, pageData, context, config) - .then(resolve) - .catch(reject); + const currentContext = context; + currentContext.mode = 'include'; + currentContext.callStack = []; + + const handler = new htmlparser.DomHandler((error, dom) => { + if (error) { + reject(error); + return; + } + const nodes = dom.map((d) => { + let processed; + try { + processed = componentPreprocessor.preProcessComponent(d, currentContext, config, this); + } catch (err) { + err.message += `\nError while preprocessing '${actualFilePath}'`; + this._onError(err); + processed = utils.createErrorNode(d, err); + } + return processed; + }); + resolve(cheerio.html(nodes)); + }); + + const parser = new htmlparser.Parser(handler, { + xmlMode: true, + decodeEntities: true, + }); + + const parentSitePath = urlUtils.getParentSiteAbsolutePath(file, config.rootPath, config.baseUrlMap); + const userDefinedVariables = config.userDefinedVariablesMap[parentSitePath]; + const { additionalVariables } = config; + const pageVariables = this.extractPageVariables(actualFilePath, pageData, userDefinedVariables, {}); + + let fileContent = nunjuckUtils.renderEscaped(nunjucks, pageData, { + ...pageVariables, + ...userDefinedVariables, + ...additionalVariables, + }, { + path: actualFilePath, + }); + this._extractInnerVariables(fileContent, currentContext, config); + const innerVariables = this.getImportedVariableMap(currentContext.cwf); + fileContent = nunjuckUtils.renderEscaped(nunjucks, fileContent, { + ...userDefinedVariables, + ...additionalVariables, + ...innerVariables, + }); + const fileExt = utils.getExt(actualFilePath); + if (utils.isMarkdownFileExt(fileExt)) { + currentContext.source = 'md'; + parser.parseComplete(fileContent.toString()); + } else if (fileExt === 'html') { + currentContext.source = 'html'; + parser.parseComplete(fileContent); + } else { + const error = new Error(`Unsupported File Extension: '${fileExt}'`); + reject(error); + } }); } - renderFile(file, config) { - const context = {}; - context.cwf = file; // current working file - context.mode = 'render'; + render(content, filePath, config) { return new Promise((resolve, reject) => { const handler = new htmlparser.DomHandler((error, dom) => { if (error) { @@ -710,11 +541,11 @@ class Parser { const nodes = dom.map((d) => { let parsed; try { - parsed = this._parse(d, context, config); + parsed = this._parse(d, config); } catch (err) { - err.message += `\nError while rendering '${file}'`; + err.message += `\nError while rendering '${filePath}'`; this._onError(err); - parsed = Parser.createErrorNode(d, err); + parsed = utils.createErrorNode(d, err); } return parsed; }); @@ -729,53 +560,31 @@ class Parser { xmlMode: true, decodeEntities: false, }); - // Read files - fs.readFile(file, (err, data) => { - if (err) { - reject(err); - return; - } - const fileExt = utils.getExt(file); - if (utils.isMarkdownFileExt(fileExt)) { - const inputData = md.render(data.toString()); - context.source = 'md'; - parser.parseComplete(inputData); - } else if (fileExt === 'html') { - context.source = 'html'; - parser.parseComplete(data); - } else { - const error = new Error(`Unsupported File Extension: '${fileExt}'`); - reject(error); - } - }); + const fileExt = utils.getExt(filePath); + if (utils.isMarkdownFileExt(fileExt)) { + const renderedContent = md.render(content); + parser.parseComplete(renderedContent); + } else if (fileExt === 'html') { + parser.parseComplete(content); + } else { + const error = new Error(`Unsupported File Extension: '${fileExt}'`); + reject(error); + } }); } resolveBaseUrl(pageData, config) { - const { baseUrlMap, rootPath, isDynamic } = config; + const { baseUrlMap, rootPath } = config; this.baseUrlMap = baseUrlMap; this.rootPath = rootPath; - this.isDynamic = isDynamic || false; - if (this.isDynamic) { - this.dynamicSource = config.dynamicSource; - } + return new Promise((resolve, reject) => { const handler = new htmlparser.DomHandler((error, dom) => { if (error) { reject(error); return; } - const nodes = dom.map((d) => { - const node = d; - const childrenBase = {}; - if (this.isDynamic) { - // Change CWF for each top level element - if (node.attribs) { - node.attribs[ATTRIB_CWF] = this.dynamicSource; - } - } - return this._rebaseReference(node, childrenBase); - }); + const nodes = dom.map(d => this._rebaseReference(d)); cheerio.prototype.options.xmlMode = false; resolve(cheerio.html(nodes)); cheerio.prototype.options.xmlMode = true; @@ -788,130 +597,62 @@ class Parser { }); } - _rebaseReference(node, foundBase) { - const element = node; - if (_.isArray(element)) { - return element.map(el => this._rebaseReference(el, foundBase)); - } - if (Parser.isText(element)) { - return element; + /** + * Pre-renders the baseUrl of the provided node and its children according to + * the site they belong to, such that the final call to render baseUrl correctly + * resolves baseUrl according to the said site. + */ + _rebaseReference(node) { + if (_.isArray(node)) { + return node.map(el => this._rebaseReference(el)); } - // Rebase children element - const childrenBase = {}; - element.children.forEach((el) => { - this._rebaseReference(el, childrenBase); - }); - // rebase current element - if (element.attribs[ATTRIB_INCLUDE_PATH]) { - const filePath = element.attribs[ATTRIB_INCLUDE_PATH]; - let newBase = Parser.calculateNewBaseUrls(filePath, this.rootPath, this.baseUrlMap); - if (newBase) { - const { relative, parent } = newBase; - // eslint-disable-next-line no-param-reassign - foundBase[parent] = relative; - } - const combinedBases = { ...childrenBase, ...foundBase }; - const bases = Object.keys(combinedBases); - if (bases.length !== 0) { - // need to rebase - newBase = combinedBases[bases[0]]; - const { children } = element; - if (children) { - const currentBase - = Parser.calculateNewBaseUrls(element.attribs[ATTRIB_CWF], this.rootPath, this.baseUrlMap); - if (currentBase) { - if (currentBase.relative !== newBase) { - cheerio.prototype.options.xmlMode = false; - const newBaseUrl = `{{hostBaseUrl}}/${newBase}`; - const rendered = nunjucks.renderString(cheerio.html(children), { - // This is to prevent the nunjuck call from converting {{hostBaseUrl}} to an empty string - // and let the hostBaseUrl value be injected later. - hostBaseUrl: '{{hostBaseUrl}}', - baseUrl: newBaseUrl, - }, { path: filePath }); - element.children = cheerio.parseHTML(rendered, true); - cheerio.prototype.options.xmlMode = true; - } - } - } - } - delete element.attribs[ATTRIB_INCLUDE_PATH]; + if (Parser.isText(node)) { + return node; } - delete element.attribs[ATTRIB_CWF]; - return element; - } - static _rebaseReferenceForStaticIncludes(pageData, element, config) { - if (!config) { - return pageData; - } - if (!pageData.includes('{{baseUrl}}')) { - return pageData; - } - const filePath = element.attribs[ATTRIB_INCLUDE_PATH]; - const fileBase = Parser.calculateNewBaseUrls(filePath, config.rootPath, config.baseUrlMap); - if (!fileBase.relative) { - return pageData; - } - const currentPath = element.attribs[ATTRIB_CWF]; - const currentBase = Parser.calculateNewBaseUrls(currentPath, config.rootPath, config.baseUrlMap); - if (currentBase.relative === fileBase.relative) { - return pageData; - } - const newBase = fileBase.relative; - const newBaseUrl = `{{hostBaseUrl}}/${newBase}`; - return nunjucks.renderString(pageData, { baseUrl: newBaseUrl }, { path: filePath }); - } + // Rebase children elements + node.children.forEach(el => this._rebaseReference(el)); - static resetVariables() { - Parser.VARIABLE_LOOKUP.clear(); - Parser.FILE_ALIASES.clear(); - Parser.PROCESSED_INNER_VARIABLES.clear(); - } + const includeSourceFile = node.attribs[ATTRIB_CWF]; + const includedSourceFile = node.attribs[ATTRIB_INCLUDE_PATH]; + delete node.attribs[ATTRIB_CWF]; + delete node.attribs[ATTRIB_INCLUDE_PATH]; - /** - * @throws Will throw an error if a non-absolute path or path outside the root is given - */ - static calculateNewBaseUrls(filePath, root, lookUp) { - if (!path.isAbsolute(filePath)) { - throw new Error(`Non-absolute path given to calculateNewBaseUrls: '${filePath}'`); - } - if (!pathIsInside(filePath, root)) { - throw new Error(`Path given '${filePath}' is not in root '${root}'`); - } - function calculate(file, result) { - if (file === root) { - return { relative: path.relative(root, root), parent: root }; - } - const parent = path.dirname(file); - if (lookUp.has(parent) && result.length === 1) { - return { relative: path.relative(parent, result[0]), parent }; - } else if (lookUp.has(parent)) { - return calculate(parent, [parent]); - } - return calculate(parent, result); + // Skip rebasing for non-includes + if (!includedSourceFile || !node.children) { + return node; } - return calculate(filePath, []); - } + // The site at which the file with the include element was pre-processed + const currentBase = urlUtils.getParentSiteAbsolutePath(includeSourceFile, this.rootPath, this.baseUrlMap); + // The site of the included file + const newBase = urlUtils.getParentSiteAbsoluteAndRelativePaths(includedSourceFile, this.rootPath, + this.baseUrlMap); - static calculateBoilerplateFilePath(pathInBoilerplates, asIfAt, config) { - const { parent, relative } = Parser.calculateNewBaseUrls(asIfAt, config.rootPath, config.baseUrlMap); - return path.resolve(parent, relative, BOILERPLATE_FOLDER_NAME, pathInBoilerplates); - } + // Only re-render if include src and content are from different sites + if (currentBase !== newBase.absolute) { + cheerio.prototype.options.xmlMode = false; + const rendered = nunjuckUtils.renderEscaped(nunjucks, cheerio.html(node.children), { + // This is to prevent the nunjuck call from converting {{hostBaseUrl}} to an empty string + // and let the hostBaseUrl value be injected later. + hostBaseUrl: '{{hostBaseUrl}}', + baseUrl: `{{hostBaseUrl}}/${ensurePosix(newBase.relative)}`, + }, { path: includedSourceFile }); + node.children = cheerio.parseHTML(rendered, true); + cheerio.prototype.options.xmlMode = true; + } - static createErrorNode(element, error) { - const errorElement = cheerio.parseHTML(utils.createErrorElement(error), true)[0]; - return Object.assign(element, _.pick(errorElement, ['name', 'attribs', 'children'])); + return node; } - static createEmptyNode() { - const emptyElement = cheerio.parseHTML('
', true)[0]; - return emptyElement; + static resetVariables() { + Parser.VARIABLE_LOOKUP.clear(); + Parser.FILE_ALIASES.clear(); + Parser.PROCESSED_INNER_VARIABLES.clear(); } - static isText(element) { - return element.type === 'text' || element.type === 'comment'; + static isText(node) { + return node.type === 'text' || node.type === 'comment'; } /** diff --git a/src/lib/markbind/src/parsers/componentParser.js b/src/lib/markbind/src/parsers/componentParser.js index 982fc2b596..42d2c4149e 100644 --- a/src/lib/markbind/src/parsers/componentParser.js +++ b/src/lib/markbind/src/parsers/componentParser.js @@ -3,7 +3,7 @@ const cheerio = require('cheerio'); const _ = {}; _.has = require('lodash/has'); -const vueAttrRenderer = require('../lib/vue-attribute-renderer'); +const md = require('../lib/markdown-it'); cheerio.prototype.options.xmlMode = true; // Enable xml mode for self-closing tag cheerio.prototype.options.decodeEntities = false; // Don't escape HTML entities @@ -15,53 +15,71 @@ cheerio.prototype.options.decodeEntities = false; // Don't escape HTML entities /** * Parses the markdown attribute of the provided element, inserting the corresponding child * if there is no pre-existing slot child with the name of the attribute present. - * @param element Element to parse + * @param node Element to parse * @param attribute Attribute name to parse * @param isInline Whether to parse the attribute with only inline markdown-it rules * @param slotName Name attribute of the element to insert, which defaults to the attribute name */ -function _parseAttributeWithoutOverride(element, attribute, isInline, slotName = attribute) { - const el = element; +function _parseAttributeWithoutOverride(node, attribute, isInline, + slotName = attribute) { + const hasAttributeSlot = node.children + && node.children.some(child => _.has(child.attribs, 'slot') && child.attribs.slot === slotName); - const hasAttributeSlot = el.children - && el.children.some(child => _.has(child.attribs, 'slot') && child.attribs.slot === slotName); - - if (!hasAttributeSlot && _.has(el.attribs, attribute)) { + if (!hasAttributeSlot && _.has(node.attribs, attribute)) { let rendered; if (isInline) { - rendered = vueAttrRenderer.renderInline(el.attribs[attribute]); + rendered = md.renderInline(node.attribs[attribute]); } else { - rendered = vueAttrRenderer.render(el.attribs[attribute]); + rendered = md.render(node.attribs[attribute]); } const attributeSlotElement = cheerio.parseHTML( ``, true); - el.children = el.children ? attributeSlotElement.concat(el.children) : attributeSlotElement; + node.children + = node.children ? attributeSlotElement.concat(node.children) : attributeSlotElement; } - delete el.attribs[attribute]; + delete node.attribs[attribute]; +} + +/** + * Takes an element, looks for direct elements with slots and transforms to avoid Vue parsing. + * This is so that we can use bootstrap-vue popovers, tooltips, and modals. + * @param node Element to transform + */ +function _transformSlottedComponents(node) { + node.children.forEach((child) => { + const slot = child.attribs && child.attribs.slot; + if (slot) { + // Turns
... into
... + child.attribs['data-mb-html-for'] = slot; + delete child.attribs.slot; + } + // similarly, need to transform templates to avoid Vue parsing + if (child.name === 'template') { + child.name = 'span'; + } + }); } /* * Panels */ -function _parsePanelAttributes(element) { - const el = element; - - _parseAttributeWithoutOverride(element, 'alt', false, '_alt'); +function _parsePanelAttributes(node) { + _parseAttributeWithoutOverride(node, 'alt', false, '_alt'); - const slotChildren = el.children && el.children.filter(child => _.has(child.attribs, 'slot')); + const slotChildren = node.children && node.children.filter(child => _.has(child.attribs, 'slot')); const hasAltSlot = slotChildren && slotChildren.some(child => child.attribs.slot === '_alt'); const hasHeaderSlot = slotChildren && slotChildren.some(child => child.attribs.slot === 'header'); // If both are present, the header attribute has no effect, and we can simply remove it. if (hasAltSlot && hasHeaderSlot) { - delete el.attribs.header; + delete node.attribs.header; return; } - _parseAttributeWithoutOverride(element, 'header', false, '_header'); + _parseAttributeWithoutOverride(node, 'header', false, '_header'); } /** @@ -69,8 +87,8 @@ function _parsePanelAttributes(element) { * @param element Root element to search from * @returns {undefined|*} The header element, or undefined if none is found. */ -function _findHeaderElement(element) { - const elements = element.children; +function _findHeaderElement(node) { + const elements = node.children; if (!elements || !elements.length) { return undefined; } @@ -90,22 +108,43 @@ function _findHeaderElement(element) { return undefined; } +function _findAnchorElement(node) { + const elements = node.children; + if (!elements || !elements.length) { + return undefined; + } + + const elementQueue = elements.slice(0); + while (elementQueue.length) { + const nextEl = elementQueue.shift(); + if (nextEl.name === 'a' && nextEl.attribs.class === 'anchor') { + return nextEl; + } + + if (nextEl.children) { + nextEl.children.forEach(child => elementQueue.push(child)); + } + } + + return undefined; +} + /** * Assigns an id to the root element of a panel component using the heading specified in the * panel's header slot or attribute (if any), with the header slot having priority if present. * This is to ensure anchors still work when panels are in their minimized form. - * @param element The root panel element + * @param node The root panel element */ -function _assignPanelId(element) { - const el = element; - - const slotChildren = el.children && el.children.filter(child => _.has(child.attribs, 'slot')); +function _assignPanelId(node) { + const slotChildren = node.children && node.children.filter(child => _.has(child.attribs, 'slot')); const headerSlot = slotChildren.find(child => child.attribs.slot === 'header'); const headerAttributeSlot = slotChildren.find(child => child.attribs.slot === '_header'); const slotElement = headerSlot || headerAttributeSlot; if (slotElement) { const header = _findHeaderElement(slotElement); + const anchor = _findAnchorElement(slotElement); + if (!header) { return; } @@ -115,39 +154,160 @@ function _assignPanelId(element) { + 'Please report this to the MarkBind developers. Thank you!'); } - el.attribs.id = header.attribs.id; + node.attribs.id = `${header.attribs.id}`; + + if (anchor) { + anchor.attribs.id = `${header.attribs.id}`; + } + } +} + +/** + * Check and warns if element has conflicting attributes. + * Note that attirbutes in `attrsConflictingWith` are not in conflict with each other, + * but only towards `attribute` + * @param node Root element to check + * @param attribute An attribute that is conflicting with other attributes + * @param attrsConflictingWith The attributes conflicting with `attribute` + */ +function _warnConflictingAttributes(node, attribute, attrsConflictingWith) { + if (!(attribute in node.attribs)) { + return; } + attrsConflictingWith.forEach((conflictingAttr) => { + if (conflictingAttr in node.attribs) { + // TODO: Use logger here instead of console.warn. See issue #1060 + // eslint-disable-next-line no-console + console.warn(`warn: Usage of conflicting ${node.name} attributes: ` + + `'${attribute}' with '${conflictingAttr}'`); + } + }); +} + +/** + * Check and warns if element has a deprecated attribute. + * @param node Root element to check + * @param attributeNamePairs Object of attribute name pairs with each pair in the form deprecated : correct + */ +function _warnDeprecatedAttributes(node, attributeNamePairs) { + Object.entries(attributeNamePairs).forEach(([deprecatedAttrib, correctAttrib]) => { + if (deprecatedAttrib in node.attribs) { + // TODO: Use logger here instead of console.warn. See issue #1060 + // eslint-disable-next-line no-console + console.warn(`warn: ${node.name} attribute '${deprecatedAttrib}' ` + + `is deprecated and may be removed in the future. Please use '${correctAttrib}'`); + } + }); } /* - * Popovers + * Triggers + * + * At "compile time", we can't tell whether a trigger references a modal, popover, or toolip, + * since that element might not have been processed yet. + * + * So, we make every trigger try all 3. It will attempt to open a tooltip, popover, and modal. + * + * For tooltips and popovers, we call the relevant content getters inside asset/js/setup.js. + * They will check to see if the element id exists, and whether it is a popover/tooltip, + * and then return the content as needed. + * + * For modals, we make it attempt to show the modal if it exists. */ -function _parsePopoverAttributes(element) { - _parseAttributeWithoutOverride(element, 'content', true); - _parseAttributeWithoutOverride(element, 'header', true); - // TODO deprecate title attribute for popovers - _parseAttributeWithoutOverride(element, 'title', true, 'header'); +function addTriggerClass(node, trigger) { + const triggerClass = trigger === 'click' ? 'trigger-click' : 'trigger'; + node.attribs.class = node.attribs.class ? `${node.attribs.class} ${triggerClass}` : triggerClass; +} + +function _parseTrigger(node) { + node.name = 'span'; + const trigger = node.attribs.trigger || 'hover'; + const placement = node.attribs.placement || 'top'; + node.attribs[`v-b-popover.${trigger}.${placement}.html`] + = 'popoverGenerator'; + node.attribs[`v-b-tooltip.${trigger}.${placement}.html`] + = 'tooltipContentGetter'; + const convertedTrigger = trigger === 'hover' ? 'mouseover' : trigger; + node.attribs[`v-on:${convertedTrigger}`] = `$refs['${node.attribs.for}'].show()`; + addTriggerClass(node, convertedTrigger); } /* - * Tooltips + * Popovers + * + * We hide the content and header via _transformSlottedComponents, for retrieval by triggers. + * + * Then, we add in a trigger for this popover. */ -function _parseTooltipAttributes(element) { - _parseAttributeWithoutOverride(element, 'content', true, '_content'); +function _parsePopover(node) { + _warnDeprecatedAttributes(node, { title: 'header' }); + + _parseAttributeWithoutOverride(node, 'content', true); + _parseAttributeWithoutOverride(node, 'header', true); + _parseAttributeWithoutOverride(node, 'title', true, 'header'); + + node.name = 'span'; + const trigger = node.attribs.trigger || 'hover'; + const placement = node.attribs.placement || 'top'; + node.attribs['data-mb-component-type'] = 'popover'; + node.attribs[`v-b-popover.${trigger}.${placement}.html`] + = 'popoverInnerGenerator'; + addTriggerClass(node, trigger); + _transformSlottedComponents(node); +} + +/** + * Check and warns if element has a deprecated slot name + * @param element Root element to check + * @param namePairs Object of slot name pairs with each pair in the form deprecated : correct + */ + +function _warnDeprecatedSlotNames(element, namePairs) { + if (!(element.children)) { + return; + } + element.children.forEach((child) => { + if (!(_.has(child.attribs, 'slot'))) { + return; + } + Object.entries(namePairs).forEach(([deprecatedName, correctName]) => { + if (child.attribs.slot !== deprecatedName) { + return; + } + // TODO: Use logger here instead of console.warn. See issue #1060 + // eslint-disable-next-line no-console + console.warn(`warn: ${element.name} slot name '${deprecatedName}' ` + + `is deprecated and may be removed in the future. Please use '${correctName}'`); + }); + }); } /* - * Modals + * Tooltips + * + * Similar to popovers. */ -function _renameSlot(element, originalName, newName) { - if (element.children) { - element.children.forEach((c) => { - const child = c; +function _parseTooltip(node) { + _parseAttributeWithoutOverride(node, 'content', true, '_content'); + + node.name = 'span'; + const trigger = node.attribs.trigger || 'hover'; + const placement = node.attribs.placement || 'top'; + node.attribs['data-mb-component-type'] = 'tooltip'; + node.attribs[`v-b-tooltip.${trigger}.${placement}.html`] + = 'tooltipInnerContentGetter'; + addTriggerClass(node, trigger); + _transformSlottedComponents(node); +} +function _renameSlot(node, originalName, newName) { + if (node.children) { + node.children.forEach((c) => { + const child = c; if (_.has(child.attribs, 'slot') && child.attribs.slot === originalName) { child.attribs.slot = newName; } @@ -155,62 +315,130 @@ function _renameSlot(element, originalName, newName) { } } -function _parseModalAttributes(element) { - _parseAttributeWithoutOverride(element, 'header', true, '_header'); - // TODO deprecate title attribute for modals - _parseAttributeWithoutOverride(element, 'title', true, '_header'); +function _renameAttribute(node, originalAttribute, newAttribute) { + if (_.has(node.attribs, originalAttribute)) { + node.attribs[newAttribute] = node.attribs[originalAttribute]; + delete node.attribs[originalAttribute]; + } +} - // TODO deprecate modal-header, modal-footer attributes for modals - _renameSlot(element, 'modal-header', 'header'); - _renameSlot(element, 'modal-footer', 'footer'); +/* + * Modals + * + * We are using bootstrap-vue modals, and some of their attributes/slots differ from ours. + * So, we will transform from markbind modal syntax into bootstrap-vue modal syntax. + */ + +function _parseModalAttributes(node) { + _warnDeprecatedAttributes(node, { title: 'header' }); + _warnDeprecatedSlotNames(node, { 'modal-header': 'header', 'modal-footer': 'footer' }); + + _parseAttributeWithoutOverride(node, 'header', true, 'modal-title'); + _parseAttributeWithoutOverride(node, 'title', true, 'modal-title'); + + _renameSlot(node, 'header', 'modal-header'); + _renameSlot(node, 'footer', 'modal-footer'); + + node.name = 'b-modal'; + + _renameAttribute(node, 'ok-text', 'ok-title'); + _renameAttribute(node, 'center', 'centered'); + + const hasOkTitle = _.has(node.attribs, 'ok-title'); + const hasFooter = node.children.some(child => + _.has(child.attribs, 'slot') && child.attribs.slot === 'modal-footer'); + + if (!hasFooter && !hasOkTitle) { + // markbind doesn't show the footer by default + node.attribs['hide-footer'] = ''; + } else if (hasOkTitle) { + // bootstrap-vue default is to show ok and cancel + // if there's an ok-title, markbind only shows the OK button. + node.attribs['ok-only'] = ''; + } + + if (node.attribs.backdrop === 'false') { + node.attribs['no-close-on-backdrop'] = ''; + } + delete node.attribs.backdrop; + + let size = ''; + if (_.has(node.attribs, 'large')) { + size = 'lg'; + delete node.attribs.large; + } else if (_.has(node.attribs, 'small')) { + size = 'sm'; + delete node.attribs.small; + } + node.attribs.size = size; + + // default for markbind is zoom, default for bootstrap-vue is fade + const effect = node.attribs.effect === 'fade' ? '' : 'mb-zoom'; + node.attribs['modal-class'] = effect; + + if (_.has(node.attribs, 'id')) { + node.attribs.ref = node.attribs.id; + } } /* * Tabs */ -function _parseTabAttributes(element) { - _parseAttributeWithoutOverride(element, 'header', true, '_header'); +function _parseTabAttributes(node) { + _parseAttributeWithoutOverride(node, 'header', true, '_header'); } /* * Tip boxes */ -function _parseBoxAttributes(element) { - _parseAttributeWithoutOverride(element, 'icon', true, '_icon'); - _parseAttributeWithoutOverride(element, 'header', false, '_header'); +function _parseBoxAttributes(node) { + _warnConflictingAttributes(node, 'light', ['seamless']); + _warnConflictingAttributes(node, 'no-background', ['background-color', 'seamless']); + _warnConflictingAttributes(node, 'no-border', ['border-color', 'border-left-color', 'seamless']); + _warnConflictingAttributes(node, 'no-icon', ['icon']); + _warnDeprecatedAttributes(node, { heading: 'header' }); - // TODO deprecate heading attribute for box - _parseAttributeWithoutOverride(element, 'heading', false, '_header'); + _parseAttributeWithoutOverride(node, 'icon', true, 'icon'); + _parseAttributeWithoutOverride(node, 'header', false, '_header'); - // TODO warn when light and seamless attributes are both present + _parseAttributeWithoutOverride(node, 'heading', false, '_header'); } /* * Dropdowns */ -function _parseDropdownAttributes(element) { - const el = element; - const slotChildren = el.children && el.children.filter(child => _.has(child.attribs, 'slot')); +function _parseDropdownAttributes(node) { + const slotChildren = node.children && node.children.filter(child => _.has(child.attribs, 'slot')); const hasHeaderSlot = slotChildren && slotChildren.some(child => child.attribs.slot === 'header'); // If header slot is present, the header attribute has no effect, and we can simply remove it. if (hasHeaderSlot) { - delete el.attribs.header; - // TODO deprecate text attribute of dropdown - delete el.attribs.text; + if (_.has(node.attribs, 'header')) { + // TODO: Use logger here instead of console.warn. See issue #1060 + // eslint-disable-next-line no-console + console.warn(`warn: ${node.name} has a header slot, 'header' attribute has no effect.`); + } + if (_.has(node.attribs, 'text')) { + // TODO: Use logger here instead of console.warn. See issue #1060 + // eslint-disable-next-line no-console + console.warn(`warn: ${node.name} has a header slot, 'text' attribute has no effect.`); + } + delete node.attribs.header; + delete node.attribs.text; return; } - // header attribute takes priority over text attribute - if (_.has(element.attribs, 'header')) { - _parseAttributeWithoutOverride(element, 'header', true, '_header'); - delete el.attribs.text; + _warnDeprecatedAttributes(node, { text: 'header' }); + _warnConflictingAttributes(node, 'header', ['text']); + // header attribute takes priority over text attribute if both 'text' and 'header' is used + if (_.has(node.attribs, 'header')) { + _parseAttributeWithoutOverride(node, 'header', true, '_header'); + delete node.attribs.text; } else { - // TODO deprecate text attribute of dropdown - _parseAttributeWithoutOverride(element, 'text', true, '_header'); + _parseAttributeWithoutOverride(node, 'text', true, '_header'); } } @@ -218,30 +446,33 @@ function _parseDropdownAttributes(element) { * API */ -function parseComponents(element, errorHandler) { +function parseComponents(node, errorHandler) { try { - switch (element.name) { + switch (node.name) { case 'panel': - _parsePanelAttributes(element); + _parsePanelAttributes(node); + break; + case 'trigger': + _parseTrigger(node); break; case 'popover': - _parsePopoverAttributes(element); + _parsePopover(node); break; case 'tooltip': - _parseTooltipAttributes(element); + _parseTooltip(node); break; case 'modal': - _parseModalAttributes(element); + _parseModalAttributes(node); break; case 'tab': case 'tab-group': - _parseTabAttributes(element); + _parseTabAttributes(node); break; case 'box': - _parseBoxAttributes(element); + _parseBoxAttributes(node); break; case 'dropdown': - _parseDropdownAttributes(element); + _parseDropdownAttributes(node); break; default: break; @@ -256,11 +487,11 @@ function parseComponents(element, errorHandler) { } } -function postParseComponents(element, errorHandler) { +function postParseComponents(node, errorHandler) { try { - switch (element.name) { + switch (node.name) { case 'panel': - _assignPanelId(element); + _assignPanelId(node); break; default: break; diff --git a/src/lib/markbind/src/patches/htmlparser2.js b/src/lib/markbind/src/patches/htmlparser2.js index 55b2de9f61..53ba30a04d 100644 --- a/src/lib/markbind/src/patches/htmlparser2.js +++ b/src/lib/markbind/src/patches/htmlparser2.js @@ -69,6 +69,10 @@ var i = 0, BEFORE_SPECIAL = i++, //S BEFORE_SPECIAL_END = i++, //S + /* + SCRIPT and STYLE states are preserved to maintain consistency of + un-patched methods using state numbers greater than them in htmlparser2. + */ BEFORE_SCRIPT_1 = i++, //C BEFORE_SCRIPT_2 = i++, //R BEFORE_SCRIPT_3 = i++, //I @@ -95,20 +99,35 @@ var i = 0, IN_NUMERIC_ENTITY = i++, IN_HEX_ENTITY = i++, //X - j = 0, + SPECIAL_NONE = 0, - SPECIAL_NONE = j++, - SPECIAL_SCRIPT = j++, - SPECIAL_STYLE = j++; + /* + Non parser-state constants + */ + + // _matchSpecialTagsNextCharacters, _matchNextSpecialTagClosingCharacter + HAS_MATCHING = -1, + NO_MATCH = -2, + HAS_MATCHED = -3; + +function whitespace(c) { + return c === " " || c === "\n" || c === "\t" || c === "\f" || c === "\r"; +} Tokenizer.prototype._stateMarkdown = function(c){ if(c === '`') { this._state = TEXT; } -} +}; -Tokenizer.prototype._stateText = function(c){ - if(c === '`'){ +/** + * Patched state text token handler to treat content in markdown code blocks + * and fences as markdown text. + * In conjunction with _stateMarkdown, the parser enter the MARKDOWN state after + * an odd number of consecutive backticks. + */ +Tokenizer.prototype._stateText = function(c) { + if (this._special === SPECIAL_NONE && c === '`') { this._state = MARKDOWN; } else if(c === "<"){ var isInequality = (this._index + 1 < this._buffer.length) && (this._buffer.charAt(this._index + 1) === '='); @@ -129,6 +148,212 @@ Tokenizer.prototype._stateText = function(c){ } }; + +Tokenizer.prototype.specialTagNames = [ + 'script', + 'style', +]; + +/** + * Checks whether the token matches one of the first characters of the special tags, + * and initialises the _matchingSpecialTagIndexes array with the matches' indexes if so. + */ +Tokenizer.prototype._matchSpecialTagsFirstCharacters = function(c) { + this._matchingSpecialTagIndexes = []; + const numSpecialTags = this.specialTagNames.length; + const lowerCaseChar = c.toLowerCase(); + for (let j = 0; j < numSpecialTags; j += 1) { + if (lowerCaseChar === this.specialTagNames[j][0]) { + this._matchingSpecialTagIndexes.push(j) + } + } + + if (this._matchingSpecialTagIndexes.length > 0) { + this._nextSpecialTagMatchIndex = 1; + return true; + } + return false; +}; + +/** + * Processes the _matchingSpecialTagIndexes array, filtering out previous match indexes + * that do not match the current token. + * If one of the previous matches successfully matched, the match index is returned. + */ +Tokenizer.prototype._matchSpecialTagsNextCharacters = function(c) { + const matchingSpecialTags = []; + const numMatchingTags = this._matchingSpecialTagIndexes.length; + const lowerCaseChar = c.toLowerCase(); + + for (let j = 0; j < numMatchingTags; j += 1) { + const tagIndex = this._matchingSpecialTagIndexes[j]; + const testChar = this.specialTagNames[tagIndex][this._nextSpecialTagMatchIndex]; + + if (testChar === undefined) { + if (c === "/" || c === ">" || whitespace(c)) { + return tagIndex; + } + } else if (testChar === lowerCaseChar) { + matchingSpecialTags.push(tagIndex); + } + } + + this._matchingSpecialTagIndexes = matchingSpecialTags; + + return this._matchingSpecialTagIndexes.length > 0 + ? HAS_MATCHING + : NO_MATCH; +}; + +/** + * Changes the Tokenizer state to BEFORE_SPECIAL if the token matches one of + * the first characters of _specialTagNames. + */ +Tokenizer.prototype._stateBeforeTagName = function(c) { + if (c === "/") { + this._state = BEFORE_CLOSING_TAG_NAME; + } else if (c === "<") { + this._cbs.ontext(this._getSection()); + this._sectionStart = this._index; + } else if (c === ">" || this._special !== SPECIAL_NONE || whitespace(c)) { + this._state = TEXT; + } else if (c === "!") { + this._state = BEFORE_DECLARATION; + this._sectionStart = this._index + 1; + } else if (c === "?") { + this._state = IN_PROCESSING_INSTRUCTION; + this._sectionStart = this._index + 1; + } else { + // We want special tag treatment to be xmlMode independent for MarkBind. + this._state = this._matchSpecialTagsFirstCharacters(c) + ? BEFORE_SPECIAL + : IN_TAG_NAME; + this._sectionStart = this._index; + } +}; + +/** + * Changes the Tokenizer state to IN_TAG_NAME or BEFORE_SPECIAL state again depending + * on whether there are still matches in _matchingSpecialTagIndexes. + */ +Tokenizer.prototype._stateBeforeSpecial = function(c) { + const result = this._matchSpecialTagsNextCharacters(c); + if (result === HAS_MATCHING) { + this._nextSpecialTagMatchIndex += 1; + return; + } + + // Reset for _matchNextSpecialTagClosingCharacter later + this._nextSpecialTagMatchIndex = 0; + + this._state = IN_TAG_NAME; + this._index--; //consume the token again + + if (result === NO_MATCH) { + return; + } + + /* + Assign the one-based index of the matching tag in the special tags array. + This is due to htmlparser2 using 0 for SPECIAL_NONE, + which would conflict with a zero-based index. + */ + this._special = result + 1; +}; + +/** + * Patched self closing tag state handler that removes the special state + * if the special tag was self-closed. + */ +Tokenizer.prototype._stateInSelfClosingTag = function(c) { + if (c === ">") { + this._cbs.onselfclosingtag(); + this._state = TEXT; + this._sectionStart = this._index + 1; + /* + Allow all special tags to be self-closed. + Script and style tags are also allowed to be self-closed, + which breaks from the default html spec-compliant of behaviour of htmlparser2. + We allow this as such tags would be expanded upon re-rendering the html anyway. + ie. '' + */ + this._special = SPECIAL_NONE; + } else if (!whitespace(c)) { + this._state = BEFORE_ATTRIBUTE_NAME; + this._index--; + } +}; + +/** + * Processes the _special flag and _nextSpecialTagMatchIndex state variable, + * returning a flag indicating whether the current special tag has finished matching or not. + */ +Tokenizer.prototype._matchNextSpecialTagClosingCharacter = function(c) { + const nextTestChar = this.specialTagNames[this._special - 1][this._nextSpecialTagMatchIndex]; + + if (nextTestChar === undefined) { + this._nextSpecialTagMatchIndex = 0; + return (c === ">" || whitespace(c)) + ? HAS_MATCHED + : NO_MATCH; + } else if (nextTestChar === c.toLowerCase()) { + this._nextSpecialTagMatchIndex += 1; + return HAS_MATCHING; + } + + this._nextSpecialTagMatchIndex = 0; + return NO_MATCH; +}; + +/** + * Changes the Tokenizer state to BEFORE_SPECIAL_END if the token matches one of + * the first character of the currently matched special tag. + */ +Tokenizer.prototype._stateBeforeCloseingTagName = function(c) { + if (whitespace(c)); + else if (c === ">") { + this._state = TEXT; + } else if (this._special !== SPECIAL_NONE) { + if (this._matchNextSpecialTagClosingCharacter(c) !== NO_MATCH) { + this._state = BEFORE_SPECIAL_END; + } else { + this._state = TEXT; + this._index--; + } + } else { + this._state = IN_CLOSING_TAG_NAME; + this._sectionStart = this._index; + } +}; + +/** + * Changes the Tokenizer state back to TEXT, IN_TAG_NAME depending + * on whether the token has finished or is still matching + * the currently matched special tag. + */ +Tokenizer.prototype._stateBeforeSpecialEnd = function(c) { + const result = this._matchNextSpecialTagClosingCharacter(c); + if (result === HAS_MATCHING) { + return; + } + + if (result === HAS_MATCHED) { + this._sectionStart = this._index - this.specialTagNames[this._special - 1].length; + this._special = SPECIAL_NONE; + this._state = IN_CLOSING_TAG_NAME; + this._index--; //reconsume the token + return; + } + + this._index--; + this._state = TEXT; +}; + +/** + * Altered _parse handler that handles the extra MARKDOWN state. + * BEFORE/AFTER SCRIPT and STYLE state handlers are made redundant + * by the above patches and removed as well. + */ Tokenizer.prototype._parse = function(){ while(this._index < this._buffer.length && this._running){ var c = this._buffer.charAt(this._index); @@ -231,56 +456,6 @@ Tokenizer.prototype._parse = function(){ this._stateBeforeSpecialEnd(c); } - /* - * script - */ - else if(this._state === BEFORE_SCRIPT_1){ - this._stateBeforeScript1(c); - } else if(this._state === BEFORE_SCRIPT_2){ - this._stateBeforeScript2(c); - } else if(this._state === BEFORE_SCRIPT_3){ - this._stateBeforeScript3(c); - } else if(this._state === BEFORE_SCRIPT_4){ - this._stateBeforeScript4(c); - } else if(this._state === BEFORE_SCRIPT_5){ - this._stateBeforeScript5(c); - } - - else if(this._state === AFTER_SCRIPT_1){ - this._stateAfterScript1(c); - } else if(this._state === AFTER_SCRIPT_2){ - this._stateAfterScript2(c); - } else if(this._state === AFTER_SCRIPT_3){ - this._stateAfterScript3(c); - } else if(this._state === AFTER_SCRIPT_4){ - this._stateAfterScript4(c); - } else if(this._state === AFTER_SCRIPT_5){ - this._stateAfterScript5(c); - } - - /* - * style - */ - else if(this._state === BEFORE_STYLE_1){ - this._stateBeforeStyle1(c); - } else if(this._state === BEFORE_STYLE_2){ - this._stateBeforeStyle2(c); - } else if(this._state === BEFORE_STYLE_3){ - this._stateBeforeStyle3(c); - } else if(this._state === BEFORE_STYLE_4){ - this._stateBeforeStyle4(c); - } - - else if(this._state === AFTER_STYLE_1){ - this._stateAfterStyle1(c); - } else if(this._state === AFTER_STYLE_2){ - this._stateAfterStyle2(c); - } else if(this._state === AFTER_STYLE_3){ - this._stateAfterStyle3(c); - } else if(this._state === AFTER_STYLE_4){ - this._stateAfterStyle4(c); - } - /* * entities */ @@ -305,3 +480,12 @@ Tokenizer.prototype._parse = function(){ this._cleanup(); }; + +/** + * Injects the tagsToIgnore into the Tokenizer's specialTagNames. + */ +function injectIgnoreTags(tagsToIgnore) { + Tokenizer.prototype.specialTagNames = ['script', 'style', ...tagsToIgnore]; +} + +module.exports = injectIgnoreTags; diff --git a/src/lib/markbind/src/preprocessors/componentPreprocessor.js b/src/lib/markbind/src/preprocessors/componentPreprocessor.js new file mode 100644 index 0000000000..ef2f9fe607 --- /dev/null +++ b/src/lib/markbind/src/preprocessors/componentPreprocessor.js @@ -0,0 +1,406 @@ +const cheerio = require('cheerio'); +const nunjucks = require('nunjucks'); +const path = require('path'); +const url = require('url'); + +const CyclicReferenceError = require('../handlers/cyclicReferenceError.js'); + +const md = require('../lib/markdown-it'); +const utils = require('../utils'); +const urlUtils = require('../utils/urls'); +const nunjuckUtils = require('../utils/nunjuckUtils'); + +const _ = {}; +_.has = require('lodash/has'); +_.isEmpty = require('lodash/isEmpty'); + +const { + ATTRIB_INCLUDE_PATH, + ATTRIB_CWF, +} = require('../constants'); + + +/* + * All components + */ + + +function _preProcessAllComponents(node, context) { + const element = node; + + // We do this since element.attribs is undefined if it does not exist + element.attribs = element.attribs || {}; + + element.attribs[ATTRIB_CWF] = path.resolve(context.cwf); +} + + +/* + * Thumbnails + */ + + +// TODO move this to componentParser +function _preProcessThumbnail(node) { + const element = node; + + const isImage = _.has(element.attribs, 'src') && element.attribs.src !== ''; + if (isImage) { + return element; + } + + const text = _.has(element.attribs, 'text') ? element.attribs.text : ''; + if (text === '') { + return element; + } + const renderedText = md.renderInline(text); + element.children = cheerio.parseHTML(renderedText); + + return element; +} + + +/* + * Common panel and include helper functions + */ + + +function _getBoilerplateFilePath(node, config, filePath) { + const element = node; + + const isBoilerplate = _.has(element.attribs, 'boilerplate'); + if (isBoilerplate) { + element.attribs.boilerplate = element.attribs.boilerplate || path.basename(filePath); + + return urlUtils.calculateBoilerplateFilePath(element.attribs.boilerplate, filePath, config); + } + + return undefined; +} + +/** + * Returns either an empty or error node depending on whether the file specified exists + * and whether this file is optional if not. + */ +function _getFileExistsNode(element, context, config, parser, actualFilePath, isOptional = false) { + if (!utils.fileExists(actualFilePath)) { + if (isOptional) { + return utils.createEmptyNode(); + } + + parser.missingIncludeSrc.push({ from: context.cwf, to: actualFilePath }); + const error = new Error( + `No such file: ${actualFilePath}\nMissing reference in ${element.attribs[ATTRIB_CWF]}`); + parser._onError(error); + + return utils.createErrorNode(element, error); + } + + return false; +} + +/** + * Retrieves several flags and file paths from the src attribute specified in the element. + */ +function _getSrcFlagsAndFilePaths(element, context, config) { + const isUrl = utils.isUrl(element.attribs.src); + + // We do this even if the src is not a url to get the hash, if any + const includeSrc = url.parse(element.attribs.src); + + const baseUrlRegex = new RegExp('^{{\\s*baseUrl\\s*}}[/\\\\]'); + + let filePath; + if (isUrl) { + filePath = element.attribs.src; + } else { + const includePath = decodeURIComponent(includeSrc.path); + + if (baseUrlRegex.test(includePath)) { + // The baseUrl has not been resolved during pre-processing, but we need the source file path + const parentSitePath = urlUtils.getParentSiteAbsolutePath(context.cwf, config.rootPath, + config.baseUrlMap); + filePath = path.resolve(parentSitePath, includePath.replace(baseUrlRegex, '')); + } else { + filePath = path.resolve(path.dirname(context.cwf), includePath); + } + } + + const boilerplateFilePath = _getBoilerplateFilePath(element, config, filePath); + const actualFilePath = boilerplateFilePath || filePath; + + return { + isUrl, + hash: includeSrc.hash, + filePath, + boilerplateFilePath, + actualFilePath, + }; +} + + +/* + * Panels + */ + + +/** + * PreProcesses panels with a src attribute specified. + * Replaces the panel with an error node if the src is invalid. + * Otherwise, sets the fragment attribute of the panel as parsed from the src, + * and adds the appropriate include. + */ +function _preProcessPanel(node, context, config, parser) { + const element = node; + + const hasSrc = _.has(element.attribs, 'src'); + if (!hasSrc) { + if (element.children && element.children.length > 0) { + // eslint-disable-next-line no-use-before-define + element.children = element.children.map(e => preProcessComponent(e, context, config, parser)); + } + + return element; + } + + const { + isUrl, + hash, + filePath, + boilerplateFilePath, + actualFilePath, + } = _getSrcFlagsAndFilePaths(element, context, config); + + const fileExistsNode = _getFileExistsNode(element, context, config, parser, actualFilePath); + if (fileExistsNode) { + return fileExistsNode; + } + + if (!isUrl && hash) { + element.attribs.fragment = hash.substring(1); + } + + element.attribs.src = filePath; + + // TODO do we need boilerplateIncludeSrc? + if (boilerplateFilePath) { + parser.boilerplateIncludeSrc.push({ from: context.cwf, to: boilerplateFilePath }); + } + parser.dynamicIncludeSrc.push({ from: context.cwf, to: actualFilePath, asIfTo: filePath }); + + return element; +} + + +/* + * Includes + */ + +function _deleteIncludeAttributes(node) { + const element = node; + + // Delete variable attributes in include tags as they are no longer needed + // e.g. '' + Object.keys(element.attribs).forEach((attribute) => { + if (attribute.startsWith('var-')) { + delete element.attribs[attribute]; + } + }); + + delete element.attribs.boilerplate; + delete element.attribs.src; + delete element.attribs.inline; + delete element.attribs.trim; +} + +/** + * Check if the current working file's source type is a html file, but the include source is in markdown. + * Use a special tag to indicate markdown code for parsing later if so, + * as html files are not passed through markdown-it. + * @return Whether the include source is in markdown + */ +function _isHtmlIncludingMarkdown(node, context, filePath) { + const element = node; + const isIncludeSrcMd = utils.isMarkdownFileExt(utils.getExt(filePath)); + if (isIncludeSrcMd && context.source === 'html') { + element.name = 'markdown'; + } + + return isIncludeSrcMd; +} + +/** + * PreProcesses includes. + * Replaces it with an error node if the specified src is invalid, + * or an empty node if the src is invalid but optional. + */ +function _preprocessInclude(node, context, config, parser) { + const element = node; + + if (_.isEmpty(element.attribs.src)) { + const error = new Error(`Empty src attribute in include in: ${element.attribs[ATTRIB_CWF]}`); + parser._onError(error); + return utils.createErrorNode(element, error); + } + + const { + isUrl, + hash, + filePath, + boilerplateFilePath, + actualFilePath, + } = _getSrcFlagsAndFilePaths(element, context, config); + + const isOptional = _.has(element.attribs, 'optional'); + const fileExistsNode = _getFileExistsNode(element, context, config, parser, actualFilePath, isOptional); + if (fileExistsNode) return fileExistsNode; + + // optional includes of whole files have been handled, + // but segments still need to be processed further down + if (isOptional && !hash) { + delete element.attribs.optional; + } + + // TODO do we need boilerplateIncludeSrc? + if (boilerplateFilePath) { + parser.boilerplateIncludeSrc.push({ from: context.cwf, to: boilerplateFilePath }); + } + + const isInline = _.has(element.attribs, 'inline'); + const isTrim = _.has(element.attribs, 'trim'); + + element.name = isInline ? 'span' : 'div'; + element.attribs[ATTRIB_INCLUDE_PATH] = filePath; + + // No need to process url contents + if (isUrl) return element; + + parser.staticIncludeSrc.push({ from: context.cwf, to: actualFilePath }); + + const isIncludeSrcMd = _isHtmlIncludingMarkdown(element, context, filePath); + + const { content, childContext, userDefinedVariables } + = parser._renderIncludeFile(actualFilePath, element, context, config, filePath); + childContext.source = isIncludeSrcMd ? 'md' : 'html'; + childContext.callStack.push(context.cwf); + parser.extractInnerVariablesIfNotProcessed(content, childContext, config, filePath); + + const innerVariables = parser.getImportedVariableMap(filePath); + const fileContent = nunjuckUtils.renderEscaped(nunjucks, content, { + ...userDefinedVariables, ...innerVariables, + }); + + _deleteIncludeAttributes(element); + + // Process sources with or without hash, retrieving and appending + // the appropriate children to a wrapped include element + + let actualContent; + + if (hash) { + // Keep scripts in the fileContent + const src = cheerio.parseHTML(fileContent, true); + const $ = cheerio.load(src); + const hashContent = $(hash).html(); + + actualContent = (hashContent && isTrim) ? hashContent.trim() : hashContent; + + if (actualContent === null && isOptional) { + // Use empty content if it is optional + actualContent = ''; + } else if (actualContent === null) { + const hashSrcWithoutHash = hash.substring(1); + const error = new Error(`No such segment '${hashSrcWithoutHash}' in file: ${actualFilePath}\n` + + `Missing reference in ${element.attribs[ATTRIB_CWF]}`); + parser._onError(error); + + return utils.createErrorNode(element, error); + } + + // optional includes of segments have now been handled, so delete the attribute + if (isOptional) delete element.attribs.optional; + } else { + actualContent = (fileContent && isTrim) ? fileContent.trim() : fileContent; + } + + if (isIncludeSrcMd) { + actualContent = isInline ? actualContent : `\n\n${actualContent}\n`; + } + + // Flag with a data-included-from flag with the source filePath for calculating + // the file path of dynamic resources ( images, anchors, plugin sources, etc. ) later + const wrapperType = isInline ? 'span' : 'div'; + const childrenHtml = `<${wrapperType} data-included-from="${filePath}">${actualContent}`; + element.children = cheerio.parseHTML(childrenHtml, true); + + if (element.children && element.children.length > 0) { + if (childContext.callStack.length > CyclicReferenceError.MAX_RECURSIVE_DEPTH) { + const error = new CyclicReferenceError(childContext.callStack); + parser._onError(error); + return utils.createErrorNode(element, error); + } + + // eslint-disable-next-line no-use-before-define + element.children = element.children.map(e => preProcessComponent(e, childContext, config, parser)); + } + + return element; +} + + +/* + * Variable and imports + */ + +function _preprocessVariables() { + return utils.createEmptyNode(); +} + + +/* + * Body + */ + + +function _preprocessBody(node) { + // eslint-disable-next-line no-console + console.warn(` tag found in ${node.attribs[ATTRIB_CWF]}. This may cause formatting errors.`); +} + + +/* + * API + */ + + +function preProcessComponent(node, context, config, parser) { + const element = node; + + _preProcessAllComponents(element, context); + + switch (element.name) { + case 'thumbnail': + return _preProcessThumbnail(element); + case 'panel': + return _preProcessPanel(element, context, config, parser); + case 'variable': + case 'import': + return _preprocessVariables(); + case 'include': + return _preprocessInclude(element, context, config, parser); + case 'body': + _preprocessBody(element); + // eslint-disable-next-line no-fallthrough + default: + // preprocess children + if (element.children && element.children.length > 0) { + element.children = element.children.map(e => preProcessComponent(e, context, config, parser)); + } + return element; + } +} + + +module.exports = { + preProcessComponent, +}; diff --git a/src/lib/markbind/src/utils.js b/src/lib/markbind/src/utils/index.js similarity index 81% rename from src/lib/markbind/src/utils.js rename to src/lib/markbind/src/utils/index.js index 4e6eee399f..b46bebf05f 100644 --- a/src/lib/markbind/src/utils.js +++ b/src/lib/markbind/src/utils/index.js @@ -1,7 +1,13 @@ +const cheerio = require('cheerio'); const fs = require('fs'); const path = require('path'); -const { markdownFileExts } = require('./constants'); +const _ = {}; +_.pick = require('lodash/pick'); + +const { + markdownFileExts, +} = require('../constants'); module.exports = { getCurrentDirectoryBase() { @@ -40,13 +46,6 @@ module.exports = { return ext; }, - wrapContent(content, front, tail) { - if (tail === undefined) { - return front + content + front; - } - return front + content + tail; - }, - setExtension(filename, ext) { return path.join( path.dirname(filename), @@ -69,8 +68,14 @@ module.exports = { || filePath.includes('{{hostBaseUrl}}'); }, - createErrorElement(error) { - return `
${error.message}
`; + createErrorNode(element, error) { + const errorElement = cheerio.parseHTML( + `
${error.message}
`, true)[0]; + return Object.assign(element, _.pick(errorElement, ['name', 'attribs', 'children'])); + }, + + createEmptyNode() { + return cheerio.parseHTML('
', true)[0]; }, /** diff --git a/src/lib/markbind/src/utils/nunjuckUtils.js b/src/lib/markbind/src/utils/nunjuckUtils.js new file mode 100644 index 0000000000..222a4c3a6a --- /dev/null +++ b/src/lib/markbind/src/utils/nunjuckUtils.js @@ -0,0 +1,14 @@ +const START_ESCAPE_STR = '{% raw %}'; +const END_ESCAPE_STR = '{% endraw %}'; +const REGEX = new RegExp('{% *raw *%}(.*?){% *endraw *%}', 'gs'); + +function preEscapeRawTags(pageData) { + return pageData.replace(REGEX, `${START_ESCAPE_STR}$&${END_ESCAPE_STR}`); +} + +module.exports = { + renderEscaped(nunjucks, pageData, variableMap = {}, options = {}) { + const escapedPage = preEscapeRawTags(pageData); + return nunjucks.renderString(escapedPage, variableMap, options); + }, +}; diff --git a/src/lib/markbind/src/utils/urls.js b/src/lib/markbind/src/utils/urls.js new file mode 100644 index 0000000000..6d50152254 --- /dev/null +++ b/src/lib/markbind/src/utils/urls.js @@ -0,0 +1,66 @@ +const path = require('path'); +const pathIsInside = require('path-is-inside'); + +const _ = {}; +_.pick = require('lodash/pick'); + +const { + BOILERPLATE_FOLDER_NAME, +} = require('../constants'); + + +/** + * Calculates the absolute path of of the immediate parent site of the specified filePath. + * @param filePath The absolute file path to look up that is nested inside the root directory + * @param root The base directory from which to terminate the look up + * @param lookUp The set of urls representing the sites' base directories + * @return String The immediate parent site's absolute path. + * @throws If a non-absolute path or path outside the root is given + */ +function getParentSiteAbsolutePath(filePath, root, lookUp) { + if (!path.isAbsolute(filePath)) { + throw new Error(`Non-absolute path given to getParentSiteAbsolutePath: '${filePath}'`); + } + if (!pathIsInside(filePath, root)) { + throw new Error(`Path given '${filePath}' is not in root '${root}'`); + } + + function calculate(file) { + if (file === root) { + return file; + } + + const parent = path.dirname(file); + return lookUp.has(parent) + ? parent + : calculate(parent); + } + + return calculate(filePath); +} + +/** + * Calculates the absolute and relative path of of the immediate parent site of the specified filePath. + */ +function getParentSiteAbsoluteAndRelativePaths(filePath, root, lookUp) { + const absolute = getParentSiteAbsolutePath(filePath, root, lookUp); + return { + absolute, + relative: path.relative(root, absolute), + }; +} + +/** + * Calculates a boilerplate's source file path at the immediate parent site of + * the supplied file path. + */ +function calculateBoilerplateFilePath(pathInBoilerplates, asIfAt, config) { + return path.resolve(getParentSiteAbsolutePath(asIfAt, config.rootPath, config.baseUrlMap), + BOILERPLATE_FOLDER_NAME, pathInBoilerplates); +} + +module.exports = { + getParentSiteAbsolutePath, + getParentSiteAbsoluteAndRelativePaths, + calculateBoilerplateFilePath, +}; diff --git a/src/plugins/codeBlockCopyButtons.js b/src/plugins/codeBlockCopyButtons.js new file mode 100644 index 0000000000..6f74c53fc6 --- /dev/null +++ b/src/plugins/codeBlockCopyButtons.js @@ -0,0 +1,56 @@ +const cheerio = module.parent.require('cheerio'); + +const COPIED_TO_CLIPBOARD = 'Copied!'; +const COPY_ICON = ''; +const COPY_TO_CLIPBOARD = 'Copy'; + +function getButtonHTML() { + const html = ``; + return html; +} + + +const copyCodeBlockScript = ``; + + +module.exports = { + getScripts: () => copyCodeBlockScript, + postRender: (content) => { + const $ = cheerio.load(content, { xmlMode: false }); + const codeBlockSelector = 'pre'; + const buttonHTML = getButtonHTML(); + $(codeBlockSelector).each((i, codeBlock) => { + $(codeBlock).append(buttonHTML); + }); + return $.html(); + }, +}; diff --git a/src/plugins/default/markbind-plugin-plantuml.js b/src/plugins/default/markbind-plugin-plantuml.js index a7d87b7a1f..4862a991e1 100644 --- a/src/plugins/default/markbind-plugin-plantuml.js +++ b/src/plugins/default/markbind-plugin-plantuml.js @@ -6,42 +6,35 @@ const cheerio = module.parent.require('cheerio'); const fs = require('fs'); const path = require('path'); + const { exec } = require('child_process'); const logger = require('../../util/logger'); +const pluginUtil = require('../../util/pluginUtil'); const JAR_PATH = path.resolve(__dirname, 'plantuml.jar'); const { ERR_PROCESSING, - ERR_READING, } = require('../../constants'); // Tracks diagrams that have already been processed const processedDiagrams = new Set(); /** - * Generates diagram and replaces src attribute of puml tag - * @param src src attribute of the puml tag - * @param cwf original file that contains the puml tag, we resolve relative src to this file + * Generates diagram and returns the file name of the diagram + * @param fileName name of the file to be generated + * @param content puml dsl used to generate the puml diagram * @param config sourcePath and resultPath from parser context - * @returns {string} resolved src attribute + * @returns {string} file name of diagram */ -function generateDiagram(src, cwf, config) { - const { sourcePath, resultPath } = config; - const _cwf = cwf || sourcePath; +function generateDiagram(fileName, content, config) { + const { resultPath } = config; - // For replacing img.src - const diagramSrc = src.replace('.puml', '.png'); + const outputDir = path.join(path.dirname(resultPath), path.dirname(fileName)); // Path of the .puml file - const rawDiagramPath = path.resolve(path.dirname(_cwf), src); - // Path of the .png to be generated - const outputFilePath = path.resolve(resultPath, path.relative(sourcePath, rawDiagramPath) - .replace('.puml', '.png')); - // Output dir for the png file - const outputDir = path.dirname(outputFilePath); - + const outputFilePath = path.join(outputDir, path.basename(fileName)); // Tracks built files to avoid accessing twice - if (processedDiagrams.has(outputFilePath)) { return diagramSrc; } + if (processedDiagrams.has(outputFilePath)) { return fileName; } processedDiagrams.add(outputFilePath); // Creates output dir if it doesn't exist @@ -49,49 +42,37 @@ function generateDiagram(src, cwf, config) { fs.mkdirSync(outputDir, { recursive: true }); } - // Read diagram file, launch PlantUML jar - fs.readFile(rawDiagramPath, (err, data) => { - if (err) { - logger.debug(err); - logger.error(`${ERR_READING} ${rawDiagramPath}`); - return; - } - - const umlCode = data.toString(); - - // Java command to launch PlantUML jar - const cmd = `java -jar "${JAR_PATH}" -pipe > "${outputFilePath}"`; - const childProcess = exec(cmd); - - let errorLog = ''; - - childProcess.stdin.write( - umlCode, - (e) => { - if (e) { - logger.debug(e); - logger.error(`${ERR_PROCESSING} ${rawDiagramPath}`); - } - childProcess.stdin.end(); - }, - ); - - childProcess.on('error', (error) => { - logger.debug(error); - logger.error(`${ERR_PROCESSING} ${rawDiagramPath}`); - }); + // Java command to launch PlantUML jar + const cmd = `java -jar "${JAR_PATH}" -pipe > "${outputFilePath}"`; + const childProcess = exec(cmd); + + let errorLog = ''; + childProcess.stdin.write( + content, + (e) => { + if (e) { + logger.debug(e); + logger.error(`${ERR_PROCESSING} ${fileName}`); + } + childProcess.stdin.end(); + }, + ); + + childProcess.on('error', (error) => { + logger.debug(error); + logger.error(`${ERR_PROCESSING} ${fileName}`); + }); - childProcess.stderr.on('data', (errorMsg) => { - errorLog += errorMsg; - }); + childProcess.stderr.on('data', (errorMsg) => { + errorLog += errorMsg; + }); - childProcess.on('exit', () => { - // This goes to the log file, but not shown on the console - logger.debug(errorLog); - }); + childProcess.on('exit', () => { + // This goes to the log file, but not shown on the console + logger.debug(errorLog); }); - return diagramSrc; + return fileName; } module.exports = { @@ -101,11 +82,14 @@ module.exports = { // Processes all tags const $ = cheerio.load(content, { xmlMode: true }); $('puml').each((i, tag) => { - // eslint-disable-next-line no-param-reassign tag.name = 'pic'; - const { src, cwf } = tag.attribs; - // eslint-disable-next-line no-param-reassign - tag.attribs.src = generateDiagram(src, cwf, config); + const { cwf } = tag.attribs; + const pumlContent = pluginUtil.getPluginContent($, tag, cwf); + + const filePath = pluginUtil.getFilePathForPlugin(tag.attribs, pumlContent); + + tag.attribs.src = generateDiagram(filePath, pumlContent, config); + tag.children = []; }); return $.html(); @@ -113,4 +97,6 @@ module.exports = { getSources: () => ({ tagMap: [['puml', 'src']], }), + + getSpecialTags: () => ['puml'], }; diff --git a/src/template/default/_markbind/footers/footer.md b/src/template/default/_markbind/footers/footer.md index e5f2864c41..189ca1c0b5 100644 --- a/src/template/default/_markbind/footers/footer.md +++ b/src/template/default/_markbind/footers/footer.md @@ -1,6 +1,6 @@
- [Generated by {{MarkBind}} on {{timestamp}}] + [Generated by {{MarkBind}}]
diff --git a/src/template/default/_markbind/layouts/default/footer.md b/src/template/default/_markbind/layouts/default/footer.md index e69de29bb2..189ca1c0b5 100644 --- a/src/template/default/_markbind/layouts/default/footer.md +++ b/src/template/default/_markbind/layouts/default/footer.md @@ -0,0 +1,6 @@ +
+ +
+ [Generated by {{MarkBind}}] +
+
diff --git a/src/template/default/_markbind/layouts/default/header.md b/src/template/default/_markbind/layouts/default/header.md index e69de29bb2..cadbbb5a5c 100644 --- a/src/template/default/_markbind/layouts/default/header.md +++ b/src/template/default/_markbind/layouts/default/header.md @@ -0,0 +1,16 @@ +
+ + Your Logo +
  • Topic 1
  • +
  • Topic 2
  • + +
  • Topic 3a
  • +
  • Topic 3b
  • +
    +
  • + +
  • +
    +
    diff --git a/src/template/default/_markbind/layouts/default/navigation.md b/src/template/default/_markbind/layouts/default/navigation.md index e69de29bb2..8533e5b1f7 100644 --- a/src/template/default/_markbind/layouts/default/navigation.md +++ b/src/template/default/_markbind/layouts/default/navigation.md @@ -0,0 +1,8 @@ + +* [Home :house:]({{ baseUrl }}/index.html) +* [Topic 1]({{baseUrl}}/contents/topic1.html) +* [Topic 2]({{baseUrl}}/contents/topic2.html) +* Topic 3 :expanded: + * [Topic 3a]({{baseUrl}}/contents/topic3a.html) + * [Topic 3b]({{baseUrl}}/contents/topic3b.html) + diff --git a/src/template/default/_markbind/variables.json b/src/template/default/_markbind/variables.json new file mode 100644 index 0000000000..04d0b977d3 --- /dev/null +++ b/src/template/default/_markbind/variables.json @@ -0,0 +1,3 @@ +{ + "jsonVariableExample": "Your variables can be defined here as well" +} \ No newline at end of file diff --git a/src/template/default/_markbind/variables.md b/src/template/default/_markbind/variables.md index d1f129e068..aab37f29a9 100644 --- a/src/template/default/_markbind/variables.md +++ b/src/template/default/_markbind/variables.md @@ -1,4 +1,6 @@ To inject this HTML segment in your markbind files, use {{ example }} where you want to place it. More generally, surround the segment's id with double curly braces. - \ No newline at end of file + + + \ No newline at end of file diff --git a/src/template/default/site.json b/src/template/default/site.json index 60ac986e68..b8ad4a6e2e 100755 --- a/src/template/default/site.json +++ b/src/template/default/site.json @@ -18,10 +18,7 @@ "title": "Landing Page" }, { - "glob": "**/index.md" - }, - { - "glob": "**/*.+(md|mbd)" + "glob": ["**/index.md", "**/*.+(md|mbd)"] } ], "deploy": { diff --git a/src/template/minimal/_markbind/layouts/default/footer.md b/src/template/minimal/_markbind/layouts/default/footer.md index e69de29bb2..0ed3a6c779 100644 --- a/src/template/minimal/_markbind/layouts/default/footer.md +++ b/src/template/minimal/_markbind/layouts/default/footer.md @@ -0,0 +1,3 @@ +
    + +
    diff --git a/src/template/minimal/_markbind/layouts/default/header.md b/src/template/minimal/_markbind/layouts/default/header.md index e69de29bb2..194c7a4859 100644 --- a/src/template/minimal/_markbind/layouts/default/header.md +++ b/src/template/minimal/_markbind/layouts/default/header.md @@ -0,0 +1,3 @@ +
    + +
    diff --git a/src/template/minimal/_markbind/layouts/default/navigation.md b/src/template/minimal/_markbind/layouts/default/navigation.md index e69de29bb2..8ce3a71d46 100644 --- a/src/template/minimal/_markbind/layouts/default/navigation.md +++ b/src/template/minimal/_markbind/layouts/default/navigation.md @@ -0,0 +1,3 @@ + + + diff --git a/src/template/minimal/_markbind/variables.json b/src/template/minimal/_markbind/variables.json new file mode 100644 index 0000000000..04d0b977d3 --- /dev/null +++ b/src/template/minimal/_markbind/variables.json @@ -0,0 +1,3 @@ +{ + "jsonVariableExample": "Your variables can be defined here as well" +} \ No newline at end of file diff --git a/src/template/minimal/_markbind/variables.md b/src/template/minimal/_markbind/variables.md index d1f129e068..aab37f29a9 100644 --- a/src/template/minimal/_markbind/variables.md +++ b/src/template/minimal/_markbind/variables.md @@ -1,4 +1,6 @@ To inject this HTML segment in your markbind files, use {{ example }} where you want to place it. More generally, surround the segment's id with double curly braces. - \ No newline at end of file +
    + + \ No newline at end of file diff --git a/src/template/minimal/site.json b/src/template/minimal/site.json index 39eb21006c..14adfc6c46 100644 --- a/src/template/minimal/site.json +++ b/src/template/minimal/site.json @@ -18,14 +18,10 @@ "title": "Hello World" }, { - "glob": "**/index.md" - }, - { - "glob": "**/*.+(md|mbd)" + "glob": ["**/index.md", "**/*.+(md|mbd)"] } ], "deploy": { "message": "Site Update." } - } - \ No newline at end of file +} diff --git a/src/util/pluginUtil.js b/src/util/pluginUtil.js new file mode 100644 index 0000000000..9d24a89170 --- /dev/null +++ b/src/util/pluginUtil.js @@ -0,0 +1,53 @@ +const cryptoJS = require('crypto-js'); +const fs = require('fs'); +const path = require('path'); +const fsUtil = require('./fsUtil'); +const logger = require('./logger'); + +const { + ERR_READING, +} = require('../constants'); + +const pluginUtil = { + /** + * Returns the file path for the plugin tag. + * Return based on given name if provided, or it will be based on src. + * If both are not provided, a md5 generated hash is provided for consistency. + */ + getFilePathForPlugin: (tagAttribs, content) => { + if (tagAttribs.name !== undefined) { + return `${fsUtil.removeExtension(tagAttribs.name)}.png`; + } + + if (tagAttribs.src !== undefined) { + const filePath = fsUtil.removeExtension(tagAttribs.src); + return `${filePath}.png`; + } + + // This is to keep the hash consistent across windows / unix systems + const normalizedContent = content.replace(/\r\n/g, '\n'); + const hashedContent = cryptoJS.MD5(normalizedContent).toString(); + return `${hashedContent}.png`; + }, + + /** + * Returns the string content of the plugin. + */ + getPluginContent: ($, element, cwf) => { + if (element.attribs.src !== undefined) { + // Path of the plugin content + const rawPath = path.resolve(path.dirname(cwf), element.attribs.src); + try { + return fs.readFileSync(rawPath, 'utf8'); + } catch (err) { + logger.debug(err); + logger.error(`${ERR_READING} ${rawPath}`); + return ''; + } + } + + return $(element).text(); + }, +}; + +module.exports = pluginUtil; diff --git a/test/functional/testUtil/diffChars.js b/test/functional/testUtil/diffChars.js new file mode 100644 index 0000000000..52399363a9 --- /dev/null +++ b/test/functional/testUtil/diffChars.js @@ -0,0 +1,23 @@ +const jsdiff = require('diff'); +const DiffPrinter = require('./diffPrinter'); + +/** + * Checks for any diffs between expected.html and actual.html, + * then prints the differences. + * @param {string} expected + * @param {string} actual + * @param {string} filePathName + * @returns {boolean} if diff was found + */ +const diffCharsAndPrint = (expected, actual, filePathName) => { + const diffParts = jsdiff.diffChars(expected, actual); + const isDiff = part => part.added || part.removed; + const hasDiff = diffParts.some(isDiff); + if (hasDiff) { + DiffPrinter.printDiffFoundMessage(filePathName); + DiffPrinter.printDiff(diffParts); + } + return hasDiff; +}; + +module.exports = diffCharsAndPrint; diff --git a/test/functional/testUtil/diffHtml.js b/test/functional/testUtil/diffHtml.js deleted file mode 100644 index 901a45863d..0000000000 --- a/test/functional/testUtil/diffHtml.js +++ /dev/null @@ -1,25 +0,0 @@ -const jsdiff = require('diff'); -const DiffPrinter = require('./diffPrinter'); - -/** - * Checks for any diffs between expected.html and actual.html - * @param {string} expected - * @param {string} actual - * @param {string} filePathName - * @returns {bool} if diff was found - */ -const diffHtml = (expected, actual, filePathName) => { - const diffParts = jsdiff.diffWords(expected, actual); - const isDiff = part => part.added || part.removed; - const hasDiff = diffParts.some(isDiff); - if (hasDiff) { - DiffPrinter.printLine(); - DiffPrinter.printLine('-------------------------------------', 'grey'); - DiffPrinter.printLine(`Diff found in ${filePathName}`, 'grey'); - DiffPrinter.printLine(); - DiffPrinter.printDiff(diffParts); - } - return hasDiff; -}; - -module.exports = diffHtml; diff --git a/test/functional/testUtil/diffPrinter.js b/test/functional/testUtil/diffPrinter.js index e9c1b74ccb..fc9931096d 100644 --- a/test/functional/testUtil/diffPrinter.js +++ b/test/functional/testUtil/diffPrinter.js @@ -1,61 +1,73 @@ -const ANSI_RED = '\u001B[31m'; -const ANSI_GREEN = '\u001B[32m'; -const ANSI_GREY = '\u001B[90m'; -const ANSI_RESET = '\u001B[0m'; +const chalk = require('chalk'); + +const EMPTY_LINE = '|-------------------empty-line-------------------|'; +const CONSECUTIVE_NEWLINE_REGEX = new RegExp('\\n{2,}', 'g'); +const WHITESPACE_REGEX = new RegExp('\\s+', 'g'); class DiffPrinter { /** - * Prints line of text in colour provided - * @param {string} text text to print, default: no text - * @param {string} colour colour of text, default: no colour + * Replaces all newlines except the first with EMPTY_LINE. */ - static printLine(text = '', colour = 'none') { - let ansiEscCode = ''; - switch (colour) { - case 'red': - ansiEscCode = ANSI_RED; - break; - case 'green': - ansiEscCode = ANSI_GREEN; - break; - case 'grey': - ansiEscCode = ANSI_GREY; - break; - default: - ansiEscCode = ''; - break; + static prependNewLines(match) { + return `\n${match.replace('\n', '').split('\n').join(`${EMPTY_LINE}\n`)}`; + } + + static formatNewLines(value, prevVal, nextVal) { + let printValue; + printValue = value.replace(CONSECUTIVE_NEWLINE_REGEX, this.prependNewLines); + + /** + * Replace consecutive newlines between current value and adjacent values + */ + + const currentValStartsWithNewLine = printValue.startsWith('\n'); + const prevValEndsWithNewLine = prevVal && prevVal.endsWith('\n'); + if (currentValStartsWithNewLine && prevValEndsWithNewLine) { + printValue = EMPTY_LINE + printValue; } - process.stderr.write(`${ansiEscCode}${text}${ANSI_RESET}\n`); + + const currentValEndsWithNewLine = printValue.endsWith('\n'); + const nextValStartsWithNewLine = nextVal && nextVal.startsWith('\n'); + if (currentValEndsWithNewLine && nextValStartsWithNewLine) { + printValue += EMPTY_LINE; + } + + return printValue; } /** * Splits and combines change objects such that their value contains a single line * Also adds ANSI Escape Codes for diffs and unchanged lines - * @param {Array} parts array of change objects returned by jsdiff#diffWords + * @param {Array} diffObjects array of change objects returned by jsdiff#diffWords * @returns {Array} change objects where their value contains a single line */ - static generateLineParts(parts) { - let lineParts = [{ value: '' }]; - parts.forEach(({ value, added, removed }) => { - let lines = value.split(/\n/); - let asciEscCode = ANSI_GREY; - if (added) asciEscCode = ANSI_GREEN; - else if (removed) asciEscCode = ANSI_RED; - lines = lines.map(line => ({ - value: asciEscCode + line + ANSI_RESET, - diff: added || removed, - })); - - if (lines.length) { - const prevPart = lineParts.pop(); - lines[0] = { - value: prevPart.value + lines[0].value, - diff: lines[0].diff || prevPart.diff, - }; + static generateLineParts(diffObjects) { + const parts = []; + diffObjects.forEach(({ value, added, removed }, i) => { + let printValue = value; + if (added || removed) { + printValue = this.formatNewLines(printValue, + diffObjects[i - 1] && diffObjects[i - 1].value, + diffObjects[i + 1] && diffObjects[i - 1].value); + printValue = added + ? chalk.green(printValue.replace(WHITESPACE_REGEX, + match => chalk.bgGreenBright(match))) + : chalk.red(printValue.replace(WHITESPACE_REGEX, + match => chalk.bgRedBright(match))); + parts.push({ + value: printValue, + diff: true, + }); + } else { + // Split into lines only when it is untouched to avoid printing too much of the untouched areas + const lineParts = printValue.split('\n').map((line, index, lines) => ({ + value: (index === lines.length - 1) ? chalk.grey(line) : `${chalk.grey(line)}\n`, + diff: false, + })); + parts.push(...lineParts); } - lineParts = lineParts.concat(lines); }); - return lineParts; + return parts; } /** @@ -75,6 +87,11 @@ class DiffPrinter { }); } + static printDiffFoundMessage(filePath) { + const message = chalk.grey(`\n-------------------------------------\nDiff found in ${filePath}\n\n`); + process.stderr.write(message); + } + /** * Prints value in line objects that are set for printing * If there is a gap between lines, print ellipsis @@ -86,11 +103,9 @@ class DiffPrinter { const prevPart = lineParts[i - 1]; if (linePart.toPrint) { if (prevPart && !prevPart.toPrint) { - this.printLine(); - this.printLine('...', 'grey'); - this.printLine(); + process.stderr.write(chalk.grey('\n...\n')); } - this.printLine(linePart.value, 'none'); // already has ANSI Escape Code + process.stderr.write(linePart.value); } }); } diff --git a/test/functional/testUtil/test.js b/test/functional/testUtil/test.js index 3ed786081f..c99daa8f9a 100644 --- a/test/functional/testUtil/test.js +++ b/test/functional/testUtil/test.js @@ -1,12 +1,26 @@ const fs = require('fs'); const path = require('path'); const program = require('commander'); +const ignore = require('ignore'); const walkSync = require('walk-sync'); -const diffHtml = require('./diffHtml'); +const { isBinary } = require('istextorbinary'); +const diffChars = require('./diffChars'); const _ = {}; _.isEqual = require('lodash/isEqual'); +// Other files to ignore / files with binary extensions not recognised by istextorbinary package +const TEST_BLACKLIST = ignore().add([ + '*.log', + '*.woff', + '*.woff2', +]); + +// Files that possibly have null characters but are not binary files +const NULL_WHITELIST = ignore().add(['vue-strap.min.js']); + +const CRLF_REGEX = new RegExp('\\r\\n', 'g'); + function readFileSync(...paths) { return fs.readFileSync(path.resolve(...paths), 'utf8'); } @@ -27,6 +41,7 @@ program throw new Error('Unequal number of files'); } + /* eslint-disable no-continue */ for (let i = 0; i < expectedPaths.length; i += 1) { const expectedFilePath = expectedPaths[i]; const actualFilePath = actualPaths[i]; @@ -35,24 +50,25 @@ program throw new Error('Different files built'); } - const parsed = path.parse(actualFilePath); - if (parsed.ext === '.html') { - // compare html files - const expected = readFileSync(expectedDirectory, expectedFilePath); - const actual = readFileSync(actualDirectory, actualFilePath); - const hasDiff = diffHtml(expected, actual, expectedFilePath); - error = error || hasDiff; - } else if (parsed.base === 'siteData.json') { - // compare site data - const expected = readFileSync(expectedDirectory, expectedFilePath); - const actual = readFileSync(actualDirectory, actualFilePath); - if (!_.isEqual(JSON.parse(expected), JSON.parse(actual))) { - throw new Error('Site data does not match with the expected file.'); - } + if (isBinary(expectedFilePath) || TEST_BLACKLIST.ignores(expectedFilePath)) { + continue; } + + const expected = readFileSync(expectedDirectory, expectedFilePath).replace(CRLF_REGEX, '\n'); + const actual = readFileSync(actualDirectory, actualFilePath).replace(CRLF_REGEX, '\n'); + + if (!NULL_WHITELIST.ignores(expectedFilePath) && isBinary(null, expected)) { + // eslint-disable-next-line no-console + console.warn(`Unrecognised file extension ${expectedFilePath} contains null characters, skipping`); + continue; + } + + const hasDiff = diffChars(expected, actual, expectedFilePath); + error = error || hasDiff; } + /* eslint-enable no-continue */ - if (error) throw new Error('Diffs found in .html files'); + if (error) throw new Error('Diffs found in files'); }); program.parse(process.argv); diff --git a/test/functional/test_site/_markbind/boilerplates/folder/inside.md b/test/functional/test_site/_markbind/boilerplates/folder/inside.md index eb2d22c07c..62021a33e5 100644 --- a/test/functional/test_site/_markbind/boilerplates/folder/inside.md +++ b/test/functional/test_site/_markbind/boilerplates/folder/inside.md @@ -1,6 +1,4 @@ -# Path within the boilerplate folder is separately specified - -This is dynamically included. +# Path within the boilerplate folder is separately specified Like static include, pages within the site should be able to use files located in folders within boilerplate. diff --git a/test/functional/test_site/_markbind/headers/fixed_header.md b/test/functional/test_site/_markbind/headers/fixed_header.md new file mode 100644 index 0000000000..d4ccbc9d71 --- /dev/null +++ b/test/functional/test_site/_markbind/headers/fixed_header.md @@ -0,0 +1,11 @@ +
    + + Markbind Test Site +
  • Open Bugs
  • +
    +
    +
    + Test Jumbotron
    +
    +
    +
    diff --git a/test/functional/test_site/_markbind/variable.json b/test/functional/test_site/_markbind/variable.json new file mode 100644 index 0000000000..c067e2283c --- /dev/null +++ b/test/functional/test_site/_markbind/variable.json @@ -0,0 +1,6 @@ +{ + "back": "back
    ", + "front": "
    front", + "jsonVar1": "Json Variable can be referenced", + "jsonVar2": "Referencing jsonVar1: {{ jsonVar1 }}" +} \ No newline at end of file diff --git a/test/functional/test_site/_markbind/variables.md b/test/functional/test_site/_markbind/variables.md index 657b47c1f5..d4d6518125 100644 --- a/test/functional/test_site/_markbind/variables.md +++ b/test/functional/test_site/_markbind/variables.md @@ -9,3 +9,4 @@ Global Variable Overriding Included Variable Global Variable Global Variable Overriding Page Variable + \ No newline at end of file diff --git a/test/functional/test_site/bugs/index.md b/test/functional/test_site/bugs/index.md index 995dd39721..3959045425 100644 --- a/test/functional/test_site/bugs/index.md +++ b/test/functional/test_site/bugs/index.md @@ -5,36 +5,12 @@ header: header.md
    -**popover initiated by trigger: honor trigger attribute** +**Bug Description** -Issue #49 +Issue #XX Repro: -Establishing Requirements - - -
    - -
    -
    - -**Support multiple inclusions of a modal** - -Issue #107 - -Repro: - - - - -**Remove extra space in links** - -Issue #147 - -Repro: - -This is a link. -[[link text](https://github.com)] +Steps to Reproduce
    diff --git a/test/functional/test_site/bugs/modal.md b/test/functional/test_site/bugs/modal.md deleted file mode 100644 index 6a09255b1c..0000000000 --- a/test/functional/test_site/bugs/modal.md +++ /dev/null @@ -1,5 +0,0 @@ -This is to reproduce multiple inclusions of a modal bug - - - - diff --git a/test/functional/test_site/expected/9c9e77fc0a983cb6b592e65733787bec.png b/test/functional/test_site/expected/9c9e77fc0a983cb6b592e65733787bec.png new file mode 100644 index 0000000000..ff4fd1ece9 Binary files /dev/null and b/test/functional/test_site/expected/9c9e77fc0a983cb6b592e65733787bec.png differ diff --git a/test/functional/test_site/expected/_markbind/variable.json b/test/functional/test_site/expected/_markbind/variable.json new file mode 100644 index 0000000000..c067e2283c --- /dev/null +++ b/test/functional/test_site/expected/_markbind/variable.json @@ -0,0 +1,6 @@ +{ + "back": "back
    ", + "front": "
    front", + "jsonVar1": "Json Variable can be referenced", + "jsonVar2": "Referencing jsonVar1: {{ jsonVar1 }}" +} \ No newline at end of file diff --git a/test/functional/test_site/expected/bugs/index.html b/test/functional/test_site/expected/bugs/index.html index b64663b08a..80288776b9 100644 --- a/test/functional/test_site/expected/bugs/index.html +++ b/test/functional/test_site/expected/bugs/index.html @@ -5,7 +5,7 @@ - + Open Bugs @@ -29,61 +29,22 @@
  • Open Bugs
  • -
    Test Jumbotron
    +
    + Test Jumbotron

    +
    -

    popover initiated by trigger: honor trigger attribute

    -

    Issue #49

    -

    Repro:

    -

    - Establishing Requirements -

    - -
    -
    -

    Requirements gathering, requirements elicitation, requirements analysis, requirements capture are some of the terms commonly and interchangeably used to represent the activity of understanding what a software product should - do. -

    -
    -
    -
    -

    Support multiple inclusions of a modal

    -

    Issue #107

    -

    Repro:

    -
    -

    This is to reproduce - multiple inclusions of a modal bug -

    - -
    -

    Requirements gathering, requirements elicitation, requirements analysis, requirements capture are some of the terms commonly and interchangeably used to represent the activity of understanding what a software product should - do. -

    -
    -
    -
    -
    -

    This is to reproduce - multiple inclusions of a modal bug -

    - -
    -

    Requirements gathering, requirements elicitation, requirements analysis, requirements capture are some of the terms commonly and interchangeably used to represent the activity of understanding what a software product should - do. -

    -
    -
    -
    -

    Remove extra space in links

    -

    Issue #147

    +

    Bug Description

    +

    Issue #XX

    Repro:

    -

    This is a link. [ - link text]

    +

    Steps to Reproduce

    + +
    diff --git a/test/functional/test_site/expected/index.html b/test/functional/test_site/expected/index.html index aa9b11cc31..fc3e86df39 100644 --- a/test/functional/test_site/expected/index.html +++ b/test/functional/test_site/expected/index.html @@ -10,7 +10,7 @@ - + Hello World @@ -23,8 +23,7 @@ - - + @@ -41,7 +40,8 @@
  • Open Bugs
  • -
    Test Jumbotron
    +
    + Test Jumbotron

    @@ -56,15 +56,15 @@

    Testing Site-Nav

    -
  • +
  • + +
  • diff --git a/test/functional/test_site/expected/testCodeBlocks.html b/test/functional/test_site/expected/testCodeBlocks.html index 20f339a8c6..3448479b12 100644 --- a/test/functional/test_site/expected/testCodeBlocks.html +++ b/test/functional/test_site/expected/testCodeBlocks.html @@ -5,7 +5,7 @@ - + Code Blocks Line Splitting @@ -32,7 +32,29 @@
    function fourEmptyLinesBelow() {} // four empty lines above

    hljs span spanning multiple lines

    *****-----
    +

    start-from attr causes inline style to be set

    +
    *****-----
    +

    highlight-lines attr causes corresponding lines to have 'highlighted' class

    +
    1  highlighted23  highlighted45  highlighted6  highlighted7  highlighted8  highlighted910
    +

    highlight-lines attr with start-from attr cause corresponding lines to have 'highlighted' class based on 'start-from'

    +
    11  highlighted1213  highlighted1415  highlighted16  highlighted17  highlighted18  highlighted1920
    +

    Code block heading

    +
    +
    A heading
    +
    +
    <foo>    <bar></foo>
    +
    +
    +

    Code block heading with inline markdown

    +
    +
    Bold, Italic, Bold and Italic, Strike through, Super Bold, Underline, Highlight, 👍 ❗️ ❌ 🚧
    We support page breaks
    +
    +
    <foo>    <bar></foo>
    +
    +
    + +
    diff --git a/test/functional/test_site/expected/testEmptyFrontmatter.html b/test/functional/test_site/expected/testEmptyFrontmatter.html index dcb83bdff1..89f9b50d18 100644 --- a/test/functional/test_site/expected/testEmptyFrontmatter.html +++ b/test/functional/test_site/expected/testEmptyFrontmatter.html @@ -5,7 +5,7 @@ - + Hello World @@ -27,6 +27,8 @@

    A page with an empty frontmatter should still build.

    + +
    diff --git a/test/functional/test_site/expected/testExternalScripts.html b/test/functional/test_site/expected/testExternalScripts.html index cc4017a86e..73f35732c5 100644 --- a/test/functional/test_site/expected/testExternalScripts.html +++ b/test/functional/test_site/expected/testExternalScripts.html @@ -5,7 +5,7 @@ - + Hello World @@ -27,9 +27,12 @@

    The external script MathJax 2.75 should be included, and the following MathJax content should render:

    - When \(a \ne 0\), there are two solutions to \(ax^2 + bx + c = 0\) and they are $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$ + When \(a \ne 0\), there are two solutions to \(ax^2 + bx + c = 0\) and they are + $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$
    + +
    diff --git a/test/functional/test_site/expected/testImportVariables._include_.html b/test/functional/test_site/expected/testImportVariables._include_.html index 3b8cff9686..c393869205 100644 --- a/test/functional/test_site/expected/testImportVariables._include_.html +++ b/test/functional/test_site/expected/testImportVariables._include_.html @@ -1,13 +1,14 @@

    Making sure the issue here https://github.com/MarkBind/markbind/commit/48b57a18a8bfd68101b163908da4a0541756364a is fixed.

    -

    Test import variables from src specified via variable: This variable comes from variablesToImport.md

    +

    Test import variables from src specified via variable: + This variable comes from variablesToImport.md

    Test import variables that itself imports other variables:

    -

    Trying to access a page variable:

    +

    Trying to access a page variable:

    There should be something red below:

    This is a page variable from variablestoimport.md
    Something should have appeared above in red. -

    Trying to access an imported variable via namespace:

    +

    Trying to access an imported variable via namespace:

    There should be something blue below:

    This is a deeply imported variable
    Something should have appeared above in blue. \ No newline at end of file diff --git a/test/functional/test_site/expected/testImportVariables.html b/test/functional/test_site/expected/testImportVariables.html index 962963c2a2..1a676e0a78 100644 --- a/test/functional/test_site/expected/testImportVariables.html +++ b/test/functional/test_site/expected/testImportVariables.html @@ -5,7 +5,7 @@ - + Imported Variables Test @@ -28,7 +28,8 @@

    Making sure the issue here https://github.com/MarkBind/markbind/commit/48b57a18a8bfd68101b163908da4a0541756364a is fixed.

    -

    Test import variables from src specified via variable: This variable comes from variablesToImport.md

    +

    Test import variables from src specified via variable: + This variable comes from variablesToImport.md

    Test import variables that itself imports other variables:

    Trying to access a page variable:

    There should be something red below:

    @@ -39,6 +40,8 @@

    Trying to access an
    This is a deeply imported variable
    Something should have appeared above in blue.

    + +