diff --git a/.gitignore b/.gitignore index 143271c6c..7038b6553 100644 --- a/.gitignore +++ b/.gitignore @@ -79,7 +79,8 @@ data/ /docker-compose.override.yml vue/node_modules -plugins +/recipes/plugins +.vscode/ vetur.config.js cookbook/static/vue vue/webpack-stats.json diff --git a/cookbook/helper/open_data_importer.py b/cookbook/helper/open_data_importer.py index a6fad9764..28f1e22d2 100644 --- a/cookbook/helper/open_data_importer.py +++ b/cookbook/helper/open_data_importer.py @@ -6,6 +6,8 @@ from cookbook.models import (Food, FoodProperty, Property, PropertyType, Superma SupermarketCategory, SupermarketCategoryRelation, Unit, UnitConversion) import re +from recipes.settings import DEBUG + class OpenDataImportResponse: total_created = 0 @@ -367,12 +369,28 @@ class OpenDataImporter: create_list.append({'data': obj_dict}) if self.update_existing and len(update_list) > 0: - model_type.objects.bulk_update(update_list, field_list) - od_response.total_updated += len(update_list) + try: + model_type.objects.bulk_update(update_list, field_list) + od_response.total_updated += len(update_list) + except Exception: + if DEBUG: + print('========= LOAD FOOD FAILED ============') + print(update_list) + print(existing_data_names) + print(existing_data_slugs) + traceback.print_exc() if len(create_list) > 0: - Food.load_bulk(create_list, None) - od_response.total_created += len(create_list) + try: + Food.load_bulk(create_list, None) + od_response.total_created += len(create_list) + except Exception: + if DEBUG: + print('========= LOAD FOOD FAILED ============') + print(create_list) + print(existing_data_names) + print(existing_data_slugs) + traceback.print_exc() # --------------- PROPERTY STUFF ----------------------- model_type = Property diff --git a/cookbook/serializer.py b/cookbook/serializer.py index 816180ba7..f0090b4ba 100644 --- a/cookbook/serializer.py +++ b/cookbook/serializer.py @@ -468,7 +468,7 @@ class KeywordLabelSerializer(serializers.ModelSerializer): class KeywordSerializer(UniqueFieldsMixin, ExtendedRecipeMixin): - label = serializers.SerializerMethodField('get_label') + label = serializers.SerializerMethodField('get_label', allow_null=False) recipe_filter = 'keywords' def get_label(self, obj): @@ -610,6 +610,21 @@ class RecipeSimpleSerializer(WritableNestedModelSerializer): fields = ('id', 'name', 'url') +class RecipeFlatSerializer(WritableNestedModelSerializer): + + def create(self, validated_data): + # don't allow writing to Recipe via this API + return Recipe.objects.get(**validated_data) + + def update(self, instance, validated_data): + # don't allow writing to Recipe via this API + return Recipe.objects.get(**validated_data) + + class Meta: + model = Recipe + fields = ('id', 'name', 'image') + + class FoodSimpleSerializer(serializers.ModelSerializer): class Meta: model = Food @@ -893,12 +908,12 @@ class CommentSerializer(serializers.ModelSerializer): class RecipeOverviewSerializer(RecipeBaseSerializer): - keywords = KeywordLabelSerializer(many=True) - new = serializers.SerializerMethodField('is_recipe_new') + keywords = KeywordLabelSerializer(many=True, read_only=True) + new = serializers.SerializerMethodField('is_recipe_new', read_only=True) recent = serializers.ReadOnlyField() - rating = CustomDecimalField(required=False, allow_null=True) - last_cooked = serializers.DateTimeField(required=False, allow_null=True) + rating = CustomDecimalField(required=False, allow_null=True, read_only=True) + last_cooked = serializers.DateTimeField(required=False, allow_null=True, read_only=True) def create(self, validated_data): pass @@ -913,7 +928,9 @@ class RecipeOverviewSerializer(RecipeBaseSerializer): 'waiting_time', 'created_by', 'created_at', 'updated_at', 'internal', 'servings', 'servings_text', 'rating', 'last_cooked', 'new', 'recent' ) - read_only_fields = ['image', 'created_by', 'created_at'] + read_only_fields = ['id', 'name', 'description', 'image', 'keywords', 'working_time', + 'waiting_time', 'created_by', 'created_at', 'updated_at', + 'internal', 'servings', 'servings_text', 'rating', 'last_cooked', 'new', 'recent'] class RecipeSerializer(RecipeBaseSerializer): diff --git a/cookbook/static/vue3/assets/brand_logo-D4X97p3N.svg b/cookbook/static/vue3/assets/brand_logo-D4X97p3N.svg new file mode 100644 index 000000000..54c073f2c --- /dev/null +++ b/cookbook/static/vue3/assets/brand_logo-D4X97p3N.svg @@ -0,0 +1,164 @@ + +image/svg+xml + + + + +Tandoor diff --git a/cookbook/static/vue3/assets/fa-brands-400-C99Yv4gD.woff2 b/cookbook/static/vue3/assets/fa-brands-400-C99Yv4gD.woff2 new file mode 100644 index 000000000..36fbda7d3 Binary files /dev/null and b/cookbook/static/vue3/assets/fa-brands-400-C99Yv4gD.woff2 differ diff --git a/cookbook/static/vue3/assets/fa-brands-400-DtZKBM2a.ttf b/cookbook/static/vue3/assets/fa-brands-400-DtZKBM2a.ttf new file mode 100644 index 000000000..5efb1d4f9 Binary files /dev/null and b/cookbook/static/vue3/assets/fa-brands-400-DtZKBM2a.ttf differ diff --git a/cookbook/static/vue3/assets/fa-regular-400-BMFokQJ2.ttf b/cookbook/static/vue3/assets/fa-regular-400-BMFokQJ2.ttf new file mode 100644 index 000000000..838b4e2cf Binary files /dev/null and b/cookbook/static/vue3/assets/fa-regular-400-BMFokQJ2.ttf differ diff --git a/cookbook/static/vue3/assets/fa-regular-400-OOsPf1xj.woff2 b/cookbook/static/vue3/assets/fa-regular-400-OOsPf1xj.woff2 new file mode 100644 index 000000000..b6cabbacb Binary files /dev/null and b/cookbook/static/vue3/assets/fa-regular-400-OOsPf1xj.woff2 differ diff --git a/cookbook/static/vue3/assets/fa-solid-900-DAI24fNt.woff2 b/cookbook/static/vue3/assets/fa-solid-900-DAI24fNt.woff2 new file mode 100644 index 000000000..824d518eb Binary files /dev/null and b/cookbook/static/vue3/assets/fa-solid-900-DAI24fNt.woff2 differ diff --git a/cookbook/static/vue3/assets/fa-solid-900-DM0teJdg.ttf b/cookbook/static/vue3/assets/fa-solid-900-DM0teJdg.ttf new file mode 100644 index 000000000..ec24749db Binary files /dev/null and b/cookbook/static/vue3/assets/fa-solid-900-DM0teJdg.ttf differ diff --git a/cookbook/static/vue3/assets/fa-v4compatibility-F0dlVTLQ.ttf b/cookbook/static/vue3/assets/fa-v4compatibility-F0dlVTLQ.ttf new file mode 100644 index 000000000..b175aa8ec Binary files /dev/null and b/cookbook/static/vue3/assets/fa-v4compatibility-F0dlVTLQ.ttf differ diff --git a/cookbook/static/vue3/assets/fa-v4compatibility-aR9vOKaP.woff2 b/cookbook/static/vue3/assets/fa-v4compatibility-aR9vOKaP.woff2 new file mode 100644 index 000000000..e09b5a550 Binary files /dev/null and b/cookbook/static/vue3/assets/fa-v4compatibility-aR9vOKaP.woff2 differ diff --git a/cookbook/static/vue3/assets/main-C0cQ5WeY.css b/cookbook/static/vue3/assets/main-C0cQ5WeY.css new file mode 100644 index 000000000..fbec95d69 --- /dev/null +++ b/cookbook/static/vue3/assets/main-C0cQ5WeY.css @@ -0,0 +1,9 @@ +.v-avatar{flex:none;align-items:center;display:inline-flex;justify-content:center;line-height:normal;overflow:hidden;position:relative;text-align:center;transition:.2s cubic-bezier(.4,0,.2,1);transition-property:width,height;vertical-align:middle;border-radius:50%}.v-avatar.v-avatar--size-x-small{--v-avatar-height: 24px}.v-avatar.v-avatar--size-small{--v-avatar-height: 32px}.v-avatar.v-avatar--size-default{--v-avatar-height: 40px}.v-avatar.v-avatar--size-large{--v-avatar-height: 48px}.v-avatar.v-avatar--size-x-large{--v-avatar-height: 56px}.v-avatar.v-avatar--density-default{height:calc(var(--v-avatar-height) + 0px);width:calc(var(--v-avatar-height) + 0px)}.v-avatar.v-avatar--density-comfortable{height:calc(var(--v-avatar-height) + -4px);width:calc(var(--v-avatar-height) + -4px)}.v-avatar.v-avatar--density-compact{height:calc(var(--v-avatar-height) + -8px);width:calc(var(--v-avatar-height) + -8px)}.v-avatar--variant-plain,.v-avatar--variant-outlined,.v-avatar--variant-text,.v-avatar--variant-tonal{background:transparent;color:inherit}.v-avatar--variant-plain{opacity:.62}.v-avatar--variant-plain:focus,.v-avatar--variant-plain:hover{opacity:1}.v-avatar--variant-plain .v-avatar__overlay{display:none}.v-avatar--variant-elevated,.v-avatar--variant-flat{background:var(--v-theme-surface);color:rgba(var(--v-theme-on-surface),var(--v-medium-emphasis-opacity))}.v-avatar--variant-elevated{box-shadow:0 2px 1px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 1px 1px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 3px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-avatar--variant-flat{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-avatar--variant-outlined{border:thin solid currentColor}.v-avatar--variant-text .v-avatar__overlay{background:currentColor}.v-avatar--variant-tonal .v-avatar__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.v-avatar--rounded{border-radius:4px}.v-avatar .v-img{height:100%;width:100%}.v-icon{--v-icon-size-multiplier: 1;align-items:center;display:inline-flex;font-feature-settings:"liga";height:1em;justify-content:center;letter-spacing:normal;line-height:1;position:relative;text-indent:0;text-align:center;-webkit-user-select:none;user-select:none;vertical-align:middle;width:1em;min-width:1em}.v-icon--clickable{cursor:pointer}.v-icon--size-x-small{font-size:calc(var(--v-icon-size-multiplier) * 1em)}.v-icon--size-small{font-size:calc(var(--v-icon-size-multiplier) * 1.25em)}.v-icon--size-default{font-size:calc(var(--v-icon-size-multiplier) * 1.5em)}.v-icon--size-large{font-size:calc(var(--v-icon-size-multiplier) * 1.75em)}.v-icon--size-x-large{font-size:calc(var(--v-icon-size-multiplier) * 2em)}.v-icon__svg{fill:currentColor;width:100%;height:100%}.v-icon--start{margin-inline-end:8px}.v-icon--end{margin-inline-start:8px}.v-img{--v-theme-overlay-multiplier: 3;z-index:0}.v-img--booting .v-responsive__sizer{transition:none}.v-img--rounded{border-radius:4px}.v-img__img,.v-img__picture,.v-img__gradient,.v-img__placeholder,.v-img__error{z-index:-1;position:absolute;top:0;left:0;width:100%;height:100%}.v-img__img--preload{filter:blur(4px)}.v-img__img--contain{object-fit:contain}.v-img__img--cover{object-fit:cover}.v-img__gradient{background-repeat:no-repeat}.v-responsive{display:flex;flex:1 0 auto;max-height:100%;max-width:100%;overflow:hidden;position:relative}.v-responsive--inline{display:inline-flex;flex:0 0 auto}.v-responsive__content{flex:1 0 0px;max-width:100%}.v-responsive__sizer~.v-responsive__content{margin-inline-start:-100%}.v-responsive__sizer{flex:1 0 0px;transition:padding-bottom .2s cubic-bezier(.4,0,.2,1);pointer-events:none}.v-btn{align-items:center;border-radius:4px;display:inline-grid;grid-template-areas:"prepend content append";grid-template-columns:max-content auto max-content;font-weight:500;justify-content:center;letter-spacing:.0892857143em;line-height:normal;max-width:100%;outline:none;position:relative;text-decoration:none;text-indent:.0892857143em;text-transform:uppercase;transition-property:box-shadow,transform,opacity,background;transition-duration:.28s;transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-user-select:none;user-select:none;vertical-align:middle;flex-shrink:0;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0}.v-btn--size-x-small{--v-btn-size: .625rem;--v-btn-height: 20px;font-size:var(--v-btn-size);min-width:36px;padding:0 8px}.v-btn--size-small{--v-btn-size: .75rem;--v-btn-height: 28px;font-size:var(--v-btn-size);min-width:50px;padding:0 12px}.v-btn--size-default{--v-btn-size: .875rem;--v-btn-height: 36px;font-size:var(--v-btn-size);min-width:64px;padding:0 16px}.v-btn--size-large{--v-btn-size: 1rem;--v-btn-height: 44px;font-size:var(--v-btn-size);min-width:78px;padding:0 20px}.v-btn--size-x-large{--v-btn-size: 1.125rem;--v-btn-height: 52px;font-size:var(--v-btn-size);min-width:92px;padding:0 24px}.v-btn.v-btn--density-default{height:calc(var(--v-btn-height) + 0px)}.v-btn.v-btn--density-comfortable{height:calc(var(--v-btn-height) + -8px)}.v-btn.v-btn--density-compact{height:calc(var(--v-btn-height) + -12px)}.v-btn--border{border-width:thin;box-shadow:none}.v-btn--absolute{position:absolute}.v-btn--fixed{position:fixed}.v-btn:hover>.v-btn__overlay{opacity:calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier))}.v-btn:focus-visible>.v-btn__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-btn:focus>.v-btn__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}}.v-btn--active>.v-btn__overlay,.v-btn[aria-haspopup=menu][aria-expanded=true]>.v-btn__overlay{opacity:calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier))}.v-btn--active:hover>.v-btn__overlay,.v-btn[aria-haspopup=menu][aria-expanded=true]:hover>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}.v-btn--active:focus-visible>.v-btn__overlay,.v-btn[aria-haspopup=menu][aria-expanded=true]:focus-visible>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-btn--active:focus>.v-btn__overlay,.v-btn[aria-haspopup=menu][aria-expanded=true]:focus>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}}.v-btn--variant-plain,.v-btn--variant-outlined,.v-btn--variant-text,.v-btn--variant-tonal{background:transparent;color:inherit}.v-btn--variant-plain{opacity:.62}.v-btn--variant-plain:focus,.v-btn--variant-plain:hover{opacity:1}.v-btn--variant-plain .v-btn__overlay{display:none}.v-btn--variant-elevated,.v-btn--variant-flat{background:rgb(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-btn--variant-elevated{box-shadow:0 3px 1px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 2px 2px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 5px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-btn--variant-flat{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-btn--variant-outlined{border:thin solid currentColor}.v-btn--variant-text .v-btn__overlay{background:currentColor}.v-btn--variant-tonal .v-btn__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}@supports selector(:focus-visible){.v-btn:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;border:2px solid currentColor;border-radius:inherit;opacity:0;transition:opacity .2s ease-in-out}.v-btn:focus-visible:after{opacity:calc(.25 * var(--v-theme-overlay-multiplier))}}.v-btn--icon{border-radius:50%;min-width:0;padding:0}.v-btn--icon.v-btn--size-default{--v-btn-size: 1rem}.v-btn--icon.v-btn--density-default{width:calc(var(--v-btn-height) + 12px);height:calc(var(--v-btn-height) + 12px)}.v-btn--icon.v-btn--density-comfortable{width:calc(var(--v-btn-height) + 0px);height:calc(var(--v-btn-height) + 0px)}.v-btn--icon.v-btn--density-compact{width:calc(var(--v-btn-height) + -8px);height:calc(var(--v-btn-height) + -8px)}.v-btn--elevated:hover,.v-btn--elevated:focus{box-shadow:0 2px 4px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 4px 5px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 10px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-btn--elevated:active{box-shadow:0 5px 5px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 8px 10px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 3px 14px 2px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-btn--flat{box-shadow:none}.v-btn--block{display:flex;flex:1 0 auto;min-width:100%}.v-btn--disabled{pointer-events:none;opacity:.26}.v-btn--disabled:hover{opacity:.26}.v-btn--disabled.v-btn--variant-elevated,.v-btn--disabled.v-btn--variant-flat{box-shadow:none;opacity:1;color:rgba(var(--v-theme-on-surface),.26);background:rgb(var(--v-theme-surface))}.v-btn--disabled.v-btn--variant-elevated .v-btn__overlay,.v-btn--disabled.v-btn--variant-flat .v-btn__overlay{opacity:.4615384615}.v-btn--loading{pointer-events:none}.v-btn--loading .v-btn__content,.v-btn--loading .v-btn__prepend,.v-btn--loading .v-btn__append{opacity:0}.v-btn--stacked{grid-template-areas:"prepend" "content" "append";grid-template-columns:auto;grid-template-rows:max-content max-content max-content;justify-items:center;align-content:center}.v-btn--stacked .v-btn__content{flex-direction:column;line-height:1.25}.v-btn--stacked .v-btn__prepend,.v-btn--stacked .v-btn__append,.v-btn--stacked .v-btn__content>.v-icon--start,.v-btn--stacked .v-btn__content>.v-icon--end{margin-inline:0}.v-btn--stacked .v-btn__prepend,.v-btn--stacked .v-btn__content>.v-icon--start{margin-bottom:4px}.v-btn--stacked .v-btn__append,.v-btn--stacked .v-btn__content>.v-icon--end{margin-top:4px}.v-btn--stacked.v-btn--size-x-small{--v-btn-size: .625rem;--v-btn-height: 56px;font-size:var(--v-btn-size);min-width:56px;padding:0 12px}.v-btn--stacked.v-btn--size-small{--v-btn-size: .75rem;--v-btn-height: 64px;font-size:var(--v-btn-size);min-width:64px;padding:0 14px}.v-btn--stacked.v-btn--size-default{--v-btn-size: .875rem;--v-btn-height: 72px;font-size:var(--v-btn-size);min-width:72px;padding:0 16px}.v-btn--stacked.v-btn--size-large{--v-btn-size: 1rem;--v-btn-height: 80px;font-size:var(--v-btn-size);min-width:80px;padding:0 18px}.v-btn--stacked.v-btn--size-x-large{--v-btn-size: 1.125rem;--v-btn-height: 88px;font-size:var(--v-btn-size);min-width:88px;padding:0 20px}.v-btn--stacked.v-btn--density-default{height:calc(var(--v-btn-height) + 0px)}.v-btn--stacked.v-btn--density-comfortable{height:calc(var(--v-btn-height) + -16px)}.v-btn--stacked.v-btn--density-compact{height:calc(var(--v-btn-height) + -24px)}.v-btn--slim{padding:0 8px}.v-btn--rounded{border-radius:24px}.v-btn--rounded.v-btn--icon{border-radius:4px}.v-btn .v-icon{--v-icon-size-multiplier: .8571428571}.v-btn--icon .v-icon{--v-icon-size-multiplier: 1}.v-btn--stacked .v-icon{--v-icon-size-multiplier: 1.1428571429}.v-btn__loader{align-items:center;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.v-btn__content,.v-btn__prepend,.v-btn__append{align-items:center;display:flex;transition:transform,opacity .2s cubic-bezier(.4,0,.2,1)}.v-btn__prepend{grid-area:prepend;margin-inline:calc(var(--v-btn-height) / -9) calc(var(--v-btn-height) / 4.5)}.v-btn__append{grid-area:append;margin-inline:calc(var(--v-btn-height) / 4.5) calc(var(--v-btn-height) / -9)}.v-btn__content{grid-area:content;justify-content:center;white-space:nowrap}.v-btn__content>.v-icon--start{margin-inline:calc(var(--v-btn-height) / -9) calc(var(--v-btn-height) / 4.5)}.v-btn__content>.v-icon--end{margin-inline:calc(var(--v-btn-height) / 4.5) calc(var(--v-btn-height) / -9)}.v-btn--stacked .v-btn__content{white-space:normal}.v-btn__overlay{background-color:currentColor;border-radius:inherit;opacity:0;transition:opacity .2s ease-in-out}.v-btn__overlay,.v-btn__underlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.v-card-actions .v-btn~.v-btn:not(.v-btn-toggle .v-btn){margin-inline-start:.5rem}.v-pagination .v-btn{border-radius:4px}.v-pagination .v-btn--rounded{border-radius:50%}.v-btn__overlay{transition:none}.v-pagination__item--is-active .v-btn__overlay{opacity:var(--v-border-opacity)}.v-btn-toggle>.v-btn.v-btn--active:not(.v-btn--disabled)>.v-btn__overlay{opacity:calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier))}.v-btn-toggle>.v-btn.v-btn--active:not(.v-btn--disabled):hover>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}.v-btn-toggle>.v-btn.v-btn--active:not(.v-btn--disabled):focus-visible>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-btn-toggle>.v-btn.v-btn--active:not(.v-btn--disabled):focus>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}}.v-btn-group{display:inline-flex;flex-wrap:nowrap;max-width:100%;min-width:0;overflow:hidden;vertical-align:middle;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12));border-radius:4px;background:transparent;color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-btn-group--border{border-width:thin;box-shadow:none}.v-btn-group--density-default.v-btn-group{height:48px}.v-btn-group--density-comfortable.v-btn-group{height:40px}.v-btn-group--density-compact.v-btn-group{height:36px}.v-btn-group .v-btn{border-radius:0;border-color:inherit}.v-btn-group .v-btn:not(:last-child){border-inline-end:none}.v-btn-group .v-btn:not(:first-child){border-inline-start:none}.v-btn-group .v-btn:first-child{border-start-start-radius:inherit;border-end-start-radius:inherit}.v-btn-group .v-btn:last-child{border-start-end-radius:inherit;border-end-end-radius:inherit}.v-btn-group--divided .v-btn:not(:last-child){border-inline-end-width:thin;border-inline-end-style:solid;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))}.v-btn-group--tile{border-radius:0}.v-progress-circular{align-items:center;display:inline-flex;justify-content:center;position:relative;vertical-align:middle}.v-progress-circular>svg{width:100%;height:100%;margin:auto;position:absolute;top:0;bottom:0;left:0;right:0;z-index:0}.v-progress-circular__content{align-items:center;display:flex;justify-content:center}.v-progress-circular__underlay{color:rgba(var(--v-border-color),var(--v-border-opacity));stroke:currentColor;z-index:1}.v-progress-circular__overlay{stroke:currentColor;transition:all .2s ease-in-out,stroke-width 0s;z-index:2}.v-progress-circular--size-x-small{height:16px;width:16px}.v-progress-circular--size-small{height:24px;width:24px}.v-progress-circular--size-default{height:32px;width:32px}.v-progress-circular--size-large{height:48px;width:48px}.v-progress-circular--size-x-large{height:64px;width:64px}.v-progress-circular--indeterminate>svg{animation:progress-circular-rotate 1.4s linear infinite;transform-origin:center center;transition:all .2s ease-in-out}.v-progress-circular--indeterminate .v-progress-circular__overlay{animation:progress-circular-dash 1.4s ease-in-out infinite,progress-circular-rotate 1.4s linear infinite;stroke-dasharray:25,200;stroke-dashoffset:0;stroke-linecap:round;transform-origin:center center;transform:rotate(-90deg)}.v-progress-circular--disable-shrink>svg{animation-duration:.7s}.v-progress-circular--disable-shrink .v-progress-circular__overlay{animation:none}.v-progress-circular--indeterminate:not(.v-progress-circular--visible)>svg,.v-progress-circular--indeterminate:not(.v-progress-circular--visible) .v-progress-circular__overlay{animation-play-state:paused!important}@keyframes progress-circular-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0px}50%{stroke-dasharray:100,200;stroke-dashoffset:-15px}to{stroke-dasharray:100,200;stroke-dashoffset:-124px}}@keyframes progress-circular-rotate{to{transform:rotate(270deg)}}.v-progress-linear{background:transparent;overflow:hidden;position:relative;transition:.2s cubic-bezier(.4,0,.2,1);width:100%}.v-progress-linear__background{background:currentColor;bottom:0;left:0;opacity:var(--v-border-opacity);position:absolute;top:0;transition-property:width,left,right;transition:inherit}.v-progress-linear__content{align-items:center;display:flex;height:100%;justify-content:center;left:0;pointer-events:none;position:absolute;top:0;width:100%}.v-progress-linear__determinate,.v-progress-linear__indeterminate{background:currentColor}.v-progress-linear__determinate{height:inherit;left:0;position:absolute;transition:inherit;transition-property:width,left,right}.v-progress-linear__indeterminate .long,.v-progress-linear__indeterminate .short{animation-play-state:paused;animation-duration:2.2s;animation-iteration-count:infinite;bottom:0;height:inherit;left:0;position:absolute;right:auto;top:0;width:auto;will-change:left,right}.v-progress-linear__indeterminate .long{animation-name:indeterminate-ltr}.v-progress-linear__indeterminate .short{animation-name:indeterminate-short-ltr}.v-progress-linear__stream{animation:stream .25s infinite linear;animation-play-state:paused;bottom:0;left:auto;opacity:.3;pointer-events:none;position:absolute;transition:inherit;transition-property:width,left,right}.v-progress-linear--reverse .v-progress-linear__background,.v-progress-linear--reverse .v-progress-linear__determinate,.v-progress-linear--reverse .v-progress-linear__content,.v-progress-linear--reverse .v-progress-linear__indeterminate .long,.v-progress-linear--reverse .v-progress-linear__indeterminate .short{left:auto;right:0}.v-progress-linear--reverse .v-progress-linear__indeterminate .long{animation-name:indeterminate-rtl}.v-progress-linear--reverse .v-progress-linear__indeterminate .short{animation-name:indeterminate-short-rtl}.v-progress-linear--reverse .v-progress-linear__stream{right:auto}.v-progress-linear--absolute,.v-progress-linear--fixed{left:0;z-index:1}.v-progress-linear--absolute{position:absolute}.v-progress-linear--fixed{position:fixed}.v-progress-linear--rounded{border-radius:9999px}.v-progress-linear--rounded.v-progress-linear--rounded-bar .v-progress-linear__determinate,.v-progress-linear--rounded.v-progress-linear--rounded-bar .v-progress-linear__indeterminate{border-radius:inherit}.v-progress-linear--striped .v-progress-linear__determinate{animation:progress-linear-stripes 1s infinite linear;background-image:linear-gradient(135deg,hsla(0,0%,100%,.25) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.25) 0,hsla(0,0%,100%,.25) 75%,transparent 0,transparent);background-repeat:repeat;background-size:var(--v-progress-linear-height)}.v-progress-linear--active .v-progress-linear__indeterminate .long,.v-progress-linear--active .v-progress-linear__indeterminate .short,.v-progress-linear--active .v-progress-linear__stream{animation-play-state:running}.v-progress-linear--rounded-bar .v-progress-linear__determinate,.v-progress-linear--rounded-bar .v-progress-linear__indeterminate,.v-progress-linear--rounded-bar .v-progress-linear__stream+.v-progress-linear__background{border-radius:9999px}.v-progress-linear--rounded-bar .v-progress-linear__determinate{border-start-start-radius:0;border-end-start-radius:0}@keyframes indeterminate-ltr{0%{left:-90%;right:100%}60%{left:-90%;right:100%}to{left:100%;right:-35%}}@keyframes indeterminate-rtl{0%{left:100%;right:-90%}60%{left:100%;right:-90%}to{left:-35%;right:100%}}@keyframes indeterminate-short-ltr{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}@keyframes indeterminate-short-rtl{0%{left:100%;right:-200%}60%{left:-8%;right:107%}to{left:-8%;right:107%}}@keyframes stream{to{transform:translate(var(--v-progress-linear-stream-to))}}@keyframes progress-linear-stripes{0%{background-position-x:var(--v-progress-linear-height)}}.v-ripple__container{color:inherit;border-radius:inherit;position:absolute;width:100%;height:100%;left:0;top:0;overflow:hidden;z-index:0;pointer-events:none;contain:strict}.v-ripple__animation{color:inherit;position:absolute;top:0;left:0;border-radius:50%;background:currentColor;opacity:0;pointer-events:none;overflow:hidden;will-change:transform,opacity}.v-ripple__animation--enter{transition:none;opacity:0}.v-ripple__animation--in{transition:transform .25s cubic-bezier(0,0,.2,1),opacity .1s cubic-bezier(0,0,.2,1);opacity:calc(.25 * var(--v-theme-overlay-multiplier))}.v-ripple__animation--out{transition:opacity .3s cubic-bezier(0,0,.2,1);opacity:0}.v-card{display:block;overflow:hidden;overflow-wrap:break-word;position:relative;padding:0;text-decoration:none;transition-duration:.28s;transition-property:box-shadow,opacity,background;transition-timing-function:cubic-bezier(.4,0,.2,1);z-index:0;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;border-radius:4px}.v-card--border{border-width:thin;box-shadow:none}.v-card--absolute{position:absolute}.v-card--fixed{position:fixed}.v-card:hover>.v-card__overlay{opacity:calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier))}.v-card:focus-visible>.v-card__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-card:focus>.v-card__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}}.v-card--active>.v-card__overlay,.v-card[aria-haspopup=menu][aria-expanded=true]>.v-card__overlay{opacity:calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier))}.v-card--active:hover>.v-card__overlay,.v-card[aria-haspopup=menu][aria-expanded=true]:hover>.v-card__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}.v-card--active:focus-visible>.v-card__overlay,.v-card[aria-haspopup=menu][aria-expanded=true]:focus-visible>.v-card__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-card--active:focus>.v-card__overlay,.v-card[aria-haspopup=menu][aria-expanded=true]:focus>.v-card__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}}.v-card--variant-plain,.v-card--variant-outlined,.v-card--variant-text,.v-card--variant-tonal{background:transparent;color:inherit}.v-card--variant-plain{opacity:.62}.v-card--variant-plain:focus,.v-card--variant-plain:hover{opacity:1}.v-card--variant-plain .v-card__overlay{display:none}.v-card--variant-elevated,.v-card--variant-flat{background:rgb(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-card--variant-elevated{box-shadow:0 2px 1px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 1px 1px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 3px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-card--variant-flat{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-card--variant-outlined{border:thin solid currentColor}.v-card--variant-text .v-card__overlay{background:currentColor}.v-card--variant-tonal .v-card__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.v-card--disabled{pointer-events:none;-webkit-user-select:none;user-select:none}.v-card--disabled>:not(.v-card__loader){opacity:.6}.v-card--flat{box-shadow:none}.v-card--hover{cursor:pointer}.v-card--hover:before,.v-card--hover:after{border-radius:inherit;bottom:0;content:"";display:block;left:0;pointer-events:none;position:absolute;right:0;top:0;transition:inherit}.v-card--hover:before{opacity:1;z-index:-1;box-shadow:0 2px 1px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 1px 1px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 3px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-card--hover:after{z-index:1;opacity:0;box-shadow:0 5px 5px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 8px 10px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 3px 14px 2px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-card--hover:hover:after{opacity:1}.v-card--hover:hover:before{opacity:0}.v-card--hover:hover{box-shadow:0 5px 5px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 8px 10px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 3px 14px 2px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-card--link{cursor:pointer}.v-card-actions{align-items:center;display:flex;flex:none;min-height:52px;padding:.5rem}.v-card-item{align-items:center;display:grid;flex:none;grid-template-areas:"prepend content append";grid-template-columns:max-content auto max-content;padding:.625rem 1rem}.v-card-item+.v-card-text{padding-top:0}.v-card-item__prepend,.v-card-item__append{align-items:center;display:flex}.v-card-item__prepend{grid-area:prepend;padding-inline-end:.5rem}.v-card-item__append{grid-area:append;padding-inline-start:.5rem}.v-card-item__content{align-self:center;grid-area:content;overflow:hidden}.v-card-title{display:block;flex:none;font-size:1.25rem;font-weight:500;-webkit-hyphens:auto;hyphens:auto;letter-spacing:.0125em;min-width:0;overflow-wrap:normal;overflow:hidden;padding:.5rem 1rem;text-overflow:ellipsis;text-transform:none;white-space:nowrap;word-break:normal;word-wrap:break-word}.v-card .v-card-title{line-height:2rem}.v-card--density-comfortable .v-card-title{line-height:1.75rem}.v-card--density-compact .v-card-title{line-height:1.55rem}.v-card-item .v-card-title{padding:0}.v-card-title+.v-card-text,.v-card-title+.v-card-actions{padding-top:0}.v-card-subtitle{display:block;flex:none;font-size:.875rem;font-weight:400;letter-spacing:.0178571429em;opacity:var(--v-medium-emphasis-opacity);overflow:hidden;padding:0 1rem;text-overflow:ellipsis;text-transform:none;white-space:nowrap}.v-card .v-card-subtitle{line-height:1.25rem}.v-card--density-comfortable .v-card-subtitle{line-height:1.125rem}.v-card--density-compact .v-card-subtitle{line-height:1rem}.v-card-item .v-card-subtitle{padding:0 0 .25rem}.v-card-text{flex:1 1 auto;font-size:.875rem;font-weight:400;letter-spacing:.0178571429em;padding:1rem;text-transform:none}.v-card .v-card-text{line-height:1.25rem}.v-card--density-comfortable .v-card-text{line-height:1.2rem}.v-card--density-compact .v-card-text{line-height:1.15rem}.v-card__image{display:flex;height:100%;flex:1 1 auto;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:-1}.v-card__content{border-radius:inherit;overflow:hidden;position:relative}.v-card__loader{bottom:auto;top:0;left:0;position:absolute;right:0;width:100%;z-index:1}.v-card__overlay{background-color:currentColor;border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.v-dialog{align-items:center;justify-content:center;margin:auto}.v-dialog>.v-overlay__content{max-height:calc(100% - 48px);width:calc(100% - 48px);max-width:calc(100% - 48px);margin:24px}.v-dialog>.v-overlay__content,.v-dialog>.v-overlay__content>form{display:flex;flex-direction:column;min-height:0}.v-dialog>.v-overlay__content>.v-card,.v-dialog>.v-overlay__content>.v-sheet,.v-dialog>.v-overlay__content>form>.v-card,.v-dialog>.v-overlay__content>form>.v-sheet{--v-scrollbar-offset: 0px;border-radius:4px;overflow-y:auto;box-shadow:0 11px 15px -7px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 24px 38px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 9px 46px 8px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-dialog>.v-overlay__content>.v-card,.v-dialog>.v-overlay__content>form>.v-card{display:flex;flex-direction:column}.v-dialog>.v-overlay__content>.v-card>.v-card-item,.v-dialog>.v-overlay__content>form>.v-card>.v-card-item{padding:14px 24px 0}.v-dialog>.v-overlay__content>.v-card>.v-card-item+.v-card-text,.v-dialog>.v-overlay__content>form>.v-card>.v-card-item+.v-card-text{padding-top:10px}.v-dialog>.v-overlay__content>.v-card>.v-card-text,.v-dialog>.v-overlay__content>form>.v-card>.v-card-text{font-size:inherit;letter-spacing:.03125em;line-height:inherit;padding:16px 24px 10px}.v-dialog--fullscreen{--v-scrollbar-offset: 0px}.v-dialog--fullscreen>.v-overlay__content{border-radius:0;margin:0;padding:0;width:100%;height:100%;max-width:100%;max-height:100%;overflow-y:auto;top:0;left:0}.v-dialog--fullscreen>.v-overlay__content>.v-card,.v-dialog--fullscreen>.v-overlay__content>.v-sheet,.v-dialog--fullscreen>.v-overlay__content>form>.v-card,.v-dialog--fullscreen>.v-overlay__content>form>.v-sheet{min-height:100%;min-width:100%;border-radius:0}.v-dialog--scrollable>.v-overlay__content,.v-dialog--scrollable>.v-overlay__content>form{display:flex}.v-dialog--scrollable>.v-overlay__content>.v-card,.v-dialog--scrollable>.v-overlay__content>form>.v-card{display:flex;flex:1 1 100%;flex-direction:column;max-height:100%;max-width:100%}.v-dialog--scrollable>.v-overlay__content>.v-card>.v-card-text,.v-dialog--scrollable>.v-overlay__content>form>.v-card>.v-card-text{backface-visibility:hidden;overflow-y:auto}.v-overlay-container{contain:layout;left:0;pointer-events:none;position:absolute;top:0;display:contents}.v-overlay-scroll-blocked{padding-inline-end:var(--v-scrollbar-offset)}.v-overlay-scroll-blocked:not(html){overflow-y:hidden!important}html.v-overlay-scroll-blocked{position:fixed;top:var(--v-body-scroll-y);left:var(--v-body-scroll-x);width:100%;height:100%}.v-overlay{border-radius:inherit;display:flex;left:0;pointer-events:none;position:fixed;top:0;bottom:0;right:0}.v-overlay__content{outline:none;position:absolute;pointer-events:auto;contain:layout}.v-overlay__scrim{pointer-events:auto;background:rgb(var(--v-theme-on-surface));border-radius:inherit;bottom:0;left:0;opacity:var(--v-overlay-opacity, .32);position:fixed;right:0;top:0}.v-overlay--absolute,.v-overlay--contained .v-overlay__scrim{position:absolute}.v-overlay--scroll-blocked{padding-inline-end:var(--v-scrollbar-offset)}.v-divider{display:block;flex:1 1 100%;height:0px;max-height:0px;opacity:var(--v-border-opacity);transition:inherit;border-style:solid;border-width:thin 0 0 0}.v-divider--vertical{align-self:stretch;border-width:0 thin 0 0;display:inline-flex;height:inherit;margin-left:-1px;max-height:100%;max-width:0px;vertical-align:text-bottom;width:0px}.v-divider--inset:not(.v-divider--vertical){max-width:calc(100% - 72px);margin-inline-start:72px}.v-divider--inset.v-divider--vertical{margin-bottom:8px;margin-top:8px;max-height:calc(100% - 16px)}.v-text-field input{color:inherit;opacity:0;flex:1;transition:.15s opacity cubic-bezier(.4,0,.2,1);min-width:0}.v-text-field input:focus,.v-text-field input:active{outline:none}.v-text-field input:invalid{box-shadow:none}.v-text-field .v-field{cursor:text}.v-text-field--prefixed.v-text-field .v-field__input{--v-field-padding-start: 6px}.v-text-field--suffixed.v-text-field .v-field__input{--v-field-padding-end: 0}.v-text-field .v-input__details{padding-inline:16px}.v-input--plain-underlined.v-text-field .v-input__details{padding-inline:0}.v-text-field .v-field--no-label input,.v-text-field .v-field--active input{opacity:1}.v-text-field .v-field--single-line input{transition:none}.v-text-field__prefix,.v-text-field__suffix{align-items:center;color:rgba(var(--v-theme-on-surface),var(--v-medium-emphasis-opacity));cursor:default;display:flex;opacity:0;transition:inherit;white-space:nowrap;min-height:max(var(--v-input-control-height, 56px),1.5rem + var(--v-field-input-padding-top) + var(--v-field-input-padding-bottom));padding-top:calc(var(--v-field-padding-top, 4px) + var(--v-input-padding-top, 0));padding-bottom:var(--v-field-padding-bottom, 6px)}.v-field--active .v-text-field__prefix,.v-field--active .v-text-field__suffix{opacity:1}.v-field--disabled .v-text-field__prefix,.v-field--disabled .v-text-field__suffix{color:rgba(var(--v-theme-on-surface),var(--v-disabled-opacity))}.v-text-field__prefix{padding-inline-start:var(--v-field-padding-start)}.v-text-field__suffix{padding-inline-end:var(--v-field-padding-end)}.v-counter{color:rgba(var(--v-theme-on-surface),var(--v-medium-emphasis-opacity));flex:0 1 auto;font-size:12px;transition-duration:.15s}.v-field{display:grid;grid-template-areas:"prepend-inner field clear append-inner";grid-template-columns:min-content minmax(0,1fr) min-content min-content;font-size:16px;letter-spacing:.009375em;max-width:100%;border-radius:4px;contain:layout;flex:1 0;grid-area:control;position:relative;--v-field-padding-start: 16px;--v-field-padding-end: 16px;--v-field-padding-top: 8px;--v-field-padding-bottom: 4px;--v-field-input-padding-top: calc(var(--v-field-padding-top, 8px) + var(--v-input-padding-top, 0));--v-field-input-padding-bottom: var(--v-field-padding-bottom, 4px)}.v-field--disabled{opacity:var(--v-disabled-opacity);pointer-events:none}.v-field .v-chip{--v-chip-height: 24px}.v-field--prepended{padding-inline-start:12px}.v-field--appended{padding-inline-end:12px}.v-field--variant-solo,.v-field--variant-solo-filled,.v-field--variant-solo-inverted{background:rgb(var(--v-theme-surface));border-color:transparent;color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity));box-shadow:0 3px 1px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 2px 2px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 5px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-field--variant-solo-inverted.v-field--focused{color:rgb(var(--v-theme-on-surface-variant))}.v-field--variant-filled{border-bottom-left-radius:0;border-bottom-right-radius:0}.v-input--density-default .v-field--variant-solo,.v-input--density-default .v-field--variant-solo-inverted,.v-input--density-default .v-field--variant-solo-filled,.v-input--density-default .v-field--variant-filled{--v-input-control-height: 56px;--v-field-padding-bottom: 4px}.v-input--density-comfortable .v-field--variant-solo,.v-input--density-comfortable .v-field--variant-solo-inverted,.v-input--density-comfortable .v-field--variant-solo-filled,.v-input--density-comfortable .v-field--variant-filled{--v-input-control-height: 48px;--v-field-padding-bottom: 0px}.v-input--density-compact .v-field--variant-solo,.v-input--density-compact .v-field--variant-solo-inverted,.v-input--density-compact .v-field--variant-solo-filled,.v-input--density-compact .v-field--variant-filled{--v-input-control-height: 40px;--v-field-padding-bottom: 0px}.v-field--variant-outlined,.v-field--single-line,.v-field--no-label{--v-field-padding-top: 0px}.v-input--density-default .v-field--variant-outlined,.v-input--density-default .v-field--single-line,.v-input--density-default .v-field--no-label{--v-field-padding-bottom: 16px}.v-input--density-comfortable .v-field--variant-outlined,.v-input--density-comfortable .v-field--single-line,.v-input--density-comfortable .v-field--no-label{--v-field-padding-bottom: 12px}.v-input--density-compact .v-field--variant-outlined,.v-input--density-compact .v-field--single-line,.v-input--density-compact .v-field--no-label{--v-field-padding-bottom: 8px}.v-field--variant-plain,.v-field--variant-underlined{border-radius:0;padding:0}.v-field--variant-plain.v-field,.v-field--variant-underlined.v-field{--v-field-padding-start: 0px;--v-field-padding-end: 0px}.v-input--density-default .v-field--variant-plain,.v-input--density-default .v-field--variant-underlined{--v-input-control-height: 48px;--v-field-padding-top: 4px;--v-field-padding-bottom: 4px}.v-input--density-comfortable .v-field--variant-plain,.v-input--density-comfortable .v-field--variant-underlined{--v-input-control-height: 40px;--v-field-padding-top: 2px;--v-field-padding-bottom: 0px}.v-input--density-compact .v-field--variant-plain,.v-input--density-compact .v-field--variant-underlined{--v-input-control-height: 32px;--v-field-padding-top: 0px;--v-field-padding-bottom: 0px}.v-field--flat{box-shadow:none}.v-field--rounded{border-radius:9999px}.v-field.v-field--prepended{--v-field-padding-start: 6px}.v-field.v-field--appended{--v-field-padding-end: 6px}.v-field__input{align-items:center;color:inherit;column-gap:2px;display:flex;flex-wrap:wrap;letter-spacing:.009375em;opacity:var(--v-high-emphasis-opacity);min-height:max(var(--v-input-control-height, 56px),1.5rem + var(--v-field-input-padding-top) + var(--v-field-input-padding-bottom));min-width:0;padding-inline:var(--v-field-padding-start) var(--v-field-padding-end);padding-top:var(--v-field-input-padding-top);padding-bottom:var(--v-field-input-padding-bottom);position:relative;width:100%}.v-input--density-default .v-field__input{row-gap:8px}.v-input--density-comfortable .v-field__input{row-gap:6px}.v-input--density-compact .v-field__input{row-gap:4px}.v-field__input input{letter-spacing:inherit}.v-field__input input::placeholder,input.v-field__input::placeholder,textarea.v-field__input::placeholder{color:currentColor;opacity:var(--v-disabled-opacity)}.v-field__input:focus,.v-field__input:active{outline:none}.v-field__input:invalid{box-shadow:none}.v-field__field{flex:1 0;grid-area:field;position:relative;align-items:flex-start;display:flex}.v-field__prepend-inner{grid-area:prepend-inner;padding-inline-end:var(--v-field-padding-after)}.v-field__clearable{grid-area:clear}.v-field__append-inner{grid-area:append-inner;padding-inline-start:var(--v-field-padding-after)}.v-field__append-inner,.v-field__clearable,.v-field__prepend-inner{display:flex;align-items:flex-start;padding-top:var(--v-input-padding-top, 8px)}.v-field--center-affix .v-field__append-inner,.v-field--center-affix .v-field__clearable,.v-field--center-affix .v-field__prepend-inner{align-items:center;padding-top:0}.v-field.v-field--variant-underlined .v-field__append-inner,.v-field.v-field--variant-underlined .v-field__clearable,.v-field.v-field--variant-underlined .v-field__prepend-inner,.v-field.v-field--variant-plain .v-field__append-inner,.v-field.v-field--variant-plain .v-field__clearable,.v-field.v-field--variant-plain .v-field__prepend-inner{align-items:flex-start;padding-top:calc(var(--v-field-padding-top, 8px) + var(--v-input-padding-top, 0));padding-bottom:var(--v-field-padding-bottom, 4px)}.v-field--focused .v-field__prepend-inner,.v-field--focused .v-field__append-inner{opacity:1}.v-field__prepend-inner>.v-icon,.v-field__append-inner>.v-icon,.v-field__clearable>.v-icon{opacity:var(--v-medium-emphasis-opacity)}.v-field--disabled .v-field__prepend-inner>.v-icon,.v-field--error .v-field__prepend-inner>.v-icon,.v-field--disabled .v-field__append-inner>.v-icon,.v-field--error .v-field__append-inner>.v-icon,.v-field--disabled .v-field__clearable>.v-icon,.v-field--error .v-field__clearable>.v-icon{opacity:1}.v-field--error:not(.v-field--disabled) .v-field__prepend-inner>.v-icon,.v-field--error:not(.v-field--disabled) .v-field__append-inner>.v-icon,.v-field--error:not(.v-field--disabled) .v-field__clearable>.v-icon{color:rgb(var(--v-theme-error))}.v-field__clearable{cursor:pointer;opacity:0;overflow:hidden;margin-inline:4px;transition:.15s cubic-bezier(.4,0,.2,1);transition-property:opacity,transform,width}.v-field--focused .v-field__clearable,.v-field--persistent-clear .v-field__clearable{opacity:1}@media (hover: hover){.v-field:hover .v-field__clearable{opacity:1}}@media (hover: none){.v-field__clearable{opacity:1}}.v-label.v-field-label{contain:layout paint;display:block;margin-inline-start:var(--v-field-padding-start);margin-inline-end:var(--v-field-padding-end);max-width:calc(100% - var(--v-field-padding-start) - var(--v-field-padding-end));pointer-events:none;position:absolute;top:var(--v-input-padding-top);transform-origin:left center;transition:.15s cubic-bezier(.4,0,.2,1);transition-property:opacity,transform;z-index:1}.v-field--variant-underlined .v-label.v-field-label,.v-field--variant-plain .v-label.v-field-label{top:calc(var(--v-input-padding-top) + var(--v-field-padding-top))}.v-field--center-affix .v-label.v-field-label{top:50%;transform:translateY(-50%)}.v-field--active .v-label.v-field-label{visibility:hidden}.v-field--focused .v-label.v-field-label,.v-field--error .v-label.v-field-label{opacity:1}.v-field--error:not(.v-field--disabled) .v-label.v-field-label{color:rgb(var(--v-theme-error))}.v-label.v-field-label--floating{--v-field-label-scale: .75em;font-size:var(--v-field-label-scale);visibility:hidden;max-width:100%}.v-field--center-affix .v-label.v-field-label--floating{transform:none}.v-field.v-field--active .v-label.v-field-label--floating{visibility:unset}.v-input--density-default .v-field--variant-solo .v-label.v-field-label--floating,.v-input--density-default .v-field--variant-solo-inverted .v-label.v-field-label--floating,.v-input--density-default .v-field--variant-filled .v-label.v-field-label--floating,.v-input--density-default .v-field--variant-solo-filled .v-label.v-field-label--floating{top:7px}.v-input--density-comfortable .v-field--variant-solo .v-label.v-field-label--floating,.v-input--density-comfortable .v-field--variant-solo-inverted .v-label.v-field-label--floating,.v-input--density-comfortable .v-field--variant-filled .v-label.v-field-label--floating,.v-input--density-comfortable .v-field--variant-solo-filled .v-label.v-field-label--floating{top:5px}.v-input--density-compact .v-field--variant-solo .v-label.v-field-label--floating,.v-input--density-compact .v-field--variant-solo-inverted .v-label.v-field-label--floating,.v-input--density-compact .v-field--variant-filled .v-label.v-field-label--floating,.v-input--density-compact .v-field--variant-solo-filled .v-label.v-field-label--floating{top:3px}.v-field--variant-plain .v-label.v-field-label--floating,.v-field--variant-underlined .v-label.v-field-label--floating{transform:translateY(-16px);margin:0;top:var(--v-input-padding-top)}.v-field--variant-outlined .v-label.v-field-label--floating{transform:translateY(-50%);transform-origin:center;position:static;margin:0 4px}.v-field__outline{--v-field-border-width: 1px;--v-field-border-opacity: .38;align-items:stretch;contain:layout;display:flex;height:100%;left:0;pointer-events:none;position:absolute;right:0;width:100%}@media (hover: hover){.v-field:hover .v-field__outline{--v-field-border-opacity: var(--v-high-emphasis-opacity)}}.v-field--error:not(.v-field--disabled) .v-field__outline{color:rgb(var(--v-theme-error))}.v-field.v-field--focused .v-field__outline,.v-input.v-input--error .v-field__outline{--v-field-border-opacity: 1}.v-field--variant-outlined.v-field--focused .v-field__outline{--v-field-border-width: 2px}.v-field--variant-filled .v-field__outline:before,.v-field--variant-underlined .v-field__outline:before{border-color:currentColor;border-style:solid;border-width:0 0 var(--v-field-border-width);opacity:var(--v-field-border-opacity);transition:opacity .25s cubic-bezier(.4,0,.2,1);content:"";position:absolute;top:0;left:0;width:100%;height:100%}.v-field--variant-filled .v-field__outline:after,.v-field--variant-underlined .v-field__outline:after{border-color:currentColor;border-style:solid;border-width:0 0 2px;transform:scaleX(0);transition:transform .15s cubic-bezier(.4,0,.2,1);content:"";position:absolute;top:0;left:0;width:100%;height:100%}.v-field--focused.v-field--variant-filled .v-field__outline:after,.v-field--focused.v-field--variant-underlined .v-field__outline:after{transform:scaleX(1)}.v-field--variant-outlined .v-field__outline{border-radius:inherit}.v-field--variant-outlined .v-field__outline__start,.v-field--variant-outlined .v-field__outline__notch:before,.v-field--variant-outlined .v-field__outline__notch:after,.v-field--variant-outlined .v-field__outline__end{border:0 solid currentColor;opacity:var(--v-field-border-opacity);transition:opacity .25s cubic-bezier(.4,0,.2,1)}.v-field--variant-outlined .v-field__outline__start{flex:0 0 12px;border-top-width:var(--v-field-border-width);border-bottom-width:var(--v-field-border-width);border-inline-start-width:var(--v-field-border-width);border-start-start-radius:inherit;border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:inherit}.v-field--rounded.v-field--variant-outlined .v-field__outline__start,[class^=rounded-].v-field--variant-outlined .v-field__outline__start,[class*=" rounded-"].v-field--variant-outlined .v-field__outline__start{flex-basis:calc(var(--v-input-control-height) / 2 + 2px)}.v-field--variant-outlined .v-field__outline__notch{flex:none;position:relative;max-width:calc(100% - 12px)}.v-field--variant-outlined .v-field__outline__notch:before,.v-field--variant-outlined .v-field__outline__notch:after{opacity:var(--v-field-border-opacity);transition:opacity .25s cubic-bezier(.4,0,.2,1);content:"";position:absolute;top:0;left:0;width:100%;height:100%}.v-field--variant-outlined .v-field__outline__notch:before{border-width:var(--v-field-border-width) 0 0}.v-field--variant-outlined .v-field__outline__notch:after{bottom:0;border-width:0 0 var(--v-field-border-width)}.v-field--active.v-field--variant-outlined .v-field__outline__notch:before{opacity:0}.v-field--variant-outlined .v-field__outline__end{flex:1;border-top-width:var(--v-field-border-width);border-bottom-width:var(--v-field-border-width);border-inline-end-width:var(--v-field-border-width);border-start-start-radius:0;border-start-end-radius:inherit;border-end-end-radius:inherit;border-end-start-radius:0}.v-field__loader{top:calc(100% - 2px);left:0;position:absolute;right:0;width:100%;border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;overflow:hidden}.v-field--variant-outlined .v-field__loader{top:calc(100% - 3px)}.v-field__overlay{border-radius:inherit;pointer-events:none;position:absolute;top:0;left:0;width:100%;height:100%}.v-field--variant-filled .v-field__overlay{background-color:currentColor;opacity:.04;transition:opacity .25s cubic-bezier(.4,0,.2,1)}.v-field--variant-filled.v-field--has-background .v-field__overlay{opacity:0}@media (hover: hover){.v-field--variant-filled:hover .v-field__overlay{opacity:calc((.04 + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}}.v-field--variant-filled.v-field--focused .v-field__overlay{opacity:calc((.04 + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}.v-field--variant-solo-filled .v-field__overlay{background-color:currentColor;opacity:.04;transition:opacity .25s cubic-bezier(.4,0,.2,1)}@media (hover: hover){.v-field--variant-solo-filled:hover .v-field__overlay{opacity:calc((.04 + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}}.v-field--variant-solo-filled.v-field--focused .v-field__overlay{opacity:calc((.04 + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}.v-field--variant-solo-inverted .v-field__overlay{transition:opacity .25s cubic-bezier(.4,0,.2,1)}.v-field--variant-solo-inverted.v-field--has-background .v-field__overlay{opacity:0}@media (hover: hover){.v-field--variant-solo-inverted:hover .v-field__overlay{opacity:calc((.04 + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}}.v-field--variant-solo-inverted.v-field--focused .v-field__overlay{background-color:rgb(var(--v-theme-surface-variant));opacity:1}.v-field--reverse .v-field__field,.v-field--reverse .v-field__input{flex-direction:row-reverse}.v-field--reverse .v-field__input,.v-field--reverse input{text-align:end}.v-input--disabled .v-field--variant-filled .v-field__outline:before,.v-input--disabled .v-field--variant-underlined .v-field__outline:before{border-image:repeating-linear-gradient(to right,rgba(var(--v-theme-on-surface),var(--v-disabled-opacity)) 0px,rgba(var(--v-theme-on-surface),var(--v-disabled-opacity)) 2px,transparent 2px,transparent 4px) 1 repeat}.v-field--loading .v-field__outline:after,.v-field--loading .v-field__outline:before{opacity:0}.v-label{align-items:center;color:inherit;display:inline-flex;font-size:1rem;letter-spacing:.009375em;min-width:0;opacity:var(--v-medium-emphasis-opacity);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v-label--clickable{cursor:pointer}.v-input{display:grid;flex:1 1 auto;font-size:1rem;font-weight:400;line-height:1.5}.v-input--disabled{pointer-events:none}.v-input--density-default{--v-input-control-height: 56px;--v-input-padding-top: 16px}.v-input--density-comfortable{--v-input-control-height: 48px;--v-input-padding-top: 12px}.v-input--density-compact{--v-input-control-height: 40px;--v-input-padding-top: 8px}.v-input--vertical{grid-template-areas:"append" "control" "prepend";grid-template-rows:max-content auto max-content;grid-template-columns:min-content}.v-input--vertical .v-input__prepend{margin-block-start:16px}.v-input--vertical .v-input__append{margin-block-end:16px}.v-input--horizontal{grid-template-areas:"prepend control append" "a messages b";grid-template-columns:max-content minmax(0,1fr) max-content;grid-template-rows:auto auto}.v-input--horizontal .v-input__prepend{margin-inline-end:16px}.v-input--horizontal .v-input__append{margin-inline-start:16px}.v-input__details{align-items:flex-end;display:flex;font-size:.75rem;font-weight:400;grid-area:messages;letter-spacing:.0333333333em;line-height:normal;min-height:22px;padding-top:6px;overflow:hidden;justify-content:space-between}.v-input__details>.v-icon,.v-input__prepend>.v-icon,.v-input__append>.v-icon{opacity:var(--v-medium-emphasis-opacity)}.v-input--disabled .v-input__details>.v-icon,.v-input--disabled .v-input__details .v-messages,.v-input--error .v-input__details>.v-icon,.v-input--error .v-input__details .v-messages,.v-input--disabled .v-input__prepend>.v-icon,.v-input--disabled .v-input__prepend .v-messages,.v-input--error .v-input__prepend>.v-icon,.v-input--error .v-input__prepend .v-messages,.v-input--disabled .v-input__append>.v-icon,.v-input--disabled .v-input__append .v-messages,.v-input--error .v-input__append>.v-icon,.v-input--error .v-input__append .v-messages{opacity:1}.v-input--disabled .v-input__details,.v-input--disabled .v-input__prepend,.v-input--disabled .v-input__append{opacity:var(--v-disabled-opacity)}.v-input--error:not(.v-input--disabled) .v-input__details>.v-icon,.v-input--error:not(.v-input--disabled) .v-input__details .v-messages,.v-input--error:not(.v-input--disabled) .v-input__prepend>.v-icon,.v-input--error:not(.v-input--disabled) .v-input__prepend .v-messages,.v-input--error:not(.v-input--disabled) .v-input__append>.v-icon,.v-input--error:not(.v-input--disabled) .v-input__append .v-messages{color:rgb(var(--v-theme-error))}.v-input__prepend,.v-input__append{display:flex;align-items:flex-start;padding-top:var(--v-input-padding-top)}.v-input--center-affix .v-input__prepend,.v-input--center-affix .v-input__append{align-items:center;padding-top:0}.v-input__prepend{grid-area:prepend}.v-input__append{grid-area:append}.v-input__control{display:flex;grid-area:control}.v-input--hide-spin-buttons input::-webkit-outer-spin-button,.v-input--hide-spin-buttons input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.v-input--hide-spin-buttons input[type=number]{-moz-appearance:textfield}.v-input--plain-underlined .v-input__prepend,.v-input--plain-underlined .v-input__append{align-items:flex-start}.v-input--density-default.v-input--plain-underlined .v-input__prepend,.v-input--density-default.v-input--plain-underlined .v-input__append{padding-top:calc(var(--v-input-padding-top) + 4px)}.v-input--density-comfortable.v-input--plain-underlined .v-input__prepend,.v-input--density-comfortable.v-input--plain-underlined .v-input__append{padding-top:calc(var(--v-input-padding-top) + 2px)}.v-input--density-compact.v-input--plain-underlined .v-input__prepend,.v-input--density-compact.v-input--plain-underlined .v-input__append{padding-top:calc(var(--v-input-padding-top) + 0px)}.v-messages{flex:1 1 auto;font-size:12px;min-height:14px;min-width:1px;opacity:var(--v-medium-emphasis-opacity);position:relative}.v-messages__message{line-height:12px;word-break:break-word;overflow-wrap:break-word;word-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;transition-duration:.15s}.v-application{display:flex;background:rgb(var(--v-theme-background));color:rgba(var(--v-theme-on-background),var(--v-high-emphasis-opacity))}.v-application__wrap{backface-visibility:hidden;display:flex;flex-direction:column;flex:1 1 auto;max-width:100%;min-height:100vh;min-height:100dvh;position:relative}.v-app-bar{display:flex}.v-app-bar.v-toolbar{background:rgb(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-app-bar.v-toolbar:not(.v-toolbar--flat){box-shadow:0 2px 4px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 4px 5px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 10px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-app-bar:not(.v-toolbar--absolute){padding-inline-end:var(--v-scrollbar-offset)}.v-toolbar{align-items:flex-start;display:flex;flex:none;flex-direction:column;justify-content:space-between;max-width:100%;overflow:hidden;position:relative;transition:.2s cubic-bezier(.4,0,.2,1);transition-property:height,width,transform,max-width,left,right,top,bottom,box-shadow;width:100%;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12));border-radius:0;background:rgb(var(--v-theme-surface-light));color:rgba(var(--v-theme-on-surface-light),var(--v-high-emphasis-opacity))}.v-toolbar--border{border-width:thin;box-shadow:none}.v-toolbar--absolute{position:absolute}.v-toolbar--collapse{max-width:112px;overflow:hidden;border-end-end-radius:24px}.v-toolbar--collapse .v-toolbar-title{display:none}.v-toolbar--flat{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-toolbar--floating{display:inline-flex}.v-toolbar--rounded{border-radius:4px}.v-toolbar__content,.v-toolbar__extension{align-items:center;display:flex;flex:0 0 auto;position:relative;transition:inherit;width:100%}.v-toolbar__content>.v-btn:first-child{margin-inline-start:10px}.v-toolbar__content>.v-btn:last-child{margin-inline-end:10px}.v-toolbar__content>.v-toolbar-title{margin-inline-start:16px}.v-toolbar--density-prominent .v-toolbar__content{align-items:flex-start}.v-toolbar__image{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;opacity:var(--v-toolbar-image-opacity, 1);transition-property:opacity}.v-toolbar__prepend,.v-toolbar__append{align-items:center;align-self:stretch;display:flex}.v-toolbar__prepend{margin-inline:10px auto}.v-toolbar__append{margin-inline:auto 10px}.v-toolbar-title{flex:1 1;min-width:0;font-size:1.25rem;font-weight:400;letter-spacing:0;line-height:1.75rem;text-transform:none}.v-toolbar--density-prominent .v-toolbar-title{align-self:flex-end;padding-bottom:6px;font-size:1.5rem;font-weight:400;letter-spacing:0;line-height:2.25rem;text-transform:none}.v-toolbar-title__placeholder{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v-toolbar-items{display:flex;height:inherit;align-self:stretch}.v-toolbar-items>.v-btn{border-radius:0}.v-bottom-navigation{display:flex;max-width:100%;overflow:hidden;position:absolute;transition:transform,color .2s,.2s cubic-bezier(.4,0,.2,1);border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;border-radius:0;background:rgb(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-bottom-navigation--border{border-width:thin;box-shadow:none}.v-bottom-navigation--active{box-shadow:0 2px 4px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 4px 5px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 10px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-bottom-navigation__content{display:flex;flex:none;font-size:.75rem;justify-content:center;transition:inherit;width:100%}.v-bottom-navigation .v-bottom-navigation__content>.v-btn{font-size:inherit;height:100%;max-width:168px;min-width:80px;text-transform:none;transition:inherit;width:auto;border-radius:0}.v-bottom-navigation .v-bottom-navigation__content>.v-btn .v-btn__content,.v-bottom-navigation .v-bottom-navigation__content>.v-btn .v-btn__icon{transition:inherit}.v-bottom-navigation .v-bottom-navigation__content>.v-btn .v-btn__icon{font-size:1.5rem}.v-bottom-navigation--grow .v-bottom-navigation__content>.v-btn{flex-grow:1}.v-bottom-navigation--shift .v-bottom-navigation__content .v-btn:not(.v-btn--selected) .v-btn__content>span{transition:inherit;opacity:0}.v-bottom-navigation--shift .v-bottom-navigation__content .v-btn:not(.v-btn--selected) .v-btn__content{transform:translateY(.5rem)}.v-container{width:100%;padding:16px;margin-right:auto;margin-left:auto}@media (min-width: 960px){.v-container{max-width:900px}}@media (min-width: 1280px){.v-container{max-width:1200px}}@media (min-width: 1920px){.v-container{max-width:1800px}}@media (min-width: 2560px){.v-container{max-width:2400px}}.v-container--fluid{max-width:100%}.v-container.fill-height{align-items:center;display:flex;flex-wrap:wrap}.v-row{display:flex;flex-wrap:wrap;flex:1 1 auto;margin:-12px}.v-row+.v-row{margin-top:12px}.v-row+.v-row--dense{margin-top:4px}.v-row--dense{margin:-4px}.v-row--dense>.v-col,.v-row--dense>[class*=v-col-]{padding:4px}.v-row.v-row--no-gutters{margin:0}.v-row.v-row--no-gutters>.v-col,.v-row.v-row--no-gutters>[class*=v-col-]{padding:0}.v-spacer{flex-grow:1}.v-col-xxl,.v-col-xxl-auto,.v-col-xxl-12,.v-col-xxl-11,.v-col-xxl-10,.v-col-xxl-9,.v-col-xxl-8,.v-col-xxl-7,.v-col-xxl-6,.v-col-xxl-5,.v-col-xxl-4,.v-col-xxl-3,.v-col-xxl-2,.v-col-xxl-1,.v-col-xl,.v-col-xl-auto,.v-col-xl-12,.v-col-xl-11,.v-col-xl-10,.v-col-xl-9,.v-col-xl-8,.v-col-xl-7,.v-col-xl-6,.v-col-xl-5,.v-col-xl-4,.v-col-xl-3,.v-col-xl-2,.v-col-xl-1,.v-col-lg,.v-col-lg-auto,.v-col-lg-12,.v-col-lg-11,.v-col-lg-10,.v-col-lg-9,.v-col-lg-8,.v-col-lg-7,.v-col-lg-6,.v-col-lg-5,.v-col-lg-4,.v-col-lg-3,.v-col-lg-2,.v-col-lg-1,.v-col-md,.v-col-md-auto,.v-col-md-12,.v-col-md-11,.v-col-md-10,.v-col-md-9,.v-col-md-8,.v-col-md-7,.v-col-md-6,.v-col-md-5,.v-col-md-4,.v-col-md-3,.v-col-md-2,.v-col-md-1,.v-col-sm,.v-col-sm-auto,.v-col-sm-12,.v-col-sm-11,.v-col-sm-10,.v-col-sm-9,.v-col-sm-8,.v-col-sm-7,.v-col-sm-6,.v-col-sm-5,.v-col-sm-4,.v-col-sm-3,.v-col-sm-2,.v-col-sm-1,.v-col,.v-col-auto,.v-col-12,.v-col-11,.v-col-10,.v-col-9,.v-col-8,.v-col-7,.v-col-6,.v-col-5,.v-col-4,.v-col-3,.v-col-2,.v-col-1{width:100%;padding:12px}.v-col{flex-basis:0;flex-grow:1;max-width:100%}.v-col-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-3{flex:0 0 25%;max-width:25%}.v-col-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-6{flex:0 0 50%;max-width:50%}.v-col-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-9{flex:0 0 75%;max-width:75%}.v-col-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-12{flex:0 0 100%;max-width:100%}.offset-1{margin-inline-start:8.3333333333%}.offset-2{margin-inline-start:16.6666666667%}.offset-3{margin-inline-start:25%}.offset-4{margin-inline-start:33.3333333333%}.offset-5{margin-inline-start:41.6666666667%}.offset-6{margin-inline-start:50%}.offset-7{margin-inline-start:58.3333333333%}.offset-8{margin-inline-start:66.6666666667%}.offset-9{margin-inline-start:75%}.offset-10{margin-inline-start:83.3333333333%}.offset-11{margin-inline-start:91.6666666667%}@media (min-width: 600px){.v-col-sm{flex-basis:0;flex-grow:1;max-width:100%}.v-col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-sm-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-sm-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-sm-3{flex:0 0 25%;max-width:25%}.v-col-sm-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-sm-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-sm-6{flex:0 0 50%;max-width:50%}.v-col-sm-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-sm-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-sm-9{flex:0 0 75%;max-width:75%}.v-col-sm-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-sm-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-sm-12{flex:0 0 100%;max-width:100%}.offset-sm-0{margin-inline-start:0}.offset-sm-1{margin-inline-start:8.3333333333%}.offset-sm-2{margin-inline-start:16.6666666667%}.offset-sm-3{margin-inline-start:25%}.offset-sm-4{margin-inline-start:33.3333333333%}.offset-sm-5{margin-inline-start:41.6666666667%}.offset-sm-6{margin-inline-start:50%}.offset-sm-7{margin-inline-start:58.3333333333%}.offset-sm-8{margin-inline-start:66.6666666667%}.offset-sm-9{margin-inline-start:75%}.offset-sm-10{margin-inline-start:83.3333333333%}.offset-sm-11{margin-inline-start:91.6666666667%}}@media (min-width: 960px){.v-col-md{flex-basis:0;flex-grow:1;max-width:100%}.v-col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-md-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-md-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-md-3{flex:0 0 25%;max-width:25%}.v-col-md-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-md-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-md-6{flex:0 0 50%;max-width:50%}.v-col-md-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-md-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-md-9{flex:0 0 75%;max-width:75%}.v-col-md-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-md-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-md-12{flex:0 0 100%;max-width:100%}.offset-md-0{margin-inline-start:0}.offset-md-1{margin-inline-start:8.3333333333%}.offset-md-2{margin-inline-start:16.6666666667%}.offset-md-3{margin-inline-start:25%}.offset-md-4{margin-inline-start:33.3333333333%}.offset-md-5{margin-inline-start:41.6666666667%}.offset-md-6{margin-inline-start:50%}.offset-md-7{margin-inline-start:58.3333333333%}.offset-md-8{margin-inline-start:66.6666666667%}.offset-md-9{margin-inline-start:75%}.offset-md-10{margin-inline-start:83.3333333333%}.offset-md-11{margin-inline-start:91.6666666667%}}@media (min-width: 1280px){.v-col-lg{flex-basis:0;flex-grow:1;max-width:100%}.v-col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-lg-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-lg-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-lg-3{flex:0 0 25%;max-width:25%}.v-col-lg-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-lg-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-lg-6{flex:0 0 50%;max-width:50%}.v-col-lg-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-lg-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-lg-9{flex:0 0 75%;max-width:75%}.v-col-lg-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-lg-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-lg-12{flex:0 0 100%;max-width:100%}.offset-lg-0{margin-inline-start:0}.offset-lg-1{margin-inline-start:8.3333333333%}.offset-lg-2{margin-inline-start:16.6666666667%}.offset-lg-3{margin-inline-start:25%}.offset-lg-4{margin-inline-start:33.3333333333%}.offset-lg-5{margin-inline-start:41.6666666667%}.offset-lg-6{margin-inline-start:50%}.offset-lg-7{margin-inline-start:58.3333333333%}.offset-lg-8{margin-inline-start:66.6666666667%}.offset-lg-9{margin-inline-start:75%}.offset-lg-10{margin-inline-start:83.3333333333%}.offset-lg-11{margin-inline-start:91.6666666667%}}@media (min-width: 1920px){.v-col-xl{flex-basis:0;flex-grow:1;max-width:100%}.v-col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-xl-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-xl-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-xl-3{flex:0 0 25%;max-width:25%}.v-col-xl-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-xl-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-xl-6{flex:0 0 50%;max-width:50%}.v-col-xl-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-xl-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-xl-9{flex:0 0 75%;max-width:75%}.v-col-xl-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-xl-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-xl-12{flex:0 0 100%;max-width:100%}.offset-xl-0{margin-inline-start:0}.offset-xl-1{margin-inline-start:8.3333333333%}.offset-xl-2{margin-inline-start:16.6666666667%}.offset-xl-3{margin-inline-start:25%}.offset-xl-4{margin-inline-start:33.3333333333%}.offset-xl-5{margin-inline-start:41.6666666667%}.offset-xl-6{margin-inline-start:50%}.offset-xl-7{margin-inline-start:58.3333333333%}.offset-xl-8{margin-inline-start:66.6666666667%}.offset-xl-9{margin-inline-start:75%}.offset-xl-10{margin-inline-start:83.3333333333%}.offset-xl-11{margin-inline-start:91.6666666667%}}@media (min-width: 2560px){.v-col-xxl{flex-basis:0;flex-grow:1;max-width:100%}.v-col-xxl-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-xxl-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-xxl-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-xxl-3{flex:0 0 25%;max-width:25%}.v-col-xxl-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-xxl-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-xxl-6{flex:0 0 50%;max-width:50%}.v-col-xxl-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-xxl-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-xxl-9{flex:0 0 75%;max-width:75%}.v-col-xxl-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-xxl-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-xxl-12{flex:0 0 100%;max-width:100%}.offset-xxl-0{margin-inline-start:0}.offset-xxl-1{margin-inline-start:8.3333333333%}.offset-xxl-2{margin-inline-start:16.6666666667%}.offset-xxl-3{margin-inline-start:25%}.offset-xxl-4{margin-inline-start:33.3333333333%}.offset-xxl-5{margin-inline-start:41.6666666667%}.offset-xxl-6{margin-inline-start:50%}.offset-xxl-7{margin-inline-start:58.3333333333%}.offset-xxl-8{margin-inline-start:66.6666666667%}.offset-xxl-9{margin-inline-start:75%}.offset-xxl-10{margin-inline-start:83.3333333333%}.offset-xxl-11{margin-inline-start:91.6666666667%}}.v-main{flex:1 0 auto;max-width:100%;transition:.2s cubic-bezier(.4,0,.2,1);padding-left:var(--v-layout-left);padding-right:var(--v-layout-right);padding-top:var(--v-layout-top);padding-bottom:var(--v-layout-bottom)}.v-main__scroller{max-width:100%;position:relative}.v-main--scrollable{display:flex;position:absolute;top:0;left:0;width:100%;height:100%}.v-main--scrollable>.v-main__scroller{flex:1 1 auto;overflow-y:auto;--v-layout-left: 0px;--v-layout-right: 0px;--v-layout-top: 0px;--v-layout-bottom: 0px}/*! +* Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com +* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) +* Copyright 2023 Fonticons, Inc. +*/.fa{font-family:var(--fa-style-family, "Font Awesome 6 Free");font-weight:var(--fa-style, 900)}.fa,.fa-classic,.fa-sharp,.fas,.fa-solid,.far,.fa-regular,.fab,.fa-brands{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display, inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fas,.fa-classic,.fa-solid,.far,.fa-regular{font-family:"Font Awesome 6 Free"}.fab,.fa-brands{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin, 2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em) * -1);position:absolute;text-align:center;width:var(--fa-li-width, 2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color, #eee);border-radius:var(--fa-border-radius, .1em);border-style:var(--fa-border-style, solid);border-width:var(--fa-border-width, .08em);padding:var(--fa-border-padding, .2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin, .3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin, .3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay, 0s);animation-delay:var(--fa-animation-delay, 0s);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, ease-in-out);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay, 0s);animation-delay:var(--fa-animation-delay, 0s);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, cubic-bezier(.28, .84, .42, 1));animation-timing-function:var(--fa-animation-timing, cubic-bezier(.28, .84, .42, 1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-delay:var(--fa-animation-delay, 0s);animation-delay:var(--fa-animation-delay, 0s);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, cubic-bezier(.4, 0, .6, 1));animation-timing-function:var(--fa-animation-timing, cubic-bezier(.4, 0, .6, 1))}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-delay:var(--fa-animation-delay, 0s);animation-delay:var(--fa-animation-delay, 0s);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, cubic-bezier(.4, 0, .6, 1));animation-timing-function:var(--fa-animation-timing, cubic-bezier(.4, 0, .6, 1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay, 0s);animation-delay:var(--fa-animation-delay, 0s);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, ease-in-out);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-delay:var(--fa-animation-delay, 0s);animation-delay:var(--fa-animation-delay, 0s);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, linear);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-delay:var(--fa-animation-delay, 0s);animation-delay:var(--fa-animation-delay, 0s);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 2s);animation-duration:var(--fa-animation-duration, 2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, linear);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin-reverse{--fa-animation-direction: reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, steps(8));animation-timing-function:var(--fa-animation-timing, steps(8))}@media (prefers-reduced-motion: reduce){.fa-beat,.fa-bounce,.fa-fade,.fa-beat-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-transition-delay:0s;transition-delay:0s;-webkit-transition-duration:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale, 1.25));transform:scale(var(--fa-beat-scale, 1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale, 1.25));transform:scale(var(--fa-beat-scale, 1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em));transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound, -.125em));transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1,1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em));transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound, -.125em));transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1,1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale, 1.125));transform:scale(var(--fa-beat-fade-scale, 1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale, 1.125));transform:scale(var(--fa-beat-fade-scale, 1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg));transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg));transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle, none));transform:rotate(var(--fa-rotate-angle, none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index, auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse, #fff)}.fa-0:before{content:"0"}.fa-1:before{content:"1"}.fa-2:before{content:"2"}.fa-3:before{content:"3"}.fa-4:before{content:"4"}.fa-5:before{content:"5"}.fa-6:before{content:"6"}.fa-7:before{content:"7"}.fa-8:before{content:"8"}.fa-9:before{content:"9"}.fa-fill-drip:before{content:""}.fa-arrows-to-circle:before{content:""}.fa-circle-chevron-right:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-at:before{content:"@"}.fa-trash-can:before{content:""}.fa-trash-alt:before{content:""}.fa-text-height:before{content:""}.fa-user-xmark:before{content:""}.fa-user-times:before{content:""}.fa-stethoscope:before{content:""}.fa-message:before{content:""}.fa-comment-alt:before{content:""}.fa-info:before{content:""}.fa-down-left-and-up-right-to-center:before{content:""}.fa-compress-alt:before{content:""}.fa-explosion:before{content:""}.fa-file-lines:before{content:""}.fa-file-alt:before{content:""}.fa-file-text:before{content:""}.fa-wave-square:before{content:""}.fa-ring:before{content:""}.fa-building-un:before{content:""}.fa-dice-three:before{content:""}.fa-calendar-days:before{content:""}.fa-calendar-alt:before{content:""}.fa-anchor-circle-check:before{content:""}.fa-building-circle-arrow-right:before{content:""}.fa-volleyball:before{content:""}.fa-volleyball-ball:before{content:""}.fa-arrows-up-to-line:before{content:""}.fa-sort-down:before{content:""}.fa-sort-desc:before{content:""}.fa-circle-minus:before{content:""}.fa-minus-circle:before{content:""}.fa-door-open:before{content:""}.fa-right-from-bracket:before{content:""}.fa-sign-out-alt:before{content:""}.fa-atom:before{content:""}.fa-soap:before{content:""}.fa-icons:before{content:""}.fa-heart-music-camera-bolt:before{content:""}.fa-microphone-lines-slash:before{content:""}.fa-microphone-alt-slash:before{content:""}.fa-bridge-circle-check:before{content:""}.fa-pump-medical:before{content:""}.fa-fingerprint:before{content:""}.fa-hand-point-right:before{content:""}.fa-magnifying-glass-location:before{content:""}.fa-search-location:before{content:""}.fa-forward-step:before{content:""}.fa-step-forward:before{content:""}.fa-face-smile-beam:before{content:""}.fa-smile-beam:before{content:""}.fa-flag-checkered:before{content:""}.fa-football:before{content:""}.fa-football-ball:before{content:""}.fa-school-circle-exclamation:before{content:""}.fa-crop:before{content:""}.fa-angles-down:before{content:""}.fa-angle-double-down:before{content:""}.fa-users-rectangle:before{content:""}.fa-people-roof:before{content:""}.fa-people-line:before{content:""}.fa-beer-mug-empty:before{content:""}.fa-beer:before{content:""}.fa-diagram-predecessor:before{content:""}.fa-arrow-up-long:before{content:""}.fa-long-arrow-up:before{content:""}.fa-fire-flame-simple:before{content:""}.fa-burn:before{content:""}.fa-person:before{content:""}.fa-male:before{content:""}.fa-laptop:before{content:""}.fa-file-csv:before{content:""}.fa-menorah:before{content:""}.fa-truck-plane:before{content:""}.fa-record-vinyl:before{content:""}.fa-face-grin-stars:before{content:""}.fa-grin-stars:before{content:""}.fa-bong:before{content:""}.fa-spaghetti-monster-flying:before{content:""}.fa-pastafarianism:before{content:""}.fa-arrow-down-up-across-line:before{content:""}.fa-spoon:before{content:""}.fa-utensil-spoon:before{content:""}.fa-jar-wheat:before{content:""}.fa-envelopes-bulk:before{content:""}.fa-mail-bulk:before{content:""}.fa-file-circle-exclamation:before{content:""}.fa-circle-h:before{content:""}.fa-hospital-symbol:before{content:""}.fa-pager:before{content:""}.fa-address-book:before{content:""}.fa-contact-book:before{content:""}.fa-strikethrough:before{content:""}.fa-k:before{content:"K"}.fa-landmark-flag:before{content:""}.fa-pencil:before{content:""}.fa-pencil-alt:before{content:""}.fa-backward:before{content:""}.fa-caret-right:before{content:""}.fa-comments:before{content:""}.fa-paste:before{content:""}.fa-file-clipboard:before{content:""}.fa-code-pull-request:before{content:""}.fa-clipboard-list:before{content:""}.fa-truck-ramp-box:before{content:""}.fa-truck-loading:before{content:""}.fa-user-check:before{content:""}.fa-vial-virus:before{content:""}.fa-sheet-plastic:before{content:""}.fa-blog:before{content:""}.fa-user-ninja:before{content:""}.fa-person-arrow-up-from-line:before{content:""}.fa-scroll-torah:before{content:""}.fa-torah:before{content:""}.fa-broom-ball:before{content:""}.fa-quidditch:before{content:""}.fa-quidditch-broom-ball:before{content:""}.fa-toggle-off:before{content:""}.fa-box-archive:before{content:""}.fa-archive:before{content:""}.fa-person-drowning:before{content:""}.fa-arrow-down-9-1:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-sort-numeric-down-alt:before{content:""}.fa-face-grin-tongue-squint:before{content:""}.fa-grin-tongue-squint:before{content:""}.fa-spray-can:before{content:""}.fa-truck-monster:before{content:""}.fa-w:before{content:"W"}.fa-earth-africa:before{content:""}.fa-globe-africa:before{content:""}.fa-rainbow:before{content:""}.fa-circle-notch:before{content:""}.fa-tablet-screen-button:before{content:""}.fa-tablet-alt:before{content:""}.fa-paw:before{content:""}.fa-cloud:before{content:""}.fa-trowel-bricks:before{content:""}.fa-face-flushed:before{content:""}.fa-flushed:before{content:""}.fa-hospital-user:before{content:""}.fa-tent-arrow-left-right:before{content:""}.fa-gavel:before{content:""}.fa-legal:before{content:""}.fa-binoculars:before{content:""}.fa-microphone-slash:before{content:""}.fa-box-tissue:before{content:""}.fa-motorcycle:before{content:""}.fa-bell-concierge:before{content:""}.fa-concierge-bell:before{content:""}.fa-pen-ruler:before{content:""}.fa-pencil-ruler:before{content:""}.fa-people-arrows:before{content:""}.fa-people-arrows-left-right:before{content:""}.fa-mars-and-venus-burst:before{content:""}.fa-square-caret-right:before{content:""}.fa-caret-square-right:before{content:""}.fa-scissors:before{content:""}.fa-cut:before{content:""}.fa-sun-plant-wilt:before{content:""}.fa-toilets-portable:before{content:""}.fa-hockey-puck:before{content:""}.fa-table:before{content:""}.fa-magnifying-glass-arrow-right:before{content:""}.fa-tachograph-digital:before{content:""}.fa-digital-tachograph:before{content:""}.fa-users-slash:before{content:""}.fa-clover:before{content:""}.fa-reply:before{content:""}.fa-mail-reply:before{content:""}.fa-star-and-crescent:before{content:""}.fa-house-fire:before{content:""}.fa-square-minus:before{content:""}.fa-minus-square:before{content:""}.fa-helicopter:before{content:""}.fa-compass:before{content:""}.fa-square-caret-down:before{content:""}.fa-caret-square-down:before{content:""}.fa-file-circle-question:before{content:""}.fa-laptop-code:before{content:""}.fa-swatchbook:before{content:""}.fa-prescription-bottle:before{content:""}.fa-bars:before{content:""}.fa-navicon:before{content:""}.fa-people-group:before{content:""}.fa-hourglass-end:before{content:""}.fa-hourglass-3:before{content:""}.fa-heart-crack:before{content:""}.fa-heart-broken:before{content:""}.fa-square-up-right:before{content:""}.fa-external-link-square-alt:before{content:""}.fa-face-kiss-beam:before{content:""}.fa-kiss-beam:before{content:""}.fa-film:before{content:""}.fa-ruler-horizontal:before{content:""}.fa-people-robbery:before{content:""}.fa-lightbulb:before{content:""}.fa-caret-left:before{content:""}.fa-circle-exclamation:before{content:""}.fa-exclamation-circle:before{content:""}.fa-school-circle-xmark:before{content:""}.fa-arrow-right-from-bracket:before{content:""}.fa-sign-out:before{content:""}.fa-circle-chevron-down:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-unlock-keyhole:before{content:""}.fa-unlock-alt:before{content:""}.fa-cloud-showers-heavy:before{content:""}.fa-headphones-simple:before{content:""}.fa-headphones-alt:before{content:""}.fa-sitemap:before{content:""}.fa-circle-dollar-to-slot:before{content:""}.fa-donate:before{content:""}.fa-memory:before{content:""}.fa-road-spikes:before{content:""}.fa-fire-burner:before{content:""}.fa-flag:before{content:""}.fa-hanukiah:before{content:""}.fa-feather:before{content:""}.fa-volume-low:before{content:""}.fa-volume-down:before{content:""}.fa-comment-slash:before{content:""}.fa-cloud-sun-rain:before{content:""}.fa-compress:before{content:""}.fa-wheat-awn:before{content:""}.fa-wheat-alt:before{content:""}.fa-ankh:before{content:""}.fa-hands-holding-child:before{content:""}.fa-asterisk:before{content:"*"}.fa-square-check:before{content:""}.fa-check-square:before{content:""}.fa-peseta-sign:before{content:""}.fa-heading:before{content:""}.fa-header:before{content:""}.fa-ghost:before{content:""}.fa-list:before{content:""}.fa-list-squares:before{content:""}.fa-square-phone-flip:before{content:""}.fa-phone-square-alt:before{content:""}.fa-cart-plus:before{content:""}.fa-gamepad:before{content:""}.fa-circle-dot:before{content:""}.fa-dot-circle:before{content:""}.fa-face-dizzy:before{content:""}.fa-dizzy:before{content:""}.fa-egg:before{content:""}.fa-house-medical-circle-xmark:before{content:""}.fa-campground:before{content:""}.fa-folder-plus:before{content:""}.fa-futbol:before{content:""}.fa-futbol-ball:before{content:""}.fa-soccer-ball:before{content:""}.fa-paintbrush:before{content:""}.fa-paint-brush:before{content:""}.fa-lock:before{content:""}.fa-gas-pump:before{content:""}.fa-hot-tub-person:before{content:""}.fa-hot-tub:before{content:""}.fa-map-location:before{content:""}.fa-map-marked:before{content:""}.fa-house-flood-water:before{content:""}.fa-tree:before{content:""}.fa-bridge-lock:before{content:""}.fa-sack-dollar:before{content:""}.fa-pen-to-square:before{content:""}.fa-edit:before{content:""}.fa-car-side:before{content:""}.fa-share-nodes:before{content:""}.fa-share-alt:before{content:""}.fa-heart-circle-minus:before{content:""}.fa-hourglass-half:before{content:""}.fa-hourglass-2:before{content:""}.fa-microscope:before{content:""}.fa-sink:before{content:""}.fa-bag-shopping:before{content:""}.fa-shopping-bag:before{content:""}.fa-arrow-down-z-a:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-alpha-down-alt:before{content:""}.fa-mitten:before{content:""}.fa-person-rays:before{content:""}.fa-users:before{content:""}.fa-eye-slash:before{content:""}.fa-flask-vial:before{content:""}.fa-hand:before{content:""}.fa-hand-paper:before{content:""}.fa-om:before{content:""}.fa-worm:before{content:""}.fa-house-circle-xmark:before{content:""}.fa-plug:before{content:""}.fa-chevron-up:before{content:""}.fa-hand-spock:before{content:""}.fa-stopwatch:before{content:""}.fa-face-kiss:before{content:""}.fa-kiss:before{content:""}.fa-bridge-circle-xmark:before{content:""}.fa-face-grin-tongue:before{content:""}.fa-grin-tongue:before{content:""}.fa-chess-bishop:before{content:""}.fa-face-grin-wink:before{content:""}.fa-grin-wink:before{content:""}.fa-ear-deaf:before{content:""}.fa-deaf:before{content:""}.fa-deafness:before{content:""}.fa-hard-of-hearing:before{content:""}.fa-road-circle-check:before{content:""}.fa-dice-five:before{content:""}.fa-square-rss:before{content:""}.fa-rss-square:before{content:""}.fa-land-mine-on:before{content:""}.fa-i-cursor:before{content:""}.fa-stamp:before{content:""}.fa-stairs:before{content:""}.fa-i:before{content:"I"}.fa-hryvnia-sign:before{content:""}.fa-hryvnia:before{content:""}.fa-pills:before{content:""}.fa-face-grin-wide:before{content:""}.fa-grin-alt:before{content:""}.fa-tooth:before{content:""}.fa-v:before{content:"V"}.fa-bangladeshi-taka-sign:before{content:""}.fa-bicycle:before{content:""}.fa-staff-snake:before{content:""}.fa-rod-asclepius:before{content:""}.fa-rod-snake:before{content:""}.fa-staff-aesculapius:before{content:""}.fa-head-side-cough-slash:before{content:""}.fa-truck-medical:before{content:""}.fa-ambulance:before{content:""}.fa-wheat-awn-circle-exclamation:before{content:""}.fa-snowman:before{content:""}.fa-mortar-pestle:before{content:""}.fa-road-barrier:before{content:""}.fa-school:before{content:""}.fa-igloo:before{content:""}.fa-joint:before{content:""}.fa-angle-right:before{content:""}.fa-horse:before{content:""}.fa-q:before{content:"Q"}.fa-g:before{content:"G"}.fa-notes-medical:before{content:""}.fa-temperature-half:before{content:""}.fa-temperature-2:before{content:""}.fa-thermometer-2:before{content:""}.fa-thermometer-half:before{content:""}.fa-dong-sign:before{content:""}.fa-capsules:before{content:""}.fa-poo-storm:before{content:""}.fa-poo-bolt:before{content:""}.fa-face-frown-open:before{content:""}.fa-frown-open:before{content:""}.fa-hand-point-up:before{content:""}.fa-money-bill:before{content:""}.fa-bookmark:before{content:""}.fa-align-justify:before{content:""}.fa-umbrella-beach:before{content:""}.fa-helmet-un:before{content:""}.fa-bullseye:before{content:""}.fa-bacon:before{content:""}.fa-hand-point-down:before{content:""}.fa-arrow-up-from-bracket:before{content:""}.fa-folder:before{content:""}.fa-folder-blank:before{content:""}.fa-file-waveform:before{content:""}.fa-file-medical-alt:before{content:""}.fa-radiation:before{content:""}.fa-chart-simple:before{content:""}.fa-mars-stroke:before{content:""}.fa-vial:before{content:""}.fa-gauge:before{content:""}.fa-dashboard:before{content:""}.fa-gauge-med:before{content:""}.fa-tachometer-alt-average:before{content:""}.fa-wand-magic-sparkles:before{content:""}.fa-magic-wand-sparkles:before{content:""}.fa-e:before{content:"E"}.fa-pen-clip:before{content:""}.fa-pen-alt:before{content:""}.fa-bridge-circle-exclamation:before{content:""}.fa-user:before{content:""}.fa-school-circle-check:before{content:""}.fa-dumpster:before{content:""}.fa-van-shuttle:before{content:""}.fa-shuttle-van:before{content:""}.fa-building-user:before{content:""}.fa-square-caret-left:before{content:""}.fa-caret-square-left:before{content:""}.fa-highlighter:before{content:""}.fa-key:before{content:""}.fa-bullhorn:before{content:""}.fa-globe:before{content:""}.fa-synagogue:before{content:""}.fa-person-half-dress:before{content:""}.fa-road-bridge:before{content:""}.fa-location-arrow:before{content:""}.fa-c:before{content:"C"}.fa-tablet-button:before{content:""}.fa-building-lock:before{content:""}.fa-pizza-slice:before{content:""}.fa-money-bill-wave:before{content:""}.fa-chart-area:before{content:""}.fa-area-chart:before{content:""}.fa-house-flag:before{content:""}.fa-person-circle-minus:before{content:""}.fa-ban:before{content:""}.fa-cancel:before{content:""}.fa-camera-rotate:before{content:""}.fa-spray-can-sparkles:before{content:""}.fa-air-freshener:before{content:""}.fa-star:before{content:""}.fa-repeat:before{content:""}.fa-cross:before{content:""}.fa-box:before{content:""}.fa-venus-mars:before{content:""}.fa-arrow-pointer:before{content:""}.fa-mouse-pointer:before{content:""}.fa-maximize:before{content:""}.fa-expand-arrows-alt:before{content:""}.fa-charging-station:before{content:""}.fa-shapes:before{content:""}.fa-triangle-circle-square:before{content:""}.fa-shuffle:before{content:""}.fa-random:before{content:""}.fa-person-running:before{content:""}.fa-running:before{content:""}.fa-mobile-retro:before{content:""}.fa-grip-lines-vertical:before{content:""}.fa-spider:before{content:""}.fa-hands-bound:before{content:""}.fa-file-invoice-dollar:before{content:""}.fa-plane-circle-exclamation:before{content:""}.fa-x-ray:before{content:""}.fa-spell-check:before{content:""}.fa-slash:before{content:""}.fa-computer-mouse:before{content:""}.fa-mouse:before{content:""}.fa-arrow-right-to-bracket:before{content:""}.fa-sign-in:before{content:""}.fa-shop-slash:before{content:""}.fa-store-alt-slash:before{content:""}.fa-server:before{content:""}.fa-virus-covid-slash:before{content:""}.fa-shop-lock:before{content:""}.fa-hourglass-start:before{content:""}.fa-hourglass-1:before{content:""}.fa-blender-phone:before{content:""}.fa-building-wheat:before{content:""}.fa-person-breastfeeding:before{content:""}.fa-right-to-bracket:before{content:""}.fa-sign-in-alt:before{content:""}.fa-venus:before{content:""}.fa-passport:before{content:""}.fa-heart-pulse:before{content:""}.fa-heartbeat:before{content:""}.fa-people-carry-box:before{content:""}.fa-people-carry:before{content:""}.fa-temperature-high:before{content:""}.fa-microchip:before{content:""}.fa-crown:before{content:""}.fa-weight-hanging:before{content:""}.fa-xmarks-lines:before{content:""}.fa-file-prescription:before{content:""}.fa-weight-scale:before{content:""}.fa-weight:before{content:""}.fa-user-group:before{content:""}.fa-user-friends:before{content:""}.fa-arrow-up-a-z:before{content:""}.fa-sort-alpha-up:before{content:""}.fa-chess-knight:before{content:""}.fa-face-laugh-squint:before{content:""}.fa-laugh-squint:before{content:""}.fa-wheelchair:before{content:""}.fa-circle-arrow-up:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-toggle-on:before{content:""}.fa-person-walking:before{content:""}.fa-walking:before{content:""}.fa-l:before{content:"L"}.fa-fire:before{content:""}.fa-bed-pulse:before{content:""}.fa-procedures:before{content:""}.fa-shuttle-space:before{content:""}.fa-space-shuttle:before{content:""}.fa-face-laugh:before{content:""}.fa-laugh:before{content:""}.fa-folder-open:before{content:""}.fa-heart-circle-plus:before{content:""}.fa-code-fork:before{content:""}.fa-city:before{content:""}.fa-microphone-lines:before{content:""}.fa-microphone-alt:before{content:""}.fa-pepper-hot:before{content:""}.fa-unlock:before{content:""}.fa-colon-sign:before{content:""}.fa-headset:before{content:""}.fa-store-slash:before{content:""}.fa-road-circle-xmark:before{content:""}.fa-user-minus:before{content:""}.fa-mars-stroke-up:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-champagne-glasses:before{content:""}.fa-glass-cheers:before{content:""}.fa-clipboard:before{content:""}.fa-house-circle-exclamation:before{content:""}.fa-file-arrow-up:before{content:""}.fa-file-upload:before{content:""}.fa-wifi:before{content:""}.fa-wifi-3:before{content:""}.fa-wifi-strong:before{content:""}.fa-bath:before{content:""}.fa-bathtub:before{content:""}.fa-underline:before{content:""}.fa-user-pen:before{content:""}.fa-user-edit:before{content:""}.fa-signature:before{content:""}.fa-stroopwafel:before{content:""}.fa-bold:before{content:""}.fa-anchor-lock:before{content:""}.fa-building-ngo:before{content:""}.fa-manat-sign:before{content:""}.fa-not-equal:before{content:""}.fa-border-top-left:before{content:""}.fa-border-style:before{content:""}.fa-map-location-dot:before{content:""}.fa-map-marked-alt:before{content:""}.fa-jedi:before{content:""}.fa-square-poll-vertical:before{content:""}.fa-poll:before{content:""}.fa-mug-hot:before{content:""}.fa-car-battery:before{content:""}.fa-battery-car:before{content:""}.fa-gift:before{content:""}.fa-dice-two:before{content:""}.fa-chess-queen:before{content:""}.fa-glasses:before{content:""}.fa-chess-board:before{content:""}.fa-building-circle-check:before{content:""}.fa-person-chalkboard:before{content:""}.fa-mars-stroke-right:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-hand-back-fist:before{content:""}.fa-hand-rock:before{content:""}.fa-square-caret-up:before{content:""}.fa-caret-square-up:before{content:""}.fa-cloud-showers-water:before{content:""}.fa-chart-bar:before{content:""}.fa-bar-chart:before{content:""}.fa-hands-bubbles:before{content:""}.fa-hands-wash:before{content:""}.fa-less-than-equal:before{content:""}.fa-train:before{content:""}.fa-eye-low-vision:before{content:""}.fa-low-vision:before{content:""}.fa-crow:before{content:""}.fa-sailboat:before{content:""}.fa-window-restore:before{content:""}.fa-square-plus:before{content:""}.fa-plus-square:before{content:""}.fa-torii-gate:before{content:""}.fa-frog:before{content:""}.fa-bucket:before{content:""}.fa-image:before{content:""}.fa-microphone:before{content:""}.fa-cow:before{content:""}.fa-caret-up:before{content:""}.fa-screwdriver:before{content:""}.fa-folder-closed:before{content:""}.fa-house-tsunami:before{content:""}.fa-square-nfi:before{content:""}.fa-arrow-up-from-ground-water:before{content:""}.fa-martini-glass:before{content:""}.fa-glass-martini-alt:before{content:""}.fa-rotate-left:before{content:""}.fa-rotate-back:before{content:""}.fa-rotate-backward:before{content:""}.fa-undo-alt:before{content:""}.fa-table-columns:before{content:""}.fa-columns:before{content:""}.fa-lemon:before{content:""}.fa-head-side-mask:before{content:""}.fa-handshake:before{content:""}.fa-gem:before{content:""}.fa-dolly:before{content:""}.fa-dolly-box:before{content:""}.fa-smoking:before{content:""}.fa-minimize:before{content:""}.fa-compress-arrows-alt:before{content:""}.fa-monument:before{content:""}.fa-snowplow:before{content:""}.fa-angles-right:before{content:""}.fa-angle-double-right:before{content:""}.fa-cannabis:before{content:""}.fa-circle-play:before{content:""}.fa-play-circle:before{content:""}.fa-tablets:before{content:""}.fa-ethernet:before{content:""}.fa-euro-sign:before{content:""}.fa-eur:before{content:""}.fa-euro:before{content:""}.fa-chair:before{content:""}.fa-circle-check:before{content:""}.fa-check-circle:before{content:""}.fa-circle-stop:before{content:""}.fa-stop-circle:before{content:""}.fa-compass-drafting:before{content:""}.fa-drafting-compass:before{content:""}.fa-plate-wheat:before{content:""}.fa-icicles:before{content:""}.fa-person-shelter:before{content:""}.fa-neuter:before{content:""}.fa-id-badge:before{content:""}.fa-marker:before{content:""}.fa-face-laugh-beam:before{content:""}.fa-laugh-beam:before{content:""}.fa-helicopter-symbol:before{content:""}.fa-universal-access:before{content:""}.fa-circle-chevron-up:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-lari-sign:before{content:""}.fa-volcano:before{content:""}.fa-person-walking-dashed-line-arrow-right:before{content:""}.fa-sterling-sign:before{content:""}.fa-gbp:before{content:""}.fa-pound-sign:before{content:""}.fa-viruses:before{content:""}.fa-square-person-confined:before{content:""}.fa-user-tie:before{content:""}.fa-arrow-down-long:before{content:""}.fa-long-arrow-down:before{content:""}.fa-tent-arrow-down-to-line:before{content:""}.fa-certificate:before{content:""}.fa-reply-all:before{content:""}.fa-mail-reply-all:before{content:""}.fa-suitcase:before{content:""}.fa-person-skating:before{content:""}.fa-skating:before{content:""}.fa-filter-circle-dollar:before{content:""}.fa-funnel-dollar:before{content:""}.fa-camera-retro:before{content:""}.fa-circle-arrow-down:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-file-import:before{content:""}.fa-arrow-right-to-file:before{content:""}.fa-square-arrow-up-right:before{content:""}.fa-external-link-square:before{content:""}.fa-box-open:before{content:""}.fa-scroll:before{content:""}.fa-spa:before{content:""}.fa-location-pin-lock:before{content:""}.fa-pause:before{content:""}.fa-hill-avalanche:before{content:""}.fa-temperature-empty:before{content:""}.fa-temperature-0:before{content:""}.fa-thermometer-0:before{content:""}.fa-thermometer-empty:before{content:""}.fa-bomb:before{content:""}.fa-registered:before{content:""}.fa-address-card:before{content:""}.fa-contact-card:before{content:""}.fa-vcard:before{content:""}.fa-scale-unbalanced-flip:before{content:""}.fa-balance-scale-right:before{content:""}.fa-subscript:before{content:""}.fa-diamond-turn-right:before{content:""}.fa-directions:before{content:""}.fa-burst:before{content:""}.fa-house-laptop:before{content:""}.fa-laptop-house:before{content:""}.fa-face-tired:before{content:""}.fa-tired:before{content:""}.fa-money-bills:before{content:""}.fa-smog:before{content:""}.fa-crutch:before{content:""}.fa-cloud-arrow-up:before{content:""}.fa-cloud-upload:before{content:""}.fa-cloud-upload-alt:before{content:""}.fa-palette:before{content:""}.fa-arrows-turn-right:before{content:""}.fa-vest:before{content:""}.fa-ferry:before{content:""}.fa-arrows-down-to-people:before{content:""}.fa-seedling:before{content:""}.fa-sprout:before{content:""}.fa-left-right:before{content:""}.fa-arrows-alt-h:before{content:""}.fa-boxes-packing:before{content:""}.fa-circle-arrow-left:before{content:""}.fa-arrow-circle-left:before{content:""}.fa-group-arrows-rotate:before{content:""}.fa-bowl-food:before{content:""}.fa-candy-cane:before{content:""}.fa-arrow-down-wide-short:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-down:before{content:""}.fa-cloud-bolt:before{content:""}.fa-thunderstorm:before{content:""}.fa-text-slash:before{content:""}.fa-remove-format:before{content:""}.fa-face-smile-wink:before{content:""}.fa-smile-wink:before{content:""}.fa-file-word:before{content:""}.fa-file-powerpoint:before{content:""}.fa-arrows-left-right:before{content:""}.fa-arrows-h:before{content:""}.fa-house-lock:before{content:""}.fa-cloud-arrow-down:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-download-alt:before{content:""}.fa-children:before{content:""}.fa-chalkboard:before{content:""}.fa-blackboard:before{content:""}.fa-user-large-slash:before{content:""}.fa-user-alt-slash:before{content:""}.fa-envelope-open:before{content:""}.fa-handshake-simple-slash:before{content:""}.fa-handshake-alt-slash:before{content:""}.fa-mattress-pillow:before{content:""}.fa-guarani-sign:before{content:""}.fa-arrows-rotate:before{content:""}.fa-refresh:before{content:""}.fa-sync:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-cruzeiro-sign:before{content:""}.fa-greater-than-equal:before{content:""}.fa-shield-halved:before{content:""}.fa-shield-alt:before{content:""}.fa-book-atlas:before{content:""}.fa-atlas:before{content:""}.fa-virus:before{content:""}.fa-envelope-circle-check:before{content:""}.fa-layer-group:before{content:""}.fa-arrows-to-dot:before{content:""}.fa-archway:before{content:""}.fa-heart-circle-check:before{content:""}.fa-house-chimney-crack:before{content:""}.fa-house-damage:before{content:""}.fa-file-zipper:before{content:""}.fa-file-archive:before{content:""}.fa-square:before{content:""}.fa-martini-glass-empty:before{content:""}.fa-glass-martini:before{content:""}.fa-couch:before{content:""}.fa-cedi-sign:before{content:""}.fa-italic:before{content:""}.fa-church:before{content:""}.fa-comments-dollar:before{content:""}.fa-democrat:before{content:""}.fa-z:before{content:"Z"}.fa-person-skiing:before{content:""}.fa-skiing:before{content:""}.fa-road-lock:before{content:""}.fa-a:before{content:"A"}.fa-temperature-arrow-down:before{content:""}.fa-temperature-down:before{content:""}.fa-feather-pointed:before{content:""}.fa-feather-alt:before{content:""}.fa-p:before{content:"P"}.fa-snowflake:before{content:""}.fa-newspaper:before{content:""}.fa-rectangle-ad:before{content:""}.fa-ad:before{content:""}.fa-circle-arrow-right:before{content:""}.fa-arrow-circle-right:before{content:""}.fa-filter-circle-xmark:before{content:""}.fa-locust:before{content:""}.fa-sort:before{content:""}.fa-unsorted:before{content:""}.fa-list-ol:before{content:""}.fa-list-1-2:before{content:""}.fa-list-numeric:before{content:""}.fa-person-dress-burst:before{content:""}.fa-money-check-dollar:before{content:""}.fa-money-check-alt:before{content:""}.fa-vector-square:before{content:""}.fa-bread-slice:before{content:""}.fa-language:before{content:""}.fa-face-kiss-wink-heart:before{content:""}.fa-kiss-wink-heart:before{content:""}.fa-filter:before{content:""}.fa-question:before{content:"?"}.fa-file-signature:before{content:""}.fa-up-down-left-right:before{content:""}.fa-arrows-alt:before{content:""}.fa-house-chimney-user:before{content:""}.fa-hand-holding-heart:before{content:""}.fa-puzzle-piece:before{content:""}.fa-money-check:before{content:""}.fa-star-half-stroke:before{content:""}.fa-star-half-alt:before{content:""}.fa-code:before{content:""}.fa-whiskey-glass:before{content:""}.fa-glass-whiskey:before{content:""}.fa-building-circle-exclamation:before{content:""}.fa-magnifying-glass-chart:before{content:""}.fa-arrow-up-right-from-square:before{content:""}.fa-external-link:before{content:""}.fa-cubes-stacked:before{content:""}.fa-won-sign:before{content:""}.fa-krw:before{content:""}.fa-won:before{content:""}.fa-virus-covid:before{content:""}.fa-austral-sign:before{content:""}.fa-f:before{content:"F"}.fa-leaf:before{content:""}.fa-road:before{content:""}.fa-taxi:before{content:""}.fa-cab:before{content:""}.fa-person-circle-plus:before{content:""}.fa-chart-pie:before{content:""}.fa-pie-chart:before{content:""}.fa-bolt-lightning:before{content:""}.fa-sack-xmark:before{content:""}.fa-file-excel:before{content:""}.fa-file-contract:before{content:""}.fa-fish-fins:before{content:""}.fa-building-flag:before{content:""}.fa-face-grin-beam:before{content:""}.fa-grin-beam:before{content:""}.fa-object-ungroup:before{content:""}.fa-poop:before{content:""}.fa-location-pin:before{content:""}.fa-map-marker:before{content:""}.fa-kaaba:before{content:""}.fa-toilet-paper:before{content:""}.fa-helmet-safety:before{content:""}.fa-hard-hat:before{content:""}.fa-hat-hard:before{content:""}.fa-eject:before{content:""}.fa-circle-right:before{content:""}.fa-arrow-alt-circle-right:before{content:""}.fa-plane-circle-check:before{content:""}.fa-face-rolling-eyes:before{content:""}.fa-meh-rolling-eyes:before{content:""}.fa-object-group:before{content:""}.fa-chart-line:before{content:""}.fa-line-chart:before{content:""}.fa-mask-ventilator:before{content:""}.fa-arrow-right:before{content:""}.fa-signs-post:before{content:""}.fa-map-signs:before{content:""}.fa-cash-register:before{content:""}.fa-person-circle-question:before{content:""}.fa-h:before{content:"H"}.fa-tarp:before{content:""}.fa-screwdriver-wrench:before{content:""}.fa-tools:before{content:""}.fa-arrows-to-eye:before{content:""}.fa-plug-circle-bolt:before{content:""}.fa-heart:before{content:""}.fa-mars-and-venus:before{content:""}.fa-house-user:before{content:""}.fa-home-user:before{content:""}.fa-dumpster-fire:before{content:""}.fa-house-crack:before{content:""}.fa-martini-glass-citrus:before{content:""}.fa-cocktail:before{content:""}.fa-face-surprise:before{content:""}.fa-surprise:before{content:""}.fa-bottle-water:before{content:""}.fa-circle-pause:before{content:""}.fa-pause-circle:before{content:""}.fa-toilet-paper-slash:before{content:""}.fa-apple-whole:before{content:""}.fa-apple-alt:before{content:""}.fa-kitchen-set:before{content:""}.fa-r:before{content:"R"}.fa-temperature-quarter:before{content:""}.fa-temperature-1:before{content:""}.fa-thermometer-1:before{content:""}.fa-thermometer-quarter:before{content:""}.fa-cube:before{content:""}.fa-bitcoin-sign:before{content:""}.fa-shield-dog:before{content:""}.fa-solar-panel:before{content:""}.fa-lock-open:before{content:""}.fa-elevator:before{content:""}.fa-money-bill-transfer:before{content:""}.fa-money-bill-trend-up:before{content:""}.fa-house-flood-water-circle-arrow-right:before{content:""}.fa-square-poll-horizontal:before{content:""}.fa-poll-h:before{content:""}.fa-circle:before{content:""}.fa-backward-fast:before{content:""}.fa-fast-backward:before{content:""}.fa-recycle:before{content:""}.fa-user-astronaut:before{content:""}.fa-plane-slash:before{content:""}.fa-trademark:before{content:""}.fa-basketball:before{content:""}.fa-basketball-ball:before{content:""}.fa-satellite-dish:before{content:""}.fa-circle-up:before{content:""}.fa-arrow-alt-circle-up:before{content:""}.fa-mobile-screen-button:before{content:""}.fa-mobile-alt:before{content:""}.fa-volume-high:before{content:""}.fa-volume-up:before{content:""}.fa-users-rays:before{content:""}.fa-wallet:before{content:""}.fa-clipboard-check:before{content:""}.fa-file-audio:before{content:""}.fa-burger:before{content:""}.fa-hamburger:before{content:""}.fa-wrench:before{content:""}.fa-bugs:before{content:""}.fa-rupee-sign:before{content:""}.fa-rupee:before{content:""}.fa-file-image:before{content:""}.fa-circle-question:before{content:""}.fa-question-circle:before{content:""}.fa-plane-departure:before{content:""}.fa-handshake-slash:before{content:""}.fa-book-bookmark:before{content:""}.fa-code-branch:before{content:""}.fa-hat-cowboy:before{content:""}.fa-bridge:before{content:""}.fa-phone-flip:before{content:""}.fa-phone-alt:before{content:""}.fa-truck-front:before{content:""}.fa-cat:before{content:""}.fa-anchor-circle-exclamation:before{content:""}.fa-truck-field:before{content:""}.fa-route:before{content:""}.fa-clipboard-question:before{content:""}.fa-panorama:before{content:""}.fa-comment-medical:before{content:""}.fa-teeth-open:before{content:""}.fa-file-circle-minus:before{content:""}.fa-tags:before{content:""}.fa-wine-glass:before{content:""}.fa-forward-fast:before{content:""}.fa-fast-forward:before{content:""}.fa-face-meh-blank:before{content:""}.fa-meh-blank:before{content:""}.fa-square-parking:before{content:""}.fa-parking:before{content:""}.fa-house-signal:before{content:""}.fa-bars-progress:before{content:""}.fa-tasks-alt:before{content:""}.fa-faucet-drip:before{content:""}.fa-cart-flatbed:before{content:""}.fa-dolly-flatbed:before{content:""}.fa-ban-smoking:before{content:""}.fa-smoking-ban:before{content:""}.fa-terminal:before{content:""}.fa-mobile-button:before{content:""}.fa-house-medical-flag:before{content:""}.fa-basket-shopping:before{content:""}.fa-shopping-basket:before{content:""}.fa-tape:before{content:""}.fa-bus-simple:before{content:""}.fa-bus-alt:before{content:""}.fa-eye:before{content:""}.fa-face-sad-cry:before{content:""}.fa-sad-cry:before{content:""}.fa-audio-description:before{content:""}.fa-person-military-to-person:before{content:""}.fa-file-shield:before{content:""}.fa-user-slash:before{content:""}.fa-pen:before{content:""}.fa-tower-observation:before{content:""}.fa-file-code:before{content:""}.fa-signal:before{content:""}.fa-signal-5:before{content:""}.fa-signal-perfect:before{content:""}.fa-bus:before{content:""}.fa-heart-circle-xmark:before{content:""}.fa-house-chimney:before{content:""}.fa-home-lg:before{content:""}.fa-window-maximize:before{content:""}.fa-face-frown:before{content:""}.fa-frown:before{content:""}.fa-prescription:before{content:""}.fa-shop:before{content:""}.fa-store-alt:before{content:""}.fa-floppy-disk:before{content:""}.fa-save:before{content:""}.fa-vihara:before{content:""}.fa-scale-unbalanced:before{content:""}.fa-balance-scale-left:before{content:""}.fa-sort-up:before{content:""}.fa-sort-asc:before{content:""}.fa-comment-dots:before{content:""}.fa-commenting:before{content:""}.fa-plant-wilt:before{content:""}.fa-diamond:before{content:""}.fa-face-grin-squint:before{content:""}.fa-grin-squint:before{content:""}.fa-hand-holding-dollar:before{content:""}.fa-hand-holding-usd:before{content:""}.fa-bacterium:before{content:""}.fa-hand-pointer:before{content:""}.fa-drum-steelpan:before{content:""}.fa-hand-scissors:before{content:""}.fa-hands-praying:before{content:""}.fa-praying-hands:before{content:""}.fa-arrow-rotate-right:before{content:""}.fa-arrow-right-rotate:before{content:""}.fa-arrow-rotate-forward:before{content:""}.fa-redo:before{content:""}.fa-biohazard:before{content:""}.fa-location-crosshairs:before{content:""}.fa-location:before{content:""}.fa-mars-double:before{content:""}.fa-child-dress:before{content:""}.fa-users-between-lines:before{content:""}.fa-lungs-virus:before{content:""}.fa-face-grin-tears:before{content:""}.fa-grin-tears:before{content:""}.fa-phone:before{content:""}.fa-calendar-xmark:before{content:""}.fa-calendar-times:before{content:""}.fa-child-reaching:before{content:""}.fa-head-side-virus:before{content:""}.fa-user-gear:before{content:""}.fa-user-cog:before{content:""}.fa-arrow-up-1-9:before{content:""}.fa-sort-numeric-up:before{content:""}.fa-door-closed:before{content:""}.fa-shield-virus:before{content:""}.fa-dice-six:before{content:""}.fa-mosquito-net:before{content:""}.fa-bridge-water:before{content:""}.fa-person-booth:before{content:""}.fa-text-width:before{content:""}.fa-hat-wizard:before{content:""}.fa-pen-fancy:before{content:""}.fa-person-digging:before{content:""}.fa-digging:before{content:""}.fa-trash:before{content:""}.fa-gauge-simple:before{content:""}.fa-gauge-simple-med:before{content:""}.fa-tachometer-average:before{content:""}.fa-book-medical:before{content:""}.fa-poo:before{content:""}.fa-quote-right:before{content:""}.fa-quote-right-alt:before{content:""}.fa-shirt:before{content:""}.fa-t-shirt:before{content:""}.fa-tshirt:before{content:""}.fa-cubes:before{content:""}.fa-divide:before{content:""}.fa-tenge-sign:before{content:""}.fa-tenge:before{content:""}.fa-headphones:before{content:""}.fa-hands-holding:before{content:""}.fa-hands-clapping:before{content:""}.fa-republican:before{content:""}.fa-arrow-left:before{content:""}.fa-person-circle-xmark:before{content:""}.fa-ruler:before{content:""}.fa-align-left:before{content:""}.fa-dice-d6:before{content:""}.fa-restroom:before{content:""}.fa-j:before{content:"J"}.fa-users-viewfinder:before{content:""}.fa-file-video:before{content:""}.fa-up-right-from-square:before{content:""}.fa-external-link-alt:before{content:""}.fa-table-cells:before{content:""}.fa-th:before{content:""}.fa-file-pdf:before{content:""}.fa-book-bible:before{content:""}.fa-bible:before{content:""}.fa-o:before{content:"O"}.fa-suitcase-medical:before{content:""}.fa-medkit:before{content:""}.fa-user-secret:before{content:""}.fa-otter:before{content:""}.fa-person-dress:before{content:""}.fa-female:before{content:""}.fa-comment-dollar:before{content:""}.fa-business-time:before{content:""}.fa-briefcase-clock:before{content:""}.fa-table-cells-large:before{content:""}.fa-th-large:before{content:""}.fa-book-tanakh:before{content:""}.fa-tanakh:before{content:""}.fa-phone-volume:before{content:""}.fa-volume-control-phone:before{content:""}.fa-hat-cowboy-side:before{content:""}.fa-clipboard-user:before{content:""}.fa-child:before{content:""}.fa-lira-sign:before{content:""}.fa-satellite:before{content:""}.fa-plane-lock:before{content:""}.fa-tag:before{content:""}.fa-comment:before{content:""}.fa-cake-candles:before{content:""}.fa-birthday-cake:before{content:""}.fa-cake:before{content:""}.fa-envelope:before{content:""}.fa-angles-up:before{content:""}.fa-angle-double-up:before{content:""}.fa-paperclip:before{content:""}.fa-arrow-right-to-city:before{content:""}.fa-ribbon:before{content:""}.fa-lungs:before{content:""}.fa-arrow-up-9-1:before{content:""}.fa-sort-numeric-up-alt:before{content:""}.fa-litecoin-sign:before{content:""}.fa-border-none:before{content:""}.fa-circle-nodes:before{content:""}.fa-parachute-box:before{content:""}.fa-indent:before{content:""}.fa-truck-field-un:before{content:""}.fa-hourglass:before{content:""}.fa-hourglass-empty:before{content:""}.fa-mountain:before{content:""}.fa-user-doctor:before{content:""}.fa-user-md:before{content:""}.fa-circle-info:before{content:""}.fa-info-circle:before{content:""}.fa-cloud-meatball:before{content:""}.fa-camera:before{content:""}.fa-camera-alt:before{content:""}.fa-square-virus:before{content:""}.fa-meteor:before{content:""}.fa-car-on:before{content:""}.fa-sleigh:before{content:""}.fa-arrow-down-1-9:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-down:before{content:""}.fa-hand-holding-droplet:before{content:""}.fa-hand-holding-water:before{content:""}.fa-water:before{content:""}.fa-calendar-check:before{content:""}.fa-braille:before{content:""}.fa-prescription-bottle-medical:before{content:""}.fa-prescription-bottle-alt:before{content:""}.fa-landmark:before{content:""}.fa-truck:before{content:""}.fa-crosshairs:before{content:""}.fa-person-cane:before{content:""}.fa-tent:before{content:""}.fa-vest-patches:before{content:""}.fa-check-double:before{content:""}.fa-arrow-down-a-z:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-down:before{content:""}.fa-money-bill-wheat:before{content:""}.fa-cookie:before{content:""}.fa-arrow-rotate-left:before{content:""}.fa-arrow-left-rotate:before{content:""}.fa-arrow-rotate-back:before{content:""}.fa-arrow-rotate-backward:before{content:""}.fa-undo:before{content:""}.fa-hard-drive:before{content:""}.fa-hdd:before{content:""}.fa-face-grin-squint-tears:before{content:""}.fa-grin-squint-tears:before{content:""}.fa-dumbbell:before{content:""}.fa-rectangle-list:before{content:""}.fa-list-alt:before{content:""}.fa-tarp-droplet:before{content:""}.fa-house-medical-circle-check:before{content:""}.fa-person-skiing-nordic:before{content:""}.fa-skiing-nordic:before{content:""}.fa-calendar-plus:before{content:""}.fa-plane-arrival:before{content:""}.fa-circle-left:before{content:""}.fa-arrow-alt-circle-left:before{content:""}.fa-train-subway:before{content:""}.fa-subway:before{content:""}.fa-chart-gantt:before{content:""}.fa-indian-rupee-sign:before{content:""}.fa-indian-rupee:before{content:""}.fa-inr:before{content:""}.fa-crop-simple:before{content:""}.fa-crop-alt:before{content:""}.fa-money-bill-1:before{content:""}.fa-money-bill-alt:before{content:""}.fa-left-long:before{content:""}.fa-long-arrow-alt-left:before{content:""}.fa-dna:before{content:""}.fa-virus-slash:before{content:""}.fa-minus:before{content:""}.fa-subtract:before{content:""}.fa-chess:before{content:""}.fa-arrow-left-long:before{content:""}.fa-long-arrow-left:before{content:""}.fa-plug-circle-check:before{content:""}.fa-street-view:before{content:""}.fa-franc-sign:before{content:""}.fa-volume-off:before{content:""}.fa-hands-asl-interpreting:before{content:""}.fa-american-sign-language-interpreting:before{content:""}.fa-asl-interpreting:before{content:""}.fa-hands-american-sign-language-interpreting:before{content:""}.fa-gear:before{content:""}.fa-cog:before{content:""}.fa-droplet-slash:before{content:""}.fa-tint-slash:before{content:""}.fa-mosque:before{content:""}.fa-mosquito:before{content:""}.fa-star-of-david:before{content:""}.fa-person-military-rifle:before{content:""}.fa-cart-shopping:before{content:""}.fa-shopping-cart:before{content:""}.fa-vials:before{content:""}.fa-plug-circle-plus:before{content:""}.fa-place-of-worship:before{content:""}.fa-grip-vertical:before{content:""}.fa-arrow-turn-up:before{content:""}.fa-level-up:before{content:""}.fa-u:before{content:"U"}.fa-square-root-variable:before{content:""}.fa-square-root-alt:before{content:""}.fa-clock:before{content:""}.fa-clock-four:before{content:""}.fa-backward-step:before{content:""}.fa-step-backward:before{content:""}.fa-pallet:before{content:""}.fa-faucet:before{content:""}.fa-baseball-bat-ball:before{content:""}.fa-s:before{content:"S"}.fa-timeline:before{content:""}.fa-keyboard:before{content:""}.fa-caret-down:before{content:""}.fa-house-chimney-medical:before{content:""}.fa-clinic-medical:before{content:""}.fa-temperature-three-quarters:before{content:""}.fa-temperature-3:before{content:""}.fa-thermometer-3:before{content:""}.fa-thermometer-three-quarters:before{content:""}.fa-mobile-screen:before{content:""}.fa-mobile-android-alt:before{content:""}.fa-plane-up:before{content:""}.fa-piggy-bank:before{content:""}.fa-battery-half:before{content:""}.fa-battery-3:before{content:""}.fa-mountain-city:before{content:""}.fa-coins:before{content:""}.fa-khanda:before{content:""}.fa-sliders:before{content:""}.fa-sliders-h:before{content:""}.fa-folder-tree:before{content:""}.fa-network-wired:before{content:""}.fa-map-pin:before{content:""}.fa-hamsa:before{content:""}.fa-cent-sign:before{content:""}.fa-flask:before{content:""}.fa-person-pregnant:before{content:""}.fa-wand-sparkles:before{content:""}.fa-ellipsis-vertical:before{content:""}.fa-ellipsis-v:before{content:""}.fa-ticket:before{content:""}.fa-power-off:before{content:""}.fa-right-long:before{content:""}.fa-long-arrow-alt-right:before{content:""}.fa-flag-usa:before{content:""}.fa-laptop-file:before{content:""}.fa-tty:before{content:""}.fa-teletype:before{content:""}.fa-diagram-next:before{content:""}.fa-person-rifle:before{content:""}.fa-house-medical-circle-exclamation:before{content:""}.fa-closed-captioning:before{content:""}.fa-person-hiking:before{content:""}.fa-hiking:before{content:""}.fa-venus-double:before{content:""}.fa-images:before{content:""}.fa-calculator:before{content:""}.fa-people-pulling:before{content:""}.fa-n:before{content:"N"}.fa-cable-car:before{content:""}.fa-tram:before{content:""}.fa-cloud-rain:before{content:""}.fa-building-circle-xmark:before{content:""}.fa-ship:before{content:""}.fa-arrows-down-to-line:before{content:""}.fa-download:before{content:""}.fa-face-grin:before{content:""}.fa-grin:before{content:""}.fa-delete-left:before{content:""}.fa-backspace:before{content:""}.fa-eye-dropper:before{content:""}.fa-eye-dropper-empty:before{content:""}.fa-eyedropper:before{content:""}.fa-file-circle-check:before{content:""}.fa-forward:before{content:""}.fa-mobile:before{content:""}.fa-mobile-android:before{content:""}.fa-mobile-phone:before{content:""}.fa-face-meh:before{content:""}.fa-meh:before{content:""}.fa-align-center:before{content:""}.fa-book-skull:before{content:""}.fa-book-dead:before{content:""}.fa-id-card:before{content:""}.fa-drivers-license:before{content:""}.fa-outdent:before{content:""}.fa-dedent:before{content:""}.fa-heart-circle-exclamation:before{content:""}.fa-house:before{content:""}.fa-home:before{content:""}.fa-home-alt:before{content:""}.fa-home-lg-alt:before{content:""}.fa-calendar-week:before{content:""}.fa-laptop-medical:before{content:""}.fa-b:before{content:"B"}.fa-file-medical:before{content:""}.fa-dice-one:before{content:""}.fa-kiwi-bird:before{content:""}.fa-arrow-right-arrow-left:before{content:""}.fa-exchange:before{content:""}.fa-rotate-right:before{content:""}.fa-redo-alt:before{content:""}.fa-rotate-forward:before{content:""}.fa-utensils:before{content:""}.fa-cutlery:before{content:""}.fa-arrow-up-wide-short:before{content:""}.fa-sort-amount-up:before{content:""}.fa-mill-sign:before{content:""}.fa-bowl-rice:before{content:""}.fa-skull:before{content:""}.fa-tower-broadcast:before{content:""}.fa-broadcast-tower:before{content:""}.fa-truck-pickup:before{content:""}.fa-up-long:before{content:""}.fa-long-arrow-alt-up:before{content:""}.fa-stop:before{content:""}.fa-code-merge:before{content:""}.fa-upload:before{content:""}.fa-hurricane:before{content:""}.fa-mound:before{content:""}.fa-toilet-portable:before{content:""}.fa-compact-disc:before{content:""}.fa-file-arrow-down:before{content:""}.fa-file-download:before{content:""}.fa-caravan:before{content:""}.fa-shield-cat:before{content:""}.fa-bolt:before{content:""}.fa-zap:before{content:""}.fa-glass-water:before{content:""}.fa-oil-well:before{content:""}.fa-vault:before{content:""}.fa-mars:before{content:""}.fa-toilet:before{content:""}.fa-plane-circle-xmark:before{content:""}.fa-yen-sign:before{content:""}.fa-cny:before{content:""}.fa-jpy:before{content:""}.fa-rmb:before{content:""}.fa-yen:before{content:""}.fa-ruble-sign:before{content:""}.fa-rouble:before{content:""}.fa-rub:before{content:""}.fa-ruble:before{content:""}.fa-sun:before{content:""}.fa-guitar:before{content:""}.fa-face-laugh-wink:before{content:""}.fa-laugh-wink:before{content:""}.fa-horse-head:before{content:""}.fa-bore-hole:before{content:""}.fa-industry:before{content:""}.fa-circle-down:before{content:""}.fa-arrow-alt-circle-down:before{content:""}.fa-arrows-turn-to-dots:before{content:""}.fa-florin-sign:before{content:""}.fa-arrow-down-short-wide:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-amount-down-alt:before{content:""}.fa-less-than:before{content:"<"}.fa-angle-down:before{content:""}.fa-car-tunnel:before{content:""}.fa-head-side-cough:before{content:""}.fa-grip-lines:before{content:""}.fa-thumbs-down:before{content:""}.fa-user-lock:before{content:""}.fa-arrow-right-long:before{content:""}.fa-long-arrow-right:before{content:""}.fa-anchor-circle-xmark:before{content:""}.fa-ellipsis:before{content:""}.fa-ellipsis-h:before{content:""}.fa-chess-pawn:before{content:""}.fa-kit-medical:before{content:""}.fa-first-aid:before{content:""}.fa-person-through-window:before{content:""}.fa-toolbox:before{content:""}.fa-hands-holding-circle:before{content:""}.fa-bug:before{content:""}.fa-credit-card:before{content:""}.fa-credit-card-alt:before{content:""}.fa-car:before{content:""}.fa-automobile:before{content:""}.fa-hand-holding-hand:before{content:""}.fa-book-open-reader:before{content:""}.fa-book-reader:before{content:""}.fa-mountain-sun:before{content:""}.fa-arrows-left-right-to-line:before{content:""}.fa-dice-d20:before{content:""}.fa-truck-droplet:before{content:""}.fa-file-circle-xmark:before{content:""}.fa-temperature-arrow-up:before{content:""}.fa-temperature-up:before{content:""}.fa-medal:before{content:""}.fa-bed:before{content:""}.fa-square-h:before{content:""}.fa-h-square:before{content:""}.fa-podcast:before{content:""}.fa-temperature-full:before{content:""}.fa-temperature-4:before{content:""}.fa-thermometer-4:before{content:""}.fa-thermometer-full:before{content:""}.fa-bell:before{content:""}.fa-superscript:before{content:""}.fa-plug-circle-xmark:before{content:""}.fa-star-of-life:before{content:""}.fa-phone-slash:before{content:""}.fa-paint-roller:before{content:""}.fa-handshake-angle:before{content:""}.fa-hands-helping:before{content:""}.fa-location-dot:before{content:""}.fa-map-marker-alt:before{content:""}.fa-file:before{content:""}.fa-greater-than:before{content:">"}.fa-person-swimming:before{content:""}.fa-swimmer:before{content:""}.fa-arrow-down:before{content:""}.fa-droplet:before{content:""}.fa-tint:before{content:""}.fa-eraser:before{content:""}.fa-earth-americas:before{content:""}.fa-earth:before{content:""}.fa-earth-america:before{content:""}.fa-globe-americas:before{content:""}.fa-person-burst:before{content:""}.fa-dove:before{content:""}.fa-battery-empty:before{content:""}.fa-battery-0:before{content:""}.fa-socks:before{content:""}.fa-inbox:before{content:""}.fa-section:before{content:""}.fa-gauge-high:before{content:""}.fa-tachometer-alt:before{content:""}.fa-tachometer-alt-fast:before{content:""}.fa-envelope-open-text:before{content:""}.fa-hospital:before{content:""}.fa-hospital-alt:before{content:""}.fa-hospital-wide:before{content:""}.fa-wine-bottle:before{content:""}.fa-chess-rook:before{content:""}.fa-bars-staggered:before{content:""}.fa-reorder:before{content:""}.fa-stream:before{content:""}.fa-dharmachakra:before{content:""}.fa-hotdog:before{content:""}.fa-person-walking-with-cane:before{content:""}.fa-blind:before{content:""}.fa-drum:before{content:""}.fa-ice-cream:before{content:""}.fa-heart-circle-bolt:before{content:""}.fa-fax:before{content:""}.fa-paragraph:before{content:""}.fa-check-to-slot:before{content:""}.fa-vote-yea:before{content:""}.fa-star-half:before{content:""}.fa-boxes-stacked:before{content:""}.fa-boxes:before{content:""}.fa-boxes-alt:before{content:""}.fa-link:before{content:""}.fa-chain:before{content:""}.fa-ear-listen:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-tree-city:before{content:""}.fa-play:before{content:""}.fa-font:before{content:""}.fa-rupiah-sign:before{content:""}.fa-magnifying-glass:before{content:""}.fa-search:before{content:""}.fa-table-tennis-paddle-ball:before{content:""}.fa-ping-pong-paddle-ball:before{content:""}.fa-table-tennis:before{content:""}.fa-person-dots-from-line:before{content:""}.fa-diagnoses:before{content:""}.fa-trash-can-arrow-up:before{content:""}.fa-trash-restore-alt:before{content:""}.fa-naira-sign:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-walkie-talkie:before{content:""}.fa-file-pen:before{content:""}.fa-file-edit:before{content:""}.fa-receipt:before{content:""}.fa-square-pen:before{content:""}.fa-pen-square:before{content:""}.fa-pencil-square:before{content:""}.fa-suitcase-rolling:before{content:""}.fa-person-circle-exclamation:before{content:""}.fa-chevron-down:before{content:""}.fa-battery-full:before{content:""}.fa-battery:before{content:""}.fa-battery-5:before{content:""}.fa-skull-crossbones:before{content:""}.fa-code-compare:before{content:""}.fa-list-ul:before{content:""}.fa-list-dots:before{content:""}.fa-school-lock:before{content:""}.fa-tower-cell:before{content:""}.fa-down-long:before{content:""}.fa-long-arrow-alt-down:before{content:""}.fa-ranking-star:before{content:""}.fa-chess-king:before{content:""}.fa-person-harassing:before{content:""}.fa-brazilian-real-sign:before{content:""}.fa-landmark-dome:before{content:""}.fa-landmark-alt:before{content:""}.fa-arrow-up:before{content:""}.fa-tv:before{content:""}.fa-television:before{content:""}.fa-tv-alt:before{content:""}.fa-shrimp:before{content:""}.fa-list-check:before{content:""}.fa-tasks:before{content:""}.fa-jug-detergent:before{content:""}.fa-circle-user:before{content:""}.fa-user-circle:before{content:""}.fa-user-shield:before{content:""}.fa-wind:before{content:""}.fa-car-burst:before{content:""}.fa-car-crash:before{content:""}.fa-y:before{content:"Y"}.fa-person-snowboarding:before{content:""}.fa-snowboarding:before{content:""}.fa-truck-fast:before{content:""}.fa-shipping-fast:before{content:""}.fa-fish:before{content:""}.fa-user-graduate:before{content:""}.fa-circle-half-stroke:before{content:""}.fa-adjust:before{content:""}.fa-clapperboard:before{content:""}.fa-circle-radiation:before{content:""}.fa-radiation-alt:before{content:""}.fa-baseball:before{content:""}.fa-baseball-ball:before{content:""}.fa-jet-fighter-up:before{content:""}.fa-diagram-project:before{content:""}.fa-project-diagram:before{content:""}.fa-copy:before{content:""}.fa-volume-xmark:before{content:""}.fa-volume-mute:before{content:""}.fa-volume-times:before{content:""}.fa-hand-sparkles:before{content:""}.fa-grip:before{content:""}.fa-grip-horizontal:before{content:""}.fa-share-from-square:before{content:""}.fa-share-square:before{content:""}.fa-child-combatant:before{content:""}.fa-child-rifle:before{content:""}.fa-gun:before{content:""}.fa-square-phone:before{content:""}.fa-phone-square:before{content:""}.fa-plus:before{content:"+"}.fa-add:before{content:"+"}.fa-expand:before{content:""}.fa-computer:before{content:""}.fa-xmark:before{content:""}.fa-close:before{content:""}.fa-multiply:before{content:""}.fa-remove:before{content:""}.fa-times:before{content:""}.fa-arrows-up-down-left-right:before{content:""}.fa-arrows:before{content:""}.fa-chalkboard-user:before{content:""}.fa-chalkboard-teacher:before{content:""}.fa-peso-sign:before{content:""}.fa-building-shield:before{content:""}.fa-baby:before{content:""}.fa-users-line:before{content:""}.fa-quote-left:before{content:""}.fa-quote-left-alt:before{content:""}.fa-tractor:before{content:""}.fa-trash-arrow-up:before{content:""}.fa-trash-restore:before{content:""}.fa-arrow-down-up-lock:before{content:""}.fa-lines-leaning:before{content:""}.fa-ruler-combined:before{content:""}.fa-copyright:before{content:""}.fa-equals:before{content:"="}.fa-blender:before{content:""}.fa-teeth:before{content:""}.fa-shekel-sign:before{content:""}.fa-ils:before{content:""}.fa-shekel:before{content:""}.fa-sheqel:before{content:""}.fa-sheqel-sign:before{content:""}.fa-map:before{content:""}.fa-rocket:before{content:""}.fa-photo-film:before{content:""}.fa-photo-video:before{content:""}.fa-folder-minus:before{content:""}.fa-store:before{content:""}.fa-arrow-trend-up:before{content:""}.fa-plug-circle-minus:before{content:""}.fa-sign-hanging:before{content:""}.fa-sign:before{content:""}.fa-bezier-curve:before{content:""}.fa-bell-slash:before{content:""}.fa-tablet:before{content:""}.fa-tablet-android:before{content:""}.fa-school-flag:before{content:""}.fa-fill:before{content:""}.fa-angle-up:before{content:""}.fa-drumstick-bite:before{content:""}.fa-holly-berry:before{content:""}.fa-chevron-left:before{content:""}.fa-bacteria:before{content:""}.fa-hand-lizard:before{content:""}.fa-notdef:before{content:""}.fa-disease:before{content:""}.fa-briefcase-medical:before{content:""}.fa-genderless:before{content:""}.fa-chevron-right:before{content:""}.fa-retweet:before{content:""}.fa-car-rear:before{content:""}.fa-car-alt:before{content:""}.fa-pump-soap:before{content:""}.fa-video-slash:before{content:""}.fa-battery-quarter:before{content:""}.fa-battery-2:before{content:""}.fa-radio:before{content:""}.fa-baby-carriage:before{content:""}.fa-carriage-baby:before{content:""}.fa-traffic-light:before{content:""}.fa-thermometer:before{content:""}.fa-vr-cardboard:before{content:""}.fa-hand-middle-finger:before{content:""}.fa-percent:before{content:"%"}.fa-percentage:before{content:"%"}.fa-truck-moving:before{content:""}.fa-glass-water-droplet:before{content:""}.fa-display:before{content:""}.fa-face-smile:before{content:""}.fa-smile:before{content:""}.fa-thumbtack:before{content:""}.fa-thumb-tack:before{content:""}.fa-trophy:before{content:""}.fa-person-praying:before{content:""}.fa-pray:before{content:""}.fa-hammer:before{content:""}.fa-hand-peace:before{content:""}.fa-rotate:before{content:""}.fa-sync-alt:before{content:""}.fa-spinner:before{content:""}.fa-robot:before{content:""}.fa-peace:before{content:""}.fa-gears:before{content:""}.fa-cogs:before{content:""}.fa-warehouse:before{content:""}.fa-arrow-up-right-dots:before{content:""}.fa-splotch:before{content:""}.fa-face-grin-hearts:before{content:""}.fa-grin-hearts:before{content:""}.fa-dice-four:before{content:""}.fa-sim-card:before{content:""}.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-mercury:before{content:""}.fa-arrow-turn-down:before{content:""}.fa-level-down:before{content:""}.fa-person-falling-burst:before{content:""}.fa-award:before{content:""}.fa-ticket-simple:before{content:""}.fa-ticket-alt:before{content:""}.fa-building:before{content:""}.fa-angles-left:before{content:""}.fa-angle-double-left:before{content:""}.fa-qrcode:before{content:""}.fa-clock-rotate-left:before{content:""}.fa-history:before{content:""}.fa-face-grin-beam-sweat:before{content:""}.fa-grin-beam-sweat:before{content:""}.fa-file-export:before{content:""}.fa-arrow-right-from-file:before{content:""}.fa-shield:before{content:""}.fa-shield-blank:before{content:""}.fa-arrow-up-short-wide:before{content:""}.fa-sort-amount-up-alt:before{content:""}.fa-house-medical:before{content:""}.fa-golf-ball-tee:before{content:""}.fa-golf-ball:before{content:""}.fa-circle-chevron-left:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-house-chimney-window:before{content:""}.fa-pen-nib:before{content:""}.fa-tent-arrow-turn-left:before{content:""}.fa-tents:before{content:""}.fa-wand-magic:before{content:""}.fa-magic:before{content:""}.fa-dog:before{content:""}.fa-carrot:before{content:""}.fa-moon:before{content:""}.fa-wine-glass-empty:before{content:""}.fa-wine-glass-alt:before{content:""}.fa-cheese:before{content:""}.fa-yin-yang:before{content:""}.fa-music:before{content:""}.fa-code-commit:before{content:""}.fa-temperature-low:before{content:""}.fa-person-biking:before{content:""}.fa-biking:before{content:""}.fa-broom:before{content:""}.fa-shield-heart:before{content:""}.fa-gopuram:before{content:""}.fa-earth-oceania:before{content:""}.fa-globe-oceania:before{content:""}.fa-square-xmark:before{content:""}.fa-times-square:before{content:""}.fa-xmark-square:before{content:""}.fa-hashtag:before{content:"#"}.fa-up-right-and-down-left-from-center:before{content:""}.fa-expand-alt:before{content:""}.fa-oil-can:before{content:""}.fa-t:before{content:"T"}.fa-hippo:before{content:""}.fa-chart-column:before{content:""}.fa-infinity:before{content:""}.fa-vial-circle-check:before{content:""}.fa-person-arrow-down-to-line:before{content:""}.fa-voicemail:before{content:""}.fa-fan:before{content:""}.fa-person-walking-luggage:before{content:""}.fa-up-down:before{content:""}.fa-arrows-alt-v:before{content:""}.fa-cloud-moon-rain:before{content:""}.fa-calendar:before{content:""}.fa-trailer:before{content:""}.fa-bahai:before{content:""}.fa-haykal:before{content:""}.fa-sd-card:before{content:""}.fa-dragon:before{content:""}.fa-shoe-prints:before{content:""}.fa-circle-plus:before{content:""}.fa-plus-circle:before{content:""}.fa-face-grin-tongue-wink:before{content:""}.fa-grin-tongue-wink:before{content:""}.fa-hand-holding:before{content:""}.fa-plug-circle-exclamation:before{content:""}.fa-link-slash:before{content:""}.fa-chain-broken:before{content:""}.fa-chain-slash:before{content:""}.fa-unlink:before{content:""}.fa-clone:before{content:""}.fa-person-walking-arrow-loop-left:before{content:""}.fa-arrow-up-z-a:before{content:""}.fa-sort-alpha-up-alt:before{content:""}.fa-fire-flame-curved:before{content:""}.fa-fire-alt:before{content:""}.fa-tornado:before{content:""}.fa-file-circle-plus:before{content:""}.fa-book-quran:before{content:""}.fa-quran:before{content:""}.fa-anchor:before{content:""}.fa-border-all:before{content:""}.fa-face-angry:before{content:""}.fa-angry:before{content:""}.fa-cookie-bite:before{content:""}.fa-arrow-trend-down:before{content:""}.fa-rss:before{content:""}.fa-feed:before{content:""}.fa-draw-polygon:before{content:""}.fa-scale-balanced:before{content:""}.fa-balance-scale:before{content:""}.fa-gauge-simple-high:before{content:""}.fa-tachometer:before{content:""}.fa-tachometer-fast:before{content:""}.fa-shower:before{content:""}.fa-desktop:before{content:""}.fa-desktop-alt:before{content:""}.fa-m:before{content:"M"}.fa-table-list:before{content:""}.fa-th-list:before{content:""}.fa-comment-sms:before{content:""}.fa-sms:before{content:""}.fa-book:before{content:""}.fa-user-plus:before{content:""}.fa-check:before{content:""}.fa-battery-three-quarters:before{content:""}.fa-battery-4:before{content:""}.fa-house-circle-check:before{content:""}.fa-angle-left:before{content:""}.fa-diagram-successor:before{content:""}.fa-truck-arrow-right:before{content:""}.fa-arrows-split-up-and-left:before{content:""}.fa-hand-fist:before{content:""}.fa-fist-raised:before{content:""}.fa-cloud-moon:before{content:""}.fa-briefcase:before{content:""}.fa-person-falling:before{content:""}.fa-image-portrait:before{content:""}.fa-portrait:before{content:""}.fa-user-tag:before{content:""}.fa-rug:before{content:""}.fa-earth-europe:before{content:""}.fa-globe-europe:before{content:""}.fa-cart-flatbed-suitcase:before{content:""}.fa-luggage-cart:before{content:""}.fa-rectangle-xmark:before{content:""}.fa-rectangle-times:before{content:""}.fa-times-rectangle:before{content:""}.fa-window-close:before{content:""}.fa-baht-sign:before{content:""}.fa-book-open:before{content:""}.fa-book-journal-whills:before{content:""}.fa-journal-whills:before{content:""}.fa-handcuffs:before{content:""}.fa-triangle-exclamation:before{content:""}.fa-exclamation-triangle:before{content:""}.fa-warning:before{content:""}.fa-database:before{content:""}.fa-share:before{content:""}.fa-mail-forward:before{content:""}.fa-bottle-droplet:before{content:""}.fa-mask-face:before{content:""}.fa-hill-rockslide:before{content:""}.fa-right-left:before{content:""}.fa-exchange-alt:before{content:""}.fa-paper-plane:before{content:""}.fa-road-circle-exclamation:before{content:""}.fa-dungeon:before{content:""}.fa-align-right:before{content:""}.fa-money-bill-1-wave:before{content:""}.fa-money-bill-wave-alt:before{content:""}.fa-life-ring:before{content:""}.fa-hands:before{content:""}.fa-sign-language:before{content:""}.fa-signing:before{content:""}.fa-calendar-day:before{content:""}.fa-water-ladder:before{content:""}.fa-ladder-water:before{content:""}.fa-swimming-pool:before{content:""}.fa-arrows-up-down:before{content:""}.fa-arrows-v:before{content:""}.fa-face-grimace:before{content:""}.fa-grimace:before{content:""}.fa-wheelchair-move:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-turn-down:before{content:""}.fa-level-down-alt:before{content:""}.fa-person-walking-arrow-right:before{content:""}.fa-square-envelope:before{content:""}.fa-envelope-square:before{content:""}.fa-dice:before{content:""}.fa-bowling-ball:before{content:""}.fa-brain:before{content:""}.fa-bandage:before{content:""}.fa-band-aid:before{content:""}.fa-calendar-minus:before{content:""}.fa-circle-xmark:before{content:""}.fa-times-circle:before{content:""}.fa-xmark-circle:before{content:""}.fa-gifts:before{content:""}.fa-hotel:before{content:""}.fa-earth-asia:before{content:""}.fa-globe-asia:before{content:""}.fa-id-card-clip:before{content:""}.fa-id-card-alt:before{content:""}.fa-magnifying-glass-plus:before{content:""}.fa-search-plus:before{content:""}.fa-thumbs-up:before{content:""}.fa-user-clock:before{content:""}.fa-hand-dots:before{content:""}.fa-allergies:before{content:""}.fa-file-invoice:before{content:""}.fa-window-minimize:before{content:""}.fa-mug-saucer:before{content:""}.fa-coffee:before{content:""}.fa-brush:before{content:""}.fa-mask:before{content:""}.fa-magnifying-glass-minus:before{content:""}.fa-search-minus:before{content:""}.fa-ruler-vertical:before{content:""}.fa-user-large:before{content:""}.fa-user-alt:before{content:""}.fa-train-tram:before{content:""}.fa-user-nurse:before{content:""}.fa-syringe:before{content:""}.fa-cloud-sun:before{content:""}.fa-stopwatch-20:before{content:""}.fa-square-full:before{content:""}.fa-magnet:before{content:""}.fa-jar:before{content:""}.fa-note-sticky:before{content:""}.fa-sticky-note:before{content:""}.fa-bug-slash:before{content:""}.fa-arrow-up-from-water-pump:before{content:""}.fa-bone:before{content:""}.fa-user-injured:before{content:""}.fa-face-sad-tear:before{content:""}.fa-sad-tear:before{content:""}.fa-plane:before{content:""}.fa-tent-arrows-down:before{content:""}.fa-exclamation:before{content:"!"}.fa-arrows-spin:before{content:""}.fa-print:before{content:""}.fa-turkish-lira-sign:before{content:""}.fa-try:before{content:""}.fa-turkish-lira:before{content:""}.fa-dollar-sign:before{content:"$"}.fa-dollar:before{content:"$"}.fa-usd:before{content:"$"}.fa-x:before{content:"X"}.fa-magnifying-glass-dollar:before{content:""}.fa-search-dollar:before{content:""}.fa-users-gear:before{content:""}.fa-users-cog:before{content:""}.fa-person-military-pointing:before{content:""}.fa-building-columns:before{content:""}.fa-bank:before{content:""}.fa-institution:before{content:""}.fa-museum:before{content:""}.fa-university:before{content:""}.fa-umbrella:before{content:""}.fa-trowel:before{content:""}.fa-d:before{content:"D"}.fa-stapler:before{content:""}.fa-masks-theater:before{content:""}.fa-theater-masks:before{content:""}.fa-kip-sign:before{content:""}.fa-hand-point-left:before{content:""}.fa-handshake-simple:before{content:""}.fa-handshake-alt:before{content:""}.fa-jet-fighter:before{content:""}.fa-fighter-jet:before{content:""}.fa-square-share-nodes:before{content:""}.fa-share-alt-square:before{content:""}.fa-barcode:before{content:""}.fa-plus-minus:before{content:""}.fa-video:before{content:""}.fa-video-camera:before{content:""}.fa-graduation-cap:before{content:""}.fa-mortar-board:before{content:""}.fa-hand-holding-medical:before{content:""}.fa-person-circle-check:before{content:""}.fa-turn-up:before{content:""}.fa-level-up-alt:before{content:""}.sr-only,.fa-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sr-only-focusable:not(:focus),.fa-sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:root,:host{--fa-style-family-brands: "Font Awesome 6 Brands";--fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(/static/vue3/assets/fa-brands-400-C99Yv4gD.woff2) format("woff2"),url(/static/vue3/assets/fa-brands-400-DtZKBM2a.ttf) format("truetype")}.fab,.fa-brands{font-weight:400}.fa-monero:before{content:""}.fa-hooli:before{content:""}.fa-yelp:before{content:""}.fa-cc-visa:before{content:""}.fa-lastfm:before{content:""}.fa-shopware:before{content:""}.fa-creative-commons-nc:before{content:""}.fa-aws:before{content:""}.fa-redhat:before{content:""}.fa-yoast:before{content:""}.fa-cloudflare:before{content:""}.fa-ups:before{content:""}.fa-pixiv:before{content:""}.fa-wpexplorer:before{content:""}.fa-dyalog:before{content:""}.fa-bity:before{content:""}.fa-stackpath:before{content:""}.fa-buysellads:before{content:""}.fa-first-order:before{content:""}.fa-modx:before{content:""}.fa-guilded:before{content:""}.fa-vnv:before{content:""}.fa-square-js:before{content:""}.fa-js-square:before{content:""}.fa-microsoft:before{content:""}.fa-qq:before{content:""}.fa-orcid:before{content:""}.fa-java:before{content:""}.fa-invision:before{content:""}.fa-creative-commons-pd-alt:before{content:""}.fa-centercode:before{content:""}.fa-glide-g:before{content:""}.fa-drupal:before{content:""}.fa-hire-a-helper:before{content:""}.fa-creative-commons-by:before{content:""}.fa-unity:before{content:""}.fa-whmcs:before{content:""}.fa-rocketchat:before{content:""}.fa-vk:before{content:""}.fa-untappd:before{content:""}.fa-mailchimp:before{content:""}.fa-css3-alt:before{content:""}.fa-square-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-vimeo-v:before{content:""}.fa-contao:before{content:""}.fa-square-font-awesome:before{content:""}.fa-deskpro:before{content:""}.fa-brave:before{content:""}.fa-sistrix:before{content:""}.fa-square-instagram:before{content:""}.fa-instagram-square:before{content:""}.fa-battle-net:before{content:""}.fa-the-red-yeti:before{content:""}.fa-square-hacker-news:before{content:""}.fa-hacker-news-square:before{content:""}.fa-edge:before{content:""}.fa-threads:before{content:""}.fa-napster:before{content:""}.fa-square-snapchat:before{content:""}.fa-snapchat-square:before{content:""}.fa-google-plus-g:before{content:""}.fa-artstation:before{content:""}.fa-markdown:before{content:""}.fa-sourcetree:before{content:""}.fa-google-plus:before{content:""}.fa-diaspora:before{content:""}.fa-foursquare:before{content:""}.fa-stack-overflow:before{content:""}.fa-github-alt:before{content:""}.fa-phoenix-squadron:before{content:""}.fa-pagelines:before{content:""}.fa-algolia:before{content:""}.fa-red-river:before{content:""}.fa-creative-commons-sa:before{content:""}.fa-safari:before{content:""}.fa-google:before{content:""}.fa-square-font-awesome-stroke:before{content:""}.fa-font-awesome-alt:before{content:""}.fa-atlassian:before{content:""}.fa-linkedin-in:before{content:""}.fa-digital-ocean:before{content:""}.fa-nimblr:before{content:""}.fa-chromecast:before{content:""}.fa-evernote:before{content:""}.fa-hacker-news:before{content:""}.fa-creative-commons-sampling:before{content:""}.fa-adversal:before{content:""}.fa-creative-commons:before{content:""}.fa-watchman-monitoring:before{content:""}.fa-fonticons:before{content:""}.fa-weixin:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-codepen:before{content:""}.fa-git-alt:before{content:""}.fa-lyft:before{content:""}.fa-rev:before{content:""}.fa-windows:before{content:""}.fa-wizards-of-the-coast:before{content:""}.fa-square-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-meetup:before{content:""}.fa-centos:before{content:""}.fa-adn:before{content:""}.fa-cloudsmith:before{content:""}.fa-opensuse:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-square-dribbble:before{content:""}.fa-dribbble-square:before{content:""}.fa-codiepie:before{content:""}.fa-node:before{content:""}.fa-mix:before{content:""}.fa-steam:before{content:""}.fa-cc-apple-pay:before{content:""}.fa-scribd:before{content:""}.fa-debian:before{content:""}.fa-openid:before{content:""}.fa-instalod:before{content:""}.fa-expeditedssl:before{content:""}.fa-sellcast:before{content:""}.fa-square-twitter:before{content:""}.fa-twitter-square:before{content:""}.fa-r-project:before{content:""}.fa-delicious:before{content:""}.fa-freebsd:before{content:""}.fa-vuejs:before{content:""}.fa-accusoft:before{content:""}.fa-ioxhost:before{content:""}.fa-fonticons-fi:before{content:""}.fa-app-store:before{content:""}.fa-cc-mastercard:before{content:""}.fa-itunes-note:before{content:""}.fa-golang:before{content:""}.fa-kickstarter:before{content:""}.fa-grav:before{content:""}.fa-weibo:before{content:""}.fa-uncharted:before{content:""}.fa-firstdraft:before{content:""}.fa-square-youtube:before{content:""}.fa-youtube-square:before{content:""}.fa-wikipedia-w:before{content:""}.fa-wpressr:before{content:""}.fa-rendact:before{content:""}.fa-angellist:before{content:""}.fa-galactic-republic:before{content:""}.fa-nfc-directional:before{content:""}.fa-skype:before{content:""}.fa-joget:before{content:""}.fa-fedora:before{content:""}.fa-stripe-s:before{content:""}.fa-meta:before{content:""}.fa-laravel:before{content:""}.fa-hotjar:before{content:""}.fa-bluetooth-b:before{content:""}.fa-square-letterboxd:before{content:""}.fa-sticker-mule:before{content:""}.fa-creative-commons-zero:before{content:""}.fa-hips:before{content:""}.fa-behance:before{content:""}.fa-reddit:before{content:""}.fa-discord:before{content:""}.fa-chrome:before{content:""}.fa-app-store-ios:before{content:""}.fa-cc-discover:before{content:""}.fa-wpbeginner:before{content:""}.fa-confluence:before{content:""}.fa-shoelace:before{content:""}.fa-mdb:before{content:""}.fa-dochub:before{content:""}.fa-accessible-icon:before{content:""}.fa-ebay:before{content:""}.fa-amazon:before{content:""}.fa-unsplash:before{content:""}.fa-yarn:before{content:""}.fa-square-steam:before{content:""}.fa-steam-square:before{content:""}.fa-500px:before{content:""}.fa-square-vimeo:before{content:""}.fa-vimeo-square:before{content:""}.fa-asymmetrik:before{content:""}.fa-font-awesome:before{content:""}.fa-font-awesome-flag:before{content:""}.fa-font-awesome-logo-full:before{content:""}.fa-gratipay:before{content:""}.fa-apple:before{content:""}.fa-hive:before{content:""}.fa-gitkraken:before{content:""}.fa-keybase:before{content:""}.fa-apple-pay:before{content:""}.fa-padlet:before{content:""}.fa-amazon-pay:before{content:""}.fa-square-github:before{content:""}.fa-github-square:before{content:""}.fa-stumbleupon:before{content:""}.fa-fedex:before{content:""}.fa-phoenix-framework:before{content:""}.fa-shopify:before{content:""}.fa-neos:before{content:""}.fa-square-threads:before{content:""}.fa-hackerrank:before{content:""}.fa-researchgate:before{content:""}.fa-swift:before{content:""}.fa-angular:before{content:""}.fa-speakap:before{content:""}.fa-angrycreative:before{content:""}.fa-y-combinator:before{content:""}.fa-empire:before{content:""}.fa-envira:before{content:""}.fa-google-scholar:before{content:""}.fa-square-gitlab:before{content:""}.fa-gitlab-square:before{content:""}.fa-studiovinari:before{content:""}.fa-pied-piper:before{content:""}.fa-wordpress:before{content:""}.fa-product-hunt:before{content:""}.fa-firefox:before{content:""}.fa-linode:before{content:""}.fa-goodreads:before{content:""}.fa-square-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-jsfiddle:before{content:""}.fa-sith:before{content:""}.fa-themeisle:before{content:""}.fa-page4:before{content:""}.fa-hashnode:before{content:""}.fa-react:before{content:""}.fa-cc-paypal:before{content:""}.fa-squarespace:before{content:""}.fa-cc-stripe:before{content:""}.fa-creative-commons-share:before{content:""}.fa-bitcoin:before{content:""}.fa-keycdn:before{content:""}.fa-opera:before{content:""}.fa-itch-io:before{content:""}.fa-umbraco:before{content:""}.fa-galactic-senate:before{content:""}.fa-ubuntu:before{content:""}.fa-draft2digital:before{content:""}.fa-stripe:before{content:""}.fa-houzz:before{content:""}.fa-gg:before{content:""}.fa-dhl:before{content:""}.fa-square-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-xing:before{content:""}.fa-blackberry:before{content:""}.fa-creative-commons-pd:before{content:""}.fa-playstation:before{content:""}.fa-quinscape:before{content:""}.fa-less:before{content:""}.fa-blogger-b:before{content:""}.fa-opencart:before{content:""}.fa-vine:before{content:""}.fa-signal-messenger:before{content:""}.fa-paypal:before{content:""}.fa-gitlab:before{content:""}.fa-typo3:before{content:""}.fa-reddit-alien:before{content:""}.fa-yahoo:before{content:""}.fa-dailymotion:before{content:""}.fa-affiliatetheme:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-bootstrap:before{content:""}.fa-odnoklassniki:before{content:""}.fa-nfc-symbol:before{content:""}.fa-mintbit:before{content:""}.fa-ethereum:before{content:""}.fa-speaker-deck:before{content:""}.fa-creative-commons-nc-eu:before{content:""}.fa-patreon:before{content:""}.fa-avianex:before{content:""}.fa-ello:before{content:""}.fa-gofore:before{content:""}.fa-bimobject:before{content:""}.fa-brave-reverse:before{content:""}.fa-facebook-f:before{content:""}.fa-square-google-plus:before{content:""}.fa-google-plus-square:before{content:""}.fa-mandalorian:before{content:""}.fa-first-order-alt:before{content:""}.fa-osi:before{content:""}.fa-google-wallet:before{content:""}.fa-d-and-d-beyond:before{content:""}.fa-periscope:before{content:""}.fa-fulcrum:before{content:""}.fa-cloudscale:before{content:""}.fa-forumbee:before{content:""}.fa-mizuni:before{content:""}.fa-schlix:before{content:""}.fa-square-xing:before{content:""}.fa-xing-square:before{content:""}.fa-bandcamp:before{content:""}.fa-wpforms:before{content:""}.fa-cloudversify:before{content:""}.fa-usps:before{content:""}.fa-megaport:before{content:""}.fa-magento:before{content:""}.fa-spotify:before{content:""}.fa-optin-monster:before{content:""}.fa-fly:before{content:""}.fa-aviato:before{content:""}.fa-itunes:before{content:""}.fa-cuttlefish:before{content:""}.fa-blogger:before{content:""}.fa-flickr:before{content:""}.fa-viber:before{content:""}.fa-soundcloud:before{content:""}.fa-digg:before{content:""}.fa-tencent-weibo:before{content:""}.fa-letterboxd:before{content:""}.fa-symfony:before{content:""}.fa-maxcdn:before{content:""}.fa-etsy:before{content:""}.fa-facebook-messenger:before{content:""}.fa-audible:before{content:""}.fa-think-peaks:before{content:""}.fa-bilibili:before{content:""}.fa-erlang:before{content:""}.fa-x-twitter:before{content:""}.fa-cotton-bureau:before{content:""}.fa-dashcube:before{content:""}.fa-42-group:before{content:""}.fa-innosoft:before{content:""}.fa-stack-exchange:before{content:""}.fa-elementor:before{content:""}.fa-square-pied-piper:before{content:""}.fa-pied-piper-square:before{content:""}.fa-creative-commons-nd:before{content:""}.fa-palfed:before{content:""}.fa-superpowers:before{content:""}.fa-resolving:before{content:""}.fa-xbox:before{content:""}.fa-searchengin:before{content:""}.fa-tiktok:before{content:""}.fa-square-facebook:before{content:""}.fa-facebook-square:before{content:""}.fa-renren:before{content:""}.fa-linux:before{content:""}.fa-glide:before{content:""}.fa-linkedin:before{content:""}.fa-hubspot:before{content:""}.fa-deploydog:before{content:""}.fa-twitch:before{content:""}.fa-ravelry:before{content:""}.fa-mixer:before{content:""}.fa-square-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-vimeo:before{content:""}.fa-mendeley:before{content:""}.fa-uniregistry:before{content:""}.fa-figma:before{content:""}.fa-creative-commons-remix:before{content:""}.fa-cc-amazon-pay:before{content:""}.fa-dropbox:before{content:""}.fa-instagram:before{content:""}.fa-cmplid:before{content:""}.fa-upwork:before{content:""}.fa-facebook:before{content:""}.fa-gripfire:before{content:""}.fa-jedi-order:before{content:""}.fa-uikit:before{content:""}.fa-fort-awesome-alt:before{content:""}.fa-phabricator:before{content:""}.fa-ussunnah:before{content:""}.fa-earlybirds:before{content:""}.fa-trade-federation:before{content:""}.fa-autoprefixer:before{content:""}.fa-whatsapp:before{content:""}.fa-slideshare:before{content:""}.fa-google-play:before{content:""}.fa-viadeo:before{content:""}.fa-line:before{content:""}.fa-google-drive:before{content:""}.fa-servicestack:before{content:""}.fa-simplybuilt:before{content:""}.fa-bitbucket:before{content:""}.fa-imdb:before{content:""}.fa-deezer:before{content:""}.fa-raspberry-pi:before{content:""}.fa-jira:before{content:""}.fa-docker:before{content:""}.fa-screenpal:before{content:""}.fa-bluetooth:before{content:""}.fa-gitter:before{content:""}.fa-d-and-d:before{content:""}.fa-microblog:before{content:""}.fa-cc-diners-club:before{content:""}.fa-gg-circle:before{content:""}.fa-pied-piper-hat:before{content:""}.fa-kickstarter-k:before{content:""}.fa-yandex:before{content:""}.fa-readme:before{content:""}.fa-html5:before{content:""}.fa-sellsy:before{content:""}.fa-sass:before{content:""}.fa-wirsindhandwerk:before{content:""}.fa-wsh:before{content:""}.fa-buromobelexperte:before{content:""}.fa-salesforce:before{content:""}.fa-octopus-deploy:before{content:""}.fa-medapps:before{content:""}.fa-ns8:before{content:""}.fa-pinterest-p:before{content:""}.fa-apper:before{content:""}.fa-fort-awesome:before{content:""}.fa-waze:before{content:""}.fa-cc-jcb:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-fantasy-flight-games:before{content:""}.fa-rust:before{content:""}.fa-wix:before{content:""}.fa-square-behance:before{content:""}.fa-behance-square:before{content:""}.fa-supple:before{content:""}.fa-webflow:before{content:""}.fa-rebel:before{content:""}.fa-css3:before{content:""}.fa-staylinked:before{content:""}.fa-kaggle:before{content:""}.fa-space-awesome:before{content:""}.fa-deviantart:before{content:""}.fa-cpanel:before{content:""}.fa-goodreads-g:before{content:""}.fa-square-git:before{content:""}.fa-git-square:before{content:""}.fa-square-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-trello:before{content:""}.fa-creative-commons-nc-jp:before{content:""}.fa-get-pocket:before{content:""}.fa-perbyte:before{content:""}.fa-grunt:before{content:""}.fa-weebly:before{content:""}.fa-connectdevelop:before{content:""}.fa-leanpub:before{content:""}.fa-black-tie:before{content:""}.fa-themeco:before{content:""}.fa-python:before{content:""}.fa-android:before{content:""}.fa-bots:before{content:""}.fa-free-code-camp:before{content:""}.fa-hornbill:before{content:""}.fa-js:before{content:""}.fa-ideal:before{content:""}.fa-git:before{content:""}.fa-dev:before{content:""}.fa-sketch:before{content:""}.fa-yandex-international:before{content:""}.fa-cc-amex:before{content:""}.fa-uber:before{content:""}.fa-github:before{content:""}.fa-php:before{content:""}.fa-alipay:before{content:""}.fa-youtube:before{content:""}.fa-skyatlas:before{content:""}.fa-firefox-browser:before{content:""}.fa-replyd:before{content:""}.fa-suse:before{content:""}.fa-jenkins:before{content:""}.fa-twitter:before{content:""}.fa-rockrms:before{content:""}.fa-pinterest:before{content:""}.fa-buffer:before{content:""}.fa-npm:before{content:""}.fa-yammer:before{content:""}.fa-btc:before{content:""}.fa-dribbble:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-internet-explorer:before{content:""}.fa-stubber:before{content:""}.fa-telegram:before{content:""}.fa-telegram-plane:before{content:""}.fa-old-republic:before{content:""}.fa-odysee:before{content:""}.fa-square-whatsapp:before{content:""}.fa-whatsapp-square:before{content:""}.fa-node-js:before{content:""}.fa-edge-legacy:before{content:""}.fa-slack:before{content:""}.fa-slack-hash:before{content:""}.fa-medrt:before{content:""}.fa-usb:before{content:""}.fa-tumblr:before{content:""}.fa-vaadin:before{content:""}.fa-quora:before{content:""}.fa-square-x-twitter:before{content:""}.fa-reacteurope:before{content:""}.fa-medium:before{content:""}.fa-medium-m:before{content:""}.fa-amilia:before{content:""}.fa-mixcloud:before{content:""}.fa-flipboard:before{content:""}.fa-viacoin:before{content:""}.fa-critical-role:before{content:""}.fa-sitrox:before{content:""}.fa-discourse:before{content:""}.fa-joomla:before{content:""}.fa-mastodon:before{content:""}.fa-airbnb:before{content:""}.fa-wolf-pack-battalion:before{content:""}.fa-buy-n-large:before{content:""}.fa-gulp:before{content:""}.fa-creative-commons-sampling-plus:before{content:""}.fa-strava:before{content:""}.fa-ember:before{content:""}.fa-canadian-maple-leaf:before{content:""}.fa-teamspeak:before{content:""}.fa-pushed:before{content:""}.fa-wordpress-simple:before{content:""}.fa-nutritionix:before{content:""}.fa-wodu:before{content:""}.fa-google-pay:before{content:""}.fa-intercom:before{content:""}.fa-zhihu:before{content:""}.fa-korvue:before{content:""}.fa-pix:before{content:""}.fa-steam-symbol:before{content:""}:root,:host{--fa-style-family-classic: "Font Awesome 6 Free";--fa-font-regular: normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(/static/vue3/assets/fa-regular-400-OOsPf1xj.woff2) format("woff2"),url(/static/vue3/assets/fa-regular-400-BMFokQJ2.ttf) format("truetype")}.far,.fa-regular{font-weight:400}:root,:host{--fa-style-family-classic: "Font Awesome 6 Free";--fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(/static/vue3/assets/fa-solid-900-DAI24fNt.woff2) format("woff2"),url(/static/vue3/assets/fa-solid-900-DM0teJdg.ttf) format("truetype")}.fas,.fa-solid{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(/static/vue3/assets/fa-brands-400-C99Yv4gD.woff2) format("woff2"),url(/static/vue3/assets/fa-brands-400-DtZKBM2a.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(/static/vue3/assets/fa-solid-900-DAI24fNt.woff2) format("woff2"),url(/static/vue3/assets/fa-solid-900-DM0teJdg.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(/static/vue3/assets/fa-regular-400-OOsPf1xj.woff2) format("woff2"),url(/static/vue3/assets/fa-regular-400-BMFokQJ2.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/static/vue3/assets/fa-solid-900-DAI24fNt.woff2) format("woff2"),url(/static/vue3/assets/fa-solid-900-DM0teJdg.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/static/vue3/assets/fa-brands-400-C99Yv4gD.woff2) format("woff2"),url(/static/vue3/assets/fa-brands-400-DtZKBM2a.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/static/vue3/assets/fa-regular-400-OOsPf1xj.woff2) format("woff2"),url(/static/vue3/assets/fa-regular-400-BMFokQJ2.ttf) format("truetype");unicode-range:U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC}@font-face{font-family:FontAwesome;font-display:block;src:url(/static/vue3/assets/fa-v4compatibility-aR9vOKaP.woff2) format("woff2"),url(/static/vue3/assets/fa-v4compatibility-F0dlVTLQ.ttf) format("truetype");unicode-range:U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A}@keyframes v-shake{59%{margin-left:0}60%,80%{margin-left:2px}70%,90%{margin-left:-2px}}.bg-black{background-color:#000!important;color:#fff!important}.bg-white{background-color:#fff!important;color:#000!important}.bg-transparent{background-color:transparent!important;color:currentColor!important}.bg-red{background-color:#f44336!important;color:#fff!important}.bg-red-lighten-5{background-color:#ffebee!important;color:#000!important}.bg-red-lighten-4{background-color:#ffcdd2!important;color:#000!important}.bg-red-lighten-3{background-color:#ef9a9a!important;color:#000!important}.bg-red-lighten-2{background-color:#e57373!important;color:#fff!important}.bg-red-lighten-1{background-color:#ef5350!important;color:#fff!important}.bg-red-darken-1{background-color:#e53935!important;color:#fff!important}.bg-red-darken-2{background-color:#d32f2f!important;color:#fff!important}.bg-red-darken-3{background-color:#c62828!important;color:#fff!important}.bg-red-darken-4{background-color:#b71c1c!important;color:#fff!important}.bg-red-accent-1{background-color:#ff8a80!important;color:#000!important}.bg-red-accent-2{background-color:#ff5252!important;color:#fff!important}.bg-red-accent-3{background-color:#ff1744!important;color:#fff!important}.bg-red-accent-4{background-color:#d50000!important;color:#fff!important}.bg-pink{background-color:#e91e63!important;color:#fff!important}.bg-pink-lighten-5{background-color:#fce4ec!important;color:#000!important}.bg-pink-lighten-4{background-color:#f8bbd0!important;color:#000!important}.bg-pink-lighten-3{background-color:#f48fb1!important;color:#000!important}.bg-pink-lighten-2{background-color:#f06292!important;color:#fff!important}.bg-pink-lighten-1{background-color:#ec407a!important;color:#fff!important}.bg-pink-darken-1{background-color:#d81b60!important;color:#fff!important}.bg-pink-darken-2{background-color:#c2185b!important;color:#fff!important}.bg-pink-darken-3{background-color:#ad1457!important;color:#fff!important}.bg-pink-darken-4{background-color:#880e4f!important;color:#fff!important}.bg-pink-accent-1{background-color:#ff80ab!important;color:#fff!important}.bg-pink-accent-2{background-color:#ff4081!important;color:#fff!important}.bg-pink-accent-3{background-color:#f50057!important;color:#fff!important}.bg-pink-accent-4{background-color:#c51162!important;color:#fff!important}.bg-purple{background-color:#9c27b0!important;color:#fff!important}.bg-purple-lighten-5{background-color:#f3e5f5!important;color:#000!important}.bg-purple-lighten-4{background-color:#e1bee7!important;color:#000!important}.bg-purple-lighten-3{background-color:#ce93d8!important;color:#fff!important}.bg-purple-lighten-2{background-color:#ba68c8!important;color:#fff!important}.bg-purple-lighten-1{background-color:#ab47bc!important;color:#fff!important}.bg-purple-darken-1{background-color:#8e24aa!important;color:#fff!important}.bg-purple-darken-2{background-color:#7b1fa2!important;color:#fff!important}.bg-purple-darken-3{background-color:#6a1b9a!important;color:#fff!important}.bg-purple-darken-4{background-color:#4a148c!important;color:#fff!important}.bg-purple-accent-1{background-color:#ea80fc!important;color:#fff!important}.bg-purple-accent-2{background-color:#e040fb!important;color:#fff!important}.bg-purple-accent-3{background-color:#d500f9!important;color:#fff!important}.bg-purple-accent-4{background-color:#a0f!important;color:#fff!important}.bg-deep-purple{background-color:#673ab7!important;color:#fff!important}.bg-deep-purple-lighten-5{background-color:#ede7f6!important;color:#000!important}.bg-deep-purple-lighten-4{background-color:#d1c4e9!important;color:#000!important}.bg-deep-purple-lighten-3{background-color:#b39ddb!important;color:#fff!important}.bg-deep-purple-lighten-2{background-color:#9575cd!important;color:#fff!important}.bg-deep-purple-lighten-1{background-color:#7e57c2!important;color:#fff!important}.bg-deep-purple-darken-1{background-color:#5e35b1!important;color:#fff!important}.bg-deep-purple-darken-2{background-color:#512da8!important;color:#fff!important}.bg-deep-purple-darken-3{background-color:#4527a0!important;color:#fff!important}.bg-deep-purple-darken-4{background-color:#311b92!important;color:#fff!important}.bg-deep-purple-accent-1{background-color:#b388ff!important;color:#fff!important}.bg-deep-purple-accent-2{background-color:#7c4dff!important;color:#fff!important}.bg-deep-purple-accent-3{background-color:#651fff!important;color:#fff!important}.bg-deep-purple-accent-4{background-color:#6200ea!important;color:#fff!important}.bg-indigo{background-color:#3f51b5!important;color:#fff!important}.bg-indigo-lighten-5{background-color:#e8eaf6!important;color:#000!important}.bg-indigo-lighten-4{background-color:#c5cae9!important;color:#000!important}.bg-indigo-lighten-3{background-color:#9fa8da!important;color:#fff!important}.bg-indigo-lighten-2{background-color:#7986cb!important;color:#fff!important}.bg-indigo-lighten-1{background-color:#5c6bc0!important;color:#fff!important}.bg-indigo-darken-1{background-color:#3949ab!important;color:#fff!important}.bg-indigo-darken-2{background-color:#303f9f!important;color:#fff!important}.bg-indigo-darken-3{background-color:#283593!important;color:#fff!important}.bg-indigo-darken-4{background-color:#1a237e!important;color:#fff!important}.bg-indigo-accent-1{background-color:#8c9eff!important;color:#fff!important}.bg-indigo-accent-2{background-color:#536dfe!important;color:#fff!important}.bg-indigo-accent-3{background-color:#3d5afe!important;color:#fff!important}.bg-indigo-accent-4{background-color:#304ffe!important;color:#fff!important}.bg-blue{background-color:#2196f3!important;color:#fff!important}.bg-blue-lighten-5{background-color:#e3f2fd!important;color:#000!important}.bg-blue-lighten-4{background-color:#bbdefb!important;color:#000!important}.bg-blue-lighten-3{background-color:#90caf9!important;color:#000!important}.bg-blue-lighten-2{background-color:#64b5f6!important;color:#000!important}.bg-blue-lighten-1{background-color:#42a5f5!important;color:#fff!important}.bg-blue-darken-1{background-color:#1e88e5!important;color:#fff!important}.bg-blue-darken-2{background-color:#1976d2!important;color:#fff!important}.bg-blue-darken-3{background-color:#1565c0!important;color:#fff!important}.bg-blue-darken-4{background-color:#0d47a1!important;color:#fff!important}.bg-blue-accent-1{background-color:#82b1ff!important;color:#000!important}.bg-blue-accent-2{background-color:#448aff!important;color:#fff!important}.bg-blue-accent-3{background-color:#2979ff!important;color:#fff!important}.bg-blue-accent-4{background-color:#2962ff!important;color:#fff!important}.bg-light-blue{background-color:#03a9f4!important;color:#fff!important}.bg-light-blue-lighten-5{background-color:#e1f5fe!important;color:#000!important}.bg-light-blue-lighten-4{background-color:#b3e5fc!important;color:#000!important}.bg-light-blue-lighten-3{background-color:#81d4fa!important;color:#000!important}.bg-light-blue-lighten-2{background-color:#4fc3f7!important;color:#000!important}.bg-light-blue-lighten-1{background-color:#29b6f6!important;color:#000!important}.bg-light-blue-darken-1{background-color:#039be5!important;color:#fff!important}.bg-light-blue-darken-2{background-color:#0288d1!important;color:#fff!important}.bg-light-blue-darken-3{background-color:#0277bd!important;color:#fff!important}.bg-light-blue-darken-4{background-color:#01579b!important;color:#fff!important}.bg-light-blue-accent-1{background-color:#80d8ff!important;color:#000!important}.bg-light-blue-accent-2{background-color:#40c4ff!important;color:#000!important}.bg-light-blue-accent-3{background-color:#00b0ff!important;color:#fff!important}.bg-light-blue-accent-4{background-color:#0091ea!important;color:#fff!important}.bg-cyan{background-color:#00bcd4!important;color:#000!important}.bg-cyan-lighten-5{background-color:#e0f7fa!important;color:#000!important}.bg-cyan-lighten-4{background-color:#b2ebf2!important;color:#000!important}.bg-cyan-lighten-3{background-color:#80deea!important;color:#000!important}.bg-cyan-lighten-2{background-color:#4dd0e1!important;color:#000!important}.bg-cyan-lighten-1{background-color:#26c6da!important;color:#000!important}.bg-cyan-darken-1{background-color:#00acc1!important;color:#fff!important}.bg-cyan-darken-2{background-color:#0097a7!important;color:#fff!important}.bg-cyan-darken-3{background-color:#00838f!important;color:#fff!important}.bg-cyan-darken-4{background-color:#006064!important;color:#fff!important}.bg-cyan-accent-1{background-color:#84ffff!important;color:#000!important}.bg-cyan-accent-2{background-color:#18ffff!important;color:#000!important}.bg-cyan-accent-3{background-color:#00e5ff!important;color:#000!important}.bg-cyan-accent-4{background-color:#00b8d4!important;color:#fff!important}.bg-teal{background-color:#009688!important;color:#fff!important}.bg-teal-lighten-5{background-color:#e0f2f1!important;color:#000!important}.bg-teal-lighten-4{background-color:#b2dfdb!important;color:#000!important}.bg-teal-lighten-3{background-color:#80cbc4!important;color:#000!important}.bg-teal-lighten-2{background-color:#4db6ac!important;color:#fff!important}.bg-teal-lighten-1{background-color:#26a69a!important;color:#fff!important}.bg-teal-darken-1{background-color:#00897b!important;color:#fff!important}.bg-teal-darken-2{background-color:#00796b!important;color:#fff!important}.bg-teal-darken-3{background-color:#00695c!important;color:#fff!important}.bg-teal-darken-4{background-color:#004d40!important;color:#fff!important}.bg-teal-accent-1{background-color:#a7ffeb!important;color:#000!important}.bg-teal-accent-2{background-color:#64ffda!important;color:#000!important}.bg-teal-accent-3{background-color:#1de9b6!important;color:#000!important}.bg-teal-accent-4{background-color:#00bfa5!important;color:#fff!important}.bg-green{background-color:#4caf50!important;color:#fff!important}.bg-green-lighten-5{background-color:#e8f5e9!important;color:#000!important}.bg-green-lighten-4{background-color:#c8e6c9!important;color:#000!important}.bg-green-lighten-3{background-color:#a5d6a7!important;color:#000!important}.bg-green-lighten-2{background-color:#81c784!important;color:#000!important}.bg-green-lighten-1{background-color:#66bb6a!important;color:#fff!important}.bg-green-darken-1{background-color:#43a047!important;color:#fff!important}.bg-green-darken-2{background-color:#388e3c!important;color:#fff!important}.bg-green-darken-3{background-color:#2e7d32!important;color:#fff!important}.bg-green-darken-4{background-color:#1b5e20!important;color:#fff!important}.bg-green-accent-1{background-color:#b9f6ca!important;color:#000!important}.bg-green-accent-2{background-color:#69f0ae!important;color:#000!important}.bg-green-accent-3{background-color:#00e676!important;color:#000!important}.bg-green-accent-4{background-color:#00c853!important;color:#000!important}.bg-light-green{background-color:#8bc34a!important;color:#000!important}.bg-light-green-lighten-5{background-color:#f1f8e9!important;color:#000!important}.bg-light-green-lighten-4{background-color:#dcedc8!important;color:#000!important}.bg-light-green-lighten-3{background-color:#c5e1a5!important;color:#000!important}.bg-light-green-lighten-2{background-color:#aed581!important;color:#000!important}.bg-light-green-lighten-1{background-color:#9ccc65!important;color:#000!important}.bg-light-green-darken-1{background-color:#7cb342!important;color:#fff!important}.bg-light-green-darken-2{background-color:#689f38!important;color:#fff!important}.bg-light-green-darken-3{background-color:#558b2f!important;color:#fff!important}.bg-light-green-darken-4{background-color:#33691e!important;color:#fff!important}.bg-light-green-accent-1{background-color:#ccff90!important;color:#000!important}.bg-light-green-accent-2{background-color:#b2ff59!important;color:#000!important}.bg-light-green-accent-3{background-color:#76ff03!important;color:#000!important}.bg-light-green-accent-4{background-color:#64dd17!important;color:#000!important}.bg-lime{background-color:#cddc39!important;color:#000!important}.bg-lime-lighten-5{background-color:#f9fbe7!important;color:#000!important}.bg-lime-lighten-4{background-color:#f0f4c3!important;color:#000!important}.bg-lime-lighten-3{background-color:#e6ee9c!important;color:#000!important}.bg-lime-lighten-2{background-color:#dce775!important;color:#000!important}.bg-lime-lighten-1{background-color:#d4e157!important;color:#000!important}.bg-lime-darken-1{background-color:#c0ca33!important;color:#000!important}.bg-lime-darken-2{background-color:#afb42b!important;color:#000!important}.bg-lime-darken-3{background-color:#9e9d24!important;color:#fff!important}.bg-lime-darken-4{background-color:#827717!important;color:#fff!important}.bg-lime-accent-1{background-color:#f4ff81!important;color:#000!important}.bg-lime-accent-2{background-color:#eeff41!important;color:#000!important}.bg-lime-accent-3{background-color:#c6ff00!important;color:#000!important}.bg-lime-accent-4{background-color:#aeea00!important;color:#000!important}.bg-yellow{background-color:#ffeb3b!important;color:#000!important}.bg-yellow-lighten-5{background-color:#fffde7!important;color:#000!important}.bg-yellow-lighten-4{background-color:#fff9c4!important;color:#000!important}.bg-yellow-lighten-3{background-color:#fff59d!important;color:#000!important}.bg-yellow-lighten-2{background-color:#fff176!important;color:#000!important}.bg-yellow-lighten-1{background-color:#ffee58!important;color:#000!important}.bg-yellow-darken-1{background-color:#fdd835!important;color:#000!important}.bg-yellow-darken-2{background-color:#fbc02d!important;color:#000!important}.bg-yellow-darken-3{background-color:#f9a825!important;color:#000!important}.bg-yellow-darken-4{background-color:#f57f17!important;color:#fff!important}.bg-yellow-accent-1{background-color:#ffff8d!important;color:#000!important}.bg-yellow-accent-2{background-color:#ff0!important;color:#000!important}.bg-yellow-accent-3{background-color:#ffea00!important;color:#000!important}.bg-yellow-accent-4{background-color:#ffd600!important;color:#000!important}.bg-amber{background-color:#ffc107!important;color:#000!important}.bg-amber-lighten-5{background-color:#fff8e1!important;color:#000!important}.bg-amber-lighten-4{background-color:#ffecb3!important;color:#000!important}.bg-amber-lighten-3{background-color:#ffe082!important;color:#000!important}.bg-amber-lighten-2{background-color:#ffd54f!important;color:#000!important}.bg-amber-lighten-1{background-color:#ffca28!important;color:#000!important}.bg-amber-darken-1{background-color:#ffb300!important;color:#000!important}.bg-amber-darken-2{background-color:#ffa000!important;color:#000!important}.bg-amber-darken-3{background-color:#ff8f00!important;color:#000!important}.bg-amber-darken-4{background-color:#ff6f00!important;color:#fff!important}.bg-amber-accent-1{background-color:#ffe57f!important;color:#000!important}.bg-amber-accent-2{background-color:#ffd740!important;color:#000!important}.bg-amber-accent-3{background-color:#ffc400!important;color:#000!important}.bg-amber-accent-4{background-color:#ffab00!important;color:#000!important}.bg-orange{background-color:#ff9800!important;color:#000!important}.bg-orange-lighten-5{background-color:#fff3e0!important;color:#000!important}.bg-orange-lighten-4{background-color:#ffe0b2!important;color:#000!important}.bg-orange-lighten-3{background-color:#ffcc80!important;color:#000!important}.bg-orange-lighten-2{background-color:#ffb74d!important;color:#000!important}.bg-orange-lighten-1{background-color:#ffa726!important;color:#000!important}.bg-orange-darken-1{background-color:#fb8c00!important;color:#fff!important}.bg-orange-darken-2{background-color:#f57c00!important;color:#fff!important}.bg-orange-darken-3{background-color:#ef6c00!important;color:#fff!important}.bg-orange-darken-4{background-color:#e65100!important;color:#fff!important}.bg-orange-accent-1{background-color:#ffd180!important;color:#000!important}.bg-orange-accent-2{background-color:#ffab40!important;color:#000!important}.bg-orange-accent-3{background-color:#ff9100!important;color:#000!important}.bg-orange-accent-4{background-color:#ff6d00!important;color:#fff!important}.bg-deep-orange{background-color:#ff5722!important;color:#fff!important}.bg-deep-orange-lighten-5{background-color:#fbe9e7!important;color:#000!important}.bg-deep-orange-lighten-4{background-color:#ffccbc!important;color:#000!important}.bg-deep-orange-lighten-3{background-color:#ffab91!important;color:#000!important}.bg-deep-orange-lighten-2{background-color:#ff8a65!important;color:#000!important}.bg-deep-orange-lighten-1{background-color:#ff7043!important;color:#fff!important}.bg-deep-orange-darken-1{background-color:#f4511e!important;color:#fff!important}.bg-deep-orange-darken-2{background-color:#e64a19!important;color:#fff!important}.bg-deep-orange-darken-3{background-color:#d84315!important;color:#fff!important}.bg-deep-orange-darken-4{background-color:#bf360c!important;color:#fff!important}.bg-deep-orange-accent-1{background-color:#ff9e80!important;color:#000!important}.bg-deep-orange-accent-2{background-color:#ff6e40!important;color:#fff!important}.bg-deep-orange-accent-3{background-color:#ff3d00!important;color:#fff!important}.bg-deep-orange-accent-4{background-color:#dd2c00!important;color:#fff!important}.bg-brown{background-color:#795548!important;color:#fff!important}.bg-brown-lighten-5{background-color:#efebe9!important;color:#000!important}.bg-brown-lighten-4{background-color:#d7ccc8!important;color:#000!important}.bg-brown-lighten-3{background-color:#bcaaa4!important;color:#000!important}.bg-brown-lighten-2{background-color:#a1887f!important;color:#fff!important}.bg-brown-lighten-1{background-color:#8d6e63!important;color:#fff!important}.bg-brown-darken-1{background-color:#6d4c41!important;color:#fff!important}.bg-brown-darken-2{background-color:#5d4037!important;color:#fff!important}.bg-brown-darken-3{background-color:#4e342e!important;color:#fff!important}.bg-brown-darken-4{background-color:#3e2723!important;color:#fff!important}.bg-blue-grey{background-color:#607d8b!important;color:#fff!important}.bg-blue-grey-lighten-5{background-color:#eceff1!important;color:#000!important}.bg-blue-grey-lighten-4{background-color:#cfd8dc!important;color:#000!important}.bg-blue-grey-lighten-3{background-color:#b0bec5!important;color:#000!important}.bg-blue-grey-lighten-2{background-color:#90a4ae!important;color:#fff!important}.bg-blue-grey-lighten-1{background-color:#78909c!important;color:#fff!important}.bg-blue-grey-darken-1{background-color:#546e7a!important;color:#fff!important}.bg-blue-grey-darken-2{background-color:#455a64!important;color:#fff!important}.bg-blue-grey-darken-3{background-color:#37474f!important;color:#fff!important}.bg-blue-grey-darken-4{background-color:#263238!important;color:#fff!important}.bg-grey{background-color:#9e9e9e!important;color:#fff!important}.bg-grey-lighten-5{background-color:#fafafa!important;color:#000!important}.bg-grey-lighten-4{background-color:#f5f5f5!important;color:#000!important}.bg-grey-lighten-3{background-color:#eee!important;color:#000!important}.bg-grey-lighten-2{background-color:#e0e0e0!important;color:#000!important}.bg-grey-lighten-1{background-color:#bdbdbd!important;color:#000!important}.bg-grey-darken-1{background-color:#757575!important;color:#fff!important}.bg-grey-darken-2{background-color:#616161!important;color:#fff!important}.bg-grey-darken-3{background-color:#424242!important;color:#fff!important}.bg-grey-darken-4{background-color:#212121!important;color:#fff!important}.bg-shades-black{background-color:#000!important;color:#fff!important}.bg-shades-white{background-color:#fff!important;color:#000!important}.bg-shades-transparent{background-color:transparent!important;color:currentColor!important}.text-black{color:#000!important}.text-white{color:#fff!important}.text-transparent{color:transparent!important}.text-red{color:#f44336!important}.text-red-lighten-5{color:#ffebee!important}.text-red-lighten-4{color:#ffcdd2!important}.text-red-lighten-3{color:#ef9a9a!important}.text-red-lighten-2{color:#e57373!important}.text-red-lighten-1{color:#ef5350!important}.text-red-darken-1{color:#e53935!important}.text-red-darken-2{color:#d32f2f!important}.text-red-darken-3{color:#c62828!important}.text-red-darken-4{color:#b71c1c!important}.text-red-accent-1{color:#ff8a80!important}.text-red-accent-2{color:#ff5252!important}.text-red-accent-3{color:#ff1744!important}.text-red-accent-4{color:#d50000!important}.text-pink{color:#e91e63!important}.text-pink-lighten-5{color:#fce4ec!important}.text-pink-lighten-4{color:#f8bbd0!important}.text-pink-lighten-3{color:#f48fb1!important}.text-pink-lighten-2{color:#f06292!important}.text-pink-lighten-1{color:#ec407a!important}.text-pink-darken-1{color:#d81b60!important}.text-pink-darken-2{color:#c2185b!important}.text-pink-darken-3{color:#ad1457!important}.text-pink-darken-4{color:#880e4f!important}.text-pink-accent-1{color:#ff80ab!important}.text-pink-accent-2{color:#ff4081!important}.text-pink-accent-3{color:#f50057!important}.text-pink-accent-4{color:#c51162!important}.text-purple{color:#9c27b0!important}.text-purple-lighten-5{color:#f3e5f5!important}.text-purple-lighten-4{color:#e1bee7!important}.text-purple-lighten-3{color:#ce93d8!important}.text-purple-lighten-2{color:#ba68c8!important}.text-purple-lighten-1{color:#ab47bc!important}.text-purple-darken-1{color:#8e24aa!important}.text-purple-darken-2{color:#7b1fa2!important}.text-purple-darken-3{color:#6a1b9a!important}.text-purple-darken-4{color:#4a148c!important}.text-purple-accent-1{color:#ea80fc!important}.text-purple-accent-2{color:#e040fb!important}.text-purple-accent-3{color:#d500f9!important}.text-purple-accent-4{color:#a0f!important}.text-deep-purple{color:#673ab7!important}.text-deep-purple-lighten-5{color:#ede7f6!important}.text-deep-purple-lighten-4{color:#d1c4e9!important}.text-deep-purple-lighten-3{color:#b39ddb!important}.text-deep-purple-lighten-2{color:#9575cd!important}.text-deep-purple-lighten-1{color:#7e57c2!important}.text-deep-purple-darken-1{color:#5e35b1!important}.text-deep-purple-darken-2{color:#512da8!important}.text-deep-purple-darken-3{color:#4527a0!important}.text-deep-purple-darken-4{color:#311b92!important}.text-deep-purple-accent-1{color:#b388ff!important}.text-deep-purple-accent-2{color:#7c4dff!important}.text-deep-purple-accent-3{color:#651fff!important}.text-deep-purple-accent-4{color:#6200ea!important}.text-indigo{color:#3f51b5!important}.text-indigo-lighten-5{color:#e8eaf6!important}.text-indigo-lighten-4{color:#c5cae9!important}.text-indigo-lighten-3{color:#9fa8da!important}.text-indigo-lighten-2{color:#7986cb!important}.text-indigo-lighten-1{color:#5c6bc0!important}.text-indigo-darken-1{color:#3949ab!important}.text-indigo-darken-2{color:#303f9f!important}.text-indigo-darken-3{color:#283593!important}.text-indigo-darken-4{color:#1a237e!important}.text-indigo-accent-1{color:#8c9eff!important}.text-indigo-accent-2{color:#536dfe!important}.text-indigo-accent-3{color:#3d5afe!important}.text-indigo-accent-4{color:#304ffe!important}.text-blue{color:#2196f3!important}.text-blue-lighten-5{color:#e3f2fd!important}.text-blue-lighten-4{color:#bbdefb!important}.text-blue-lighten-3{color:#90caf9!important}.text-blue-lighten-2{color:#64b5f6!important}.text-blue-lighten-1{color:#42a5f5!important}.text-blue-darken-1{color:#1e88e5!important}.text-blue-darken-2{color:#1976d2!important}.text-blue-darken-3{color:#1565c0!important}.text-blue-darken-4{color:#0d47a1!important}.text-blue-accent-1{color:#82b1ff!important}.text-blue-accent-2{color:#448aff!important}.text-blue-accent-3{color:#2979ff!important}.text-blue-accent-4{color:#2962ff!important}.text-light-blue{color:#03a9f4!important}.text-light-blue-lighten-5{color:#e1f5fe!important}.text-light-blue-lighten-4{color:#b3e5fc!important}.text-light-blue-lighten-3{color:#81d4fa!important}.text-light-blue-lighten-2{color:#4fc3f7!important}.text-light-blue-lighten-1{color:#29b6f6!important}.text-light-blue-darken-1{color:#039be5!important}.text-light-blue-darken-2{color:#0288d1!important}.text-light-blue-darken-3{color:#0277bd!important}.text-light-blue-darken-4{color:#01579b!important}.text-light-blue-accent-1{color:#80d8ff!important}.text-light-blue-accent-2{color:#40c4ff!important}.text-light-blue-accent-3{color:#00b0ff!important}.text-light-blue-accent-4{color:#0091ea!important}.text-cyan{color:#00bcd4!important}.text-cyan-lighten-5{color:#e0f7fa!important}.text-cyan-lighten-4{color:#b2ebf2!important}.text-cyan-lighten-3{color:#80deea!important}.text-cyan-lighten-2{color:#4dd0e1!important}.text-cyan-lighten-1{color:#26c6da!important}.text-cyan-darken-1{color:#00acc1!important}.text-cyan-darken-2{color:#0097a7!important}.text-cyan-darken-3{color:#00838f!important}.text-cyan-darken-4{color:#006064!important}.text-cyan-accent-1{color:#84ffff!important}.text-cyan-accent-2{color:#18ffff!important}.text-cyan-accent-3{color:#00e5ff!important}.text-cyan-accent-4{color:#00b8d4!important}.text-teal{color:#009688!important}.text-teal-lighten-5{color:#e0f2f1!important}.text-teal-lighten-4{color:#b2dfdb!important}.text-teal-lighten-3{color:#80cbc4!important}.text-teal-lighten-2{color:#4db6ac!important}.text-teal-lighten-1{color:#26a69a!important}.text-teal-darken-1{color:#00897b!important}.text-teal-darken-2{color:#00796b!important}.text-teal-darken-3{color:#00695c!important}.text-teal-darken-4{color:#004d40!important}.text-teal-accent-1{color:#a7ffeb!important}.text-teal-accent-2{color:#64ffda!important}.text-teal-accent-3{color:#1de9b6!important}.text-teal-accent-4{color:#00bfa5!important}.text-green{color:#4caf50!important}.text-green-lighten-5{color:#e8f5e9!important}.text-green-lighten-4{color:#c8e6c9!important}.text-green-lighten-3{color:#a5d6a7!important}.text-green-lighten-2{color:#81c784!important}.text-green-lighten-1{color:#66bb6a!important}.text-green-darken-1{color:#43a047!important}.text-green-darken-2{color:#388e3c!important}.text-green-darken-3{color:#2e7d32!important}.text-green-darken-4{color:#1b5e20!important}.text-green-accent-1{color:#b9f6ca!important}.text-green-accent-2{color:#69f0ae!important}.text-green-accent-3{color:#00e676!important}.text-green-accent-4{color:#00c853!important}.text-light-green{color:#8bc34a!important}.text-light-green-lighten-5{color:#f1f8e9!important}.text-light-green-lighten-4{color:#dcedc8!important}.text-light-green-lighten-3{color:#c5e1a5!important}.text-light-green-lighten-2{color:#aed581!important}.text-light-green-lighten-1{color:#9ccc65!important}.text-light-green-darken-1{color:#7cb342!important}.text-light-green-darken-2{color:#689f38!important}.text-light-green-darken-3{color:#558b2f!important}.text-light-green-darken-4{color:#33691e!important}.text-light-green-accent-1{color:#ccff90!important}.text-light-green-accent-2{color:#b2ff59!important}.text-light-green-accent-3{color:#76ff03!important}.text-light-green-accent-4{color:#64dd17!important}.text-lime{color:#cddc39!important}.text-lime-lighten-5{color:#f9fbe7!important}.text-lime-lighten-4{color:#f0f4c3!important}.text-lime-lighten-3{color:#e6ee9c!important}.text-lime-lighten-2{color:#dce775!important}.text-lime-lighten-1{color:#d4e157!important}.text-lime-darken-1{color:#c0ca33!important}.text-lime-darken-2{color:#afb42b!important}.text-lime-darken-3{color:#9e9d24!important}.text-lime-darken-4{color:#827717!important}.text-lime-accent-1{color:#f4ff81!important}.text-lime-accent-2{color:#eeff41!important}.text-lime-accent-3{color:#c6ff00!important}.text-lime-accent-4{color:#aeea00!important}.text-yellow{color:#ffeb3b!important}.text-yellow-lighten-5{color:#fffde7!important}.text-yellow-lighten-4{color:#fff9c4!important}.text-yellow-lighten-3{color:#fff59d!important}.text-yellow-lighten-2{color:#fff176!important}.text-yellow-lighten-1{color:#ffee58!important}.text-yellow-darken-1{color:#fdd835!important}.text-yellow-darken-2{color:#fbc02d!important}.text-yellow-darken-3{color:#f9a825!important}.text-yellow-darken-4{color:#f57f17!important}.text-yellow-accent-1{color:#ffff8d!important}.text-yellow-accent-2{color:#ff0!important}.text-yellow-accent-3{color:#ffea00!important}.text-yellow-accent-4{color:#ffd600!important}.text-amber{color:#ffc107!important}.text-amber-lighten-5{color:#fff8e1!important}.text-amber-lighten-4{color:#ffecb3!important}.text-amber-lighten-3{color:#ffe082!important}.text-amber-lighten-2{color:#ffd54f!important}.text-amber-lighten-1{color:#ffca28!important}.text-amber-darken-1{color:#ffb300!important}.text-amber-darken-2{color:#ffa000!important}.text-amber-darken-3{color:#ff8f00!important}.text-amber-darken-4{color:#ff6f00!important}.text-amber-accent-1{color:#ffe57f!important}.text-amber-accent-2{color:#ffd740!important}.text-amber-accent-3{color:#ffc400!important}.text-amber-accent-4{color:#ffab00!important}.text-orange{color:#ff9800!important}.text-orange-lighten-5{color:#fff3e0!important}.text-orange-lighten-4{color:#ffe0b2!important}.text-orange-lighten-3{color:#ffcc80!important}.text-orange-lighten-2{color:#ffb74d!important}.text-orange-lighten-1{color:#ffa726!important}.text-orange-darken-1{color:#fb8c00!important}.text-orange-darken-2{color:#f57c00!important}.text-orange-darken-3{color:#ef6c00!important}.text-orange-darken-4{color:#e65100!important}.text-orange-accent-1{color:#ffd180!important}.text-orange-accent-2{color:#ffab40!important}.text-orange-accent-3{color:#ff9100!important}.text-orange-accent-4{color:#ff6d00!important}.text-deep-orange{color:#ff5722!important}.text-deep-orange-lighten-5{color:#fbe9e7!important}.text-deep-orange-lighten-4{color:#ffccbc!important}.text-deep-orange-lighten-3{color:#ffab91!important}.text-deep-orange-lighten-2{color:#ff8a65!important}.text-deep-orange-lighten-1{color:#ff7043!important}.text-deep-orange-darken-1{color:#f4511e!important}.text-deep-orange-darken-2{color:#e64a19!important}.text-deep-orange-darken-3{color:#d84315!important}.text-deep-orange-darken-4{color:#bf360c!important}.text-deep-orange-accent-1{color:#ff9e80!important}.text-deep-orange-accent-2{color:#ff6e40!important}.text-deep-orange-accent-3{color:#ff3d00!important}.text-deep-orange-accent-4{color:#dd2c00!important}.text-brown{color:#795548!important}.text-brown-lighten-5{color:#efebe9!important}.text-brown-lighten-4{color:#d7ccc8!important}.text-brown-lighten-3{color:#bcaaa4!important}.text-brown-lighten-2{color:#a1887f!important}.text-brown-lighten-1{color:#8d6e63!important}.text-brown-darken-1{color:#6d4c41!important}.text-brown-darken-2{color:#5d4037!important}.text-brown-darken-3{color:#4e342e!important}.text-brown-darken-4{color:#3e2723!important}.text-blue-grey{color:#607d8b!important}.text-blue-grey-lighten-5{color:#eceff1!important}.text-blue-grey-lighten-4{color:#cfd8dc!important}.text-blue-grey-lighten-3{color:#b0bec5!important}.text-blue-grey-lighten-2{color:#90a4ae!important}.text-blue-grey-lighten-1{color:#78909c!important}.text-blue-grey-darken-1{color:#546e7a!important}.text-blue-grey-darken-2{color:#455a64!important}.text-blue-grey-darken-3{color:#37474f!important}.text-blue-grey-darken-4{color:#263238!important}.text-grey{color:#9e9e9e!important}.text-grey-lighten-5{color:#fafafa!important}.text-grey-lighten-4{color:#f5f5f5!important}.text-grey-lighten-3{color:#eee!important}.text-grey-lighten-2{color:#e0e0e0!important}.text-grey-lighten-1{color:#bdbdbd!important}.text-grey-darken-1{color:#757575!important}.text-grey-darken-2{color:#616161!important}.text-grey-darken-3{color:#424242!important}.text-grey-darken-4{color:#212121!important}.text-shades-black{color:#000!important}.text-shades-white{color:#fff!important}.text-shades-transparent{color:transparent!important}/*! + * ress.css • v2.0.4 + * MIT License + * github.com/filipelinhares/ress + */html{box-sizing:border-box;overflow-y:scroll;-webkit-text-size-adjust:100%;word-break:normal;-moz-tab-size:4;tab-size:4}*,:before,:after{background-repeat:no-repeat;box-sizing:inherit}:before,:after{text-decoration:inherit;vertical-align:inherit}*{padding:0;margin:0}hr{overflow:visible;height:0}details,main{display:block}summary{display:list-item}small{font-size:80%}[hidden]{display:none}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}a{background-color:transparent}a:active,a:hover{outline-width:0}code,kbd,pre,samp{font-family:monospace,monospace}pre{font-size:1em}b,strong{font-weight:bolder}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}input{border-radius:0}[disabled]{cursor:default}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{overflow:auto;resize:vertical}button,input,optgroup,select,textarea{font:inherit}optgroup{font-weight:700}button{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit],[role=button]{cursor:pointer;color:inherit}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{outline:1px dotted ButtonText}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button,input,select,textarea{background-color:transparent;border-style:none}select{-moz-appearance:none;-webkit-appearance:none}select::-ms-expand{display:none}select::-ms-value{color:currentColor}legend{border:0;color:inherit;display:table;white-space:normal;max-width:100%}::-webkit-file-upload-button{-webkit-appearance:button;color:inherit;font:inherit}::-ms-clear,::-ms-reveal{display:none}img{border-style:none}progress{vertical-align:baseline}@media screen{[hidden~=screen]{display:inherit}[hidden~=screen]:not(:active):not(:focus):not(:target){position:absolute!important;clip:rect(0 0 0 0)!important}}[aria-busy=true]{cursor:progress}[aria-controls]{cursor:pointer}[aria-disabled=true]{cursor:default}.dialog-transition-enter-active,.dialog-bottom-transition-enter-active,.dialog-top-transition-enter-active{transition-duration:225ms!important;transition-timing-function:cubic-bezier(0,0,.2,1)!important}.dialog-transition-leave-active,.dialog-bottom-transition-leave-active,.dialog-top-transition-leave-active{transition-duration:125ms!important;transition-timing-function:cubic-bezier(.4,0,1,1)!important}.dialog-transition-enter-active,.dialog-transition-leave-active,.dialog-bottom-transition-enter-active,.dialog-bottom-transition-leave-active,.dialog-top-transition-enter-active,.dialog-top-transition-leave-active{transition-property:transform,opacity!important;pointer-events:none}.dialog-transition-enter-from,.dialog-transition-leave-to{transform:scale(.9);opacity:0}.dialog-transition-enter-to,.dialog-transition-leave-from{opacity:1}.dialog-bottom-transition-enter-from,.dialog-bottom-transition-leave-to{transform:translateY(calc(50vh + 50%))}.dialog-top-transition-enter-from,.dialog-top-transition-leave-to{transform:translateY(calc(-50vh - 50%))}.picker-transition-enter-active,.picker-reverse-transition-enter-active,.picker-transition-leave-active,.picker-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-transition-move,.picker-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-transition-enter-from,.picker-transition-leave-to,.picker-reverse-transition-enter-from,.picker-reverse-transition-leave-to{opacity:0}.picker-transition-leave-from,.picker-transition-leave-active,.picker-transition-leave-to,.picker-reverse-transition-leave-from,.picker-reverse-transition-leave-active,.picker-reverse-transition-leave-to{position:absolute!important}.picker-transition-enter-active,.picker-transition-leave-active,.picker-reverse-transition-enter-active,.picker-reverse-transition-leave-active{transition-property:transform,opacity!important}.picker-transition-enter-active,.picker-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-transition-enter-from{transform:translateY(100%)}.picker-transition-leave-to{transform:translateY(-100%)}.picker-reverse-transition-enter-active,.picker-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-reverse-transition-enter-from{transform:translateY(-100%)}.picker-reverse-transition-leave-to{transform:translateY(100%)}.expand-transition-enter-active,.expand-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.expand-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.expand-transition-enter-active,.expand-transition-leave-active{transition-property:height!important}.expand-x-transition-enter-active,.expand-x-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.expand-x-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.expand-x-transition-enter-active,.expand-x-transition-leave-active{transition-property:width!important}.scale-transition-enter-active,.scale-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-transition-leave-to{opacity:0}.scale-transition-leave-active{transition-duration:.1s!important}.scale-transition-enter-from{opacity:0;transform:scale(0)}.scale-transition-enter-active,.scale-transition-leave-active{transition-property:transform,opacity!important}.scale-rotate-transition-enter-active,.scale-rotate-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-rotate-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-rotate-transition-leave-to{opacity:0}.scale-rotate-transition-leave-active{transition-duration:.1s!important}.scale-rotate-transition-enter-from{opacity:0;transform:scale(0) rotate(-45deg)}.scale-rotate-transition-enter-active,.scale-rotate-transition-leave-active{transition-property:transform,opacity!important}.scale-rotate-reverse-transition-enter-active,.scale-rotate-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-rotate-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-rotate-reverse-transition-leave-to{opacity:0}.scale-rotate-reverse-transition-leave-active{transition-duration:.1s!important}.scale-rotate-reverse-transition-enter-from{opacity:0;transform:scale(0) rotate(45deg)}.scale-rotate-reverse-transition-enter-active,.scale-rotate-reverse-transition-leave-active{transition-property:transform,opacity!important}.message-transition-enter-active,.message-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.message-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.message-transition-enter-from,.message-transition-leave-to{opacity:0;transform:translateY(-15px)}.message-transition-leave-from,.message-transition-leave-active{position:absolute}.message-transition-enter-active,.message-transition-leave-active{transition-property:transform,opacity!important}.slide-y-transition-enter-active,.slide-y-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-y-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-y-transition-enter-from,.slide-y-transition-leave-to{opacity:0;transform:translateY(-15px)}.slide-y-transition-enter-active,.slide-y-transition-leave-active{transition-property:transform,opacity!important}.slide-y-reverse-transition-enter-active,.slide-y-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-y-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-y-reverse-transition-enter-from,.slide-y-reverse-transition-leave-to{opacity:0;transform:translateY(15px)}.slide-y-reverse-transition-enter-active,.slide-y-reverse-transition-leave-active{transition-property:transform,opacity!important}.scroll-y-transition-enter-active,.scroll-y-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-y-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-y-transition-enter-from,.scroll-y-transition-leave-to{opacity:0}.scroll-y-transition-enter-from{transform:translateY(-15px)}.scroll-y-transition-leave-to{transform:translateY(15px)}.scroll-y-transition-enter-active,.scroll-y-transition-leave-active{transition-property:transform,opacity!important}.scroll-y-reverse-transition-enter-active,.scroll-y-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-y-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-y-reverse-transition-enter-from,.scroll-y-reverse-transition-leave-to{opacity:0}.scroll-y-reverse-transition-enter-from{transform:translateY(15px)}.scroll-y-reverse-transition-leave-to{transform:translateY(-15px)}.scroll-y-reverse-transition-enter-active,.scroll-y-reverse-transition-leave-active{transition-property:transform,opacity!important}.scroll-x-transition-enter-active,.scroll-x-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-x-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-x-transition-enter-from,.scroll-x-transition-leave-to{opacity:0}.scroll-x-transition-enter-from{transform:translate(-15px)}.scroll-x-transition-leave-to{transform:translate(15px)}.scroll-x-transition-enter-active,.scroll-x-transition-leave-active{transition-property:transform,opacity!important}.scroll-x-reverse-transition-enter-active,.scroll-x-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-x-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-x-reverse-transition-enter-from,.scroll-x-reverse-transition-leave-to{opacity:0}.scroll-x-reverse-transition-enter-from{transform:translate(15px)}.scroll-x-reverse-transition-leave-to{transform:translate(-15px)}.scroll-x-reverse-transition-enter-active,.scroll-x-reverse-transition-leave-active{transition-property:transform,opacity!important}.slide-x-transition-enter-active,.slide-x-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-x-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-x-transition-enter-from,.slide-x-transition-leave-to{opacity:0;transform:translate(-15px)}.slide-x-transition-enter-active,.slide-x-transition-leave-active{transition-property:transform,opacity!important}.slide-x-reverse-transition-enter-active,.slide-x-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-x-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-x-reverse-transition-enter-from,.slide-x-reverse-transition-leave-to{opacity:0;transform:translate(15px)}.slide-x-reverse-transition-enter-active,.slide-x-reverse-transition-leave-active{transition-property:transform,opacity!important}.fade-transition-enter-active,.fade-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.fade-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.fade-transition-enter-from,.fade-transition-leave-to{opacity:0!important}.fade-transition-enter-active,.fade-transition-leave-active{transition-property:opacity!important}.fab-transition-enter-active,.fab-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.fab-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.fab-transition-enter-from,.fab-transition-leave-to{transform:scale(0) rotate(-45deg)}.fab-transition-enter-active,.fab-transition-leave-active{transition-property:transform!important}.v-locale--is-rtl{direction:rtl}.v-locale--is-ltr{direction:ltr}.blockquote{padding:16px 0 16px 24px;font-size:18px;font-weight:300}html{font-family:Roboto,sans-serif;line-height:1.5;font-size:1rem;overflow-x:hidden;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:rgba(0,0,0,0)}html.overflow-y-hidden{overflow-y:hidden!important}:root{--v-theme-overlay-multiplier: 1;--v-scrollbar-offset: 0px}@supports (-webkit-touch-callout: none){body{cursor:pointer}}@media only print{.hidden-print-only{display:none!important}}@media only screen{.hidden-screen-only{display:none!important}}@media (max-width: 599.98px){.hidden-xs{display:none!important}}@media (min-width: 600px) and (max-width: 959.98px){.hidden-sm{display:none!important}}@media (min-width: 960px) and (max-width: 1279.98px){.hidden-md{display:none!important}}@media (min-width: 1280px) and (max-width: 1919.98px){.hidden-lg{display:none!important}}@media (min-width: 1920px) and (max-width: 2559.98px){.hidden-xl{display:none!important}}@media (min-width: 2560px){.hidden-xxl{display:none!important}}@media (min-width: 600px){.hidden-sm-and-up{display:none!important}}@media (min-width: 960px){.hidden-md-and-up{display:none!important}}@media (min-width: 1280px){.hidden-lg-and-up{display:none!important}}@media (min-width: 1920px){.hidden-xl-and-up{display:none!important}}@media (max-width: 959.98px){.hidden-sm-and-down{display:none!important}}@media (max-width: 1279.98px){.hidden-md-and-down{display:none!important}}@media (max-width: 1919.98px){.hidden-lg-and-down{display:none!important}}@media (max-width: 2559.98px){.hidden-xl-and-down{display:none!important}}.elevation-24{box-shadow:0 11px 15px -7px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 24px 38px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 9px 46px 8px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-23{box-shadow:0 11px 14px -7px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 23px 36px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 9px 44px 8px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-22{box-shadow:0 10px 14px -6px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 22px 35px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 8px 42px 7px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-21{box-shadow:0 10px 13px -6px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 21px 33px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 8px 40px 7px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-20{box-shadow:0 10px 13px -6px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 20px 31px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 8px 38px 7px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-19{box-shadow:0 9px 12px -6px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 19px 29px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 7px 36px 6px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-18{box-shadow:0 9px 11px -5px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 18px 28px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 7px 34px 6px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-17{box-shadow:0 8px 11px -5px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 17px 26px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 6px 32px 5px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-16{box-shadow:0 8px 10px -5px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 16px 24px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 6px 30px 5px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-15{box-shadow:0 8px 9px -5px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 15px 22px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 6px 28px 5px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-14{box-shadow:0 7px 9px -4px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 14px 21px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 5px 26px 4px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-13{box-shadow:0 7px 8px -4px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 13px 19px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 5px 24px 4px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-12{box-shadow:0 7px 8px -4px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 12px 17px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 5px 22px 4px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-11{box-shadow:0 6px 7px -4px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 11px 15px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 4px 20px 3px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-10{box-shadow:0 6px 6px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 10px 14px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 4px 18px 3px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-9{box-shadow:0 5px 6px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 9px 12px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 3px 16px 2px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-8{box-shadow:0 5px 5px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 8px 10px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 3px 14px 2px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-7{box-shadow:0 4px 5px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 7px 10px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 2px 16px 1px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-6{box-shadow:0 3px 5px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 6px 10px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 18px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-5{box-shadow:0 3px 5px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 5px 8px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 14px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-4{box-shadow:0 2px 4px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 4px 5px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 10px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-3{box-shadow:0 3px 3px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 3px 4px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 8px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-2{box-shadow:0 3px 1px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 2px 2px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 5px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-1{box-shadow:0 2px 1px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 1px 1px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 3px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-0{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.d-sr-only,.d-sr-only-focusable:not(:focus){border:0!important;clip:rect(0,0,0,0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.float-none{float:none!important}.float-left{float:left!important}.float-right{float:right!important}.v-locale--is-rtl .float-end{float:left!important}.v-locale--is-rtl .float-start,.v-locale--is-ltr .float-end{float:right!important}.v-locale--is-ltr .float-start{float:left!important}.flex-fill,.flex-1-1{flex:1 1 auto!important}.flex-1-0{flex:1 0 auto!important}.flex-0-1{flex:0 1 auto!important}.flex-0-0{flex:0 0 auto!important}.flex-1-1-100{flex:1 1 100%!important}.flex-1-0-100{flex:1 0 100%!important}.flex-0-1-100{flex:0 1 100%!important}.flex-0-0-100{flex:0 0 100%!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-start{justify-content:flex-start!important}.justify-end{justify-content:flex-end!important}.justify-center{justify-content:center!important}.justify-space-between{justify-content:space-between!important}.justify-space-around{justify-content:space-around!important}.justify-space-evenly{justify-content:space-evenly!important}.align-start{align-items:flex-start!important}.align-end{align-items:flex-end!important}.align-center{align-items:center!important}.align-baseline{align-items:baseline!important}.align-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-space-between{align-content:space-between!important}.align-content-space-around{align-content:space-around!important}.align-content-space-evenly{align-content:space-evenly!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-6{order:6!important}.order-7{order:7!important}.order-8{order:8!important}.order-9{order:9!important}.order-10{order:10!important}.order-11{order:11!important}.order-12{order:12!important}.order-last{order:13!important}.ga-0{gap:0px!important}.ga-1{gap:4px!important}.ga-2{gap:8px!important}.ga-3{gap:12px!important}.ga-4{gap:16px!important}.ga-5{gap:20px!important}.ga-6{gap:24px!important}.ga-7{gap:28px!important}.ga-8{gap:32px!important}.ga-9{gap:36px!important}.ga-10{gap:40px!important}.ga-11{gap:44px!important}.ga-12{gap:48px!important}.ga-13{gap:52px!important}.ga-14{gap:56px!important}.ga-15{gap:60px!important}.ga-16{gap:64px!important}.ga-auto{gap:auto!important}.gr-0{row-gap:0px!important}.gr-1{row-gap:4px!important}.gr-2{row-gap:8px!important}.gr-3{row-gap:12px!important}.gr-4{row-gap:16px!important}.gr-5{row-gap:20px!important}.gr-6{row-gap:24px!important}.gr-7{row-gap:28px!important}.gr-8{row-gap:32px!important}.gr-9{row-gap:36px!important}.gr-10{row-gap:40px!important}.gr-11{row-gap:44px!important}.gr-12{row-gap:48px!important}.gr-13{row-gap:52px!important}.gr-14{row-gap:56px!important}.gr-15{row-gap:60px!important}.gr-16{row-gap:64px!important}.gr-auto{row-gap:auto!important}.gc-0{column-gap:0px!important}.gc-1{column-gap:4px!important}.gc-2{column-gap:8px!important}.gc-3{column-gap:12px!important}.gc-4{column-gap:16px!important}.gc-5{column-gap:20px!important}.gc-6{column-gap:24px!important}.gc-7{column-gap:28px!important}.gc-8{column-gap:32px!important}.gc-9{column-gap:36px!important}.gc-10{column-gap:40px!important}.gc-11{column-gap:44px!important}.gc-12{column-gap:48px!important}.gc-13{column-gap:52px!important}.gc-14{column-gap:56px!important}.gc-15{column-gap:60px!important}.gc-16{column-gap:64px!important}.gc-auto{column-gap:auto!important}.ma-0{margin:0!important}.ma-1{margin:4px!important}.ma-2{margin:8px!important}.ma-3{margin:12px!important}.ma-4{margin:16px!important}.ma-5{margin:20px!important}.ma-6{margin:24px!important}.ma-7{margin:28px!important}.ma-8{margin:32px!important}.ma-9{margin:36px!important}.ma-10{margin:40px!important}.ma-11{margin:44px!important}.ma-12{margin:48px!important}.ma-13{margin:52px!important}.ma-14{margin:56px!important}.ma-15{margin:60px!important}.ma-16{margin:64px!important}.ma-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:4px!important;margin-left:4px!important}.mx-2{margin-right:8px!important;margin-left:8px!important}.mx-3{margin-right:12px!important;margin-left:12px!important}.mx-4{margin-right:16px!important;margin-left:16px!important}.mx-5{margin-right:20px!important;margin-left:20px!important}.mx-6{margin-right:24px!important;margin-left:24px!important}.mx-7{margin-right:28px!important;margin-left:28px!important}.mx-8{margin-right:32px!important;margin-left:32px!important}.mx-9{margin-right:36px!important;margin-left:36px!important}.mx-10{margin-right:40px!important;margin-left:40px!important}.mx-11{margin-right:44px!important;margin-left:44px!important}.mx-12{margin-right:48px!important;margin-left:48px!important}.mx-13{margin-right:52px!important;margin-left:52px!important}.mx-14{margin-right:56px!important;margin-left:56px!important}.mx-15{margin-right:60px!important;margin-left:60px!important}.mx-16{margin-right:64px!important;margin-left:64px!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:4px!important;margin-bottom:4px!important}.my-2{margin-top:8px!important;margin-bottom:8px!important}.my-3{margin-top:12px!important;margin-bottom:12px!important}.my-4{margin-top:16px!important;margin-bottom:16px!important}.my-5{margin-top:20px!important;margin-bottom:20px!important}.my-6{margin-top:24px!important;margin-bottom:24px!important}.my-7{margin-top:28px!important;margin-bottom:28px!important}.my-8{margin-top:32px!important;margin-bottom:32px!important}.my-9{margin-top:36px!important;margin-bottom:36px!important}.my-10{margin-top:40px!important;margin-bottom:40px!important}.my-11{margin-top:44px!important;margin-bottom:44px!important}.my-12{margin-top:48px!important;margin-bottom:48px!important}.my-13{margin-top:52px!important;margin-bottom:52px!important}.my-14{margin-top:56px!important;margin-bottom:56px!important}.my-15{margin-top:60px!important;margin-bottom:60px!important}.my-16{margin-top:64px!important;margin-bottom:64px!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:4px!important}.mt-2{margin-top:8px!important}.mt-3{margin-top:12px!important}.mt-4{margin-top:16px!important}.mt-5{margin-top:20px!important}.mt-6{margin-top:24px!important}.mt-7{margin-top:28px!important}.mt-8{margin-top:32px!important}.mt-9{margin-top:36px!important}.mt-10{margin-top:40px!important}.mt-11{margin-top:44px!important}.mt-12{margin-top:48px!important}.mt-13{margin-top:52px!important}.mt-14{margin-top:56px!important}.mt-15{margin-top:60px!important}.mt-16{margin-top:64px!important}.mt-auto{margin-top:auto!important}.mr-0{margin-right:0!important}.mr-1{margin-right:4px!important}.mr-2{margin-right:8px!important}.mr-3{margin-right:12px!important}.mr-4{margin-right:16px!important}.mr-5{margin-right:20px!important}.mr-6{margin-right:24px!important}.mr-7{margin-right:28px!important}.mr-8{margin-right:32px!important}.mr-9{margin-right:36px!important}.mr-10{margin-right:40px!important}.mr-11{margin-right:44px!important}.mr-12{margin-right:48px!important}.mr-13{margin-right:52px!important}.mr-14{margin-right:56px!important}.mr-15{margin-right:60px!important}.mr-16{margin-right:64px!important}.mr-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:4px!important}.mb-2{margin-bottom:8px!important}.mb-3{margin-bottom:12px!important}.mb-4{margin-bottom:16px!important}.mb-5{margin-bottom:20px!important}.mb-6{margin-bottom:24px!important}.mb-7{margin-bottom:28px!important}.mb-8{margin-bottom:32px!important}.mb-9{margin-bottom:36px!important}.mb-10{margin-bottom:40px!important}.mb-11{margin-bottom:44px!important}.mb-12{margin-bottom:48px!important}.mb-13{margin-bottom:52px!important}.mb-14{margin-bottom:56px!important}.mb-15{margin-bottom:60px!important}.mb-16{margin-bottom:64px!important}.mb-auto{margin-bottom:auto!important}.ml-0{margin-left:0!important}.ml-1{margin-left:4px!important}.ml-2{margin-left:8px!important}.ml-3{margin-left:12px!important}.ml-4{margin-left:16px!important}.ml-5{margin-left:20px!important}.ml-6{margin-left:24px!important}.ml-7{margin-left:28px!important}.ml-8{margin-left:32px!important}.ml-9{margin-left:36px!important}.ml-10{margin-left:40px!important}.ml-11{margin-left:44px!important}.ml-12{margin-left:48px!important}.ml-13{margin-left:52px!important}.ml-14{margin-left:56px!important}.ml-15{margin-left:60px!important}.ml-16{margin-left:64px!important}.ml-auto{margin-left:auto!important}.ms-0{margin-inline-start:0px!important}.ms-1{margin-inline-start:4px!important}.ms-2{margin-inline-start:8px!important}.ms-3{margin-inline-start:12px!important}.ms-4{margin-inline-start:16px!important}.ms-5{margin-inline-start:20px!important}.ms-6{margin-inline-start:24px!important}.ms-7{margin-inline-start:28px!important}.ms-8{margin-inline-start:32px!important}.ms-9{margin-inline-start:36px!important}.ms-10{margin-inline-start:40px!important}.ms-11{margin-inline-start:44px!important}.ms-12{margin-inline-start:48px!important}.ms-13{margin-inline-start:52px!important}.ms-14{margin-inline-start:56px!important}.ms-15{margin-inline-start:60px!important}.ms-16{margin-inline-start:64px!important}.ms-auto{margin-inline-start:auto!important}.me-0{margin-inline-end:0px!important}.me-1{margin-inline-end:4px!important}.me-2{margin-inline-end:8px!important}.me-3{margin-inline-end:12px!important}.me-4{margin-inline-end:16px!important}.me-5{margin-inline-end:20px!important}.me-6{margin-inline-end:24px!important}.me-7{margin-inline-end:28px!important}.me-8{margin-inline-end:32px!important}.me-9{margin-inline-end:36px!important}.me-10{margin-inline-end:40px!important}.me-11{margin-inline-end:44px!important}.me-12{margin-inline-end:48px!important}.me-13{margin-inline-end:52px!important}.me-14{margin-inline-end:56px!important}.me-15{margin-inline-end:60px!important}.me-16{margin-inline-end:64px!important}.me-auto{margin-inline-end:auto!important}.ma-n1{margin:-4px!important}.ma-n2{margin:-8px!important}.ma-n3{margin:-12px!important}.ma-n4{margin:-16px!important}.ma-n5{margin:-20px!important}.ma-n6{margin:-24px!important}.ma-n7{margin:-28px!important}.ma-n8{margin:-32px!important}.ma-n9{margin:-36px!important}.ma-n10{margin:-40px!important}.ma-n11{margin:-44px!important}.ma-n12{margin:-48px!important}.ma-n13{margin:-52px!important}.ma-n14{margin:-56px!important}.ma-n15{margin:-60px!important}.ma-n16{margin:-64px!important}.mx-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-n16{margin-right:-64px!important;margin-left:-64px!important}.my-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-n1{margin-top:-4px!important}.mt-n2{margin-top:-8px!important}.mt-n3{margin-top:-12px!important}.mt-n4{margin-top:-16px!important}.mt-n5{margin-top:-20px!important}.mt-n6{margin-top:-24px!important}.mt-n7{margin-top:-28px!important}.mt-n8{margin-top:-32px!important}.mt-n9{margin-top:-36px!important}.mt-n10{margin-top:-40px!important}.mt-n11{margin-top:-44px!important}.mt-n12{margin-top:-48px!important}.mt-n13{margin-top:-52px!important}.mt-n14{margin-top:-56px!important}.mt-n15{margin-top:-60px!important}.mt-n16{margin-top:-64px!important}.mr-n1{margin-right:-4px!important}.mr-n2{margin-right:-8px!important}.mr-n3{margin-right:-12px!important}.mr-n4{margin-right:-16px!important}.mr-n5{margin-right:-20px!important}.mr-n6{margin-right:-24px!important}.mr-n7{margin-right:-28px!important}.mr-n8{margin-right:-32px!important}.mr-n9{margin-right:-36px!important}.mr-n10{margin-right:-40px!important}.mr-n11{margin-right:-44px!important}.mr-n12{margin-right:-48px!important}.mr-n13{margin-right:-52px!important}.mr-n14{margin-right:-56px!important}.mr-n15{margin-right:-60px!important}.mr-n16{margin-right:-64px!important}.mb-n1{margin-bottom:-4px!important}.mb-n2{margin-bottom:-8px!important}.mb-n3{margin-bottom:-12px!important}.mb-n4{margin-bottom:-16px!important}.mb-n5{margin-bottom:-20px!important}.mb-n6{margin-bottom:-24px!important}.mb-n7{margin-bottom:-28px!important}.mb-n8{margin-bottom:-32px!important}.mb-n9{margin-bottom:-36px!important}.mb-n10{margin-bottom:-40px!important}.mb-n11{margin-bottom:-44px!important}.mb-n12{margin-bottom:-48px!important}.mb-n13{margin-bottom:-52px!important}.mb-n14{margin-bottom:-56px!important}.mb-n15{margin-bottom:-60px!important}.mb-n16{margin-bottom:-64px!important}.ml-n1{margin-left:-4px!important}.ml-n2{margin-left:-8px!important}.ml-n3{margin-left:-12px!important}.ml-n4{margin-left:-16px!important}.ml-n5{margin-left:-20px!important}.ml-n6{margin-left:-24px!important}.ml-n7{margin-left:-28px!important}.ml-n8{margin-left:-32px!important}.ml-n9{margin-left:-36px!important}.ml-n10{margin-left:-40px!important}.ml-n11{margin-left:-44px!important}.ml-n12{margin-left:-48px!important}.ml-n13{margin-left:-52px!important}.ml-n14{margin-left:-56px!important}.ml-n15{margin-left:-60px!important}.ml-n16{margin-left:-64px!important}.ms-n1{margin-inline-start:-4px!important}.ms-n2{margin-inline-start:-8px!important}.ms-n3{margin-inline-start:-12px!important}.ms-n4{margin-inline-start:-16px!important}.ms-n5{margin-inline-start:-20px!important}.ms-n6{margin-inline-start:-24px!important}.ms-n7{margin-inline-start:-28px!important}.ms-n8{margin-inline-start:-32px!important}.ms-n9{margin-inline-start:-36px!important}.ms-n10{margin-inline-start:-40px!important}.ms-n11{margin-inline-start:-44px!important}.ms-n12{margin-inline-start:-48px!important}.ms-n13{margin-inline-start:-52px!important}.ms-n14{margin-inline-start:-56px!important}.ms-n15{margin-inline-start:-60px!important}.ms-n16{margin-inline-start:-64px!important}.me-n1{margin-inline-end:-4px!important}.me-n2{margin-inline-end:-8px!important}.me-n3{margin-inline-end:-12px!important}.me-n4{margin-inline-end:-16px!important}.me-n5{margin-inline-end:-20px!important}.me-n6{margin-inline-end:-24px!important}.me-n7{margin-inline-end:-28px!important}.me-n8{margin-inline-end:-32px!important}.me-n9{margin-inline-end:-36px!important}.me-n10{margin-inline-end:-40px!important}.me-n11{margin-inline-end:-44px!important}.me-n12{margin-inline-end:-48px!important}.me-n13{margin-inline-end:-52px!important}.me-n14{margin-inline-end:-56px!important}.me-n15{margin-inline-end:-60px!important}.me-n16{margin-inline-end:-64px!important}.pa-0{padding:0!important}.pa-1{padding:4px!important}.pa-2{padding:8px!important}.pa-3{padding:12px!important}.pa-4{padding:16px!important}.pa-5{padding:20px!important}.pa-6{padding:24px!important}.pa-7{padding:28px!important}.pa-8{padding:32px!important}.pa-9{padding:36px!important}.pa-10{padding:40px!important}.pa-11{padding:44px!important}.pa-12{padding:48px!important}.pa-13{padding:52px!important}.pa-14{padding:56px!important}.pa-15{padding:60px!important}.pa-16{padding:64px!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:4px!important;padding-left:4px!important}.px-2{padding-right:8px!important;padding-left:8px!important}.px-3{padding-right:12px!important;padding-left:12px!important}.px-4{padding-right:16px!important;padding-left:16px!important}.px-5{padding-right:20px!important;padding-left:20px!important}.px-6{padding-right:24px!important;padding-left:24px!important}.px-7{padding-right:28px!important;padding-left:28px!important}.px-8{padding-right:32px!important;padding-left:32px!important}.px-9{padding-right:36px!important;padding-left:36px!important}.px-10{padding-right:40px!important;padding-left:40px!important}.px-11{padding-right:44px!important;padding-left:44px!important}.px-12{padding-right:48px!important;padding-left:48px!important}.px-13{padding-right:52px!important;padding-left:52px!important}.px-14{padding-right:56px!important;padding-left:56px!important}.px-15{padding-right:60px!important;padding-left:60px!important}.px-16{padding-right:64px!important;padding-left:64px!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:4px!important;padding-bottom:4px!important}.py-2{padding-top:8px!important;padding-bottom:8px!important}.py-3{padding-top:12px!important;padding-bottom:12px!important}.py-4{padding-top:16px!important;padding-bottom:16px!important}.py-5{padding-top:20px!important;padding-bottom:20px!important}.py-6{padding-top:24px!important;padding-bottom:24px!important}.py-7{padding-top:28px!important;padding-bottom:28px!important}.py-8{padding-top:32px!important;padding-bottom:32px!important}.py-9{padding-top:36px!important;padding-bottom:36px!important}.py-10{padding-top:40px!important;padding-bottom:40px!important}.py-11{padding-top:44px!important;padding-bottom:44px!important}.py-12{padding-top:48px!important;padding-bottom:48px!important}.py-13{padding-top:52px!important;padding-bottom:52px!important}.py-14{padding-top:56px!important;padding-bottom:56px!important}.py-15{padding-top:60px!important;padding-bottom:60px!important}.py-16{padding-top:64px!important;padding-bottom:64px!important}.pt-0{padding-top:0!important}.pt-1{padding-top:4px!important}.pt-2{padding-top:8px!important}.pt-3{padding-top:12px!important}.pt-4{padding-top:16px!important}.pt-5{padding-top:20px!important}.pt-6{padding-top:24px!important}.pt-7{padding-top:28px!important}.pt-8{padding-top:32px!important}.pt-9{padding-top:36px!important}.pt-10{padding-top:40px!important}.pt-11{padding-top:44px!important}.pt-12{padding-top:48px!important}.pt-13{padding-top:52px!important}.pt-14{padding-top:56px!important}.pt-15{padding-top:60px!important}.pt-16{padding-top:64px!important}.pr-0{padding-right:0!important}.pr-1{padding-right:4px!important}.pr-2{padding-right:8px!important}.pr-3{padding-right:12px!important}.pr-4{padding-right:16px!important}.pr-5{padding-right:20px!important}.pr-6{padding-right:24px!important}.pr-7{padding-right:28px!important}.pr-8{padding-right:32px!important}.pr-9{padding-right:36px!important}.pr-10{padding-right:40px!important}.pr-11{padding-right:44px!important}.pr-12{padding-right:48px!important}.pr-13{padding-right:52px!important}.pr-14{padding-right:56px!important}.pr-15{padding-right:60px!important}.pr-16{padding-right:64px!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:4px!important}.pb-2{padding-bottom:8px!important}.pb-3{padding-bottom:12px!important}.pb-4{padding-bottom:16px!important}.pb-5{padding-bottom:20px!important}.pb-6{padding-bottom:24px!important}.pb-7{padding-bottom:28px!important}.pb-8{padding-bottom:32px!important}.pb-9{padding-bottom:36px!important}.pb-10{padding-bottom:40px!important}.pb-11{padding-bottom:44px!important}.pb-12{padding-bottom:48px!important}.pb-13{padding-bottom:52px!important}.pb-14{padding-bottom:56px!important}.pb-15{padding-bottom:60px!important}.pb-16{padding-bottom:64px!important}.pl-0{padding-left:0!important}.pl-1{padding-left:4px!important}.pl-2{padding-left:8px!important}.pl-3{padding-left:12px!important}.pl-4{padding-left:16px!important}.pl-5{padding-left:20px!important}.pl-6{padding-left:24px!important}.pl-7{padding-left:28px!important}.pl-8{padding-left:32px!important}.pl-9{padding-left:36px!important}.pl-10{padding-left:40px!important}.pl-11{padding-left:44px!important}.pl-12{padding-left:48px!important}.pl-13{padding-left:52px!important}.pl-14{padding-left:56px!important}.pl-15{padding-left:60px!important}.pl-16{padding-left:64px!important}.ps-0{padding-inline-start:0px!important}.ps-1{padding-inline-start:4px!important}.ps-2{padding-inline-start:8px!important}.ps-3{padding-inline-start:12px!important}.ps-4{padding-inline-start:16px!important}.ps-5{padding-inline-start:20px!important}.ps-6{padding-inline-start:24px!important}.ps-7{padding-inline-start:28px!important}.ps-8{padding-inline-start:32px!important}.ps-9{padding-inline-start:36px!important}.ps-10{padding-inline-start:40px!important}.ps-11{padding-inline-start:44px!important}.ps-12{padding-inline-start:48px!important}.ps-13{padding-inline-start:52px!important}.ps-14{padding-inline-start:56px!important}.ps-15{padding-inline-start:60px!important}.ps-16{padding-inline-start:64px!important}.pe-0{padding-inline-end:0px!important}.pe-1{padding-inline-end:4px!important}.pe-2{padding-inline-end:8px!important}.pe-3{padding-inline-end:12px!important}.pe-4{padding-inline-end:16px!important}.pe-5{padding-inline-end:20px!important}.pe-6{padding-inline-end:24px!important}.pe-7{padding-inline-end:28px!important}.pe-8{padding-inline-end:32px!important}.pe-9{padding-inline-end:36px!important}.pe-10{padding-inline-end:40px!important}.pe-11{padding-inline-end:44px!important}.pe-12{padding-inline-end:48px!important}.pe-13{padding-inline-end:52px!important}.pe-14{padding-inline-end:56px!important}.pe-15{padding-inline-end:60px!important}.pe-16{padding-inline-end:64px!important}.rounded-0{border-radius:0!important}.rounded-sm{border-radius:2px!important}.rounded{border-radius:4px!important}.rounded-lg{border-radius:8px!important}.rounded-xl{border-radius:24px!important}.rounded-pill{border-radius:9999px!important}.rounded-circle{border-radius:50%!important}.rounded-shaped{border-radius:24px 0!important}.rounded-t-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-t-sm{border-top-left-radius:2px!important;border-top-right-radius:2px!important}.rounded-t{border-top-left-radius:4px!important;border-top-right-radius:4px!important}.rounded-t-lg{border-top-left-radius:8px!important;border-top-right-radius:8px!important}.rounded-t-xl{border-top-left-radius:24px!important;border-top-right-radius:24px!important}.rounded-t-pill{border-top-left-radius:9999px!important;border-top-right-radius:9999px!important}.rounded-t-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-t-shaped{border-top-left-radius:24px!important;border-top-right-radius:0!important}.v-locale--is-ltr .rounded-e-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.v-locale--is-rtl .rounded-e-0{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.v-locale--is-ltr .rounded-e-sm{border-top-right-radius:2px!important;border-bottom-right-radius:2px!important}.v-locale--is-rtl .rounded-e-sm{border-top-left-radius:2px!important;border-bottom-left-radius:2px!important}.v-locale--is-ltr .rounded-e{border-top-right-radius:4px!important;border-bottom-right-radius:4px!important}.v-locale--is-rtl .rounded-e{border-top-left-radius:4px!important;border-bottom-left-radius:4px!important}.v-locale--is-ltr .rounded-e-lg{border-top-right-radius:8px!important;border-bottom-right-radius:8px!important}.v-locale--is-rtl .rounded-e-lg{border-top-left-radius:8px!important;border-bottom-left-radius:8px!important}.v-locale--is-ltr .rounded-e-xl{border-top-right-radius:24px!important;border-bottom-right-radius:24px!important}.v-locale--is-rtl .rounded-e-xl{border-top-left-radius:24px!important;border-bottom-left-radius:24px!important}.v-locale--is-ltr .rounded-e-pill{border-top-right-radius:9999px!important;border-bottom-right-radius:9999px!important}.v-locale--is-rtl .rounded-e-pill{border-top-left-radius:9999px!important;border-bottom-left-radius:9999px!important}.v-locale--is-ltr .rounded-e-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.v-locale--is-rtl .rounded-e-circle{border-top-left-radius:50%!important;border-bottom-left-radius:50%!important}.v-locale--is-ltr .rounded-e-shaped{border-top-right-radius:24px!important;border-bottom-right-radius:0!important}.v-locale--is-rtl .rounded-e-shaped{border-top-left-radius:24px!important;border-bottom-left-radius:0!important}.rounded-b-0{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.rounded-b-sm{border-bottom-left-radius:2px!important;border-bottom-right-radius:2px!important}.rounded-b{border-bottom-left-radius:4px!important;border-bottom-right-radius:4px!important}.rounded-b-lg{border-bottom-left-radius:8px!important;border-bottom-right-radius:8px!important}.rounded-b-xl{border-bottom-left-radius:24px!important;border-bottom-right-radius:24px!important}.rounded-b-pill{border-bottom-left-radius:9999px!important;border-bottom-right-radius:9999px!important}.rounded-b-circle{border-bottom-left-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-b-shaped{border-bottom-left-radius:24px!important;border-bottom-right-radius:0!important}.v-locale--is-ltr .rounded-s-0{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.v-locale--is-rtl .rounded-s-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.v-locale--is-ltr .rounded-s-sm{border-top-left-radius:2px!important;border-bottom-left-radius:2px!important}.v-locale--is-rtl .rounded-s-sm{border-top-right-radius:2px!important;border-bottom-right-radius:2px!important}.v-locale--is-ltr .rounded-s{border-top-left-radius:4px!important;border-bottom-left-radius:4px!important}.v-locale--is-rtl .rounded-s{border-top-right-radius:4px!important;border-bottom-right-radius:4px!important}.v-locale--is-ltr .rounded-s-lg{border-top-left-radius:8px!important;border-bottom-left-radius:8px!important}.v-locale--is-rtl .rounded-s-lg{border-top-right-radius:8px!important;border-bottom-right-radius:8px!important}.v-locale--is-ltr .rounded-s-xl{border-top-left-radius:24px!important;border-bottom-left-radius:24px!important}.v-locale--is-rtl .rounded-s-xl{border-top-right-radius:24px!important;border-bottom-right-radius:24px!important}.v-locale--is-ltr .rounded-s-pill{border-top-left-radius:9999px!important;border-bottom-left-radius:9999px!important}.v-locale--is-rtl .rounded-s-pill{border-top-right-radius:9999px!important;border-bottom-right-radius:9999px!important}.v-locale--is-ltr .rounded-s-circle{border-top-left-radius:50%!important;border-bottom-left-radius:50%!important}.v-locale--is-rtl .rounded-s-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.v-locale--is-ltr .rounded-s-shaped{border-top-left-radius:24px!important;border-bottom-left-radius:0!important}.v-locale--is-rtl .rounded-s-shaped{border-top-right-radius:24px!important;border-bottom-right-radius:0!important}.v-locale--is-ltr .rounded-ts-0{border-top-left-radius:0!important}.v-locale--is-rtl .rounded-ts-0{border-top-right-radius:0!important}.v-locale--is-ltr .rounded-ts-sm{border-top-left-radius:2px!important}.v-locale--is-rtl .rounded-ts-sm{border-top-right-radius:2px!important}.v-locale--is-ltr .rounded-ts{border-top-left-radius:4px!important}.v-locale--is-rtl .rounded-ts{border-top-right-radius:4px!important}.v-locale--is-ltr .rounded-ts-lg{border-top-left-radius:8px!important}.v-locale--is-rtl .rounded-ts-lg{border-top-right-radius:8px!important}.v-locale--is-ltr .rounded-ts-xl{border-top-left-radius:24px!important}.v-locale--is-rtl .rounded-ts-xl{border-top-right-radius:24px!important}.v-locale--is-ltr .rounded-ts-pill{border-top-left-radius:9999px!important}.v-locale--is-rtl .rounded-ts-pill{border-top-right-radius:9999px!important}.v-locale--is-ltr .rounded-ts-circle{border-top-left-radius:50%!important}.v-locale--is-rtl .rounded-ts-circle{border-top-right-radius:50%!important}.v-locale--is-ltr .rounded-ts-shaped{border-top-left-radius:24px 0!important}.v-locale--is-rtl .rounded-ts-shaped{border-top-right-radius:24px 0!important}.v-locale--is-ltr .rounded-te-0{border-top-right-radius:0!important}.v-locale--is-rtl .rounded-te-0{border-top-left-radius:0!important}.v-locale--is-ltr .rounded-te-sm{border-top-right-radius:2px!important}.v-locale--is-rtl .rounded-te-sm{border-top-left-radius:2px!important}.v-locale--is-ltr .rounded-te{border-top-right-radius:4px!important}.v-locale--is-rtl .rounded-te{border-top-left-radius:4px!important}.v-locale--is-ltr .rounded-te-lg{border-top-right-radius:8px!important}.v-locale--is-rtl .rounded-te-lg{border-top-left-radius:8px!important}.v-locale--is-ltr .rounded-te-xl{border-top-right-radius:24px!important}.v-locale--is-rtl .rounded-te-xl{border-top-left-radius:24px!important}.v-locale--is-ltr .rounded-te-pill{border-top-right-radius:9999px!important}.v-locale--is-rtl .rounded-te-pill{border-top-left-radius:9999px!important}.v-locale--is-ltr .rounded-te-circle{border-top-right-radius:50%!important}.v-locale--is-rtl .rounded-te-circle{border-top-left-radius:50%!important}.v-locale--is-ltr .rounded-te-shaped{border-top-right-radius:24px 0!important}.v-locale--is-rtl .rounded-te-shaped{border-top-left-radius:24px 0!important}.v-locale--is-ltr .rounded-be-0{border-bottom-right-radius:0!important}.v-locale--is-rtl .rounded-be-0{border-bottom-left-radius:0!important}.v-locale--is-ltr .rounded-be-sm{border-bottom-right-radius:2px!important}.v-locale--is-rtl .rounded-be-sm{border-bottom-left-radius:2px!important}.v-locale--is-ltr .rounded-be{border-bottom-right-radius:4px!important}.v-locale--is-rtl .rounded-be{border-bottom-left-radius:4px!important}.v-locale--is-ltr .rounded-be-lg{border-bottom-right-radius:8px!important}.v-locale--is-rtl .rounded-be-lg{border-bottom-left-radius:8px!important}.v-locale--is-ltr .rounded-be-xl{border-bottom-right-radius:24px!important}.v-locale--is-rtl .rounded-be-xl{border-bottom-left-radius:24px!important}.v-locale--is-ltr .rounded-be-pill{border-bottom-right-radius:9999px!important}.v-locale--is-rtl .rounded-be-pill{border-bottom-left-radius:9999px!important}.v-locale--is-ltr .rounded-be-circle{border-bottom-right-radius:50%!important}.v-locale--is-rtl .rounded-be-circle{border-bottom-left-radius:50%!important}.v-locale--is-ltr .rounded-be-shaped{border-bottom-right-radius:24px 0!important}.v-locale--is-rtl .rounded-be-shaped{border-bottom-left-radius:24px 0!important}.v-locale--is-ltr .rounded-bs-0{border-bottom-left-radius:0!important}.v-locale--is-rtl .rounded-bs-0{border-bottom-right-radius:0!important}.v-locale--is-ltr .rounded-bs-sm{border-bottom-left-radius:2px!important}.v-locale--is-rtl .rounded-bs-sm{border-bottom-right-radius:2px!important}.v-locale--is-ltr .rounded-bs{border-bottom-left-radius:4px!important}.v-locale--is-rtl .rounded-bs{border-bottom-right-radius:4px!important}.v-locale--is-ltr .rounded-bs-lg{border-bottom-left-radius:8px!important}.v-locale--is-rtl .rounded-bs-lg{border-bottom-right-radius:8px!important}.v-locale--is-ltr .rounded-bs-xl{border-bottom-left-radius:24px!important}.v-locale--is-rtl .rounded-bs-xl{border-bottom-right-radius:24px!important}.v-locale--is-ltr .rounded-bs-pill{border-bottom-left-radius:9999px!important}.v-locale--is-rtl .rounded-bs-pill{border-bottom-right-radius:9999px!important}.v-locale--is-ltr .rounded-bs-circle{border-bottom-left-radius:50%!important}.v-locale--is-rtl .rounded-bs-circle{border-bottom-right-radius:50%!important}.v-locale--is-ltr .rounded-bs-shaped{border-bottom-left-radius:24px 0!important}.v-locale--is-rtl .rounded-bs-shaped{border-bottom-right-radius:24px 0!important}.border-0{border-width:0!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border{border-width:thin!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-sm{border-width:1px!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-md{border-width:2px!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-lg{border-width:4px!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-xl{border-width:8px!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-opacity-0{--v-border-opacity: 0 !important}.border-opacity{--v-border-opacity: .12 !important}.border-opacity-25{--v-border-opacity: .25 !important}.border-opacity-50{--v-border-opacity: .5 !important}.border-opacity-75{--v-border-opacity: .75 !important}.border-opacity-100{--v-border-opacity: 1 !important}.border-t-0{border-block-start-width:0!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t{border-block-start-width:thin!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t-sm{border-block-start-width:1px!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t-md{border-block-start-width:2px!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t-lg{border-block-start-width:4px!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t-xl{border-block-start-width:8px!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e-0{border-inline-end-width:0!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e{border-inline-end-width:thin!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e-sm{border-inline-end-width:1px!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e-md{border-inline-end-width:2px!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e-lg{border-inline-end-width:4px!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e-xl{border-inline-end-width:8px!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-0{border-block-end-width:0!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b{border-block-end-width:thin!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-sm{border-block-end-width:1px!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-md{border-block-end-width:2px!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-lg{border-block-end-width:4px!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-xl{border-block-end-width:8px!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s-0{border-inline-start-width:0!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s{border-inline-start-width:thin!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s-sm{border-inline-start-width:1px!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s-md{border-inline-start-width:2px!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s-lg{border-inline-start-width:4px!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s-xl{border-inline-start-width:8px!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-solid{border-style:solid!important}.border-dashed{border-style:dashed!important}.border-dotted{border-style:dotted!important}.border-double{border-style:double!important}.border-none{border-style:none!important}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}.text-justify{text-align:justify!important}.text-start{text-align:start!important}.text-end{text-align:end!important}.text-decoration-line-through{text-decoration:line-through!important}.text-decoration-none{text-decoration:none!important}.text-decoration-overline{text-decoration:overline!important}.text-decoration-underline{text-decoration:underline!important}.text-wrap{white-space:normal!important}.text-no-wrap{white-space:nowrap!important}.text-pre{white-space:pre!important}.text-pre-line{white-space:pre-line!important}.text-pre-wrap{white-space:pre-wrap!important}.text-break{overflow-wrap:break-word!important;word-break:break-word!important}.text-high-emphasis{color:rgba(var(--v-theme-on-background),var(--v-high-emphasis-opacity))!important}.text-medium-emphasis{color:rgba(var(--v-theme-on-background),var(--v-medium-emphasis-opacity))!important}.text-disabled{color:rgba(var(--v-theme-on-background),var(--v-disabled-opacity))!important}.text-truncate{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}.text-h1{font-size:6rem!important;font-weight:300;line-height:6rem;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-h2{font-size:3.75rem!important;font-weight:300;line-height:3.75rem;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-h3{font-size:3rem!important;font-weight:400;line-height:3.125rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-h4{font-size:2.125rem!important;font-weight:400;line-height:2.5rem;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-h5{font-size:1.5rem!important;font-weight:400;line-height:2rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-h6{font-size:1.25rem!important;font-weight:500;line-height:2rem;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-body-1{font-size:1rem!important;font-weight:400;line-height:1.5rem;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-body-2{font-size:.875rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-caption{font-size:.75rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-overline{font-size:.75rem!important;font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-none{text-transform:none!important}.text-capitalize{text-transform:capitalize!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.font-weight-thin{font-weight:100!important}.font-weight-light{font-weight:300!important}.font-weight-regular{font-weight:400!important}.font-weight-medium{font-weight:500!important}.font-weight-bold{font-weight:700!important}.font-weight-black{font-weight:900!important}.font-italic{font-style:italic!important}.text-mono{font-family:monospace!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-fixed{position:fixed!important}.position-absolute{position:absolute!important}.position-sticky{position:sticky!important}.cursor-auto{cursor:auto!important}.cursor-default{cursor:default!important}.cursor-pointer{cursor:pointer!important}.cursor-wait{cursor:wait!important}.cursor-text{cursor:text!important}.cursor-move{cursor:move!important}.cursor-help{cursor:help!important}.cursor-not-allowed{cursor:not-allowed!important}.cursor-progress{cursor:progress!important}.cursor-grab{cursor:grab!important}.cursor-grabbing{cursor:grabbing!important}.cursor-none{cursor:none!important}.fill-height{height:100%!important}.h-auto{height:auto!important}.h-screen{height:100vh!important}.h-0{height:0!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-screen{height:100dvh!important}.w-auto{width:auto!important}.w-0{width:0!important}.w-25{width:25%!important}.w-33{width:33%!important}.w-50{width:50%!important}.w-66{width:66%!important}.w-75{width:75%!important}.w-100{width:100%!important}@media (min-width: 600px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.float-sm-none{float:none!important}.float-sm-left{float:left!important}.float-sm-right{float:right!important}.v-locale--is-rtl .float-sm-end{float:left!important}.v-locale--is-rtl .float-sm-start,.v-locale--is-ltr .float-sm-end{float:right!important}.v-locale--is-ltr .float-sm-start{float:left!important}.flex-sm-fill,.flex-sm-1-1{flex:1 1 auto!important}.flex-sm-1-0{flex:1 0 auto!important}.flex-sm-0-1{flex:0 1 auto!important}.flex-sm-0-0{flex:0 0 auto!important}.flex-sm-1-1-100{flex:1 1 100%!important}.flex-sm-1-0-100{flex:1 0 100%!important}.flex-sm-0-1-100{flex:0 1 100%!important}.flex-sm-0-0-100{flex:0 0 100%!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-sm-start{justify-content:flex-start!important}.justify-sm-end{justify-content:flex-end!important}.justify-sm-center{justify-content:center!important}.justify-sm-space-between{justify-content:space-between!important}.justify-sm-space-around{justify-content:space-around!important}.justify-sm-space-evenly{justify-content:space-evenly!important}.align-sm-start{align-items:flex-start!important}.align-sm-end{align-items:flex-end!important}.align-sm-center{align-items:center!important}.align-sm-baseline{align-items:baseline!important}.align-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-space-between{align-content:space-between!important}.align-content-sm-space-around{align-content:space-around!important}.align-content-sm-space-evenly{align-content:space-evenly!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-6{order:6!important}.order-sm-7{order:7!important}.order-sm-8{order:8!important}.order-sm-9{order:9!important}.order-sm-10{order:10!important}.order-sm-11{order:11!important}.order-sm-12{order:12!important}.order-sm-last{order:13!important}.ga-sm-0{gap:0px!important}.ga-sm-1{gap:4px!important}.ga-sm-2{gap:8px!important}.ga-sm-3{gap:12px!important}.ga-sm-4{gap:16px!important}.ga-sm-5{gap:20px!important}.ga-sm-6{gap:24px!important}.ga-sm-7{gap:28px!important}.ga-sm-8{gap:32px!important}.ga-sm-9{gap:36px!important}.ga-sm-10{gap:40px!important}.ga-sm-11{gap:44px!important}.ga-sm-12{gap:48px!important}.ga-sm-13{gap:52px!important}.ga-sm-14{gap:56px!important}.ga-sm-15{gap:60px!important}.ga-sm-16{gap:64px!important}.ga-sm-auto{gap:auto!important}.gr-sm-0{row-gap:0px!important}.gr-sm-1{row-gap:4px!important}.gr-sm-2{row-gap:8px!important}.gr-sm-3{row-gap:12px!important}.gr-sm-4{row-gap:16px!important}.gr-sm-5{row-gap:20px!important}.gr-sm-6{row-gap:24px!important}.gr-sm-7{row-gap:28px!important}.gr-sm-8{row-gap:32px!important}.gr-sm-9{row-gap:36px!important}.gr-sm-10{row-gap:40px!important}.gr-sm-11{row-gap:44px!important}.gr-sm-12{row-gap:48px!important}.gr-sm-13{row-gap:52px!important}.gr-sm-14{row-gap:56px!important}.gr-sm-15{row-gap:60px!important}.gr-sm-16{row-gap:64px!important}.gr-sm-auto{row-gap:auto!important}.gc-sm-0{column-gap:0px!important}.gc-sm-1{column-gap:4px!important}.gc-sm-2{column-gap:8px!important}.gc-sm-3{column-gap:12px!important}.gc-sm-4{column-gap:16px!important}.gc-sm-5{column-gap:20px!important}.gc-sm-6{column-gap:24px!important}.gc-sm-7{column-gap:28px!important}.gc-sm-8{column-gap:32px!important}.gc-sm-9{column-gap:36px!important}.gc-sm-10{column-gap:40px!important}.gc-sm-11{column-gap:44px!important}.gc-sm-12{column-gap:48px!important}.gc-sm-13{column-gap:52px!important}.gc-sm-14{column-gap:56px!important}.gc-sm-15{column-gap:60px!important}.gc-sm-16{column-gap:64px!important}.gc-sm-auto{column-gap:auto!important}.ma-sm-0{margin:0!important}.ma-sm-1{margin:4px!important}.ma-sm-2{margin:8px!important}.ma-sm-3{margin:12px!important}.ma-sm-4{margin:16px!important}.ma-sm-5{margin:20px!important}.ma-sm-6{margin:24px!important}.ma-sm-7{margin:28px!important}.ma-sm-8{margin:32px!important}.ma-sm-9{margin:36px!important}.ma-sm-10{margin:40px!important}.ma-sm-11{margin:44px!important}.ma-sm-12{margin:48px!important}.ma-sm-13{margin:52px!important}.ma-sm-14{margin:56px!important}.ma-sm-15{margin:60px!important}.ma-sm-16{margin:64px!important}.ma-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:4px!important;margin-left:4px!important}.mx-sm-2{margin-right:8px!important;margin-left:8px!important}.mx-sm-3{margin-right:12px!important;margin-left:12px!important}.mx-sm-4{margin-right:16px!important;margin-left:16px!important}.mx-sm-5{margin-right:20px!important;margin-left:20px!important}.mx-sm-6{margin-right:24px!important;margin-left:24px!important}.mx-sm-7{margin-right:28px!important;margin-left:28px!important}.mx-sm-8{margin-right:32px!important;margin-left:32px!important}.mx-sm-9{margin-right:36px!important;margin-left:36px!important}.mx-sm-10{margin-right:40px!important;margin-left:40px!important}.mx-sm-11{margin-right:44px!important;margin-left:44px!important}.mx-sm-12{margin-right:48px!important;margin-left:48px!important}.mx-sm-13{margin-right:52px!important;margin-left:52px!important}.mx-sm-14{margin-right:56px!important;margin-left:56px!important}.mx-sm-15{margin-right:60px!important;margin-left:60px!important}.mx-sm-16{margin-right:64px!important;margin-left:64px!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:4px!important;margin-bottom:4px!important}.my-sm-2{margin-top:8px!important;margin-bottom:8px!important}.my-sm-3{margin-top:12px!important;margin-bottom:12px!important}.my-sm-4{margin-top:16px!important;margin-bottom:16px!important}.my-sm-5{margin-top:20px!important;margin-bottom:20px!important}.my-sm-6{margin-top:24px!important;margin-bottom:24px!important}.my-sm-7{margin-top:28px!important;margin-bottom:28px!important}.my-sm-8{margin-top:32px!important;margin-bottom:32px!important}.my-sm-9{margin-top:36px!important;margin-bottom:36px!important}.my-sm-10{margin-top:40px!important;margin-bottom:40px!important}.my-sm-11{margin-top:44px!important;margin-bottom:44px!important}.my-sm-12{margin-top:48px!important;margin-bottom:48px!important}.my-sm-13{margin-top:52px!important;margin-bottom:52px!important}.my-sm-14{margin-top:56px!important;margin-bottom:56px!important}.my-sm-15{margin-top:60px!important;margin-bottom:60px!important}.my-sm-16{margin-top:64px!important;margin-bottom:64px!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:4px!important}.mt-sm-2{margin-top:8px!important}.mt-sm-3{margin-top:12px!important}.mt-sm-4{margin-top:16px!important}.mt-sm-5{margin-top:20px!important}.mt-sm-6{margin-top:24px!important}.mt-sm-7{margin-top:28px!important}.mt-sm-8{margin-top:32px!important}.mt-sm-9{margin-top:36px!important}.mt-sm-10{margin-top:40px!important}.mt-sm-11{margin-top:44px!important}.mt-sm-12{margin-top:48px!important}.mt-sm-13{margin-top:52px!important}.mt-sm-14{margin-top:56px!important}.mt-sm-15{margin-top:60px!important}.mt-sm-16{margin-top:64px!important}.mt-sm-auto{margin-top:auto!important}.mr-sm-0{margin-right:0!important}.mr-sm-1{margin-right:4px!important}.mr-sm-2{margin-right:8px!important}.mr-sm-3{margin-right:12px!important}.mr-sm-4{margin-right:16px!important}.mr-sm-5{margin-right:20px!important}.mr-sm-6{margin-right:24px!important}.mr-sm-7{margin-right:28px!important}.mr-sm-8{margin-right:32px!important}.mr-sm-9{margin-right:36px!important}.mr-sm-10{margin-right:40px!important}.mr-sm-11{margin-right:44px!important}.mr-sm-12{margin-right:48px!important}.mr-sm-13{margin-right:52px!important}.mr-sm-14{margin-right:56px!important}.mr-sm-15{margin-right:60px!important}.mr-sm-16{margin-right:64px!important}.mr-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:4px!important}.mb-sm-2{margin-bottom:8px!important}.mb-sm-3{margin-bottom:12px!important}.mb-sm-4{margin-bottom:16px!important}.mb-sm-5{margin-bottom:20px!important}.mb-sm-6{margin-bottom:24px!important}.mb-sm-7{margin-bottom:28px!important}.mb-sm-8{margin-bottom:32px!important}.mb-sm-9{margin-bottom:36px!important}.mb-sm-10{margin-bottom:40px!important}.mb-sm-11{margin-bottom:44px!important}.mb-sm-12{margin-bottom:48px!important}.mb-sm-13{margin-bottom:52px!important}.mb-sm-14{margin-bottom:56px!important}.mb-sm-15{margin-bottom:60px!important}.mb-sm-16{margin-bottom:64px!important}.mb-sm-auto{margin-bottom:auto!important}.ml-sm-0{margin-left:0!important}.ml-sm-1{margin-left:4px!important}.ml-sm-2{margin-left:8px!important}.ml-sm-3{margin-left:12px!important}.ml-sm-4{margin-left:16px!important}.ml-sm-5{margin-left:20px!important}.ml-sm-6{margin-left:24px!important}.ml-sm-7{margin-left:28px!important}.ml-sm-8{margin-left:32px!important}.ml-sm-9{margin-left:36px!important}.ml-sm-10{margin-left:40px!important}.ml-sm-11{margin-left:44px!important}.ml-sm-12{margin-left:48px!important}.ml-sm-13{margin-left:52px!important}.ml-sm-14{margin-left:56px!important}.ml-sm-15{margin-left:60px!important}.ml-sm-16{margin-left:64px!important}.ml-sm-auto{margin-left:auto!important}.ms-sm-0{margin-inline-start:0px!important}.ms-sm-1{margin-inline-start:4px!important}.ms-sm-2{margin-inline-start:8px!important}.ms-sm-3{margin-inline-start:12px!important}.ms-sm-4{margin-inline-start:16px!important}.ms-sm-5{margin-inline-start:20px!important}.ms-sm-6{margin-inline-start:24px!important}.ms-sm-7{margin-inline-start:28px!important}.ms-sm-8{margin-inline-start:32px!important}.ms-sm-9{margin-inline-start:36px!important}.ms-sm-10{margin-inline-start:40px!important}.ms-sm-11{margin-inline-start:44px!important}.ms-sm-12{margin-inline-start:48px!important}.ms-sm-13{margin-inline-start:52px!important}.ms-sm-14{margin-inline-start:56px!important}.ms-sm-15{margin-inline-start:60px!important}.ms-sm-16{margin-inline-start:64px!important}.ms-sm-auto{margin-inline-start:auto!important}.me-sm-0{margin-inline-end:0px!important}.me-sm-1{margin-inline-end:4px!important}.me-sm-2{margin-inline-end:8px!important}.me-sm-3{margin-inline-end:12px!important}.me-sm-4{margin-inline-end:16px!important}.me-sm-5{margin-inline-end:20px!important}.me-sm-6{margin-inline-end:24px!important}.me-sm-7{margin-inline-end:28px!important}.me-sm-8{margin-inline-end:32px!important}.me-sm-9{margin-inline-end:36px!important}.me-sm-10{margin-inline-end:40px!important}.me-sm-11{margin-inline-end:44px!important}.me-sm-12{margin-inline-end:48px!important}.me-sm-13{margin-inline-end:52px!important}.me-sm-14{margin-inline-end:56px!important}.me-sm-15{margin-inline-end:60px!important}.me-sm-16{margin-inline-end:64px!important}.me-sm-auto{margin-inline-end:auto!important}.ma-sm-n1{margin:-4px!important}.ma-sm-n2{margin:-8px!important}.ma-sm-n3{margin:-12px!important}.ma-sm-n4{margin:-16px!important}.ma-sm-n5{margin:-20px!important}.ma-sm-n6{margin:-24px!important}.ma-sm-n7{margin:-28px!important}.ma-sm-n8{margin:-32px!important}.ma-sm-n9{margin:-36px!important}.ma-sm-n10{margin:-40px!important}.ma-sm-n11{margin:-44px!important}.ma-sm-n12{margin:-48px!important}.ma-sm-n13{margin:-52px!important}.ma-sm-n14{margin:-56px!important}.ma-sm-n15{margin:-60px!important}.ma-sm-n16{margin:-64px!important}.mx-sm-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-sm-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-sm-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-sm-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-sm-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-sm-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-sm-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-sm-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-sm-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-sm-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-sm-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-sm-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-sm-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-sm-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-sm-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-sm-n16{margin-right:-64px!important;margin-left:-64px!important}.my-sm-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-sm-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-sm-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-sm-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-sm-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-sm-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-sm-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-sm-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-sm-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-sm-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-sm-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-sm-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-sm-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-sm-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-sm-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-sm-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-sm-n1{margin-top:-4px!important}.mt-sm-n2{margin-top:-8px!important}.mt-sm-n3{margin-top:-12px!important}.mt-sm-n4{margin-top:-16px!important}.mt-sm-n5{margin-top:-20px!important}.mt-sm-n6{margin-top:-24px!important}.mt-sm-n7{margin-top:-28px!important}.mt-sm-n8{margin-top:-32px!important}.mt-sm-n9{margin-top:-36px!important}.mt-sm-n10{margin-top:-40px!important}.mt-sm-n11{margin-top:-44px!important}.mt-sm-n12{margin-top:-48px!important}.mt-sm-n13{margin-top:-52px!important}.mt-sm-n14{margin-top:-56px!important}.mt-sm-n15{margin-top:-60px!important}.mt-sm-n16{margin-top:-64px!important}.mr-sm-n1{margin-right:-4px!important}.mr-sm-n2{margin-right:-8px!important}.mr-sm-n3{margin-right:-12px!important}.mr-sm-n4{margin-right:-16px!important}.mr-sm-n5{margin-right:-20px!important}.mr-sm-n6{margin-right:-24px!important}.mr-sm-n7{margin-right:-28px!important}.mr-sm-n8{margin-right:-32px!important}.mr-sm-n9{margin-right:-36px!important}.mr-sm-n10{margin-right:-40px!important}.mr-sm-n11{margin-right:-44px!important}.mr-sm-n12{margin-right:-48px!important}.mr-sm-n13{margin-right:-52px!important}.mr-sm-n14{margin-right:-56px!important}.mr-sm-n15{margin-right:-60px!important}.mr-sm-n16{margin-right:-64px!important}.mb-sm-n1{margin-bottom:-4px!important}.mb-sm-n2{margin-bottom:-8px!important}.mb-sm-n3{margin-bottom:-12px!important}.mb-sm-n4{margin-bottom:-16px!important}.mb-sm-n5{margin-bottom:-20px!important}.mb-sm-n6{margin-bottom:-24px!important}.mb-sm-n7{margin-bottom:-28px!important}.mb-sm-n8{margin-bottom:-32px!important}.mb-sm-n9{margin-bottom:-36px!important}.mb-sm-n10{margin-bottom:-40px!important}.mb-sm-n11{margin-bottom:-44px!important}.mb-sm-n12{margin-bottom:-48px!important}.mb-sm-n13{margin-bottom:-52px!important}.mb-sm-n14{margin-bottom:-56px!important}.mb-sm-n15{margin-bottom:-60px!important}.mb-sm-n16{margin-bottom:-64px!important}.ml-sm-n1{margin-left:-4px!important}.ml-sm-n2{margin-left:-8px!important}.ml-sm-n3{margin-left:-12px!important}.ml-sm-n4{margin-left:-16px!important}.ml-sm-n5{margin-left:-20px!important}.ml-sm-n6{margin-left:-24px!important}.ml-sm-n7{margin-left:-28px!important}.ml-sm-n8{margin-left:-32px!important}.ml-sm-n9{margin-left:-36px!important}.ml-sm-n10{margin-left:-40px!important}.ml-sm-n11{margin-left:-44px!important}.ml-sm-n12{margin-left:-48px!important}.ml-sm-n13{margin-left:-52px!important}.ml-sm-n14{margin-left:-56px!important}.ml-sm-n15{margin-left:-60px!important}.ml-sm-n16{margin-left:-64px!important}.ms-sm-n1{margin-inline-start:-4px!important}.ms-sm-n2{margin-inline-start:-8px!important}.ms-sm-n3{margin-inline-start:-12px!important}.ms-sm-n4{margin-inline-start:-16px!important}.ms-sm-n5{margin-inline-start:-20px!important}.ms-sm-n6{margin-inline-start:-24px!important}.ms-sm-n7{margin-inline-start:-28px!important}.ms-sm-n8{margin-inline-start:-32px!important}.ms-sm-n9{margin-inline-start:-36px!important}.ms-sm-n10{margin-inline-start:-40px!important}.ms-sm-n11{margin-inline-start:-44px!important}.ms-sm-n12{margin-inline-start:-48px!important}.ms-sm-n13{margin-inline-start:-52px!important}.ms-sm-n14{margin-inline-start:-56px!important}.ms-sm-n15{margin-inline-start:-60px!important}.ms-sm-n16{margin-inline-start:-64px!important}.me-sm-n1{margin-inline-end:-4px!important}.me-sm-n2{margin-inline-end:-8px!important}.me-sm-n3{margin-inline-end:-12px!important}.me-sm-n4{margin-inline-end:-16px!important}.me-sm-n5{margin-inline-end:-20px!important}.me-sm-n6{margin-inline-end:-24px!important}.me-sm-n7{margin-inline-end:-28px!important}.me-sm-n8{margin-inline-end:-32px!important}.me-sm-n9{margin-inline-end:-36px!important}.me-sm-n10{margin-inline-end:-40px!important}.me-sm-n11{margin-inline-end:-44px!important}.me-sm-n12{margin-inline-end:-48px!important}.me-sm-n13{margin-inline-end:-52px!important}.me-sm-n14{margin-inline-end:-56px!important}.me-sm-n15{margin-inline-end:-60px!important}.me-sm-n16{margin-inline-end:-64px!important}.pa-sm-0{padding:0!important}.pa-sm-1{padding:4px!important}.pa-sm-2{padding:8px!important}.pa-sm-3{padding:12px!important}.pa-sm-4{padding:16px!important}.pa-sm-5{padding:20px!important}.pa-sm-6{padding:24px!important}.pa-sm-7{padding:28px!important}.pa-sm-8{padding:32px!important}.pa-sm-9{padding:36px!important}.pa-sm-10{padding:40px!important}.pa-sm-11{padding:44px!important}.pa-sm-12{padding:48px!important}.pa-sm-13{padding:52px!important}.pa-sm-14{padding:56px!important}.pa-sm-15{padding:60px!important}.pa-sm-16{padding:64px!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:4px!important;padding-left:4px!important}.px-sm-2{padding-right:8px!important;padding-left:8px!important}.px-sm-3{padding-right:12px!important;padding-left:12px!important}.px-sm-4{padding-right:16px!important;padding-left:16px!important}.px-sm-5{padding-right:20px!important;padding-left:20px!important}.px-sm-6{padding-right:24px!important;padding-left:24px!important}.px-sm-7{padding-right:28px!important;padding-left:28px!important}.px-sm-8{padding-right:32px!important;padding-left:32px!important}.px-sm-9{padding-right:36px!important;padding-left:36px!important}.px-sm-10{padding-right:40px!important;padding-left:40px!important}.px-sm-11{padding-right:44px!important;padding-left:44px!important}.px-sm-12{padding-right:48px!important;padding-left:48px!important}.px-sm-13{padding-right:52px!important;padding-left:52px!important}.px-sm-14{padding-right:56px!important;padding-left:56px!important}.px-sm-15{padding-right:60px!important;padding-left:60px!important}.px-sm-16{padding-right:64px!important;padding-left:64px!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:4px!important;padding-bottom:4px!important}.py-sm-2{padding-top:8px!important;padding-bottom:8px!important}.py-sm-3{padding-top:12px!important;padding-bottom:12px!important}.py-sm-4{padding-top:16px!important;padding-bottom:16px!important}.py-sm-5{padding-top:20px!important;padding-bottom:20px!important}.py-sm-6{padding-top:24px!important;padding-bottom:24px!important}.py-sm-7{padding-top:28px!important;padding-bottom:28px!important}.py-sm-8{padding-top:32px!important;padding-bottom:32px!important}.py-sm-9{padding-top:36px!important;padding-bottom:36px!important}.py-sm-10{padding-top:40px!important;padding-bottom:40px!important}.py-sm-11{padding-top:44px!important;padding-bottom:44px!important}.py-sm-12{padding-top:48px!important;padding-bottom:48px!important}.py-sm-13{padding-top:52px!important;padding-bottom:52px!important}.py-sm-14{padding-top:56px!important;padding-bottom:56px!important}.py-sm-15{padding-top:60px!important;padding-bottom:60px!important}.py-sm-16{padding-top:64px!important;padding-bottom:64px!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:4px!important}.pt-sm-2{padding-top:8px!important}.pt-sm-3{padding-top:12px!important}.pt-sm-4{padding-top:16px!important}.pt-sm-5{padding-top:20px!important}.pt-sm-6{padding-top:24px!important}.pt-sm-7{padding-top:28px!important}.pt-sm-8{padding-top:32px!important}.pt-sm-9{padding-top:36px!important}.pt-sm-10{padding-top:40px!important}.pt-sm-11{padding-top:44px!important}.pt-sm-12{padding-top:48px!important}.pt-sm-13{padding-top:52px!important}.pt-sm-14{padding-top:56px!important}.pt-sm-15{padding-top:60px!important}.pt-sm-16{padding-top:64px!important}.pr-sm-0{padding-right:0!important}.pr-sm-1{padding-right:4px!important}.pr-sm-2{padding-right:8px!important}.pr-sm-3{padding-right:12px!important}.pr-sm-4{padding-right:16px!important}.pr-sm-5{padding-right:20px!important}.pr-sm-6{padding-right:24px!important}.pr-sm-7{padding-right:28px!important}.pr-sm-8{padding-right:32px!important}.pr-sm-9{padding-right:36px!important}.pr-sm-10{padding-right:40px!important}.pr-sm-11{padding-right:44px!important}.pr-sm-12{padding-right:48px!important}.pr-sm-13{padding-right:52px!important}.pr-sm-14{padding-right:56px!important}.pr-sm-15{padding-right:60px!important}.pr-sm-16{padding-right:64px!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:4px!important}.pb-sm-2{padding-bottom:8px!important}.pb-sm-3{padding-bottom:12px!important}.pb-sm-4{padding-bottom:16px!important}.pb-sm-5{padding-bottom:20px!important}.pb-sm-6{padding-bottom:24px!important}.pb-sm-7{padding-bottom:28px!important}.pb-sm-8{padding-bottom:32px!important}.pb-sm-9{padding-bottom:36px!important}.pb-sm-10{padding-bottom:40px!important}.pb-sm-11{padding-bottom:44px!important}.pb-sm-12{padding-bottom:48px!important}.pb-sm-13{padding-bottom:52px!important}.pb-sm-14{padding-bottom:56px!important}.pb-sm-15{padding-bottom:60px!important}.pb-sm-16{padding-bottom:64px!important}.pl-sm-0{padding-left:0!important}.pl-sm-1{padding-left:4px!important}.pl-sm-2{padding-left:8px!important}.pl-sm-3{padding-left:12px!important}.pl-sm-4{padding-left:16px!important}.pl-sm-5{padding-left:20px!important}.pl-sm-6{padding-left:24px!important}.pl-sm-7{padding-left:28px!important}.pl-sm-8{padding-left:32px!important}.pl-sm-9{padding-left:36px!important}.pl-sm-10{padding-left:40px!important}.pl-sm-11{padding-left:44px!important}.pl-sm-12{padding-left:48px!important}.pl-sm-13{padding-left:52px!important}.pl-sm-14{padding-left:56px!important}.pl-sm-15{padding-left:60px!important}.pl-sm-16{padding-left:64px!important}.ps-sm-0{padding-inline-start:0px!important}.ps-sm-1{padding-inline-start:4px!important}.ps-sm-2{padding-inline-start:8px!important}.ps-sm-3{padding-inline-start:12px!important}.ps-sm-4{padding-inline-start:16px!important}.ps-sm-5{padding-inline-start:20px!important}.ps-sm-6{padding-inline-start:24px!important}.ps-sm-7{padding-inline-start:28px!important}.ps-sm-8{padding-inline-start:32px!important}.ps-sm-9{padding-inline-start:36px!important}.ps-sm-10{padding-inline-start:40px!important}.ps-sm-11{padding-inline-start:44px!important}.ps-sm-12{padding-inline-start:48px!important}.ps-sm-13{padding-inline-start:52px!important}.ps-sm-14{padding-inline-start:56px!important}.ps-sm-15{padding-inline-start:60px!important}.ps-sm-16{padding-inline-start:64px!important}.pe-sm-0{padding-inline-end:0px!important}.pe-sm-1{padding-inline-end:4px!important}.pe-sm-2{padding-inline-end:8px!important}.pe-sm-3{padding-inline-end:12px!important}.pe-sm-4{padding-inline-end:16px!important}.pe-sm-5{padding-inline-end:20px!important}.pe-sm-6{padding-inline-end:24px!important}.pe-sm-7{padding-inline-end:28px!important}.pe-sm-8{padding-inline-end:32px!important}.pe-sm-9{padding-inline-end:36px!important}.pe-sm-10{padding-inline-end:40px!important}.pe-sm-11{padding-inline-end:44px!important}.pe-sm-12{padding-inline-end:48px!important}.pe-sm-13{padding-inline-end:52px!important}.pe-sm-14{padding-inline-end:56px!important}.pe-sm-15{padding-inline-end:60px!important}.pe-sm-16{padding-inline-end:64px!important}.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}.text-sm-justify{text-align:justify!important}.text-sm-start{text-align:start!important}.text-sm-end{text-align:end!important}.text-sm-h1{font-size:6rem!important;font-weight:300;line-height:6rem;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-h2{font-size:3.75rem!important;font-weight:300;line-height:3.75rem;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-h3{font-size:3rem!important;font-weight:400;line-height:3.125rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-h4{font-size:2.125rem!important;font-weight:400;line-height:2.5rem;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-h5{font-size:1.5rem!important;font-weight:400;line-height:2rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-h6{font-size:1.25rem!important;font-weight:500;line-height:2rem;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-body-1{font-size:1rem!important;font-weight:400;line-height:1.5rem;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-body-2{font-size:.875rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-sm-caption{font-size:.75rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-overline{font-size:.75rem!important;font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}}@media (min-width: 960px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.float-md-none{float:none!important}.float-md-left{float:left!important}.float-md-right{float:right!important}.v-locale--is-rtl .float-md-end{float:left!important}.v-locale--is-rtl .float-md-start,.v-locale--is-ltr .float-md-end{float:right!important}.v-locale--is-ltr .float-md-start{float:left!important}.flex-md-fill,.flex-md-1-1{flex:1 1 auto!important}.flex-md-1-0{flex:1 0 auto!important}.flex-md-0-1{flex:0 1 auto!important}.flex-md-0-0{flex:0 0 auto!important}.flex-md-1-1-100{flex:1 1 100%!important}.flex-md-1-0-100{flex:1 0 100%!important}.flex-md-0-1-100{flex:0 1 100%!important}.flex-md-0-0-100{flex:0 0 100%!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-md-start{justify-content:flex-start!important}.justify-md-end{justify-content:flex-end!important}.justify-md-center{justify-content:center!important}.justify-md-space-between{justify-content:space-between!important}.justify-md-space-around{justify-content:space-around!important}.justify-md-space-evenly{justify-content:space-evenly!important}.align-md-start{align-items:flex-start!important}.align-md-end{align-items:flex-end!important}.align-md-center{align-items:center!important}.align-md-baseline{align-items:baseline!important}.align-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-space-between{align-content:space-between!important}.align-content-md-space-around{align-content:space-around!important}.align-content-md-space-evenly{align-content:space-evenly!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-6{order:6!important}.order-md-7{order:7!important}.order-md-8{order:8!important}.order-md-9{order:9!important}.order-md-10{order:10!important}.order-md-11{order:11!important}.order-md-12{order:12!important}.order-md-last{order:13!important}.ga-md-0{gap:0px!important}.ga-md-1{gap:4px!important}.ga-md-2{gap:8px!important}.ga-md-3{gap:12px!important}.ga-md-4{gap:16px!important}.ga-md-5{gap:20px!important}.ga-md-6{gap:24px!important}.ga-md-7{gap:28px!important}.ga-md-8{gap:32px!important}.ga-md-9{gap:36px!important}.ga-md-10{gap:40px!important}.ga-md-11{gap:44px!important}.ga-md-12{gap:48px!important}.ga-md-13{gap:52px!important}.ga-md-14{gap:56px!important}.ga-md-15{gap:60px!important}.ga-md-16{gap:64px!important}.ga-md-auto{gap:auto!important}.gr-md-0{row-gap:0px!important}.gr-md-1{row-gap:4px!important}.gr-md-2{row-gap:8px!important}.gr-md-3{row-gap:12px!important}.gr-md-4{row-gap:16px!important}.gr-md-5{row-gap:20px!important}.gr-md-6{row-gap:24px!important}.gr-md-7{row-gap:28px!important}.gr-md-8{row-gap:32px!important}.gr-md-9{row-gap:36px!important}.gr-md-10{row-gap:40px!important}.gr-md-11{row-gap:44px!important}.gr-md-12{row-gap:48px!important}.gr-md-13{row-gap:52px!important}.gr-md-14{row-gap:56px!important}.gr-md-15{row-gap:60px!important}.gr-md-16{row-gap:64px!important}.gr-md-auto{row-gap:auto!important}.gc-md-0{column-gap:0px!important}.gc-md-1{column-gap:4px!important}.gc-md-2{column-gap:8px!important}.gc-md-3{column-gap:12px!important}.gc-md-4{column-gap:16px!important}.gc-md-5{column-gap:20px!important}.gc-md-6{column-gap:24px!important}.gc-md-7{column-gap:28px!important}.gc-md-8{column-gap:32px!important}.gc-md-9{column-gap:36px!important}.gc-md-10{column-gap:40px!important}.gc-md-11{column-gap:44px!important}.gc-md-12{column-gap:48px!important}.gc-md-13{column-gap:52px!important}.gc-md-14{column-gap:56px!important}.gc-md-15{column-gap:60px!important}.gc-md-16{column-gap:64px!important}.gc-md-auto{column-gap:auto!important}.ma-md-0{margin:0!important}.ma-md-1{margin:4px!important}.ma-md-2{margin:8px!important}.ma-md-3{margin:12px!important}.ma-md-4{margin:16px!important}.ma-md-5{margin:20px!important}.ma-md-6{margin:24px!important}.ma-md-7{margin:28px!important}.ma-md-8{margin:32px!important}.ma-md-9{margin:36px!important}.ma-md-10{margin:40px!important}.ma-md-11{margin:44px!important}.ma-md-12{margin:48px!important}.ma-md-13{margin:52px!important}.ma-md-14{margin:56px!important}.ma-md-15{margin:60px!important}.ma-md-16{margin:64px!important}.ma-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:4px!important;margin-left:4px!important}.mx-md-2{margin-right:8px!important;margin-left:8px!important}.mx-md-3{margin-right:12px!important;margin-left:12px!important}.mx-md-4{margin-right:16px!important;margin-left:16px!important}.mx-md-5{margin-right:20px!important;margin-left:20px!important}.mx-md-6{margin-right:24px!important;margin-left:24px!important}.mx-md-7{margin-right:28px!important;margin-left:28px!important}.mx-md-8{margin-right:32px!important;margin-left:32px!important}.mx-md-9{margin-right:36px!important;margin-left:36px!important}.mx-md-10{margin-right:40px!important;margin-left:40px!important}.mx-md-11{margin-right:44px!important;margin-left:44px!important}.mx-md-12{margin-right:48px!important;margin-left:48px!important}.mx-md-13{margin-right:52px!important;margin-left:52px!important}.mx-md-14{margin-right:56px!important;margin-left:56px!important}.mx-md-15{margin-right:60px!important;margin-left:60px!important}.mx-md-16{margin-right:64px!important;margin-left:64px!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:4px!important;margin-bottom:4px!important}.my-md-2{margin-top:8px!important;margin-bottom:8px!important}.my-md-3{margin-top:12px!important;margin-bottom:12px!important}.my-md-4{margin-top:16px!important;margin-bottom:16px!important}.my-md-5{margin-top:20px!important;margin-bottom:20px!important}.my-md-6{margin-top:24px!important;margin-bottom:24px!important}.my-md-7{margin-top:28px!important;margin-bottom:28px!important}.my-md-8{margin-top:32px!important;margin-bottom:32px!important}.my-md-9{margin-top:36px!important;margin-bottom:36px!important}.my-md-10{margin-top:40px!important;margin-bottom:40px!important}.my-md-11{margin-top:44px!important;margin-bottom:44px!important}.my-md-12{margin-top:48px!important;margin-bottom:48px!important}.my-md-13{margin-top:52px!important;margin-bottom:52px!important}.my-md-14{margin-top:56px!important;margin-bottom:56px!important}.my-md-15{margin-top:60px!important;margin-bottom:60px!important}.my-md-16{margin-top:64px!important;margin-bottom:64px!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:4px!important}.mt-md-2{margin-top:8px!important}.mt-md-3{margin-top:12px!important}.mt-md-4{margin-top:16px!important}.mt-md-5{margin-top:20px!important}.mt-md-6{margin-top:24px!important}.mt-md-7{margin-top:28px!important}.mt-md-8{margin-top:32px!important}.mt-md-9{margin-top:36px!important}.mt-md-10{margin-top:40px!important}.mt-md-11{margin-top:44px!important}.mt-md-12{margin-top:48px!important}.mt-md-13{margin-top:52px!important}.mt-md-14{margin-top:56px!important}.mt-md-15{margin-top:60px!important}.mt-md-16{margin-top:64px!important}.mt-md-auto{margin-top:auto!important}.mr-md-0{margin-right:0!important}.mr-md-1{margin-right:4px!important}.mr-md-2{margin-right:8px!important}.mr-md-3{margin-right:12px!important}.mr-md-4{margin-right:16px!important}.mr-md-5{margin-right:20px!important}.mr-md-6{margin-right:24px!important}.mr-md-7{margin-right:28px!important}.mr-md-8{margin-right:32px!important}.mr-md-9{margin-right:36px!important}.mr-md-10{margin-right:40px!important}.mr-md-11{margin-right:44px!important}.mr-md-12{margin-right:48px!important}.mr-md-13{margin-right:52px!important}.mr-md-14{margin-right:56px!important}.mr-md-15{margin-right:60px!important}.mr-md-16{margin-right:64px!important}.mr-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:4px!important}.mb-md-2{margin-bottom:8px!important}.mb-md-3{margin-bottom:12px!important}.mb-md-4{margin-bottom:16px!important}.mb-md-5{margin-bottom:20px!important}.mb-md-6{margin-bottom:24px!important}.mb-md-7{margin-bottom:28px!important}.mb-md-8{margin-bottom:32px!important}.mb-md-9{margin-bottom:36px!important}.mb-md-10{margin-bottom:40px!important}.mb-md-11{margin-bottom:44px!important}.mb-md-12{margin-bottom:48px!important}.mb-md-13{margin-bottom:52px!important}.mb-md-14{margin-bottom:56px!important}.mb-md-15{margin-bottom:60px!important}.mb-md-16{margin-bottom:64px!important}.mb-md-auto{margin-bottom:auto!important}.ml-md-0{margin-left:0!important}.ml-md-1{margin-left:4px!important}.ml-md-2{margin-left:8px!important}.ml-md-3{margin-left:12px!important}.ml-md-4{margin-left:16px!important}.ml-md-5{margin-left:20px!important}.ml-md-6{margin-left:24px!important}.ml-md-7{margin-left:28px!important}.ml-md-8{margin-left:32px!important}.ml-md-9{margin-left:36px!important}.ml-md-10{margin-left:40px!important}.ml-md-11{margin-left:44px!important}.ml-md-12{margin-left:48px!important}.ml-md-13{margin-left:52px!important}.ml-md-14{margin-left:56px!important}.ml-md-15{margin-left:60px!important}.ml-md-16{margin-left:64px!important}.ml-md-auto{margin-left:auto!important}.ms-md-0{margin-inline-start:0px!important}.ms-md-1{margin-inline-start:4px!important}.ms-md-2{margin-inline-start:8px!important}.ms-md-3{margin-inline-start:12px!important}.ms-md-4{margin-inline-start:16px!important}.ms-md-5{margin-inline-start:20px!important}.ms-md-6{margin-inline-start:24px!important}.ms-md-7{margin-inline-start:28px!important}.ms-md-8{margin-inline-start:32px!important}.ms-md-9{margin-inline-start:36px!important}.ms-md-10{margin-inline-start:40px!important}.ms-md-11{margin-inline-start:44px!important}.ms-md-12{margin-inline-start:48px!important}.ms-md-13{margin-inline-start:52px!important}.ms-md-14{margin-inline-start:56px!important}.ms-md-15{margin-inline-start:60px!important}.ms-md-16{margin-inline-start:64px!important}.ms-md-auto{margin-inline-start:auto!important}.me-md-0{margin-inline-end:0px!important}.me-md-1{margin-inline-end:4px!important}.me-md-2{margin-inline-end:8px!important}.me-md-3{margin-inline-end:12px!important}.me-md-4{margin-inline-end:16px!important}.me-md-5{margin-inline-end:20px!important}.me-md-6{margin-inline-end:24px!important}.me-md-7{margin-inline-end:28px!important}.me-md-8{margin-inline-end:32px!important}.me-md-9{margin-inline-end:36px!important}.me-md-10{margin-inline-end:40px!important}.me-md-11{margin-inline-end:44px!important}.me-md-12{margin-inline-end:48px!important}.me-md-13{margin-inline-end:52px!important}.me-md-14{margin-inline-end:56px!important}.me-md-15{margin-inline-end:60px!important}.me-md-16{margin-inline-end:64px!important}.me-md-auto{margin-inline-end:auto!important}.ma-md-n1{margin:-4px!important}.ma-md-n2{margin:-8px!important}.ma-md-n3{margin:-12px!important}.ma-md-n4{margin:-16px!important}.ma-md-n5{margin:-20px!important}.ma-md-n6{margin:-24px!important}.ma-md-n7{margin:-28px!important}.ma-md-n8{margin:-32px!important}.ma-md-n9{margin:-36px!important}.ma-md-n10{margin:-40px!important}.ma-md-n11{margin:-44px!important}.ma-md-n12{margin:-48px!important}.ma-md-n13{margin:-52px!important}.ma-md-n14{margin:-56px!important}.ma-md-n15{margin:-60px!important}.ma-md-n16{margin:-64px!important}.mx-md-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-md-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-md-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-md-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-md-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-md-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-md-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-md-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-md-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-md-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-md-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-md-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-md-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-md-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-md-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-md-n16{margin-right:-64px!important;margin-left:-64px!important}.my-md-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-md-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-md-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-md-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-md-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-md-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-md-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-md-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-md-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-md-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-md-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-md-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-md-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-md-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-md-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-md-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-md-n1{margin-top:-4px!important}.mt-md-n2{margin-top:-8px!important}.mt-md-n3{margin-top:-12px!important}.mt-md-n4{margin-top:-16px!important}.mt-md-n5{margin-top:-20px!important}.mt-md-n6{margin-top:-24px!important}.mt-md-n7{margin-top:-28px!important}.mt-md-n8{margin-top:-32px!important}.mt-md-n9{margin-top:-36px!important}.mt-md-n10{margin-top:-40px!important}.mt-md-n11{margin-top:-44px!important}.mt-md-n12{margin-top:-48px!important}.mt-md-n13{margin-top:-52px!important}.mt-md-n14{margin-top:-56px!important}.mt-md-n15{margin-top:-60px!important}.mt-md-n16{margin-top:-64px!important}.mr-md-n1{margin-right:-4px!important}.mr-md-n2{margin-right:-8px!important}.mr-md-n3{margin-right:-12px!important}.mr-md-n4{margin-right:-16px!important}.mr-md-n5{margin-right:-20px!important}.mr-md-n6{margin-right:-24px!important}.mr-md-n7{margin-right:-28px!important}.mr-md-n8{margin-right:-32px!important}.mr-md-n9{margin-right:-36px!important}.mr-md-n10{margin-right:-40px!important}.mr-md-n11{margin-right:-44px!important}.mr-md-n12{margin-right:-48px!important}.mr-md-n13{margin-right:-52px!important}.mr-md-n14{margin-right:-56px!important}.mr-md-n15{margin-right:-60px!important}.mr-md-n16{margin-right:-64px!important}.mb-md-n1{margin-bottom:-4px!important}.mb-md-n2{margin-bottom:-8px!important}.mb-md-n3{margin-bottom:-12px!important}.mb-md-n4{margin-bottom:-16px!important}.mb-md-n5{margin-bottom:-20px!important}.mb-md-n6{margin-bottom:-24px!important}.mb-md-n7{margin-bottom:-28px!important}.mb-md-n8{margin-bottom:-32px!important}.mb-md-n9{margin-bottom:-36px!important}.mb-md-n10{margin-bottom:-40px!important}.mb-md-n11{margin-bottom:-44px!important}.mb-md-n12{margin-bottom:-48px!important}.mb-md-n13{margin-bottom:-52px!important}.mb-md-n14{margin-bottom:-56px!important}.mb-md-n15{margin-bottom:-60px!important}.mb-md-n16{margin-bottom:-64px!important}.ml-md-n1{margin-left:-4px!important}.ml-md-n2{margin-left:-8px!important}.ml-md-n3{margin-left:-12px!important}.ml-md-n4{margin-left:-16px!important}.ml-md-n5{margin-left:-20px!important}.ml-md-n6{margin-left:-24px!important}.ml-md-n7{margin-left:-28px!important}.ml-md-n8{margin-left:-32px!important}.ml-md-n9{margin-left:-36px!important}.ml-md-n10{margin-left:-40px!important}.ml-md-n11{margin-left:-44px!important}.ml-md-n12{margin-left:-48px!important}.ml-md-n13{margin-left:-52px!important}.ml-md-n14{margin-left:-56px!important}.ml-md-n15{margin-left:-60px!important}.ml-md-n16{margin-left:-64px!important}.ms-md-n1{margin-inline-start:-4px!important}.ms-md-n2{margin-inline-start:-8px!important}.ms-md-n3{margin-inline-start:-12px!important}.ms-md-n4{margin-inline-start:-16px!important}.ms-md-n5{margin-inline-start:-20px!important}.ms-md-n6{margin-inline-start:-24px!important}.ms-md-n7{margin-inline-start:-28px!important}.ms-md-n8{margin-inline-start:-32px!important}.ms-md-n9{margin-inline-start:-36px!important}.ms-md-n10{margin-inline-start:-40px!important}.ms-md-n11{margin-inline-start:-44px!important}.ms-md-n12{margin-inline-start:-48px!important}.ms-md-n13{margin-inline-start:-52px!important}.ms-md-n14{margin-inline-start:-56px!important}.ms-md-n15{margin-inline-start:-60px!important}.ms-md-n16{margin-inline-start:-64px!important}.me-md-n1{margin-inline-end:-4px!important}.me-md-n2{margin-inline-end:-8px!important}.me-md-n3{margin-inline-end:-12px!important}.me-md-n4{margin-inline-end:-16px!important}.me-md-n5{margin-inline-end:-20px!important}.me-md-n6{margin-inline-end:-24px!important}.me-md-n7{margin-inline-end:-28px!important}.me-md-n8{margin-inline-end:-32px!important}.me-md-n9{margin-inline-end:-36px!important}.me-md-n10{margin-inline-end:-40px!important}.me-md-n11{margin-inline-end:-44px!important}.me-md-n12{margin-inline-end:-48px!important}.me-md-n13{margin-inline-end:-52px!important}.me-md-n14{margin-inline-end:-56px!important}.me-md-n15{margin-inline-end:-60px!important}.me-md-n16{margin-inline-end:-64px!important}.pa-md-0{padding:0!important}.pa-md-1{padding:4px!important}.pa-md-2{padding:8px!important}.pa-md-3{padding:12px!important}.pa-md-4{padding:16px!important}.pa-md-5{padding:20px!important}.pa-md-6{padding:24px!important}.pa-md-7{padding:28px!important}.pa-md-8{padding:32px!important}.pa-md-9{padding:36px!important}.pa-md-10{padding:40px!important}.pa-md-11{padding:44px!important}.pa-md-12{padding:48px!important}.pa-md-13{padding:52px!important}.pa-md-14{padding:56px!important}.pa-md-15{padding:60px!important}.pa-md-16{padding:64px!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:4px!important;padding-left:4px!important}.px-md-2{padding-right:8px!important;padding-left:8px!important}.px-md-3{padding-right:12px!important;padding-left:12px!important}.px-md-4{padding-right:16px!important;padding-left:16px!important}.px-md-5{padding-right:20px!important;padding-left:20px!important}.px-md-6{padding-right:24px!important;padding-left:24px!important}.px-md-7{padding-right:28px!important;padding-left:28px!important}.px-md-8{padding-right:32px!important;padding-left:32px!important}.px-md-9{padding-right:36px!important;padding-left:36px!important}.px-md-10{padding-right:40px!important;padding-left:40px!important}.px-md-11{padding-right:44px!important;padding-left:44px!important}.px-md-12{padding-right:48px!important;padding-left:48px!important}.px-md-13{padding-right:52px!important;padding-left:52px!important}.px-md-14{padding-right:56px!important;padding-left:56px!important}.px-md-15{padding-right:60px!important;padding-left:60px!important}.px-md-16{padding-right:64px!important;padding-left:64px!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:4px!important;padding-bottom:4px!important}.py-md-2{padding-top:8px!important;padding-bottom:8px!important}.py-md-3{padding-top:12px!important;padding-bottom:12px!important}.py-md-4{padding-top:16px!important;padding-bottom:16px!important}.py-md-5{padding-top:20px!important;padding-bottom:20px!important}.py-md-6{padding-top:24px!important;padding-bottom:24px!important}.py-md-7{padding-top:28px!important;padding-bottom:28px!important}.py-md-8{padding-top:32px!important;padding-bottom:32px!important}.py-md-9{padding-top:36px!important;padding-bottom:36px!important}.py-md-10{padding-top:40px!important;padding-bottom:40px!important}.py-md-11{padding-top:44px!important;padding-bottom:44px!important}.py-md-12{padding-top:48px!important;padding-bottom:48px!important}.py-md-13{padding-top:52px!important;padding-bottom:52px!important}.py-md-14{padding-top:56px!important;padding-bottom:56px!important}.py-md-15{padding-top:60px!important;padding-bottom:60px!important}.py-md-16{padding-top:64px!important;padding-bottom:64px!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:4px!important}.pt-md-2{padding-top:8px!important}.pt-md-3{padding-top:12px!important}.pt-md-4{padding-top:16px!important}.pt-md-5{padding-top:20px!important}.pt-md-6{padding-top:24px!important}.pt-md-7{padding-top:28px!important}.pt-md-8{padding-top:32px!important}.pt-md-9{padding-top:36px!important}.pt-md-10{padding-top:40px!important}.pt-md-11{padding-top:44px!important}.pt-md-12{padding-top:48px!important}.pt-md-13{padding-top:52px!important}.pt-md-14{padding-top:56px!important}.pt-md-15{padding-top:60px!important}.pt-md-16{padding-top:64px!important}.pr-md-0{padding-right:0!important}.pr-md-1{padding-right:4px!important}.pr-md-2{padding-right:8px!important}.pr-md-3{padding-right:12px!important}.pr-md-4{padding-right:16px!important}.pr-md-5{padding-right:20px!important}.pr-md-6{padding-right:24px!important}.pr-md-7{padding-right:28px!important}.pr-md-8{padding-right:32px!important}.pr-md-9{padding-right:36px!important}.pr-md-10{padding-right:40px!important}.pr-md-11{padding-right:44px!important}.pr-md-12{padding-right:48px!important}.pr-md-13{padding-right:52px!important}.pr-md-14{padding-right:56px!important}.pr-md-15{padding-right:60px!important}.pr-md-16{padding-right:64px!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:4px!important}.pb-md-2{padding-bottom:8px!important}.pb-md-3{padding-bottom:12px!important}.pb-md-4{padding-bottom:16px!important}.pb-md-5{padding-bottom:20px!important}.pb-md-6{padding-bottom:24px!important}.pb-md-7{padding-bottom:28px!important}.pb-md-8{padding-bottom:32px!important}.pb-md-9{padding-bottom:36px!important}.pb-md-10{padding-bottom:40px!important}.pb-md-11{padding-bottom:44px!important}.pb-md-12{padding-bottom:48px!important}.pb-md-13{padding-bottom:52px!important}.pb-md-14{padding-bottom:56px!important}.pb-md-15{padding-bottom:60px!important}.pb-md-16{padding-bottom:64px!important}.pl-md-0{padding-left:0!important}.pl-md-1{padding-left:4px!important}.pl-md-2{padding-left:8px!important}.pl-md-3{padding-left:12px!important}.pl-md-4{padding-left:16px!important}.pl-md-5{padding-left:20px!important}.pl-md-6{padding-left:24px!important}.pl-md-7{padding-left:28px!important}.pl-md-8{padding-left:32px!important}.pl-md-9{padding-left:36px!important}.pl-md-10{padding-left:40px!important}.pl-md-11{padding-left:44px!important}.pl-md-12{padding-left:48px!important}.pl-md-13{padding-left:52px!important}.pl-md-14{padding-left:56px!important}.pl-md-15{padding-left:60px!important}.pl-md-16{padding-left:64px!important}.ps-md-0{padding-inline-start:0px!important}.ps-md-1{padding-inline-start:4px!important}.ps-md-2{padding-inline-start:8px!important}.ps-md-3{padding-inline-start:12px!important}.ps-md-4{padding-inline-start:16px!important}.ps-md-5{padding-inline-start:20px!important}.ps-md-6{padding-inline-start:24px!important}.ps-md-7{padding-inline-start:28px!important}.ps-md-8{padding-inline-start:32px!important}.ps-md-9{padding-inline-start:36px!important}.ps-md-10{padding-inline-start:40px!important}.ps-md-11{padding-inline-start:44px!important}.ps-md-12{padding-inline-start:48px!important}.ps-md-13{padding-inline-start:52px!important}.ps-md-14{padding-inline-start:56px!important}.ps-md-15{padding-inline-start:60px!important}.ps-md-16{padding-inline-start:64px!important}.pe-md-0{padding-inline-end:0px!important}.pe-md-1{padding-inline-end:4px!important}.pe-md-2{padding-inline-end:8px!important}.pe-md-3{padding-inline-end:12px!important}.pe-md-4{padding-inline-end:16px!important}.pe-md-5{padding-inline-end:20px!important}.pe-md-6{padding-inline-end:24px!important}.pe-md-7{padding-inline-end:28px!important}.pe-md-8{padding-inline-end:32px!important}.pe-md-9{padding-inline-end:36px!important}.pe-md-10{padding-inline-end:40px!important}.pe-md-11{padding-inline-end:44px!important}.pe-md-12{padding-inline-end:48px!important}.pe-md-13{padding-inline-end:52px!important}.pe-md-14{padding-inline-end:56px!important}.pe-md-15{padding-inline-end:60px!important}.pe-md-16{padding-inline-end:64px!important}.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}.text-md-justify{text-align:justify!important}.text-md-start{text-align:start!important}.text-md-end{text-align:end!important}.text-md-h1{font-size:6rem!important;font-weight:300;line-height:6rem;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-h2{font-size:3.75rem!important;font-weight:300;line-height:3.75rem;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-h3{font-size:3rem!important;font-weight:400;line-height:3.125rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-h4{font-size:2.125rem!important;font-weight:400;line-height:2.5rem;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-h5{font-size:1.5rem!important;font-weight:400;line-height:2rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-h6{font-size:1.25rem!important;font-weight:500;line-height:2rem;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-body-1{font-size:1rem!important;font-weight:400;line-height:1.5rem;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-body-2{font-size:.875rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-md-caption{font-size:.75rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-overline{font-size:.75rem!important;font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}}@media (min-width: 1280px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.float-lg-none{float:none!important}.float-lg-left{float:left!important}.float-lg-right{float:right!important}.v-locale--is-rtl .float-lg-end{float:left!important}.v-locale--is-rtl .float-lg-start,.v-locale--is-ltr .float-lg-end{float:right!important}.v-locale--is-ltr .float-lg-start{float:left!important}.flex-lg-fill,.flex-lg-1-1{flex:1 1 auto!important}.flex-lg-1-0{flex:1 0 auto!important}.flex-lg-0-1{flex:0 1 auto!important}.flex-lg-0-0{flex:0 0 auto!important}.flex-lg-1-1-100{flex:1 1 100%!important}.flex-lg-1-0-100{flex:1 0 100%!important}.flex-lg-0-1-100{flex:0 1 100%!important}.flex-lg-0-0-100{flex:0 0 100%!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-lg-start{justify-content:flex-start!important}.justify-lg-end{justify-content:flex-end!important}.justify-lg-center{justify-content:center!important}.justify-lg-space-between{justify-content:space-between!important}.justify-lg-space-around{justify-content:space-around!important}.justify-lg-space-evenly{justify-content:space-evenly!important}.align-lg-start{align-items:flex-start!important}.align-lg-end{align-items:flex-end!important}.align-lg-center{align-items:center!important}.align-lg-baseline{align-items:baseline!important}.align-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-space-between{align-content:space-between!important}.align-content-lg-space-around{align-content:space-around!important}.align-content-lg-space-evenly{align-content:space-evenly!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-6{order:6!important}.order-lg-7{order:7!important}.order-lg-8{order:8!important}.order-lg-9{order:9!important}.order-lg-10{order:10!important}.order-lg-11{order:11!important}.order-lg-12{order:12!important}.order-lg-last{order:13!important}.ga-lg-0{gap:0px!important}.ga-lg-1{gap:4px!important}.ga-lg-2{gap:8px!important}.ga-lg-3{gap:12px!important}.ga-lg-4{gap:16px!important}.ga-lg-5{gap:20px!important}.ga-lg-6{gap:24px!important}.ga-lg-7{gap:28px!important}.ga-lg-8{gap:32px!important}.ga-lg-9{gap:36px!important}.ga-lg-10{gap:40px!important}.ga-lg-11{gap:44px!important}.ga-lg-12{gap:48px!important}.ga-lg-13{gap:52px!important}.ga-lg-14{gap:56px!important}.ga-lg-15{gap:60px!important}.ga-lg-16{gap:64px!important}.ga-lg-auto{gap:auto!important}.gr-lg-0{row-gap:0px!important}.gr-lg-1{row-gap:4px!important}.gr-lg-2{row-gap:8px!important}.gr-lg-3{row-gap:12px!important}.gr-lg-4{row-gap:16px!important}.gr-lg-5{row-gap:20px!important}.gr-lg-6{row-gap:24px!important}.gr-lg-7{row-gap:28px!important}.gr-lg-8{row-gap:32px!important}.gr-lg-9{row-gap:36px!important}.gr-lg-10{row-gap:40px!important}.gr-lg-11{row-gap:44px!important}.gr-lg-12{row-gap:48px!important}.gr-lg-13{row-gap:52px!important}.gr-lg-14{row-gap:56px!important}.gr-lg-15{row-gap:60px!important}.gr-lg-16{row-gap:64px!important}.gr-lg-auto{row-gap:auto!important}.gc-lg-0{column-gap:0px!important}.gc-lg-1{column-gap:4px!important}.gc-lg-2{column-gap:8px!important}.gc-lg-3{column-gap:12px!important}.gc-lg-4{column-gap:16px!important}.gc-lg-5{column-gap:20px!important}.gc-lg-6{column-gap:24px!important}.gc-lg-7{column-gap:28px!important}.gc-lg-8{column-gap:32px!important}.gc-lg-9{column-gap:36px!important}.gc-lg-10{column-gap:40px!important}.gc-lg-11{column-gap:44px!important}.gc-lg-12{column-gap:48px!important}.gc-lg-13{column-gap:52px!important}.gc-lg-14{column-gap:56px!important}.gc-lg-15{column-gap:60px!important}.gc-lg-16{column-gap:64px!important}.gc-lg-auto{column-gap:auto!important}.ma-lg-0{margin:0!important}.ma-lg-1{margin:4px!important}.ma-lg-2{margin:8px!important}.ma-lg-3{margin:12px!important}.ma-lg-4{margin:16px!important}.ma-lg-5{margin:20px!important}.ma-lg-6{margin:24px!important}.ma-lg-7{margin:28px!important}.ma-lg-8{margin:32px!important}.ma-lg-9{margin:36px!important}.ma-lg-10{margin:40px!important}.ma-lg-11{margin:44px!important}.ma-lg-12{margin:48px!important}.ma-lg-13{margin:52px!important}.ma-lg-14{margin:56px!important}.ma-lg-15{margin:60px!important}.ma-lg-16{margin:64px!important}.ma-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:4px!important;margin-left:4px!important}.mx-lg-2{margin-right:8px!important;margin-left:8px!important}.mx-lg-3{margin-right:12px!important;margin-left:12px!important}.mx-lg-4{margin-right:16px!important;margin-left:16px!important}.mx-lg-5{margin-right:20px!important;margin-left:20px!important}.mx-lg-6{margin-right:24px!important;margin-left:24px!important}.mx-lg-7{margin-right:28px!important;margin-left:28px!important}.mx-lg-8{margin-right:32px!important;margin-left:32px!important}.mx-lg-9{margin-right:36px!important;margin-left:36px!important}.mx-lg-10{margin-right:40px!important;margin-left:40px!important}.mx-lg-11{margin-right:44px!important;margin-left:44px!important}.mx-lg-12{margin-right:48px!important;margin-left:48px!important}.mx-lg-13{margin-right:52px!important;margin-left:52px!important}.mx-lg-14{margin-right:56px!important;margin-left:56px!important}.mx-lg-15{margin-right:60px!important;margin-left:60px!important}.mx-lg-16{margin-right:64px!important;margin-left:64px!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:4px!important;margin-bottom:4px!important}.my-lg-2{margin-top:8px!important;margin-bottom:8px!important}.my-lg-3{margin-top:12px!important;margin-bottom:12px!important}.my-lg-4{margin-top:16px!important;margin-bottom:16px!important}.my-lg-5{margin-top:20px!important;margin-bottom:20px!important}.my-lg-6{margin-top:24px!important;margin-bottom:24px!important}.my-lg-7{margin-top:28px!important;margin-bottom:28px!important}.my-lg-8{margin-top:32px!important;margin-bottom:32px!important}.my-lg-9{margin-top:36px!important;margin-bottom:36px!important}.my-lg-10{margin-top:40px!important;margin-bottom:40px!important}.my-lg-11{margin-top:44px!important;margin-bottom:44px!important}.my-lg-12{margin-top:48px!important;margin-bottom:48px!important}.my-lg-13{margin-top:52px!important;margin-bottom:52px!important}.my-lg-14{margin-top:56px!important;margin-bottom:56px!important}.my-lg-15{margin-top:60px!important;margin-bottom:60px!important}.my-lg-16{margin-top:64px!important;margin-bottom:64px!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:4px!important}.mt-lg-2{margin-top:8px!important}.mt-lg-3{margin-top:12px!important}.mt-lg-4{margin-top:16px!important}.mt-lg-5{margin-top:20px!important}.mt-lg-6{margin-top:24px!important}.mt-lg-7{margin-top:28px!important}.mt-lg-8{margin-top:32px!important}.mt-lg-9{margin-top:36px!important}.mt-lg-10{margin-top:40px!important}.mt-lg-11{margin-top:44px!important}.mt-lg-12{margin-top:48px!important}.mt-lg-13{margin-top:52px!important}.mt-lg-14{margin-top:56px!important}.mt-lg-15{margin-top:60px!important}.mt-lg-16{margin-top:64px!important}.mt-lg-auto{margin-top:auto!important}.mr-lg-0{margin-right:0!important}.mr-lg-1{margin-right:4px!important}.mr-lg-2{margin-right:8px!important}.mr-lg-3{margin-right:12px!important}.mr-lg-4{margin-right:16px!important}.mr-lg-5{margin-right:20px!important}.mr-lg-6{margin-right:24px!important}.mr-lg-7{margin-right:28px!important}.mr-lg-8{margin-right:32px!important}.mr-lg-9{margin-right:36px!important}.mr-lg-10{margin-right:40px!important}.mr-lg-11{margin-right:44px!important}.mr-lg-12{margin-right:48px!important}.mr-lg-13{margin-right:52px!important}.mr-lg-14{margin-right:56px!important}.mr-lg-15{margin-right:60px!important}.mr-lg-16{margin-right:64px!important}.mr-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:4px!important}.mb-lg-2{margin-bottom:8px!important}.mb-lg-3{margin-bottom:12px!important}.mb-lg-4{margin-bottom:16px!important}.mb-lg-5{margin-bottom:20px!important}.mb-lg-6{margin-bottom:24px!important}.mb-lg-7{margin-bottom:28px!important}.mb-lg-8{margin-bottom:32px!important}.mb-lg-9{margin-bottom:36px!important}.mb-lg-10{margin-bottom:40px!important}.mb-lg-11{margin-bottom:44px!important}.mb-lg-12{margin-bottom:48px!important}.mb-lg-13{margin-bottom:52px!important}.mb-lg-14{margin-bottom:56px!important}.mb-lg-15{margin-bottom:60px!important}.mb-lg-16{margin-bottom:64px!important}.mb-lg-auto{margin-bottom:auto!important}.ml-lg-0{margin-left:0!important}.ml-lg-1{margin-left:4px!important}.ml-lg-2{margin-left:8px!important}.ml-lg-3{margin-left:12px!important}.ml-lg-4{margin-left:16px!important}.ml-lg-5{margin-left:20px!important}.ml-lg-6{margin-left:24px!important}.ml-lg-7{margin-left:28px!important}.ml-lg-8{margin-left:32px!important}.ml-lg-9{margin-left:36px!important}.ml-lg-10{margin-left:40px!important}.ml-lg-11{margin-left:44px!important}.ml-lg-12{margin-left:48px!important}.ml-lg-13{margin-left:52px!important}.ml-lg-14{margin-left:56px!important}.ml-lg-15{margin-left:60px!important}.ml-lg-16{margin-left:64px!important}.ml-lg-auto{margin-left:auto!important}.ms-lg-0{margin-inline-start:0px!important}.ms-lg-1{margin-inline-start:4px!important}.ms-lg-2{margin-inline-start:8px!important}.ms-lg-3{margin-inline-start:12px!important}.ms-lg-4{margin-inline-start:16px!important}.ms-lg-5{margin-inline-start:20px!important}.ms-lg-6{margin-inline-start:24px!important}.ms-lg-7{margin-inline-start:28px!important}.ms-lg-8{margin-inline-start:32px!important}.ms-lg-9{margin-inline-start:36px!important}.ms-lg-10{margin-inline-start:40px!important}.ms-lg-11{margin-inline-start:44px!important}.ms-lg-12{margin-inline-start:48px!important}.ms-lg-13{margin-inline-start:52px!important}.ms-lg-14{margin-inline-start:56px!important}.ms-lg-15{margin-inline-start:60px!important}.ms-lg-16{margin-inline-start:64px!important}.ms-lg-auto{margin-inline-start:auto!important}.me-lg-0{margin-inline-end:0px!important}.me-lg-1{margin-inline-end:4px!important}.me-lg-2{margin-inline-end:8px!important}.me-lg-3{margin-inline-end:12px!important}.me-lg-4{margin-inline-end:16px!important}.me-lg-5{margin-inline-end:20px!important}.me-lg-6{margin-inline-end:24px!important}.me-lg-7{margin-inline-end:28px!important}.me-lg-8{margin-inline-end:32px!important}.me-lg-9{margin-inline-end:36px!important}.me-lg-10{margin-inline-end:40px!important}.me-lg-11{margin-inline-end:44px!important}.me-lg-12{margin-inline-end:48px!important}.me-lg-13{margin-inline-end:52px!important}.me-lg-14{margin-inline-end:56px!important}.me-lg-15{margin-inline-end:60px!important}.me-lg-16{margin-inline-end:64px!important}.me-lg-auto{margin-inline-end:auto!important}.ma-lg-n1{margin:-4px!important}.ma-lg-n2{margin:-8px!important}.ma-lg-n3{margin:-12px!important}.ma-lg-n4{margin:-16px!important}.ma-lg-n5{margin:-20px!important}.ma-lg-n6{margin:-24px!important}.ma-lg-n7{margin:-28px!important}.ma-lg-n8{margin:-32px!important}.ma-lg-n9{margin:-36px!important}.ma-lg-n10{margin:-40px!important}.ma-lg-n11{margin:-44px!important}.ma-lg-n12{margin:-48px!important}.ma-lg-n13{margin:-52px!important}.ma-lg-n14{margin:-56px!important}.ma-lg-n15{margin:-60px!important}.ma-lg-n16{margin:-64px!important}.mx-lg-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-lg-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-lg-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-lg-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-lg-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-lg-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-lg-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-lg-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-lg-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-lg-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-lg-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-lg-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-lg-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-lg-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-lg-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-lg-n16{margin-right:-64px!important;margin-left:-64px!important}.my-lg-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-lg-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-lg-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-lg-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-lg-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-lg-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-lg-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-lg-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-lg-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-lg-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-lg-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-lg-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-lg-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-lg-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-lg-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-lg-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-lg-n1{margin-top:-4px!important}.mt-lg-n2{margin-top:-8px!important}.mt-lg-n3{margin-top:-12px!important}.mt-lg-n4{margin-top:-16px!important}.mt-lg-n5{margin-top:-20px!important}.mt-lg-n6{margin-top:-24px!important}.mt-lg-n7{margin-top:-28px!important}.mt-lg-n8{margin-top:-32px!important}.mt-lg-n9{margin-top:-36px!important}.mt-lg-n10{margin-top:-40px!important}.mt-lg-n11{margin-top:-44px!important}.mt-lg-n12{margin-top:-48px!important}.mt-lg-n13{margin-top:-52px!important}.mt-lg-n14{margin-top:-56px!important}.mt-lg-n15{margin-top:-60px!important}.mt-lg-n16{margin-top:-64px!important}.mr-lg-n1{margin-right:-4px!important}.mr-lg-n2{margin-right:-8px!important}.mr-lg-n3{margin-right:-12px!important}.mr-lg-n4{margin-right:-16px!important}.mr-lg-n5{margin-right:-20px!important}.mr-lg-n6{margin-right:-24px!important}.mr-lg-n7{margin-right:-28px!important}.mr-lg-n8{margin-right:-32px!important}.mr-lg-n9{margin-right:-36px!important}.mr-lg-n10{margin-right:-40px!important}.mr-lg-n11{margin-right:-44px!important}.mr-lg-n12{margin-right:-48px!important}.mr-lg-n13{margin-right:-52px!important}.mr-lg-n14{margin-right:-56px!important}.mr-lg-n15{margin-right:-60px!important}.mr-lg-n16{margin-right:-64px!important}.mb-lg-n1{margin-bottom:-4px!important}.mb-lg-n2{margin-bottom:-8px!important}.mb-lg-n3{margin-bottom:-12px!important}.mb-lg-n4{margin-bottom:-16px!important}.mb-lg-n5{margin-bottom:-20px!important}.mb-lg-n6{margin-bottom:-24px!important}.mb-lg-n7{margin-bottom:-28px!important}.mb-lg-n8{margin-bottom:-32px!important}.mb-lg-n9{margin-bottom:-36px!important}.mb-lg-n10{margin-bottom:-40px!important}.mb-lg-n11{margin-bottom:-44px!important}.mb-lg-n12{margin-bottom:-48px!important}.mb-lg-n13{margin-bottom:-52px!important}.mb-lg-n14{margin-bottom:-56px!important}.mb-lg-n15{margin-bottom:-60px!important}.mb-lg-n16{margin-bottom:-64px!important}.ml-lg-n1{margin-left:-4px!important}.ml-lg-n2{margin-left:-8px!important}.ml-lg-n3{margin-left:-12px!important}.ml-lg-n4{margin-left:-16px!important}.ml-lg-n5{margin-left:-20px!important}.ml-lg-n6{margin-left:-24px!important}.ml-lg-n7{margin-left:-28px!important}.ml-lg-n8{margin-left:-32px!important}.ml-lg-n9{margin-left:-36px!important}.ml-lg-n10{margin-left:-40px!important}.ml-lg-n11{margin-left:-44px!important}.ml-lg-n12{margin-left:-48px!important}.ml-lg-n13{margin-left:-52px!important}.ml-lg-n14{margin-left:-56px!important}.ml-lg-n15{margin-left:-60px!important}.ml-lg-n16{margin-left:-64px!important}.ms-lg-n1{margin-inline-start:-4px!important}.ms-lg-n2{margin-inline-start:-8px!important}.ms-lg-n3{margin-inline-start:-12px!important}.ms-lg-n4{margin-inline-start:-16px!important}.ms-lg-n5{margin-inline-start:-20px!important}.ms-lg-n6{margin-inline-start:-24px!important}.ms-lg-n7{margin-inline-start:-28px!important}.ms-lg-n8{margin-inline-start:-32px!important}.ms-lg-n9{margin-inline-start:-36px!important}.ms-lg-n10{margin-inline-start:-40px!important}.ms-lg-n11{margin-inline-start:-44px!important}.ms-lg-n12{margin-inline-start:-48px!important}.ms-lg-n13{margin-inline-start:-52px!important}.ms-lg-n14{margin-inline-start:-56px!important}.ms-lg-n15{margin-inline-start:-60px!important}.ms-lg-n16{margin-inline-start:-64px!important}.me-lg-n1{margin-inline-end:-4px!important}.me-lg-n2{margin-inline-end:-8px!important}.me-lg-n3{margin-inline-end:-12px!important}.me-lg-n4{margin-inline-end:-16px!important}.me-lg-n5{margin-inline-end:-20px!important}.me-lg-n6{margin-inline-end:-24px!important}.me-lg-n7{margin-inline-end:-28px!important}.me-lg-n8{margin-inline-end:-32px!important}.me-lg-n9{margin-inline-end:-36px!important}.me-lg-n10{margin-inline-end:-40px!important}.me-lg-n11{margin-inline-end:-44px!important}.me-lg-n12{margin-inline-end:-48px!important}.me-lg-n13{margin-inline-end:-52px!important}.me-lg-n14{margin-inline-end:-56px!important}.me-lg-n15{margin-inline-end:-60px!important}.me-lg-n16{margin-inline-end:-64px!important}.pa-lg-0{padding:0!important}.pa-lg-1{padding:4px!important}.pa-lg-2{padding:8px!important}.pa-lg-3{padding:12px!important}.pa-lg-4{padding:16px!important}.pa-lg-5{padding:20px!important}.pa-lg-6{padding:24px!important}.pa-lg-7{padding:28px!important}.pa-lg-8{padding:32px!important}.pa-lg-9{padding:36px!important}.pa-lg-10{padding:40px!important}.pa-lg-11{padding:44px!important}.pa-lg-12{padding:48px!important}.pa-lg-13{padding:52px!important}.pa-lg-14{padding:56px!important}.pa-lg-15{padding:60px!important}.pa-lg-16{padding:64px!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:4px!important;padding-left:4px!important}.px-lg-2{padding-right:8px!important;padding-left:8px!important}.px-lg-3{padding-right:12px!important;padding-left:12px!important}.px-lg-4{padding-right:16px!important;padding-left:16px!important}.px-lg-5{padding-right:20px!important;padding-left:20px!important}.px-lg-6{padding-right:24px!important;padding-left:24px!important}.px-lg-7{padding-right:28px!important;padding-left:28px!important}.px-lg-8{padding-right:32px!important;padding-left:32px!important}.px-lg-9{padding-right:36px!important;padding-left:36px!important}.px-lg-10{padding-right:40px!important;padding-left:40px!important}.px-lg-11{padding-right:44px!important;padding-left:44px!important}.px-lg-12{padding-right:48px!important;padding-left:48px!important}.px-lg-13{padding-right:52px!important;padding-left:52px!important}.px-lg-14{padding-right:56px!important;padding-left:56px!important}.px-lg-15{padding-right:60px!important;padding-left:60px!important}.px-lg-16{padding-right:64px!important;padding-left:64px!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:4px!important;padding-bottom:4px!important}.py-lg-2{padding-top:8px!important;padding-bottom:8px!important}.py-lg-3{padding-top:12px!important;padding-bottom:12px!important}.py-lg-4{padding-top:16px!important;padding-bottom:16px!important}.py-lg-5{padding-top:20px!important;padding-bottom:20px!important}.py-lg-6{padding-top:24px!important;padding-bottom:24px!important}.py-lg-7{padding-top:28px!important;padding-bottom:28px!important}.py-lg-8{padding-top:32px!important;padding-bottom:32px!important}.py-lg-9{padding-top:36px!important;padding-bottom:36px!important}.py-lg-10{padding-top:40px!important;padding-bottom:40px!important}.py-lg-11{padding-top:44px!important;padding-bottom:44px!important}.py-lg-12{padding-top:48px!important;padding-bottom:48px!important}.py-lg-13{padding-top:52px!important;padding-bottom:52px!important}.py-lg-14{padding-top:56px!important;padding-bottom:56px!important}.py-lg-15{padding-top:60px!important;padding-bottom:60px!important}.py-lg-16{padding-top:64px!important;padding-bottom:64px!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:4px!important}.pt-lg-2{padding-top:8px!important}.pt-lg-3{padding-top:12px!important}.pt-lg-4{padding-top:16px!important}.pt-lg-5{padding-top:20px!important}.pt-lg-6{padding-top:24px!important}.pt-lg-7{padding-top:28px!important}.pt-lg-8{padding-top:32px!important}.pt-lg-9{padding-top:36px!important}.pt-lg-10{padding-top:40px!important}.pt-lg-11{padding-top:44px!important}.pt-lg-12{padding-top:48px!important}.pt-lg-13{padding-top:52px!important}.pt-lg-14{padding-top:56px!important}.pt-lg-15{padding-top:60px!important}.pt-lg-16{padding-top:64px!important}.pr-lg-0{padding-right:0!important}.pr-lg-1{padding-right:4px!important}.pr-lg-2{padding-right:8px!important}.pr-lg-3{padding-right:12px!important}.pr-lg-4{padding-right:16px!important}.pr-lg-5{padding-right:20px!important}.pr-lg-6{padding-right:24px!important}.pr-lg-7{padding-right:28px!important}.pr-lg-8{padding-right:32px!important}.pr-lg-9{padding-right:36px!important}.pr-lg-10{padding-right:40px!important}.pr-lg-11{padding-right:44px!important}.pr-lg-12{padding-right:48px!important}.pr-lg-13{padding-right:52px!important}.pr-lg-14{padding-right:56px!important}.pr-lg-15{padding-right:60px!important}.pr-lg-16{padding-right:64px!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:4px!important}.pb-lg-2{padding-bottom:8px!important}.pb-lg-3{padding-bottom:12px!important}.pb-lg-4{padding-bottom:16px!important}.pb-lg-5{padding-bottom:20px!important}.pb-lg-6{padding-bottom:24px!important}.pb-lg-7{padding-bottom:28px!important}.pb-lg-8{padding-bottom:32px!important}.pb-lg-9{padding-bottom:36px!important}.pb-lg-10{padding-bottom:40px!important}.pb-lg-11{padding-bottom:44px!important}.pb-lg-12{padding-bottom:48px!important}.pb-lg-13{padding-bottom:52px!important}.pb-lg-14{padding-bottom:56px!important}.pb-lg-15{padding-bottom:60px!important}.pb-lg-16{padding-bottom:64px!important}.pl-lg-0{padding-left:0!important}.pl-lg-1{padding-left:4px!important}.pl-lg-2{padding-left:8px!important}.pl-lg-3{padding-left:12px!important}.pl-lg-4{padding-left:16px!important}.pl-lg-5{padding-left:20px!important}.pl-lg-6{padding-left:24px!important}.pl-lg-7{padding-left:28px!important}.pl-lg-8{padding-left:32px!important}.pl-lg-9{padding-left:36px!important}.pl-lg-10{padding-left:40px!important}.pl-lg-11{padding-left:44px!important}.pl-lg-12{padding-left:48px!important}.pl-lg-13{padding-left:52px!important}.pl-lg-14{padding-left:56px!important}.pl-lg-15{padding-left:60px!important}.pl-lg-16{padding-left:64px!important}.ps-lg-0{padding-inline-start:0px!important}.ps-lg-1{padding-inline-start:4px!important}.ps-lg-2{padding-inline-start:8px!important}.ps-lg-3{padding-inline-start:12px!important}.ps-lg-4{padding-inline-start:16px!important}.ps-lg-5{padding-inline-start:20px!important}.ps-lg-6{padding-inline-start:24px!important}.ps-lg-7{padding-inline-start:28px!important}.ps-lg-8{padding-inline-start:32px!important}.ps-lg-9{padding-inline-start:36px!important}.ps-lg-10{padding-inline-start:40px!important}.ps-lg-11{padding-inline-start:44px!important}.ps-lg-12{padding-inline-start:48px!important}.ps-lg-13{padding-inline-start:52px!important}.ps-lg-14{padding-inline-start:56px!important}.ps-lg-15{padding-inline-start:60px!important}.ps-lg-16{padding-inline-start:64px!important}.pe-lg-0{padding-inline-end:0px!important}.pe-lg-1{padding-inline-end:4px!important}.pe-lg-2{padding-inline-end:8px!important}.pe-lg-3{padding-inline-end:12px!important}.pe-lg-4{padding-inline-end:16px!important}.pe-lg-5{padding-inline-end:20px!important}.pe-lg-6{padding-inline-end:24px!important}.pe-lg-7{padding-inline-end:28px!important}.pe-lg-8{padding-inline-end:32px!important}.pe-lg-9{padding-inline-end:36px!important}.pe-lg-10{padding-inline-end:40px!important}.pe-lg-11{padding-inline-end:44px!important}.pe-lg-12{padding-inline-end:48px!important}.pe-lg-13{padding-inline-end:52px!important}.pe-lg-14{padding-inline-end:56px!important}.pe-lg-15{padding-inline-end:60px!important}.pe-lg-16{padding-inline-end:64px!important}.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}.text-lg-justify{text-align:justify!important}.text-lg-start{text-align:start!important}.text-lg-end{text-align:end!important}.text-lg-h1{font-size:6rem!important;font-weight:300;line-height:6rem;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-h2{font-size:3.75rem!important;font-weight:300;line-height:3.75rem;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-h3{font-size:3rem!important;font-weight:400;line-height:3.125rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-h4{font-size:2.125rem!important;font-weight:400;line-height:2.5rem;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-h5{font-size:1.5rem!important;font-weight:400;line-height:2rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-h6{font-size:1.25rem!important;font-weight:500;line-height:2rem;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-body-1{font-size:1rem!important;font-weight:400;line-height:1.5rem;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-body-2{font-size:.875rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-lg-caption{font-size:.75rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-overline{font-size:.75rem!important;font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}}@media (min-width: 1920px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.float-xl-none{float:none!important}.float-xl-left{float:left!important}.float-xl-right{float:right!important}.v-locale--is-rtl .float-xl-end{float:left!important}.v-locale--is-rtl .float-xl-start,.v-locale--is-ltr .float-xl-end{float:right!important}.v-locale--is-ltr .float-xl-start{float:left!important}.flex-xl-fill,.flex-xl-1-1{flex:1 1 auto!important}.flex-xl-1-0{flex:1 0 auto!important}.flex-xl-0-1{flex:0 1 auto!important}.flex-xl-0-0{flex:0 0 auto!important}.flex-xl-1-1-100{flex:1 1 100%!important}.flex-xl-1-0-100{flex:1 0 100%!important}.flex-xl-0-1-100{flex:0 1 100%!important}.flex-xl-0-0-100{flex:0 0 100%!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-xl-start{justify-content:flex-start!important}.justify-xl-end{justify-content:flex-end!important}.justify-xl-center{justify-content:center!important}.justify-xl-space-between{justify-content:space-between!important}.justify-xl-space-around{justify-content:space-around!important}.justify-xl-space-evenly{justify-content:space-evenly!important}.align-xl-start{align-items:flex-start!important}.align-xl-end{align-items:flex-end!important}.align-xl-center{align-items:center!important}.align-xl-baseline{align-items:baseline!important}.align-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-space-between{align-content:space-between!important}.align-content-xl-space-around{align-content:space-around!important}.align-content-xl-space-evenly{align-content:space-evenly!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-6{order:6!important}.order-xl-7{order:7!important}.order-xl-8{order:8!important}.order-xl-9{order:9!important}.order-xl-10{order:10!important}.order-xl-11{order:11!important}.order-xl-12{order:12!important}.order-xl-last{order:13!important}.ga-xl-0{gap:0px!important}.ga-xl-1{gap:4px!important}.ga-xl-2{gap:8px!important}.ga-xl-3{gap:12px!important}.ga-xl-4{gap:16px!important}.ga-xl-5{gap:20px!important}.ga-xl-6{gap:24px!important}.ga-xl-7{gap:28px!important}.ga-xl-8{gap:32px!important}.ga-xl-9{gap:36px!important}.ga-xl-10{gap:40px!important}.ga-xl-11{gap:44px!important}.ga-xl-12{gap:48px!important}.ga-xl-13{gap:52px!important}.ga-xl-14{gap:56px!important}.ga-xl-15{gap:60px!important}.ga-xl-16{gap:64px!important}.ga-xl-auto{gap:auto!important}.gr-xl-0{row-gap:0px!important}.gr-xl-1{row-gap:4px!important}.gr-xl-2{row-gap:8px!important}.gr-xl-3{row-gap:12px!important}.gr-xl-4{row-gap:16px!important}.gr-xl-5{row-gap:20px!important}.gr-xl-6{row-gap:24px!important}.gr-xl-7{row-gap:28px!important}.gr-xl-8{row-gap:32px!important}.gr-xl-9{row-gap:36px!important}.gr-xl-10{row-gap:40px!important}.gr-xl-11{row-gap:44px!important}.gr-xl-12{row-gap:48px!important}.gr-xl-13{row-gap:52px!important}.gr-xl-14{row-gap:56px!important}.gr-xl-15{row-gap:60px!important}.gr-xl-16{row-gap:64px!important}.gr-xl-auto{row-gap:auto!important}.gc-xl-0{column-gap:0px!important}.gc-xl-1{column-gap:4px!important}.gc-xl-2{column-gap:8px!important}.gc-xl-3{column-gap:12px!important}.gc-xl-4{column-gap:16px!important}.gc-xl-5{column-gap:20px!important}.gc-xl-6{column-gap:24px!important}.gc-xl-7{column-gap:28px!important}.gc-xl-8{column-gap:32px!important}.gc-xl-9{column-gap:36px!important}.gc-xl-10{column-gap:40px!important}.gc-xl-11{column-gap:44px!important}.gc-xl-12{column-gap:48px!important}.gc-xl-13{column-gap:52px!important}.gc-xl-14{column-gap:56px!important}.gc-xl-15{column-gap:60px!important}.gc-xl-16{column-gap:64px!important}.gc-xl-auto{column-gap:auto!important}.ma-xl-0{margin:0!important}.ma-xl-1{margin:4px!important}.ma-xl-2{margin:8px!important}.ma-xl-3{margin:12px!important}.ma-xl-4{margin:16px!important}.ma-xl-5{margin:20px!important}.ma-xl-6{margin:24px!important}.ma-xl-7{margin:28px!important}.ma-xl-8{margin:32px!important}.ma-xl-9{margin:36px!important}.ma-xl-10{margin:40px!important}.ma-xl-11{margin:44px!important}.ma-xl-12{margin:48px!important}.ma-xl-13{margin:52px!important}.ma-xl-14{margin:56px!important}.ma-xl-15{margin:60px!important}.ma-xl-16{margin:64px!important}.ma-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:4px!important;margin-left:4px!important}.mx-xl-2{margin-right:8px!important;margin-left:8px!important}.mx-xl-3{margin-right:12px!important;margin-left:12px!important}.mx-xl-4{margin-right:16px!important;margin-left:16px!important}.mx-xl-5{margin-right:20px!important;margin-left:20px!important}.mx-xl-6{margin-right:24px!important;margin-left:24px!important}.mx-xl-7{margin-right:28px!important;margin-left:28px!important}.mx-xl-8{margin-right:32px!important;margin-left:32px!important}.mx-xl-9{margin-right:36px!important;margin-left:36px!important}.mx-xl-10{margin-right:40px!important;margin-left:40px!important}.mx-xl-11{margin-right:44px!important;margin-left:44px!important}.mx-xl-12{margin-right:48px!important;margin-left:48px!important}.mx-xl-13{margin-right:52px!important;margin-left:52px!important}.mx-xl-14{margin-right:56px!important;margin-left:56px!important}.mx-xl-15{margin-right:60px!important;margin-left:60px!important}.mx-xl-16{margin-right:64px!important;margin-left:64px!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:4px!important;margin-bottom:4px!important}.my-xl-2{margin-top:8px!important;margin-bottom:8px!important}.my-xl-3{margin-top:12px!important;margin-bottom:12px!important}.my-xl-4{margin-top:16px!important;margin-bottom:16px!important}.my-xl-5{margin-top:20px!important;margin-bottom:20px!important}.my-xl-6{margin-top:24px!important;margin-bottom:24px!important}.my-xl-7{margin-top:28px!important;margin-bottom:28px!important}.my-xl-8{margin-top:32px!important;margin-bottom:32px!important}.my-xl-9{margin-top:36px!important;margin-bottom:36px!important}.my-xl-10{margin-top:40px!important;margin-bottom:40px!important}.my-xl-11{margin-top:44px!important;margin-bottom:44px!important}.my-xl-12{margin-top:48px!important;margin-bottom:48px!important}.my-xl-13{margin-top:52px!important;margin-bottom:52px!important}.my-xl-14{margin-top:56px!important;margin-bottom:56px!important}.my-xl-15{margin-top:60px!important;margin-bottom:60px!important}.my-xl-16{margin-top:64px!important;margin-bottom:64px!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:4px!important}.mt-xl-2{margin-top:8px!important}.mt-xl-3{margin-top:12px!important}.mt-xl-4{margin-top:16px!important}.mt-xl-5{margin-top:20px!important}.mt-xl-6{margin-top:24px!important}.mt-xl-7{margin-top:28px!important}.mt-xl-8{margin-top:32px!important}.mt-xl-9{margin-top:36px!important}.mt-xl-10{margin-top:40px!important}.mt-xl-11{margin-top:44px!important}.mt-xl-12{margin-top:48px!important}.mt-xl-13{margin-top:52px!important}.mt-xl-14{margin-top:56px!important}.mt-xl-15{margin-top:60px!important}.mt-xl-16{margin-top:64px!important}.mt-xl-auto{margin-top:auto!important}.mr-xl-0{margin-right:0!important}.mr-xl-1{margin-right:4px!important}.mr-xl-2{margin-right:8px!important}.mr-xl-3{margin-right:12px!important}.mr-xl-4{margin-right:16px!important}.mr-xl-5{margin-right:20px!important}.mr-xl-6{margin-right:24px!important}.mr-xl-7{margin-right:28px!important}.mr-xl-8{margin-right:32px!important}.mr-xl-9{margin-right:36px!important}.mr-xl-10{margin-right:40px!important}.mr-xl-11{margin-right:44px!important}.mr-xl-12{margin-right:48px!important}.mr-xl-13{margin-right:52px!important}.mr-xl-14{margin-right:56px!important}.mr-xl-15{margin-right:60px!important}.mr-xl-16{margin-right:64px!important}.mr-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:4px!important}.mb-xl-2{margin-bottom:8px!important}.mb-xl-3{margin-bottom:12px!important}.mb-xl-4{margin-bottom:16px!important}.mb-xl-5{margin-bottom:20px!important}.mb-xl-6{margin-bottom:24px!important}.mb-xl-7{margin-bottom:28px!important}.mb-xl-8{margin-bottom:32px!important}.mb-xl-9{margin-bottom:36px!important}.mb-xl-10{margin-bottom:40px!important}.mb-xl-11{margin-bottom:44px!important}.mb-xl-12{margin-bottom:48px!important}.mb-xl-13{margin-bottom:52px!important}.mb-xl-14{margin-bottom:56px!important}.mb-xl-15{margin-bottom:60px!important}.mb-xl-16{margin-bottom:64px!important}.mb-xl-auto{margin-bottom:auto!important}.ml-xl-0{margin-left:0!important}.ml-xl-1{margin-left:4px!important}.ml-xl-2{margin-left:8px!important}.ml-xl-3{margin-left:12px!important}.ml-xl-4{margin-left:16px!important}.ml-xl-5{margin-left:20px!important}.ml-xl-6{margin-left:24px!important}.ml-xl-7{margin-left:28px!important}.ml-xl-8{margin-left:32px!important}.ml-xl-9{margin-left:36px!important}.ml-xl-10{margin-left:40px!important}.ml-xl-11{margin-left:44px!important}.ml-xl-12{margin-left:48px!important}.ml-xl-13{margin-left:52px!important}.ml-xl-14{margin-left:56px!important}.ml-xl-15{margin-left:60px!important}.ml-xl-16{margin-left:64px!important}.ml-xl-auto{margin-left:auto!important}.ms-xl-0{margin-inline-start:0px!important}.ms-xl-1{margin-inline-start:4px!important}.ms-xl-2{margin-inline-start:8px!important}.ms-xl-3{margin-inline-start:12px!important}.ms-xl-4{margin-inline-start:16px!important}.ms-xl-5{margin-inline-start:20px!important}.ms-xl-6{margin-inline-start:24px!important}.ms-xl-7{margin-inline-start:28px!important}.ms-xl-8{margin-inline-start:32px!important}.ms-xl-9{margin-inline-start:36px!important}.ms-xl-10{margin-inline-start:40px!important}.ms-xl-11{margin-inline-start:44px!important}.ms-xl-12{margin-inline-start:48px!important}.ms-xl-13{margin-inline-start:52px!important}.ms-xl-14{margin-inline-start:56px!important}.ms-xl-15{margin-inline-start:60px!important}.ms-xl-16{margin-inline-start:64px!important}.ms-xl-auto{margin-inline-start:auto!important}.me-xl-0{margin-inline-end:0px!important}.me-xl-1{margin-inline-end:4px!important}.me-xl-2{margin-inline-end:8px!important}.me-xl-3{margin-inline-end:12px!important}.me-xl-4{margin-inline-end:16px!important}.me-xl-5{margin-inline-end:20px!important}.me-xl-6{margin-inline-end:24px!important}.me-xl-7{margin-inline-end:28px!important}.me-xl-8{margin-inline-end:32px!important}.me-xl-9{margin-inline-end:36px!important}.me-xl-10{margin-inline-end:40px!important}.me-xl-11{margin-inline-end:44px!important}.me-xl-12{margin-inline-end:48px!important}.me-xl-13{margin-inline-end:52px!important}.me-xl-14{margin-inline-end:56px!important}.me-xl-15{margin-inline-end:60px!important}.me-xl-16{margin-inline-end:64px!important}.me-xl-auto{margin-inline-end:auto!important}.ma-xl-n1{margin:-4px!important}.ma-xl-n2{margin:-8px!important}.ma-xl-n3{margin:-12px!important}.ma-xl-n4{margin:-16px!important}.ma-xl-n5{margin:-20px!important}.ma-xl-n6{margin:-24px!important}.ma-xl-n7{margin:-28px!important}.ma-xl-n8{margin:-32px!important}.ma-xl-n9{margin:-36px!important}.ma-xl-n10{margin:-40px!important}.ma-xl-n11{margin:-44px!important}.ma-xl-n12{margin:-48px!important}.ma-xl-n13{margin:-52px!important}.ma-xl-n14{margin:-56px!important}.ma-xl-n15{margin:-60px!important}.ma-xl-n16{margin:-64px!important}.mx-xl-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-xl-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-xl-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-xl-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-xl-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-xl-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-xl-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-xl-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-xl-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-xl-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-xl-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-xl-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-xl-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-xl-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-xl-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-xl-n16{margin-right:-64px!important;margin-left:-64px!important}.my-xl-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-xl-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-xl-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-xl-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-xl-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-xl-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-xl-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-xl-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-xl-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-xl-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-xl-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-xl-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-xl-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-xl-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-xl-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-xl-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-xl-n1{margin-top:-4px!important}.mt-xl-n2{margin-top:-8px!important}.mt-xl-n3{margin-top:-12px!important}.mt-xl-n4{margin-top:-16px!important}.mt-xl-n5{margin-top:-20px!important}.mt-xl-n6{margin-top:-24px!important}.mt-xl-n7{margin-top:-28px!important}.mt-xl-n8{margin-top:-32px!important}.mt-xl-n9{margin-top:-36px!important}.mt-xl-n10{margin-top:-40px!important}.mt-xl-n11{margin-top:-44px!important}.mt-xl-n12{margin-top:-48px!important}.mt-xl-n13{margin-top:-52px!important}.mt-xl-n14{margin-top:-56px!important}.mt-xl-n15{margin-top:-60px!important}.mt-xl-n16{margin-top:-64px!important}.mr-xl-n1{margin-right:-4px!important}.mr-xl-n2{margin-right:-8px!important}.mr-xl-n3{margin-right:-12px!important}.mr-xl-n4{margin-right:-16px!important}.mr-xl-n5{margin-right:-20px!important}.mr-xl-n6{margin-right:-24px!important}.mr-xl-n7{margin-right:-28px!important}.mr-xl-n8{margin-right:-32px!important}.mr-xl-n9{margin-right:-36px!important}.mr-xl-n10{margin-right:-40px!important}.mr-xl-n11{margin-right:-44px!important}.mr-xl-n12{margin-right:-48px!important}.mr-xl-n13{margin-right:-52px!important}.mr-xl-n14{margin-right:-56px!important}.mr-xl-n15{margin-right:-60px!important}.mr-xl-n16{margin-right:-64px!important}.mb-xl-n1{margin-bottom:-4px!important}.mb-xl-n2{margin-bottom:-8px!important}.mb-xl-n3{margin-bottom:-12px!important}.mb-xl-n4{margin-bottom:-16px!important}.mb-xl-n5{margin-bottom:-20px!important}.mb-xl-n6{margin-bottom:-24px!important}.mb-xl-n7{margin-bottom:-28px!important}.mb-xl-n8{margin-bottom:-32px!important}.mb-xl-n9{margin-bottom:-36px!important}.mb-xl-n10{margin-bottom:-40px!important}.mb-xl-n11{margin-bottom:-44px!important}.mb-xl-n12{margin-bottom:-48px!important}.mb-xl-n13{margin-bottom:-52px!important}.mb-xl-n14{margin-bottom:-56px!important}.mb-xl-n15{margin-bottom:-60px!important}.mb-xl-n16{margin-bottom:-64px!important}.ml-xl-n1{margin-left:-4px!important}.ml-xl-n2{margin-left:-8px!important}.ml-xl-n3{margin-left:-12px!important}.ml-xl-n4{margin-left:-16px!important}.ml-xl-n5{margin-left:-20px!important}.ml-xl-n6{margin-left:-24px!important}.ml-xl-n7{margin-left:-28px!important}.ml-xl-n8{margin-left:-32px!important}.ml-xl-n9{margin-left:-36px!important}.ml-xl-n10{margin-left:-40px!important}.ml-xl-n11{margin-left:-44px!important}.ml-xl-n12{margin-left:-48px!important}.ml-xl-n13{margin-left:-52px!important}.ml-xl-n14{margin-left:-56px!important}.ml-xl-n15{margin-left:-60px!important}.ml-xl-n16{margin-left:-64px!important}.ms-xl-n1{margin-inline-start:-4px!important}.ms-xl-n2{margin-inline-start:-8px!important}.ms-xl-n3{margin-inline-start:-12px!important}.ms-xl-n4{margin-inline-start:-16px!important}.ms-xl-n5{margin-inline-start:-20px!important}.ms-xl-n6{margin-inline-start:-24px!important}.ms-xl-n7{margin-inline-start:-28px!important}.ms-xl-n8{margin-inline-start:-32px!important}.ms-xl-n9{margin-inline-start:-36px!important}.ms-xl-n10{margin-inline-start:-40px!important}.ms-xl-n11{margin-inline-start:-44px!important}.ms-xl-n12{margin-inline-start:-48px!important}.ms-xl-n13{margin-inline-start:-52px!important}.ms-xl-n14{margin-inline-start:-56px!important}.ms-xl-n15{margin-inline-start:-60px!important}.ms-xl-n16{margin-inline-start:-64px!important}.me-xl-n1{margin-inline-end:-4px!important}.me-xl-n2{margin-inline-end:-8px!important}.me-xl-n3{margin-inline-end:-12px!important}.me-xl-n4{margin-inline-end:-16px!important}.me-xl-n5{margin-inline-end:-20px!important}.me-xl-n6{margin-inline-end:-24px!important}.me-xl-n7{margin-inline-end:-28px!important}.me-xl-n8{margin-inline-end:-32px!important}.me-xl-n9{margin-inline-end:-36px!important}.me-xl-n10{margin-inline-end:-40px!important}.me-xl-n11{margin-inline-end:-44px!important}.me-xl-n12{margin-inline-end:-48px!important}.me-xl-n13{margin-inline-end:-52px!important}.me-xl-n14{margin-inline-end:-56px!important}.me-xl-n15{margin-inline-end:-60px!important}.me-xl-n16{margin-inline-end:-64px!important}.pa-xl-0{padding:0!important}.pa-xl-1{padding:4px!important}.pa-xl-2{padding:8px!important}.pa-xl-3{padding:12px!important}.pa-xl-4{padding:16px!important}.pa-xl-5{padding:20px!important}.pa-xl-6{padding:24px!important}.pa-xl-7{padding:28px!important}.pa-xl-8{padding:32px!important}.pa-xl-9{padding:36px!important}.pa-xl-10{padding:40px!important}.pa-xl-11{padding:44px!important}.pa-xl-12{padding:48px!important}.pa-xl-13{padding:52px!important}.pa-xl-14{padding:56px!important}.pa-xl-15{padding:60px!important}.pa-xl-16{padding:64px!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:4px!important;padding-left:4px!important}.px-xl-2{padding-right:8px!important;padding-left:8px!important}.px-xl-3{padding-right:12px!important;padding-left:12px!important}.px-xl-4{padding-right:16px!important;padding-left:16px!important}.px-xl-5{padding-right:20px!important;padding-left:20px!important}.px-xl-6{padding-right:24px!important;padding-left:24px!important}.px-xl-7{padding-right:28px!important;padding-left:28px!important}.px-xl-8{padding-right:32px!important;padding-left:32px!important}.px-xl-9{padding-right:36px!important;padding-left:36px!important}.px-xl-10{padding-right:40px!important;padding-left:40px!important}.px-xl-11{padding-right:44px!important;padding-left:44px!important}.px-xl-12{padding-right:48px!important;padding-left:48px!important}.px-xl-13{padding-right:52px!important;padding-left:52px!important}.px-xl-14{padding-right:56px!important;padding-left:56px!important}.px-xl-15{padding-right:60px!important;padding-left:60px!important}.px-xl-16{padding-right:64px!important;padding-left:64px!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:4px!important;padding-bottom:4px!important}.py-xl-2{padding-top:8px!important;padding-bottom:8px!important}.py-xl-3{padding-top:12px!important;padding-bottom:12px!important}.py-xl-4{padding-top:16px!important;padding-bottom:16px!important}.py-xl-5{padding-top:20px!important;padding-bottom:20px!important}.py-xl-6{padding-top:24px!important;padding-bottom:24px!important}.py-xl-7{padding-top:28px!important;padding-bottom:28px!important}.py-xl-8{padding-top:32px!important;padding-bottom:32px!important}.py-xl-9{padding-top:36px!important;padding-bottom:36px!important}.py-xl-10{padding-top:40px!important;padding-bottom:40px!important}.py-xl-11{padding-top:44px!important;padding-bottom:44px!important}.py-xl-12{padding-top:48px!important;padding-bottom:48px!important}.py-xl-13{padding-top:52px!important;padding-bottom:52px!important}.py-xl-14{padding-top:56px!important;padding-bottom:56px!important}.py-xl-15{padding-top:60px!important;padding-bottom:60px!important}.py-xl-16{padding-top:64px!important;padding-bottom:64px!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:4px!important}.pt-xl-2{padding-top:8px!important}.pt-xl-3{padding-top:12px!important}.pt-xl-4{padding-top:16px!important}.pt-xl-5{padding-top:20px!important}.pt-xl-6{padding-top:24px!important}.pt-xl-7{padding-top:28px!important}.pt-xl-8{padding-top:32px!important}.pt-xl-9{padding-top:36px!important}.pt-xl-10{padding-top:40px!important}.pt-xl-11{padding-top:44px!important}.pt-xl-12{padding-top:48px!important}.pt-xl-13{padding-top:52px!important}.pt-xl-14{padding-top:56px!important}.pt-xl-15{padding-top:60px!important}.pt-xl-16{padding-top:64px!important}.pr-xl-0{padding-right:0!important}.pr-xl-1{padding-right:4px!important}.pr-xl-2{padding-right:8px!important}.pr-xl-3{padding-right:12px!important}.pr-xl-4{padding-right:16px!important}.pr-xl-5{padding-right:20px!important}.pr-xl-6{padding-right:24px!important}.pr-xl-7{padding-right:28px!important}.pr-xl-8{padding-right:32px!important}.pr-xl-9{padding-right:36px!important}.pr-xl-10{padding-right:40px!important}.pr-xl-11{padding-right:44px!important}.pr-xl-12{padding-right:48px!important}.pr-xl-13{padding-right:52px!important}.pr-xl-14{padding-right:56px!important}.pr-xl-15{padding-right:60px!important}.pr-xl-16{padding-right:64px!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:4px!important}.pb-xl-2{padding-bottom:8px!important}.pb-xl-3{padding-bottom:12px!important}.pb-xl-4{padding-bottom:16px!important}.pb-xl-5{padding-bottom:20px!important}.pb-xl-6{padding-bottom:24px!important}.pb-xl-7{padding-bottom:28px!important}.pb-xl-8{padding-bottom:32px!important}.pb-xl-9{padding-bottom:36px!important}.pb-xl-10{padding-bottom:40px!important}.pb-xl-11{padding-bottom:44px!important}.pb-xl-12{padding-bottom:48px!important}.pb-xl-13{padding-bottom:52px!important}.pb-xl-14{padding-bottom:56px!important}.pb-xl-15{padding-bottom:60px!important}.pb-xl-16{padding-bottom:64px!important}.pl-xl-0{padding-left:0!important}.pl-xl-1{padding-left:4px!important}.pl-xl-2{padding-left:8px!important}.pl-xl-3{padding-left:12px!important}.pl-xl-4{padding-left:16px!important}.pl-xl-5{padding-left:20px!important}.pl-xl-6{padding-left:24px!important}.pl-xl-7{padding-left:28px!important}.pl-xl-8{padding-left:32px!important}.pl-xl-9{padding-left:36px!important}.pl-xl-10{padding-left:40px!important}.pl-xl-11{padding-left:44px!important}.pl-xl-12{padding-left:48px!important}.pl-xl-13{padding-left:52px!important}.pl-xl-14{padding-left:56px!important}.pl-xl-15{padding-left:60px!important}.pl-xl-16{padding-left:64px!important}.ps-xl-0{padding-inline-start:0px!important}.ps-xl-1{padding-inline-start:4px!important}.ps-xl-2{padding-inline-start:8px!important}.ps-xl-3{padding-inline-start:12px!important}.ps-xl-4{padding-inline-start:16px!important}.ps-xl-5{padding-inline-start:20px!important}.ps-xl-6{padding-inline-start:24px!important}.ps-xl-7{padding-inline-start:28px!important}.ps-xl-8{padding-inline-start:32px!important}.ps-xl-9{padding-inline-start:36px!important}.ps-xl-10{padding-inline-start:40px!important}.ps-xl-11{padding-inline-start:44px!important}.ps-xl-12{padding-inline-start:48px!important}.ps-xl-13{padding-inline-start:52px!important}.ps-xl-14{padding-inline-start:56px!important}.ps-xl-15{padding-inline-start:60px!important}.ps-xl-16{padding-inline-start:64px!important}.pe-xl-0{padding-inline-end:0px!important}.pe-xl-1{padding-inline-end:4px!important}.pe-xl-2{padding-inline-end:8px!important}.pe-xl-3{padding-inline-end:12px!important}.pe-xl-4{padding-inline-end:16px!important}.pe-xl-5{padding-inline-end:20px!important}.pe-xl-6{padding-inline-end:24px!important}.pe-xl-7{padding-inline-end:28px!important}.pe-xl-8{padding-inline-end:32px!important}.pe-xl-9{padding-inline-end:36px!important}.pe-xl-10{padding-inline-end:40px!important}.pe-xl-11{padding-inline-end:44px!important}.pe-xl-12{padding-inline-end:48px!important}.pe-xl-13{padding-inline-end:52px!important}.pe-xl-14{padding-inline-end:56px!important}.pe-xl-15{padding-inline-end:60px!important}.pe-xl-16{padding-inline-end:64px!important}.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}.text-xl-justify{text-align:justify!important}.text-xl-start{text-align:start!important}.text-xl-end{text-align:end!important}.text-xl-h1{font-size:6rem!important;font-weight:300;line-height:6rem;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-h2{font-size:3.75rem!important;font-weight:300;line-height:3.75rem;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-h3{font-size:3rem!important;font-weight:400;line-height:3.125rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-h4{font-size:2.125rem!important;font-weight:400;line-height:2.5rem;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-h5{font-size:1.5rem!important;font-weight:400;line-height:2rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-h6{font-size:1.25rem!important;font-weight:500;line-height:2rem;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-body-1{font-size:1rem!important;font-weight:400;line-height:1.5rem;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-body-2{font-size:.875rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-xl-caption{font-size:.75rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-overline{font-size:.75rem!important;font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}}@media (min-width: 2560px){.d-xxl-none{display:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.float-xxl-none{float:none!important}.float-xxl-left{float:left!important}.float-xxl-right{float:right!important}.v-locale--is-rtl .float-xxl-end{float:left!important}.v-locale--is-rtl .float-xxl-start,.v-locale--is-ltr .float-xxl-end{float:right!important}.v-locale--is-ltr .float-xxl-start{float:left!important}.flex-xxl-fill,.flex-xxl-1-1{flex:1 1 auto!important}.flex-xxl-1-0{flex:1 0 auto!important}.flex-xxl-0-1{flex:0 1 auto!important}.flex-xxl-0-0{flex:0 0 auto!important}.flex-xxl-1-1-100{flex:1 1 100%!important}.flex-xxl-1-0-100{flex:1 0 100%!important}.flex-xxl-0-1-100{flex:0 1 100%!important}.flex-xxl-0-0-100{flex:0 0 100%!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-xxl-start{justify-content:flex-start!important}.justify-xxl-end{justify-content:flex-end!important}.justify-xxl-center{justify-content:center!important}.justify-xxl-space-between{justify-content:space-between!important}.justify-xxl-space-around{justify-content:space-around!important}.justify-xxl-space-evenly{justify-content:space-evenly!important}.align-xxl-start{align-items:flex-start!important}.align-xxl-end{align-items:flex-end!important}.align-xxl-center{align-items:center!important}.align-xxl-baseline{align-items:baseline!important}.align-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-space-between{align-content:space-between!important}.align-content-xxl-space-around{align-content:space-around!important}.align-content-xxl-space-evenly{align-content:space-evenly!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-6{order:6!important}.order-xxl-7{order:7!important}.order-xxl-8{order:8!important}.order-xxl-9{order:9!important}.order-xxl-10{order:10!important}.order-xxl-11{order:11!important}.order-xxl-12{order:12!important}.order-xxl-last{order:13!important}.ga-xxl-0{gap:0px!important}.ga-xxl-1{gap:4px!important}.ga-xxl-2{gap:8px!important}.ga-xxl-3{gap:12px!important}.ga-xxl-4{gap:16px!important}.ga-xxl-5{gap:20px!important}.ga-xxl-6{gap:24px!important}.ga-xxl-7{gap:28px!important}.ga-xxl-8{gap:32px!important}.ga-xxl-9{gap:36px!important}.ga-xxl-10{gap:40px!important}.ga-xxl-11{gap:44px!important}.ga-xxl-12{gap:48px!important}.ga-xxl-13{gap:52px!important}.ga-xxl-14{gap:56px!important}.ga-xxl-15{gap:60px!important}.ga-xxl-16{gap:64px!important}.ga-xxl-auto{gap:auto!important}.gr-xxl-0{row-gap:0px!important}.gr-xxl-1{row-gap:4px!important}.gr-xxl-2{row-gap:8px!important}.gr-xxl-3{row-gap:12px!important}.gr-xxl-4{row-gap:16px!important}.gr-xxl-5{row-gap:20px!important}.gr-xxl-6{row-gap:24px!important}.gr-xxl-7{row-gap:28px!important}.gr-xxl-8{row-gap:32px!important}.gr-xxl-9{row-gap:36px!important}.gr-xxl-10{row-gap:40px!important}.gr-xxl-11{row-gap:44px!important}.gr-xxl-12{row-gap:48px!important}.gr-xxl-13{row-gap:52px!important}.gr-xxl-14{row-gap:56px!important}.gr-xxl-15{row-gap:60px!important}.gr-xxl-16{row-gap:64px!important}.gr-xxl-auto{row-gap:auto!important}.gc-xxl-0{column-gap:0px!important}.gc-xxl-1{column-gap:4px!important}.gc-xxl-2{column-gap:8px!important}.gc-xxl-3{column-gap:12px!important}.gc-xxl-4{column-gap:16px!important}.gc-xxl-5{column-gap:20px!important}.gc-xxl-6{column-gap:24px!important}.gc-xxl-7{column-gap:28px!important}.gc-xxl-8{column-gap:32px!important}.gc-xxl-9{column-gap:36px!important}.gc-xxl-10{column-gap:40px!important}.gc-xxl-11{column-gap:44px!important}.gc-xxl-12{column-gap:48px!important}.gc-xxl-13{column-gap:52px!important}.gc-xxl-14{column-gap:56px!important}.gc-xxl-15{column-gap:60px!important}.gc-xxl-16{column-gap:64px!important}.gc-xxl-auto{column-gap:auto!important}.ma-xxl-0{margin:0!important}.ma-xxl-1{margin:4px!important}.ma-xxl-2{margin:8px!important}.ma-xxl-3{margin:12px!important}.ma-xxl-4{margin:16px!important}.ma-xxl-5{margin:20px!important}.ma-xxl-6{margin:24px!important}.ma-xxl-7{margin:28px!important}.ma-xxl-8{margin:32px!important}.ma-xxl-9{margin:36px!important}.ma-xxl-10{margin:40px!important}.ma-xxl-11{margin:44px!important}.ma-xxl-12{margin:48px!important}.ma-xxl-13{margin:52px!important}.ma-xxl-14{margin:56px!important}.ma-xxl-15{margin:60px!important}.ma-xxl-16{margin:64px!important}.ma-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:4px!important;margin-left:4px!important}.mx-xxl-2{margin-right:8px!important;margin-left:8px!important}.mx-xxl-3{margin-right:12px!important;margin-left:12px!important}.mx-xxl-4{margin-right:16px!important;margin-left:16px!important}.mx-xxl-5{margin-right:20px!important;margin-left:20px!important}.mx-xxl-6{margin-right:24px!important;margin-left:24px!important}.mx-xxl-7{margin-right:28px!important;margin-left:28px!important}.mx-xxl-8{margin-right:32px!important;margin-left:32px!important}.mx-xxl-9{margin-right:36px!important;margin-left:36px!important}.mx-xxl-10{margin-right:40px!important;margin-left:40px!important}.mx-xxl-11{margin-right:44px!important;margin-left:44px!important}.mx-xxl-12{margin-right:48px!important;margin-left:48px!important}.mx-xxl-13{margin-right:52px!important;margin-left:52px!important}.mx-xxl-14{margin-right:56px!important;margin-left:56px!important}.mx-xxl-15{margin-right:60px!important;margin-left:60px!important}.mx-xxl-16{margin-right:64px!important;margin-left:64px!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:4px!important;margin-bottom:4px!important}.my-xxl-2{margin-top:8px!important;margin-bottom:8px!important}.my-xxl-3{margin-top:12px!important;margin-bottom:12px!important}.my-xxl-4{margin-top:16px!important;margin-bottom:16px!important}.my-xxl-5{margin-top:20px!important;margin-bottom:20px!important}.my-xxl-6{margin-top:24px!important;margin-bottom:24px!important}.my-xxl-7{margin-top:28px!important;margin-bottom:28px!important}.my-xxl-8{margin-top:32px!important;margin-bottom:32px!important}.my-xxl-9{margin-top:36px!important;margin-bottom:36px!important}.my-xxl-10{margin-top:40px!important;margin-bottom:40px!important}.my-xxl-11{margin-top:44px!important;margin-bottom:44px!important}.my-xxl-12{margin-top:48px!important;margin-bottom:48px!important}.my-xxl-13{margin-top:52px!important;margin-bottom:52px!important}.my-xxl-14{margin-top:56px!important;margin-bottom:56px!important}.my-xxl-15{margin-top:60px!important;margin-bottom:60px!important}.my-xxl-16{margin-top:64px!important;margin-bottom:64px!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:4px!important}.mt-xxl-2{margin-top:8px!important}.mt-xxl-3{margin-top:12px!important}.mt-xxl-4{margin-top:16px!important}.mt-xxl-5{margin-top:20px!important}.mt-xxl-6{margin-top:24px!important}.mt-xxl-7{margin-top:28px!important}.mt-xxl-8{margin-top:32px!important}.mt-xxl-9{margin-top:36px!important}.mt-xxl-10{margin-top:40px!important}.mt-xxl-11{margin-top:44px!important}.mt-xxl-12{margin-top:48px!important}.mt-xxl-13{margin-top:52px!important}.mt-xxl-14{margin-top:56px!important}.mt-xxl-15{margin-top:60px!important}.mt-xxl-16{margin-top:64px!important}.mt-xxl-auto{margin-top:auto!important}.mr-xxl-0{margin-right:0!important}.mr-xxl-1{margin-right:4px!important}.mr-xxl-2{margin-right:8px!important}.mr-xxl-3{margin-right:12px!important}.mr-xxl-4{margin-right:16px!important}.mr-xxl-5{margin-right:20px!important}.mr-xxl-6{margin-right:24px!important}.mr-xxl-7{margin-right:28px!important}.mr-xxl-8{margin-right:32px!important}.mr-xxl-9{margin-right:36px!important}.mr-xxl-10{margin-right:40px!important}.mr-xxl-11{margin-right:44px!important}.mr-xxl-12{margin-right:48px!important}.mr-xxl-13{margin-right:52px!important}.mr-xxl-14{margin-right:56px!important}.mr-xxl-15{margin-right:60px!important}.mr-xxl-16{margin-right:64px!important}.mr-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:4px!important}.mb-xxl-2{margin-bottom:8px!important}.mb-xxl-3{margin-bottom:12px!important}.mb-xxl-4{margin-bottom:16px!important}.mb-xxl-5{margin-bottom:20px!important}.mb-xxl-6{margin-bottom:24px!important}.mb-xxl-7{margin-bottom:28px!important}.mb-xxl-8{margin-bottom:32px!important}.mb-xxl-9{margin-bottom:36px!important}.mb-xxl-10{margin-bottom:40px!important}.mb-xxl-11{margin-bottom:44px!important}.mb-xxl-12{margin-bottom:48px!important}.mb-xxl-13{margin-bottom:52px!important}.mb-xxl-14{margin-bottom:56px!important}.mb-xxl-15{margin-bottom:60px!important}.mb-xxl-16{margin-bottom:64px!important}.mb-xxl-auto{margin-bottom:auto!important}.ml-xxl-0{margin-left:0!important}.ml-xxl-1{margin-left:4px!important}.ml-xxl-2{margin-left:8px!important}.ml-xxl-3{margin-left:12px!important}.ml-xxl-4{margin-left:16px!important}.ml-xxl-5{margin-left:20px!important}.ml-xxl-6{margin-left:24px!important}.ml-xxl-7{margin-left:28px!important}.ml-xxl-8{margin-left:32px!important}.ml-xxl-9{margin-left:36px!important}.ml-xxl-10{margin-left:40px!important}.ml-xxl-11{margin-left:44px!important}.ml-xxl-12{margin-left:48px!important}.ml-xxl-13{margin-left:52px!important}.ml-xxl-14{margin-left:56px!important}.ml-xxl-15{margin-left:60px!important}.ml-xxl-16{margin-left:64px!important}.ml-xxl-auto{margin-left:auto!important}.ms-xxl-0{margin-inline-start:0px!important}.ms-xxl-1{margin-inline-start:4px!important}.ms-xxl-2{margin-inline-start:8px!important}.ms-xxl-3{margin-inline-start:12px!important}.ms-xxl-4{margin-inline-start:16px!important}.ms-xxl-5{margin-inline-start:20px!important}.ms-xxl-6{margin-inline-start:24px!important}.ms-xxl-7{margin-inline-start:28px!important}.ms-xxl-8{margin-inline-start:32px!important}.ms-xxl-9{margin-inline-start:36px!important}.ms-xxl-10{margin-inline-start:40px!important}.ms-xxl-11{margin-inline-start:44px!important}.ms-xxl-12{margin-inline-start:48px!important}.ms-xxl-13{margin-inline-start:52px!important}.ms-xxl-14{margin-inline-start:56px!important}.ms-xxl-15{margin-inline-start:60px!important}.ms-xxl-16{margin-inline-start:64px!important}.ms-xxl-auto{margin-inline-start:auto!important}.me-xxl-0{margin-inline-end:0px!important}.me-xxl-1{margin-inline-end:4px!important}.me-xxl-2{margin-inline-end:8px!important}.me-xxl-3{margin-inline-end:12px!important}.me-xxl-4{margin-inline-end:16px!important}.me-xxl-5{margin-inline-end:20px!important}.me-xxl-6{margin-inline-end:24px!important}.me-xxl-7{margin-inline-end:28px!important}.me-xxl-8{margin-inline-end:32px!important}.me-xxl-9{margin-inline-end:36px!important}.me-xxl-10{margin-inline-end:40px!important}.me-xxl-11{margin-inline-end:44px!important}.me-xxl-12{margin-inline-end:48px!important}.me-xxl-13{margin-inline-end:52px!important}.me-xxl-14{margin-inline-end:56px!important}.me-xxl-15{margin-inline-end:60px!important}.me-xxl-16{margin-inline-end:64px!important}.me-xxl-auto{margin-inline-end:auto!important}.ma-xxl-n1{margin:-4px!important}.ma-xxl-n2{margin:-8px!important}.ma-xxl-n3{margin:-12px!important}.ma-xxl-n4{margin:-16px!important}.ma-xxl-n5{margin:-20px!important}.ma-xxl-n6{margin:-24px!important}.ma-xxl-n7{margin:-28px!important}.ma-xxl-n8{margin:-32px!important}.ma-xxl-n9{margin:-36px!important}.ma-xxl-n10{margin:-40px!important}.ma-xxl-n11{margin:-44px!important}.ma-xxl-n12{margin:-48px!important}.ma-xxl-n13{margin:-52px!important}.ma-xxl-n14{margin:-56px!important}.ma-xxl-n15{margin:-60px!important}.ma-xxl-n16{margin:-64px!important}.mx-xxl-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-xxl-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-xxl-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-xxl-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-xxl-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-xxl-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-xxl-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-xxl-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-xxl-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-xxl-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-xxl-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-xxl-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-xxl-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-xxl-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-xxl-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-xxl-n16{margin-right:-64px!important;margin-left:-64px!important}.my-xxl-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-xxl-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-xxl-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-xxl-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-xxl-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-xxl-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-xxl-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-xxl-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-xxl-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-xxl-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-xxl-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-xxl-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-xxl-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-xxl-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-xxl-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-xxl-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-xxl-n1{margin-top:-4px!important}.mt-xxl-n2{margin-top:-8px!important}.mt-xxl-n3{margin-top:-12px!important}.mt-xxl-n4{margin-top:-16px!important}.mt-xxl-n5{margin-top:-20px!important}.mt-xxl-n6{margin-top:-24px!important}.mt-xxl-n7{margin-top:-28px!important}.mt-xxl-n8{margin-top:-32px!important}.mt-xxl-n9{margin-top:-36px!important}.mt-xxl-n10{margin-top:-40px!important}.mt-xxl-n11{margin-top:-44px!important}.mt-xxl-n12{margin-top:-48px!important}.mt-xxl-n13{margin-top:-52px!important}.mt-xxl-n14{margin-top:-56px!important}.mt-xxl-n15{margin-top:-60px!important}.mt-xxl-n16{margin-top:-64px!important}.mr-xxl-n1{margin-right:-4px!important}.mr-xxl-n2{margin-right:-8px!important}.mr-xxl-n3{margin-right:-12px!important}.mr-xxl-n4{margin-right:-16px!important}.mr-xxl-n5{margin-right:-20px!important}.mr-xxl-n6{margin-right:-24px!important}.mr-xxl-n7{margin-right:-28px!important}.mr-xxl-n8{margin-right:-32px!important}.mr-xxl-n9{margin-right:-36px!important}.mr-xxl-n10{margin-right:-40px!important}.mr-xxl-n11{margin-right:-44px!important}.mr-xxl-n12{margin-right:-48px!important}.mr-xxl-n13{margin-right:-52px!important}.mr-xxl-n14{margin-right:-56px!important}.mr-xxl-n15{margin-right:-60px!important}.mr-xxl-n16{margin-right:-64px!important}.mb-xxl-n1{margin-bottom:-4px!important}.mb-xxl-n2{margin-bottom:-8px!important}.mb-xxl-n3{margin-bottom:-12px!important}.mb-xxl-n4{margin-bottom:-16px!important}.mb-xxl-n5{margin-bottom:-20px!important}.mb-xxl-n6{margin-bottom:-24px!important}.mb-xxl-n7{margin-bottom:-28px!important}.mb-xxl-n8{margin-bottom:-32px!important}.mb-xxl-n9{margin-bottom:-36px!important}.mb-xxl-n10{margin-bottom:-40px!important}.mb-xxl-n11{margin-bottom:-44px!important}.mb-xxl-n12{margin-bottom:-48px!important}.mb-xxl-n13{margin-bottom:-52px!important}.mb-xxl-n14{margin-bottom:-56px!important}.mb-xxl-n15{margin-bottom:-60px!important}.mb-xxl-n16{margin-bottom:-64px!important}.ml-xxl-n1{margin-left:-4px!important}.ml-xxl-n2{margin-left:-8px!important}.ml-xxl-n3{margin-left:-12px!important}.ml-xxl-n4{margin-left:-16px!important}.ml-xxl-n5{margin-left:-20px!important}.ml-xxl-n6{margin-left:-24px!important}.ml-xxl-n7{margin-left:-28px!important}.ml-xxl-n8{margin-left:-32px!important}.ml-xxl-n9{margin-left:-36px!important}.ml-xxl-n10{margin-left:-40px!important}.ml-xxl-n11{margin-left:-44px!important}.ml-xxl-n12{margin-left:-48px!important}.ml-xxl-n13{margin-left:-52px!important}.ml-xxl-n14{margin-left:-56px!important}.ml-xxl-n15{margin-left:-60px!important}.ml-xxl-n16{margin-left:-64px!important}.ms-xxl-n1{margin-inline-start:-4px!important}.ms-xxl-n2{margin-inline-start:-8px!important}.ms-xxl-n3{margin-inline-start:-12px!important}.ms-xxl-n4{margin-inline-start:-16px!important}.ms-xxl-n5{margin-inline-start:-20px!important}.ms-xxl-n6{margin-inline-start:-24px!important}.ms-xxl-n7{margin-inline-start:-28px!important}.ms-xxl-n8{margin-inline-start:-32px!important}.ms-xxl-n9{margin-inline-start:-36px!important}.ms-xxl-n10{margin-inline-start:-40px!important}.ms-xxl-n11{margin-inline-start:-44px!important}.ms-xxl-n12{margin-inline-start:-48px!important}.ms-xxl-n13{margin-inline-start:-52px!important}.ms-xxl-n14{margin-inline-start:-56px!important}.ms-xxl-n15{margin-inline-start:-60px!important}.ms-xxl-n16{margin-inline-start:-64px!important}.me-xxl-n1{margin-inline-end:-4px!important}.me-xxl-n2{margin-inline-end:-8px!important}.me-xxl-n3{margin-inline-end:-12px!important}.me-xxl-n4{margin-inline-end:-16px!important}.me-xxl-n5{margin-inline-end:-20px!important}.me-xxl-n6{margin-inline-end:-24px!important}.me-xxl-n7{margin-inline-end:-28px!important}.me-xxl-n8{margin-inline-end:-32px!important}.me-xxl-n9{margin-inline-end:-36px!important}.me-xxl-n10{margin-inline-end:-40px!important}.me-xxl-n11{margin-inline-end:-44px!important}.me-xxl-n12{margin-inline-end:-48px!important}.me-xxl-n13{margin-inline-end:-52px!important}.me-xxl-n14{margin-inline-end:-56px!important}.me-xxl-n15{margin-inline-end:-60px!important}.me-xxl-n16{margin-inline-end:-64px!important}.pa-xxl-0{padding:0!important}.pa-xxl-1{padding:4px!important}.pa-xxl-2{padding:8px!important}.pa-xxl-3{padding:12px!important}.pa-xxl-4{padding:16px!important}.pa-xxl-5{padding:20px!important}.pa-xxl-6{padding:24px!important}.pa-xxl-7{padding:28px!important}.pa-xxl-8{padding:32px!important}.pa-xxl-9{padding:36px!important}.pa-xxl-10{padding:40px!important}.pa-xxl-11{padding:44px!important}.pa-xxl-12{padding:48px!important}.pa-xxl-13{padding:52px!important}.pa-xxl-14{padding:56px!important}.pa-xxl-15{padding:60px!important}.pa-xxl-16{padding:64px!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:4px!important;padding-left:4px!important}.px-xxl-2{padding-right:8px!important;padding-left:8px!important}.px-xxl-3{padding-right:12px!important;padding-left:12px!important}.px-xxl-4{padding-right:16px!important;padding-left:16px!important}.px-xxl-5{padding-right:20px!important;padding-left:20px!important}.px-xxl-6{padding-right:24px!important;padding-left:24px!important}.px-xxl-7{padding-right:28px!important;padding-left:28px!important}.px-xxl-8{padding-right:32px!important;padding-left:32px!important}.px-xxl-9{padding-right:36px!important;padding-left:36px!important}.px-xxl-10{padding-right:40px!important;padding-left:40px!important}.px-xxl-11{padding-right:44px!important;padding-left:44px!important}.px-xxl-12{padding-right:48px!important;padding-left:48px!important}.px-xxl-13{padding-right:52px!important;padding-left:52px!important}.px-xxl-14{padding-right:56px!important;padding-left:56px!important}.px-xxl-15{padding-right:60px!important;padding-left:60px!important}.px-xxl-16{padding-right:64px!important;padding-left:64px!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:4px!important;padding-bottom:4px!important}.py-xxl-2{padding-top:8px!important;padding-bottom:8px!important}.py-xxl-3{padding-top:12px!important;padding-bottom:12px!important}.py-xxl-4{padding-top:16px!important;padding-bottom:16px!important}.py-xxl-5{padding-top:20px!important;padding-bottom:20px!important}.py-xxl-6{padding-top:24px!important;padding-bottom:24px!important}.py-xxl-7{padding-top:28px!important;padding-bottom:28px!important}.py-xxl-8{padding-top:32px!important;padding-bottom:32px!important}.py-xxl-9{padding-top:36px!important;padding-bottom:36px!important}.py-xxl-10{padding-top:40px!important;padding-bottom:40px!important}.py-xxl-11{padding-top:44px!important;padding-bottom:44px!important}.py-xxl-12{padding-top:48px!important;padding-bottom:48px!important}.py-xxl-13{padding-top:52px!important;padding-bottom:52px!important}.py-xxl-14{padding-top:56px!important;padding-bottom:56px!important}.py-xxl-15{padding-top:60px!important;padding-bottom:60px!important}.py-xxl-16{padding-top:64px!important;padding-bottom:64px!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:4px!important}.pt-xxl-2{padding-top:8px!important}.pt-xxl-3{padding-top:12px!important}.pt-xxl-4{padding-top:16px!important}.pt-xxl-5{padding-top:20px!important}.pt-xxl-6{padding-top:24px!important}.pt-xxl-7{padding-top:28px!important}.pt-xxl-8{padding-top:32px!important}.pt-xxl-9{padding-top:36px!important}.pt-xxl-10{padding-top:40px!important}.pt-xxl-11{padding-top:44px!important}.pt-xxl-12{padding-top:48px!important}.pt-xxl-13{padding-top:52px!important}.pt-xxl-14{padding-top:56px!important}.pt-xxl-15{padding-top:60px!important}.pt-xxl-16{padding-top:64px!important}.pr-xxl-0{padding-right:0!important}.pr-xxl-1{padding-right:4px!important}.pr-xxl-2{padding-right:8px!important}.pr-xxl-3{padding-right:12px!important}.pr-xxl-4{padding-right:16px!important}.pr-xxl-5{padding-right:20px!important}.pr-xxl-6{padding-right:24px!important}.pr-xxl-7{padding-right:28px!important}.pr-xxl-8{padding-right:32px!important}.pr-xxl-9{padding-right:36px!important}.pr-xxl-10{padding-right:40px!important}.pr-xxl-11{padding-right:44px!important}.pr-xxl-12{padding-right:48px!important}.pr-xxl-13{padding-right:52px!important}.pr-xxl-14{padding-right:56px!important}.pr-xxl-15{padding-right:60px!important}.pr-xxl-16{padding-right:64px!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:4px!important}.pb-xxl-2{padding-bottom:8px!important}.pb-xxl-3{padding-bottom:12px!important}.pb-xxl-4{padding-bottom:16px!important}.pb-xxl-5{padding-bottom:20px!important}.pb-xxl-6{padding-bottom:24px!important}.pb-xxl-7{padding-bottom:28px!important}.pb-xxl-8{padding-bottom:32px!important}.pb-xxl-9{padding-bottom:36px!important}.pb-xxl-10{padding-bottom:40px!important}.pb-xxl-11{padding-bottom:44px!important}.pb-xxl-12{padding-bottom:48px!important}.pb-xxl-13{padding-bottom:52px!important}.pb-xxl-14{padding-bottom:56px!important}.pb-xxl-15{padding-bottom:60px!important}.pb-xxl-16{padding-bottom:64px!important}.pl-xxl-0{padding-left:0!important}.pl-xxl-1{padding-left:4px!important}.pl-xxl-2{padding-left:8px!important}.pl-xxl-3{padding-left:12px!important}.pl-xxl-4{padding-left:16px!important}.pl-xxl-5{padding-left:20px!important}.pl-xxl-6{padding-left:24px!important}.pl-xxl-7{padding-left:28px!important}.pl-xxl-8{padding-left:32px!important}.pl-xxl-9{padding-left:36px!important}.pl-xxl-10{padding-left:40px!important}.pl-xxl-11{padding-left:44px!important}.pl-xxl-12{padding-left:48px!important}.pl-xxl-13{padding-left:52px!important}.pl-xxl-14{padding-left:56px!important}.pl-xxl-15{padding-left:60px!important}.pl-xxl-16{padding-left:64px!important}.ps-xxl-0{padding-inline-start:0px!important}.ps-xxl-1{padding-inline-start:4px!important}.ps-xxl-2{padding-inline-start:8px!important}.ps-xxl-3{padding-inline-start:12px!important}.ps-xxl-4{padding-inline-start:16px!important}.ps-xxl-5{padding-inline-start:20px!important}.ps-xxl-6{padding-inline-start:24px!important}.ps-xxl-7{padding-inline-start:28px!important}.ps-xxl-8{padding-inline-start:32px!important}.ps-xxl-9{padding-inline-start:36px!important}.ps-xxl-10{padding-inline-start:40px!important}.ps-xxl-11{padding-inline-start:44px!important}.ps-xxl-12{padding-inline-start:48px!important}.ps-xxl-13{padding-inline-start:52px!important}.ps-xxl-14{padding-inline-start:56px!important}.ps-xxl-15{padding-inline-start:60px!important}.ps-xxl-16{padding-inline-start:64px!important}.pe-xxl-0{padding-inline-end:0px!important}.pe-xxl-1{padding-inline-end:4px!important}.pe-xxl-2{padding-inline-end:8px!important}.pe-xxl-3{padding-inline-end:12px!important}.pe-xxl-4{padding-inline-end:16px!important}.pe-xxl-5{padding-inline-end:20px!important}.pe-xxl-6{padding-inline-end:24px!important}.pe-xxl-7{padding-inline-end:28px!important}.pe-xxl-8{padding-inline-end:32px!important}.pe-xxl-9{padding-inline-end:36px!important}.pe-xxl-10{padding-inline-end:40px!important}.pe-xxl-11{padding-inline-end:44px!important}.pe-xxl-12{padding-inline-end:48px!important}.pe-xxl-13{padding-inline-end:52px!important}.pe-xxl-14{padding-inline-end:56px!important}.pe-xxl-15{padding-inline-end:60px!important}.pe-xxl-16{padding-inline-end:64px!important}.text-xxl-left{text-align:left!important}.text-xxl-right{text-align:right!important}.text-xxl-center{text-align:center!important}.text-xxl-justify{text-align:justify!important}.text-xxl-start{text-align:start!important}.text-xxl-end{text-align:end!important}.text-xxl-h1{font-size:6rem!important;font-weight:300;line-height:6rem;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-h2{font-size:3.75rem!important;font-weight:300;line-height:3.75rem;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-h3{font-size:3rem!important;font-weight:400;line-height:3.125rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-h4{font-size:2.125rem!important;font-weight:400;line-height:2.5rem;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-h5{font-size:1.5rem!important;font-weight:400;line-height:2rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-h6{font-size:1.25rem!important;font-weight:500;line-height:2rem;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-body-1{font-size:1rem!important;font-weight:400;line-height:1.5rem;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-body-2{font-size:.875rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-xxl-caption{font-size:.75rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-overline{font-size:.75rem!important;font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.float-print-none{float:none!important}.float-print-left{float:left!important}.float-print-right{float:right!important}.v-locale--is-rtl .float-print-end{float:left!important}.v-locale--is-rtl .float-print-start,.v-locale--is-ltr .float-print-end{float:right!important}.v-locale--is-ltr .float-print-start{float:left!important}}.v-tabs{display:flex;height:var(--v-tabs-height)}.v-tabs--density-default{--v-tabs-height: 48px}.v-tabs--density-default.v-tabs--stacked{--v-tabs-height: 72px}.v-tabs--density-comfortable{--v-tabs-height: 44px}.v-tabs--density-comfortable.v-tabs--stacked{--v-tabs-height: 68px}.v-tabs--density-compact{--v-tabs-height: 36px}.v-tabs--density-compact.v-tabs--stacked{--v-tabs-height: 60px}.v-tabs.v-slide-group--vertical{height:auto;flex:none;--v-tabs-height: 48px}.v-tabs--align-tabs-title:not(.v-slide-group--has-affixes) .v-tab:first-child{margin-inline-start:42px}.v-tabs--fixed-tabs .v-slide-group__content>*:last-child,.v-tabs--align-tabs-center .v-slide-group__content>*:last-child{margin-inline-end:auto}.v-tabs--fixed-tabs .v-slide-group__content>*:first-child,.v-tabs--align-tabs-center .v-slide-group__content>*:first-child{margin-inline-start:auto}.v-tabs--grow{flex-grow:1}.v-tabs--grow .v-tab{flex:1 0 auto;max-width:none}.v-tabs--align-tabs-end .v-tab:first-child{margin-inline-start:auto}.v-tabs--align-tabs-end .v-tab:last-child{margin-inline-end:0}@media (max-width: 1279.98px){.v-tabs.v-slide-group--is-overflowing.v-slide-group--horizontal:not(.v-slide-group--has-affixes) .v-tab:first-child{margin-inline-start:52px}.v-tabs.v-slide-group--is-overflowing.v-slide-group--horizontal:not(.v-slide-group--has-affixes) .v-tab:last-child{margin-inline-end:52px}}.v-tab.v-tab.v-btn{height:var(--v-tabs-height);border-radius:0;min-width:90px}.v-slide-group--horizontal .v-tab{max-width:360px}.v-slide-group--vertical .v-tab{justify-content:start}.v-tab__slider{position:absolute;bottom:0;left:0;height:2px;width:100%;background:currentColor;pointer-events:none;opacity:0}.v-tab--selected .v-tab__slider{opacity:1}.v-slide-group--vertical .v-tab__slider{top:0;height:100%;width:2px}.v-slide-group{display:flex;overflow:hidden}.v-slide-group__next,.v-slide-group__prev{align-items:center;display:flex;flex:0 1 52px;justify-content:center;min-width:52px;cursor:pointer}.v-slide-group__next--disabled,.v-slide-group__prev--disabled{pointer-events:none;opacity:var(--v-disabled-opacity)}.v-slide-group__content{display:flex;flex:1 0 auto;position:relative;transition:.2s all cubic-bezier(.4,0,.2,1);white-space:nowrap}.v-slide-group__content>*{white-space:initial}.v-slide-group__container{contain:content;display:flex;flex:1 1 auto;overflow:hidden}.v-slide-group--vertical,.v-slide-group--vertical .v-slide-group__container,.v-slide-group--vertical .v-slide-group__content{flex-direction:column}.v-chip{align-items:center;display:inline-flex;font-weight:400;max-width:100%;min-width:0;overflow:hidden;position:relative;text-decoration:none;white-space:nowrap;vertical-align:middle;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;border-radius:9999px}.v-chip.v-chip--size-x-small{--v-chip-size: .625rem;--v-chip-height: 20px;font-size:.625rem;padding:0 8px}.v-chip.v-chip--size-x-small .v-avatar{--v-avatar-height: 14px}.v-chip--pill.v-chip.v-chip--size-x-small .v-avatar{--v-avatar-height: 20px}.v-chip.v-chip--size-x-small .v-avatar--start{margin-inline-start:-5.6px;margin-inline-end:4px}.v-chip--pill.v-chip.v-chip--size-x-small .v-avatar--start{margin-inline-start:-8px}.v-chip.v-chip--size-x-small .v-avatar--end{margin-inline-start:4px;margin-inline-end:-5.6px}.v-chip--pill.v-chip.v-chip--size-x-small .v-avatar--end{margin-inline-end:-8px}.v-chip--pill.v-chip.v-chip--size-x-small .v-avatar--end+.v-chip__close{margin-inline-start:12px}.v-chip.v-chip--size-x-small .v-icon--start,.v-chip.v-chip--size-x-small .v-chip__filter{margin-inline-start:-4px;margin-inline-end:4px}.v-chip.v-chip--size-x-small .v-icon--end,.v-chip.v-chip--size-x-small .v-chip__close{margin-inline-start:4px;margin-inline-end:-4px}.v-chip.v-chip--size-x-small .v-icon--end+.v-chip__close,.v-chip.v-chip--size-x-small .v-avatar--end+.v-chip__close,.v-chip.v-chip--size-x-small .v-chip__append+.v-chip__close{margin-inline-start:8px}.v-chip.v-chip--size-small{--v-chip-size: .75rem;--v-chip-height: 26px;font-size:.75rem;padding:0 10px}.v-chip.v-chip--size-small .v-avatar{--v-avatar-height: 20px}.v-chip--pill.v-chip.v-chip--size-small .v-avatar{--v-avatar-height: 26px}.v-chip.v-chip--size-small .v-avatar--start{margin-inline-start:-7px;margin-inline-end:5px}.v-chip--pill.v-chip.v-chip--size-small .v-avatar--start{margin-inline-start:-10px}.v-chip.v-chip--size-small .v-avatar--end{margin-inline-start:5px;margin-inline-end:-7px}.v-chip--pill.v-chip.v-chip--size-small .v-avatar--end{margin-inline-end:-10px}.v-chip--pill.v-chip.v-chip--size-small .v-avatar--end+.v-chip__close{margin-inline-start:15px}.v-chip.v-chip--size-small .v-icon--start,.v-chip.v-chip--size-small .v-chip__filter{margin-inline-start:-5px;margin-inline-end:5px}.v-chip.v-chip--size-small .v-icon--end,.v-chip.v-chip--size-small .v-chip__close{margin-inline-start:5px;margin-inline-end:-5px}.v-chip.v-chip--size-small .v-icon--end+.v-chip__close,.v-chip.v-chip--size-small .v-avatar--end+.v-chip__close,.v-chip.v-chip--size-small .v-chip__append+.v-chip__close{margin-inline-start:10px}.v-chip.v-chip--size-default{--v-chip-size: .875rem;--v-chip-height: 32px;font-size:.875rem;padding:0 12px}.v-chip.v-chip--size-default .v-avatar{--v-avatar-height: 26px}.v-chip--pill.v-chip.v-chip--size-default .v-avatar{--v-avatar-height: 32px}.v-chip.v-chip--size-default .v-avatar--start{margin-inline-start:-8.4px;margin-inline-end:6px}.v-chip--pill.v-chip.v-chip--size-default .v-avatar--start{margin-inline-start:-12px}.v-chip.v-chip--size-default .v-avatar--end{margin-inline-start:6px;margin-inline-end:-8.4px}.v-chip--pill.v-chip.v-chip--size-default .v-avatar--end{margin-inline-end:-12px}.v-chip--pill.v-chip.v-chip--size-default .v-avatar--end+.v-chip__close{margin-inline-start:18px}.v-chip.v-chip--size-default .v-icon--start,.v-chip.v-chip--size-default .v-chip__filter{margin-inline-start:-6px;margin-inline-end:6px}.v-chip.v-chip--size-default .v-icon--end,.v-chip.v-chip--size-default .v-chip__close{margin-inline-start:6px;margin-inline-end:-6px}.v-chip.v-chip--size-default .v-icon--end+.v-chip__close,.v-chip.v-chip--size-default .v-avatar--end+.v-chip__close,.v-chip.v-chip--size-default .v-chip__append+.v-chip__close{margin-inline-start:12px}.v-chip.v-chip--size-large{--v-chip-size: 1rem;--v-chip-height: 38px;font-size:1rem;padding:0 14px}.v-chip.v-chip--size-large .v-avatar{--v-avatar-height: 32px}.v-chip--pill.v-chip.v-chip--size-large .v-avatar{--v-avatar-height: 38px}.v-chip.v-chip--size-large .v-avatar--start{margin-inline-start:-9.8px;margin-inline-end:7px}.v-chip--pill.v-chip.v-chip--size-large .v-avatar--start{margin-inline-start:-14px}.v-chip.v-chip--size-large .v-avatar--end{margin-inline-start:7px;margin-inline-end:-9.8px}.v-chip--pill.v-chip.v-chip--size-large .v-avatar--end{margin-inline-end:-14px}.v-chip--pill.v-chip.v-chip--size-large .v-avatar--end+.v-chip__close{margin-inline-start:21px}.v-chip.v-chip--size-large .v-icon--start,.v-chip.v-chip--size-large .v-chip__filter{margin-inline-start:-7px;margin-inline-end:7px}.v-chip.v-chip--size-large .v-icon--end,.v-chip.v-chip--size-large .v-chip__close{margin-inline-start:7px;margin-inline-end:-7px}.v-chip.v-chip--size-large .v-icon--end+.v-chip__close,.v-chip.v-chip--size-large .v-avatar--end+.v-chip__close,.v-chip.v-chip--size-large .v-chip__append+.v-chip__close{margin-inline-start:14px}.v-chip.v-chip--size-x-large{--v-chip-size: 1.125rem;--v-chip-height: 44px;font-size:1.125rem;padding:0 17px}.v-chip.v-chip--size-x-large .v-avatar{--v-avatar-height: 38px}.v-chip--pill.v-chip.v-chip--size-x-large .v-avatar{--v-avatar-height: 44px}.v-chip.v-chip--size-x-large .v-avatar--start{margin-inline-start:-11.9px;margin-inline-end:8.5px}.v-chip--pill.v-chip.v-chip--size-x-large .v-avatar--start{margin-inline-start:-17px}.v-chip.v-chip--size-x-large .v-avatar--end{margin-inline-start:8.5px;margin-inline-end:-11.9px}.v-chip--pill.v-chip.v-chip--size-x-large .v-avatar--end{margin-inline-end:-17px}.v-chip--pill.v-chip.v-chip--size-x-large .v-avatar--end+.v-chip__close{margin-inline-start:25.5px}.v-chip.v-chip--size-x-large .v-icon--start,.v-chip.v-chip--size-x-large .v-chip__filter{margin-inline-start:-8.5px;margin-inline-end:8.5px}.v-chip.v-chip--size-x-large .v-icon--end,.v-chip.v-chip--size-x-large .v-chip__close{margin-inline-start:8.5px;margin-inline-end:-8.5px}.v-chip.v-chip--size-x-large .v-icon--end+.v-chip__close,.v-chip.v-chip--size-x-large .v-avatar--end+.v-chip__close,.v-chip.v-chip--size-x-large .v-chip__append+.v-chip__close{margin-inline-start:17px}.v-chip.v-chip--density-default{height:calc(var(--v-chip-height) + 0px)}.v-chip.v-chip--density-comfortable{height:calc(var(--v-chip-height) + -8px)}.v-chip.v-chip--density-compact{height:calc(var(--v-chip-height) + -12px)}.v-chip:hover>.v-chip__overlay{opacity:calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier))}.v-chip:focus-visible>.v-chip__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-chip:focus>.v-chip__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}}.v-chip--active>.v-chip__overlay,.v-chip[aria-haspopup=menu][aria-expanded=true]>.v-chip__overlay{opacity:calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier))}.v-chip--active:hover>.v-chip__overlay,.v-chip[aria-haspopup=menu][aria-expanded=true]:hover>.v-chip__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}.v-chip--active:focus-visible>.v-chip__overlay,.v-chip[aria-haspopup=menu][aria-expanded=true]:focus-visible>.v-chip__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-chip--active:focus>.v-chip__overlay,.v-chip[aria-haspopup=menu][aria-expanded=true]:focus>.v-chip__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}}.v-chip--variant-plain,.v-chip--variant-outlined,.v-chip--variant-text,.v-chip--variant-tonal{background:transparent;color:inherit}.v-chip--variant-plain{opacity:.26}.v-chip--variant-plain:focus,.v-chip--variant-plain:hover{opacity:1}.v-chip--variant-plain .v-chip__overlay{display:none}.v-chip--variant-elevated,.v-chip--variant-flat{background:rgb(var(--v-theme-surface-variant));color:rgb(var(--v-theme-on-surface-variant))}.v-chip--variant-elevated{box-shadow:0 2px 1px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 1px 1px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 3px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-chip--variant-flat{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-chip--variant-outlined{border:thin solid currentColor}.v-chip--variant-text .v-chip__overlay{background:currentColor}.v-chip--variant-tonal .v-chip__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.v-chip--border{border-width:thin}.v-chip--link{cursor:pointer}.v-chip--filter{-webkit-user-select:none;user-select:none}.v-chip__content{align-items:center;display:inline-flex}.v-autocomplete__selection .v-chip__content,.v-combobox__selection .v-chip__content,.v-select__selection .v-chip__content{overflow:hidden}.v-chip__filter,.v-chip__prepend,.v-chip__append,.v-chip__close{align-items:center;display:inline-flex}.v-chip__close{cursor:pointer;flex:0 1 auto;font-size:18px;max-height:18px;max-width:18px;-webkit-user-select:none;user-select:none}.v-chip__close .v-icon{font-size:inherit}.v-chip__filter{transition:.15s cubic-bezier(.4,0,.2,1)}.v-chip__overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:currentColor;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.v-chip--disabled{opacity:.3;pointer-events:none;-webkit-user-select:none;user-select:none}.v-chip--label{border-radius:4px}.v-chip-group{display:flex;max-width:100%;min-width:0;overflow-x:auto;padding:4px 0}.v-chip-group .v-chip{margin:4px 8px 4px 0}.v-chip-group .v-chip.v-chip--selected:not(.v-chip--disabled) .v-chip__overlay{opacity:var(--v-activated-opacity)}.v-chip-group--column .v-slide-group__content{white-space:normal;flex-wrap:wrap;max-width:100%}.v-rating{max-width:100%;display:inline-flex;white-space:nowrap}.v-rating--readonly{pointer-events:none}.v-rating__wrapper{align-items:center;display:inline-flex;flex-direction:column}.v-rating__wrapper--bottom{flex-direction:column-reverse}.v-rating__item{display:inline-flex;position:relative}.v-rating__item label{cursor:pointer}.v-rating__item .v-btn--variant-plain{opacity:1}.v-rating__item .v-btn{transition-property:transform}.v-rating__item .v-btn .v-icon{transition:inherit;transition-timing-function:cubic-bezier(0,0,.2,1)}.v-rating--hover .v-rating__item:hover:not(.v-rating__item--focused) .v-btn{transform:scale(1.25)}.v-rating__item--half{overflow:hidden;position:absolute;clip-path:polygon(0 0,50% 0,50% 100%,0 100%);z-index:1}.v-rating__item--half .v-btn__overlay,.v-rating__item--half:hover .v-btn__overlay{opacity:0}.v-rating__hidden{height:0;opacity:0;position:absolute;width:0}.v-infinite-scroll--horizontal{display:flex;flex-direction:row;overflow-x:auto}.v-infinite-scroll--horizontal .v-infinite-scroll-intersect{height:100%;width:1px}.v-infinite-scroll--vertical{display:flex;flex-direction:column;overflow-y:auto}.v-infinite-scroll--vertical .v-infinite-scroll-intersect{height:1px;width:100%}.v-infinite-scroll__side{align-items:center;display:flex;justify-content:center;padding:8px}.v-tooltip>.v-overlay__content{background:rgb(var(--v-theme-surface-variant));color:rgb(var(--v-theme-on-surface-variant));border-radius:4px;font-size:.875rem;line-height:1.6;display:inline-block;padding:5px 16px;text-transform:initial;width:auto;opacity:1;pointer-events:none;transition-property:opacity,transform}.v-tooltip>.v-overlay__content[class*=enter-active]{transition-timing-function:cubic-bezier(0,0,.2,1);transition-duration:.15s}.v-tooltip>.v-overlay__content[class*=leave-active]{transition-timing-function:cubic-bezier(.4,0,1,1);transition-duration:75ms}.v-table{background:rgb(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity));font-size:.875rem;transition-duration:.28s;transition-property:box-shadow,opacity,background,height;transition-timing-function:cubic-bezier(.4,0,.2,1)}.v-table .v-table-divider{border-right:thin solid rgba(var(--v-border-color),var(--v-border-opacity))}.v-table .v-table__wrapper>table>thead>tr>th{border-bottom:thin solid rgba(var(--v-border-color),var(--v-border-opacity))}.v-table .v-table__wrapper>table>tbody>tr:not(:last-child)>td,.v-table .v-table__wrapper>table>tbody>tr:not(:last-child)>th{border-bottom:thin solid rgba(var(--v-border-color),var(--v-border-opacity))}.v-table .v-table__wrapper>table>tfoot>tr>td,.v-table .v-table__wrapper>table>tfoot>tr>th{border-top:thin solid rgba(var(--v-border-color),var(--v-border-opacity))}.v-table.v-table--hover>.v-table__wrapper>table>tbody>tr>td{position:relative}.v-table.v-table--hover>.v-table__wrapper>table>tbody>tr:hover>td:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(var(--v-border-color),var(--v-hover-opacity));pointer-events:none}.v-table.v-table--fixed-header>.v-table__wrapper>table>thead>tr>th{background:rgb(var(--v-theme-surface));box-shadow:inset 0 -1px rgba(var(--v-border-color),var(--v-border-opacity));z-index:1}.v-table.v-table--fixed-footer>tfoot>tr>th,.v-table.v-table--fixed-footer>tfoot>tr>td{background:rgb(var(--v-theme-surface));box-shadow:inset 0 1px rgba(var(--v-border-color),var(--v-border-opacity))}.v-table{border-radius:inherit;line-height:1.5;max-width:100%;display:flex;flex-direction:column}.v-table>.v-table__wrapper>table{width:100%;border-spacing:0}.v-table>.v-table__wrapper>table>tbody>tr>td,.v-table>.v-table__wrapper>table>tbody>tr>th,.v-table>.v-table__wrapper>table>thead>tr>td,.v-table>.v-table__wrapper>table>thead>tr>th,.v-table>.v-table__wrapper>table>tfoot>tr>td,.v-table>.v-table__wrapper>table>tfoot>tr>th{padding:0 16px;transition-duration:.28s;transition-property:box-shadow,opacity,background,height;transition-timing-function:cubic-bezier(.4,0,.2,1)}.v-table>.v-table__wrapper>table>tbody>tr>td,.v-table>.v-table__wrapper>table>thead>tr>td,.v-table>.v-table__wrapper>table>tfoot>tr>td{height:var(--v-table-row-height)}.v-table>.v-table__wrapper>table>tbody>tr>th,.v-table>.v-table__wrapper>table>thead>tr>th,.v-table>.v-table__wrapper>table>tfoot>tr>th{height:var(--v-table-header-height);font-weight:500;-webkit-user-select:none;user-select:none;text-align:start}.v-table--density-default{--v-table-header-height: 56px;--v-table-row-height: 52px}.v-table--density-comfortable{--v-table-header-height: 48px;--v-table-row-height: 44px}.v-table--density-compact{--v-table-header-height: 40px;--v-table-row-height: 36px}.v-table__wrapper{border-radius:inherit;overflow:auto;flex:1 1 auto}.v-table--has-top>.v-table__wrapper>table>tbody>tr:first-child:hover>td:first-child{border-top-left-radius:0}.v-table--has-top>.v-table__wrapper>table>tbody>tr:first-child:hover>td:last-child{border-top-right-radius:0}.v-table--has-bottom>.v-table__wrapper>table>tbody>tr:last-child:hover>td:first-child{border-bottom-left-radius:0}.v-table--has-bottom>.v-table__wrapper>table>tbody>tr:last-child:hover>td:last-child{border-bottom-right-radius:0}.v-table--fixed-height>.v-table__wrapper{overflow-y:auto}.v-table--fixed-header>.v-table__wrapper>table>thead{position:sticky;top:0;z-index:2}.v-table--fixed-header>.v-table__wrapper>table>thead>tr>th{border-bottom:0px!important}.v-table--fixed-footer>.v-table__wrapper>table>tfoot>tr{position:sticky;bottom:0;z-index:1}.v-table--fixed-footer>.v-table__wrapper>table>tfoot>tr>td,.v-table--fixed-footer>.v-table__wrapper>table>tfoot>tr>th{border-top:0px!important}.v-expansion-panel{background-color:rgb(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-expansion-panel:not(:first-child):after{border-color:rgba(var(--v-border-color),var(--v-border-opacity))}.v-expansion-panel--disabled .v-expansion-panel-title{color:rgba(var(--v-theme-on-surface),.26)}.v-expansion-panel--disabled .v-expansion-panel-title .v-expansion-panel-title__overlay{opacity:.4615384615}.v-expansion-panels{display:flex;flex-wrap:wrap;justify-content:center;list-style-type:none;padding:0;width:100%;position:relative;z-index:1}.v-expansion-panels:not(.v-expansion-panels--variant-accordion)>:not(:first-child):not(:last-child):not(.v-expansion-panel--active):not(.v-expansion-panel--before-active){border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.v-expansion-panels:not(.v-expansion-panels--variant-accordion)>:not(:first-child):not(:last-child):not(.v-expansion-panel--active):not(.v-expansion-panel--after-active){border-top-left-radius:0!important;border-top-right-radius:0!important}.v-expansion-panels:not(.v-expansion-panels--variant-accordion)>:first-child:not(:last-child):not(.v-expansion-panel--active):not(.v-expansion-panel--before-active){border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.v-expansion-panels:not(.v-expansion-panels--variant-accordion)>:last-child:not(:first-child):not(.v-expansion-panel--active):not(.v-expansion-panel--after-active){border-top-left-radius:0!important;border-top-right-radius:0!important}.v-expansion-panels--variant-accordion>:first-child{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.v-expansion-panels--variant-accordion>:last-child{border-top-left-radius:0!important;border-top-right-radius:0!important}.v-expansion-panels--variant-accordion>:last-child .v-expansion-panel-title--active{border-bottom-left-radius:initial;border-bottom-right-radius:initial}.v-expansion-panels--variant-accordion>:not(:first-child):not(:last-child){border-radius:0!important}.v-expansion-panels--variant-accordion .v-expansion-panel-title__overlay{transition:.3s border-radius cubic-bezier(.4,0,.2,1)}.v-expansion-panel{flex:1 0 100%;max-width:100%;position:relative;transition:.3s all cubic-bezier(.4,0,.2,1);transition-property:margin-top,border-radius,border,max-width;border-radius:4px}.v-expansion-panel:not(:first-child):after{border-top-style:solid;border-top-width:thin;content:"";left:0;position:absolute;right:0;top:0;transition:.3s opacity cubic-bezier(.4,0,.2,1)}.v-expansion-panel--disabled .v-expansion-panel-title{pointer-events:none}.v-expansion-panel--active:not(:first-child),.v-expansion-panel--active+.v-expansion-panel{margin-top:16px}.v-expansion-panel--active:not(:first-child):after,.v-expansion-panel--active+.v-expansion-panel:after{opacity:0}.v-expansion-panel--active>.v-expansion-panel-title{border-bottom-left-radius:0;border-bottom-right-radius:0}.v-expansion-panel--active>.v-expansion-panel-title:not(.v-expansion-panel-title--static){min-height:64px}.v-expansion-panel__shadow{position:absolute;top:0;left:0;width:100%;height:100%;box-shadow:0 3px 1px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 2px 2px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 5px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12));border-radius:inherit;z-index:-1}.v-expansion-panel-title{align-items:center;text-align:start;border-radius:inherit;display:flex;font-size:.9375rem;line-height:1;min-height:48px;outline:none;padding:16px 24px;position:relative;transition:.3s min-height cubic-bezier(.4,0,.2,1);width:100%;justify-content:space-between}.v-expansion-panel-title:hover>.v-expansion-panel-title__overlay{opacity:calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier))}.v-expansion-panel-title:focus-visible>.v-expansion-panel-title__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-expansion-panel-title:focus>.v-expansion-panel-title__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}}.v-expansion-panel-title--active>.v-expansion-panel-title__overlay,.v-expansion-panel-title[aria-haspopup=menu][aria-expanded=true]>.v-expansion-panel-title__overlay{opacity:calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier))}.v-expansion-panel-title--active:hover>.v-expansion-panel-title__overlay,.v-expansion-panel-title[aria-haspopup=menu][aria-expanded=true]:hover>.v-expansion-panel-title__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}.v-expansion-panel-title--active:focus-visible>.v-expansion-panel-title__overlay,.v-expansion-panel-title[aria-haspopup=menu][aria-expanded=true]:focus-visible>.v-expansion-panel-title__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-expansion-panel-title--active:focus>.v-expansion-panel-title__overlay,.v-expansion-panel-title[aria-haspopup=menu][aria-expanded=true]:focus>.v-expansion-panel-title__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}}.v-expansion-panel-title--active:before{opacity:.12}.v-expansion-panel-title__overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:currentColor;border-radius:inherit;opacity:0}.v-expansion-panel-title__icon{display:inline-flex;margin-bottom:-4px;margin-top:-4px;-webkit-user-select:none;user-select:none;margin-inline-start:auto}.v-expansion-panel-text{display:flex}.v-expansion-panel-text__wrapper{padding:8px 24px 16px;flex:1 1 auto;max-width:100%}.v-expansion-panels--variant-accordion>.v-expansion-panel{margin-top:0}.v-expansion-panels--variant-accordion>.v-expansion-panel:after{opacity:1}.v-expansion-panels--variant-popout>.v-expansion-panel{max-width:calc(100% - 32px)}.v-expansion-panels--variant-popout>.v-expansion-panel--active{max-width:calc(100% + 16px)}.v-expansion-panels--variant-inset>.v-expansion-panel{max-width:100%}.v-expansion-panels--variant-inset>.v-expansion-panel--active{max-width:calc(100% - 32px)}.v-alert{display:grid;flex:1 1;grid-template-areas:"prepend content append close" ". content . .";grid-template-columns:max-content auto max-content max-content;position:relative;padding:16px;overflow:hidden;--v-border-color: currentColor;border-radius:4px}.v-alert--absolute{position:absolute}.v-alert--fixed{position:fixed}.v-alert--sticky{position:sticky}.v-alert--variant-plain,.v-alert--variant-outlined,.v-alert--variant-text,.v-alert--variant-tonal{background:transparent;color:inherit}.v-alert--variant-plain{opacity:.62}.v-alert--variant-plain:focus,.v-alert--variant-plain:hover{opacity:1}.v-alert--variant-plain .v-alert__overlay{display:none}.v-alert--variant-elevated,.v-alert--variant-flat{background:rgb(var(--v-theme-surface-light));color:rgba(var(--v-theme-on-surface-light),var(--v-high-emphasis-opacity))}.v-alert--variant-elevated{box-shadow:0 2px 1px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 1px 1px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 3px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-alert--variant-flat{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-alert--variant-outlined{border:thin solid currentColor}.v-alert--variant-text .v-alert__overlay{background:currentColor}.v-alert--variant-tonal .v-alert__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.v-alert--prominent{grid-template-areas:"prepend content append close" "prepend content . ."}.v-alert.v-alert--border{--v-border-opacity: .38}.v-alert.v-alert--border.v-alert--border-start{padding-inline-start:24px}.v-alert.v-alert--border.v-alert--border-end{padding-inline-end:24px}.v-alert--variant-plain{transition:.2s opacity cubic-bezier(.4,0,.2,1)}.v-alert--density-default{padding-bottom:16px;padding-top:16px}.v-alert--density-default.v-alert--border-top{padding-top:24px}.v-alert--density-default.v-alert--border-bottom{padding-bottom:24px}.v-alert--density-comfortable{padding-bottom:12px;padding-top:12px}.v-alert--density-comfortable.v-alert--border-top{padding-top:20px}.v-alert--density-comfortable.v-alert--border-bottom{padding-bottom:20px}.v-alert--density-compact{padding-bottom:8px;padding-top:8px}.v-alert--density-compact.v-alert--border-top{padding-top:16px}.v-alert--density-compact.v-alert--border-bottom{padding-bottom:16px}.v-alert__border{border-radius:inherit;bottom:0;left:0;opacity:var(--v-border-opacity);position:absolute;pointer-events:none;right:0;top:0;width:100%;border-color:currentColor;border-style:solid;border-width:0}.v-alert__border--border{border-width:8px;box-shadow:none}.v-alert--border-start .v-alert__border{border-inline-start-width:8px}.v-alert--border-end .v-alert__border{border-inline-end-width:8px}.v-alert--border-top .v-alert__border{border-top-width:8px}.v-alert--border-bottom .v-alert__border{border-bottom-width:8px}.v-alert__close{flex:0 1 auto;grid-area:close}.v-alert__content{align-self:center;grid-area:content;overflow:hidden}.v-alert__append,.v-alert__close{align-self:flex-start;margin-inline-start:16px}.v-alert__append{align-self:flex-start;grid-area:append}.v-alert__append+.v-alert__close{margin-inline-start:16px}.v-alert__prepend{align-self:flex-start;display:flex;align-items:center;grid-area:prepend;margin-inline-end:16px}.v-alert--prominent .v-alert__prepend{align-self:center}.v-alert__underlay{grid-area:none;position:absolute}.v-alert--border-start .v-alert__underlay{border-top-left-radius:0;border-bottom-left-radius:0}.v-alert--border-end .v-alert__underlay{border-top-right-radius:0;border-bottom-right-radius:0}.v-alert--border-top .v-alert__underlay{border-top-left-radius:0;border-top-right-radius:0}.v-alert--border-bottom .v-alert__underlay{border-bottom-left-radius:0;border-bottom-right-radius:0}.v-alert-title{align-items:center;align-self:center;display:flex;font-size:1.25rem;font-weight:500;-webkit-hyphens:auto;hyphens:auto;letter-spacing:.0125em;line-height:1.75rem;overflow-wrap:normal;text-transform:none;word-break:normal;word-wrap:break-word}.v-timeline .v-timeline-divider__dot{background:rgb(var(--v-theme-surface-light))}.v-timeline .v-timeline-divider__inner-dot{background:rgb(var(--v-theme-on-surface))}.v-timeline{display:grid;grid-auto-flow:dense;position:relative}.v-timeline--horizontal.v-timeline{grid-column-gap:24px;width:100%}.v-timeline--horizontal.v-timeline .v-timeline-item:nth-child(2n) .v-timeline-item__body{grid-row:3;padding-block-start:24px}.v-timeline--horizontal.v-timeline .v-timeline-item:nth-child(2n) .v-timeline-item__opposite{grid-row:1;padding-block-end:24px;align-self:flex-end}.v-timeline--horizontal.v-timeline .v-timeline-item:nth-child(odd) .v-timeline-item__body{grid-row:1;padding-block-end:24px;align-self:flex-end}.v-timeline--horizontal.v-timeline .v-timeline-item:nth-child(odd) .v-timeline-item__opposite{grid-row:3;padding-block-start:24px}.v-timeline--vertical.v-timeline{row-gap:24px;height:100%}.v-timeline--vertical.v-timeline .v-timeline-item:first-child .v-timeline-divider,.v-timeline--vertical.v-timeline .v-timeline-item:first-child .v-timeline-item__body,.v-timeline--vertical.v-timeline .v-timeline-item:first-child .v-timeline-item__opposite{padding-block-start:24px}.v-timeline--vertical.v-timeline .v-timeline-item:last-child .v-timeline-divider,.v-timeline--vertical.v-timeline .v-timeline-item:last-child .v-timeline-item__body,.v-timeline--vertical.v-timeline .v-timeline-item:last-child .v-timeline-item__opposite{padding-block-end:24px}.v-timeline--vertical.v-timeline .v-timeline-item:nth-child(2n) .v-timeline-item__body{grid-column:1;padding-inline-end:24px}.v-timeline--vertical.v-timeline .v-timeline-item:nth-child(2n) .v-timeline-item__opposite{grid-column:3;padding-inline-start:24px}.v-timeline--vertical.v-timeline .v-timeline-item:nth-child(odd) .v-timeline-item__body{grid-column:3;padding-inline-start:24px}.v-timeline--vertical.v-timeline .v-timeline-item:nth-child(odd) .v-timeline-item__opposite{grid-column:1;justify-self:flex-end;padding-inline-end:24px}.v-timeline-item{display:contents}.v-timeline-divider{position:relative;display:flex;align-items:center}.v-timeline--horizontal .v-timeline-divider{flex-direction:row;grid-row:2;width:100%}.v-timeline--vertical .v-timeline-divider{height:100%;flex-direction:column;grid-column:2}.v-timeline-divider__before{background:rgba(var(--v-border-color),var(--v-border-opacity));position:absolute}.v-timeline--horizontal .v-timeline-divider__before{height:var(--v-timeline-line-thickness);width:calc(var(--v-timeline-line-size-base) + 12px - var(--v-timeline-line-inset));inset-inline-start:-12px;inset-inline-end:initial}.v-timeline--vertical .v-timeline-divider__before{height:calc(var(--v-timeline-line-size-base) + 12px - var(--v-timeline-line-inset));width:var(--v-timeline-line-thickness);top:-12px}.v-timeline-divider__after{background:rgba(var(--v-border-color),var(--v-border-opacity));position:absolute}.v-timeline--horizontal .v-timeline-divider__after{height:var(--v-timeline-line-thickness);width:calc(var(--v-timeline-line-size-base) + 12px - var(--v-timeline-line-inset));inset-inline-end:-12px;inset-inline-start:initial}.v-timeline--vertical .v-timeline-divider__after{height:calc(var(--v-timeline-line-size-base) + 12px - var(--v-timeline-line-inset));width:var(--v-timeline-line-thickness);bottom:-12px}.v-timeline--vertical .v-timeline-item:first-child .v-timeline-divider__before{height:calc(var(--v-timeline-line-size-base) + 12px - var(--v-timeline-line-inset));top:0}.v-timeline--horizontal .v-timeline-item:first-child .v-timeline-divider__before{width:calc(var(--v-timeline-line-size-base) + 12px - var(--v-timeline-line-inset));inset-inline-start:0;inset-inline-end:initial}.v-timeline--vertical .v-timeline-item:first-child .v-timeline-divider__after{height:calc(var(--v-timeline-line-size-base) - var(--v-timeline-line-inset) + var(--v-timeline-line-size-offset))}.v-timeline--horizontal .v-timeline-item:first-child .v-timeline-divider__after{width:calc(var(--v-timeline-line-size-base) - var(--v-timeline-line-inset) + var(--v-timeline-line-size-offset));inset-inline-end:-12px;inset-inline-start:initial}.v-timeline--vertical .v-timeline-item:last-child .v-timeline-divider__before{height:calc(var(--v-timeline-line-size-base) - var(--v-timeline-line-inset) + var(--v-timeline-line-size-offset))}.v-timeline--horizontal .v-timeline-item:last-child .v-timeline-divider__before{width:calc(var(--v-timeline-line-size-base) - var(--v-timeline-line-inset) + var(--v-timeline-line-size-offset))}.v-timeline--vertical .v-timeline-item:last-child .v-timeline-divider__after{height:calc(var(--v-timeline-line-size-base) + 12px - var(--v-timeline-line-inset));bottom:0}.v-timeline--horizontal .v-timeline-item:last-child .v-timeline-divider__after{width:calc(var(--v-timeline-line-size-base) + 12px - var(--v-timeline-line-inset));inset-inline-end:0;inset-inline-start:initial}.v-timeline--vertical .v-timeline-item:only-child .v-timeline-divider__after{height:calc(var(--v-timeline-line-size-base) - var(--v-timeline-line-inset))}.v-timeline-divider__dot{z-index:1;flex-shrink:0;border-radius:50%;display:flex;justify-content:center;align-items:center;box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-timeline-divider__dot--size-x-small{height:22px;width:22px}.v-timeline-divider__dot--size-x-small .v-timeline-divider__inner-dot{height:calc(100% - 6px);width:calc(100% - 6px)}.v-timeline-divider__dot--size-small{height:30px;width:30px}.v-timeline-divider__dot--size-small .v-timeline-divider__inner-dot{height:calc(100% - 8px);width:calc(100% - 8px)}.v-timeline-divider__dot--size-default{height:38px;width:38px}.v-timeline-divider__dot--size-default .v-timeline-divider__inner-dot{height:calc(100% - 8px);width:calc(100% - 8px)}.v-timeline-divider__dot--size-large{height:46px;width:46px}.v-timeline-divider__dot--size-large .v-timeline-divider__inner-dot{height:calc(100% - 8px);width:calc(100% - 8px)}.v-timeline-divider__dot--size-x-large{height:54px;width:54px}.v-timeline-divider__dot--size-x-large .v-timeline-divider__inner-dot{height:calc(100% - 10px);width:calc(100% - 10px)}.v-timeline-divider__inner-dot{align-items:center;border-radius:50%;display:flex;justify-content:center}.v-timeline--horizontal.v-timeline--justify-center{grid-template-rows:minmax(auto,50%) min-content minmax(auto,50%)}.v-timeline--vertical.v-timeline--justify-center{grid-template-columns:minmax(auto,50%) min-content minmax(auto,50%)}.v-timeline--horizontal.v-timeline--justify-auto{grid-template-rows:auto min-content auto}.v-timeline--vertical.v-timeline--justify-auto{grid-template-columns:auto min-content auto}.v-timeline--horizontal.v-timeline--density-comfortable{height:100%}.v-timeline--horizontal.v-timeline--density-comfortable.v-timeline--side-end{grid-template-rows:min-content min-content auto}.v-timeline--horizontal.v-timeline--density-comfortable.v-timeline--side-start{grid-template-rows:auto min-content min-content}.v-timeline--vertical.v-timeline--density-comfortable{width:100%}.v-timeline--vertical.v-timeline--density-comfortable.v-timeline--side-end{grid-template-columns:min-content min-content auto}.v-timeline--vertical.v-timeline--density-comfortable.v-timeline--side-start{grid-template-columns:auto min-content min-content}.v-timeline--horizontal.v-timeline--density-compact.v-timeline--side-end{grid-template-rows:0 min-content auto}.v-timeline--horizontal.v-timeline--density-compact.v-timeline--side-start{grid-template-rows:auto min-content 0}.v-timeline--horizontal.v-timeline--density-compact .v-timeline-item__body{grid-row:1}.v-timeline--vertical.v-timeline--density-compact.v-timeline--side-end{grid-template-columns:0 min-content auto}.v-timeline--vertical.v-timeline--density-compact.v-timeline--side-start{grid-template-columns:auto min-content 0}.v-timeline--vertical.v-timeline--density-compact .v-timeline-item__body{grid-column:3}.v-timeline--horizontal.v-timeline.v-timeline--side-end .v-timeline-item .v-timeline-item__body{grid-row:3;padding-block-end:initial;padding-block-start:24px}.v-timeline--horizontal.v-timeline.v-timeline--side-end .v-timeline-item .v-timeline-item__opposite{grid-row:1;padding-block-end:24px;padding-block-start:initial}.v-timeline--vertical.v-timeline.v-timeline--side-end .v-timeline-item .v-timeline-item__body{grid-column:3;padding-inline-start:24px;padding-inline-end:initial;justify-self:flex-start}.v-timeline--vertical.v-timeline.v-timeline--side-end .v-timeline-item .v-timeline-item__opposite{grid-column:1;justify-self:flex-end;padding-inline-end:24px;padding-inline-start:initial}.v-timeline--horizontal.v-timeline.v-timeline--side-start .v-timeline-item .v-timeline-item__body{grid-row:1;padding-block-end:24px;padding-block-start:initial}.v-timeline--horizontal.v-timeline.v-timeline--side-start .v-timeline-item .v-timeline-item__opposite{grid-row:3;padding-block-end:initial;padding-block-start:24px}.v-timeline--vertical.v-timeline.v-timeline--side-start .v-timeline-item .v-timeline-item__body{grid-column:1;justify-self:flex-end;padding-inline-end:24px}.v-timeline--vertical.v-timeline.v-timeline--side-start .v-timeline-item .v-timeline-item__opposite{grid-column:3;padding-inline-start:24px;justify-self:flex-start}.v-timeline-divider--fill-dot .v-timeline-divider__inner-dot{height:inherit;width:inherit}.v-timeline--align-center{--v-timeline-line-size-base: 50%;--v-timeline-line-size-offset: 0px}.v-timeline--horizontal.v-timeline--align-center{justify-items:center}.v-timeline--horizontal.v-timeline--align-center .v-timeline-item__body,.v-timeline--horizontal.v-timeline--align-center .v-timeline-item__opposite{padding-inline:12px}.v-timeline--horizontal.v-timeline--align-center .v-timeline-divider{justify-content:center}.v-timeline--vertical.v-timeline--align-center{align-items:center}.v-timeline--vertical.v-timeline--align-center .v-timeline-divider{justify-content:center}.v-timeline--align-start{--v-timeline-line-size-base: 100%;--v-timeline-line-size-offset: 12px}.v-timeline--align-start .v-timeline-item:first-child .v-timeline-divider__before{--v-timeline-line-size-offset: 24px}.v-timeline--align-start .v-timeline-item:first-child .v-timeline-divider__after{--v-timeline-line-size-offset: -12px}.v-timeline--align-start .v-timeline-item:last-child .v-timeline-divider__after{--v-timeline-line-size-offset: 0px}.v-timeline--horizontal.v-timeline--align-start{justify-items:flex-start}.v-timeline--horizontal.v-timeline--align-start .v-timeline-divider{justify-content:flex-start}.v-timeline--horizontal.v-timeline--align-start .v-timeline-divider .v-timeline-divider__before{width:calc(var(--v-timeline-line-size-offset) + var(--v-timeline-dot-size) / 2 - var(--v-timeline-line-inset))}.v-timeline--horizontal.v-timeline--align-start .v-timeline-divider .v-timeline-divider__after{width:calc(var(--v-timeline-line-size-base) - var(--v-timeline-dot-size) / 2 + var(--v-timeline-line-size-offset) - var(--v-timeline-line-inset))}.v-timeline--vertical.v-timeline--align-start{align-items:flex-start}.v-timeline--vertical.v-timeline--align-start .v-timeline-divider{justify-content:flex-start}.v-timeline--vertical.v-timeline--align-start .v-timeline-divider .v-timeline-divider__before{height:calc(var(--v-timeline-line-size-offset) + var(--v-timeline-dot-size) / 2 - var(--v-timeline-line-inset))}.v-timeline--vertical.v-timeline--align-start .v-timeline-divider .v-timeline-divider__after{height:calc(var(--v-timeline-line-size-base) - var(--v-timeline-dot-size) / 2 + var(--v-timeline-line-size-offset) - var(--v-timeline-line-inset))}.v-timeline--truncate-line-start .v-timeline-item:first-child .v-timeline-divider__before{display:none}.v-timeline--truncate-line-start .v-timeline-item:first-child .v-timeline-divider__after{--v-timeline-line-size-offset: 12px}.v-timeline--vertical.v-timeline--truncate-line-start .v-timeline-item:first-child .v-timeline-divider,.v-timeline--vertical.v-timeline--truncate-line-start .v-timeline-item:first-child .v-timeline-item__body,.v-timeline--vertical.v-timeline--truncate-line-start .v-timeline-item:first-child .v-timeline-item__opposite{padding-block-start:0}.v-timeline--horizontal.v-timeline--truncate-line-start .v-timeline-item:first-child .v-timeline-divider,.v-timeline--horizontal.v-timeline--truncate-line-start .v-timeline-item:first-child .v-timeline-item__body,.v-timeline--horizontal.v-timeline--truncate-line-start .v-timeline-item:first-child .v-timeline-item__opposite{padding-inline-start:0}.v-timeline--truncate-line-end .v-timeline-item:last-child .v-timeline-divider__after{display:none}.v-timeline--truncate-line-end .v-timeline-item:last-child .v-timeline-divider__before{--v-timeline-line-size-offset: 12px}.v-timeline--vertical.v-timeline--truncate-line-end .v-timeline-item:last-child .v-timeline-divider,.v-timeline--vertical.v-timeline--truncate-line-end .v-timeline-item:last-child .v-timeline-item__body,.v-timeline--vertical.v-timeline--truncate-line-end .v-timeline-item:last-child .v-timeline-item__opposite{padding-block-end:0}.v-timeline--horizontal.v-timeline--truncate-line-end .v-timeline-item:last-child .v-timeline-divider,.v-timeline--horizontal.v-timeline--truncate-line-end .v-timeline-item:last-child .v-timeline-item__body,.v-timeline--horizontal.v-timeline--truncate-line-end .v-timeline-item:last-child .v-timeline-item__opposite{padding-inline-end:0} diff --git a/cookbook/static/vue3/assets/main-Ck0XzBN_.js b/cookbook/static/vue3/assets/main-Ck0XzBN_.js new file mode 100644 index 000000000..a37dab920 --- /dev/null +++ b/cookbook/static/vue3/assets/main-Ck0XzBN_.js @@ -0,0 +1,21 @@ +/** +* @vue/shared v3.4.19 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function as(e,t){const s=new Set(e.split(","));return t?n=>s.has(n.toLowerCase()):n=>s.has(n)}const U={},ke=[],re=()=>{},ar=()=>!1,Pt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ds=e=>e.startsWith("onUpdate:"),Y=Object.assign,hs=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},dr=Object.prototype.hasOwnProperty,R=(e,t)=>dr.call(e,t),P=Array.isArray,et=e=>St(e)==="[object Map]",hr=e=>St(e)==="[object Set]",A=e=>typeof e=="function",G=e=>typeof e=="string",At=e=>typeof e=="symbol",B=e=>e!==null&&typeof e=="object",bn=e=>(B(e)||A(e))&&A(e.then)&&A(e.catch),pr=Object.prototype.toString,St=e=>pr.call(e),gr=e=>St(e).slice(8,-1),_r=e=>St(e)==="[object Object]",ps=e=>G(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,tt=as(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Rt=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},mr=/-(\w)/g,qe=Rt(e=>e.replace(mr,(t,s)=>s?s.toUpperCase():"")),br=/\B([A-Z])/g,Je=Rt(e=>e.replace(br,"-$1").toLowerCase()),xn=Rt(e=>e.charAt(0).toUpperCase()+e.slice(1)),Wt=Rt(e=>e?`on${xn(e)}`:""),Ie=(e,t)=>!Object.is(e,t),qt=(e,t)=>{for(let s=0;s{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:s})},xr=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Us;const yn=()=>Us||(Us=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function gs(e){if(P(e)){const t={};for(let s=0;s{if(s){const n=s.split(vr);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function _s(e){let t="";if(G(e))t=e;else if(P(e))for(let s=0;s=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),He()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Oe,s=Le;try{return Oe=!0,Le=this,this._runnings++,Ks(this),this.fn()}finally{Vs(this),this._runnings--,Le=s,Oe=t}}stop(){var t;this.active&&(Ks(this),Vs(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function Ar(e){return e.value}function Ks(e){e._trackId++,e._depsLength=0}function Vs(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const s=new Map;return s.cleanup=e,s.computed=t,s},ts=new WeakMap,Ne=Symbol(""),ss=Symbol("");function ee(e,t,s){if(Oe&&Le){let n=ts.get(e);n||ts.set(e,n=new Map);let r=n.get(s);r||n.set(s,r=In(()=>n.delete(s))),On(Le,r)}}function xe(e,t,s,n,r,i){const l=ts.get(e);if(!l)return;let f=[];if(t==="clear")f=[...l.values()];else if(s==="length"&&P(e)){const u=Number(n);l.forEach((d,h)=>{(h==="length"||!At(h)&&h>=u)&&f.push(d)})}else switch(s!==void 0&&f.push(l.get(s)),t){case"add":P(e)?ps(s)&&f.push(l.get("length")):(f.push(l.get(Ne)),et(e)&&f.push(l.get(ss)));break;case"delete":P(e)||(f.push(l.get(Ne)),et(e)&&f.push(l.get(ss)));break;case"set":et(e)&&f.push(l.get(Ne));break}bs();for(const u of f)u&&Tn(u,4);xs()}const Sr=as("__proto__,__v_isRef,__isVue"),Pn=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(At)),Bs=Rr();function Rr(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...s){const n=F(this);for(let i=0,l=this.length;i{e[t]=function(...s){$e(),bs();const n=F(this)[t].apply(this,s);return xs(),He(),n}}),e}function Mr(e){const t=F(this);return ee(t,"has",e),t.hasOwnProperty(e)}class An{constructor(t=!1,s=!1){this._isReadonly=t,this._shallow=s}get(t,s,n){const r=this._isReadonly,i=this._shallow;if(s==="__v_isReactive")return!r;if(s==="__v_isReadonly")return r;if(s==="__v_isShallow")return i;if(s==="__v_raw")return n===(r?i?qr:Fn:i?Mn:Rn).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const l=P(t);if(!r){if(l&&R(Bs,s))return Reflect.get(Bs,s,n);if(s==="hasOwnProperty")return Mr}const f=Reflect.get(t,s,n);return(At(s)?Pn.has(s):Sr(s))||(r||ee(t,"get",s),i)?f:te(f)?l&&ps(s)?f:f.value:B(f)?r?Ln(f):Es(f):f}}class Sn extends An{constructor(t=!1){super(!1,t)}set(t,s,n,r){let i=t[s];if(!this._shallow){const u=ze(i);if(!Ct(n)&&!ze(n)&&(i=F(i),n=F(n)),!P(t)&&te(i)&&!te(n))return u?!1:(i.value=n,!0)}const l=P(t)&&ps(s)?Number(s)e,Mt=e=>Reflect.getPrototypeOf(e);function ht(e,t,s=!1,n=!1){e=e.__v_raw;const r=F(e),i=F(t);s||(Ie(t,i)&&ee(r,"get",t),ee(r,"get",i));const{has:l}=Mt(r),f=n?ys:s?Os:rt;if(l.call(r,t))return f(e.get(t));if(l.call(r,i))return f(e.get(i));e!==r&&e.get(t)}function pt(e,t=!1){const s=this.__v_raw,n=F(s),r=F(e);return t||(Ie(e,r)&&ee(n,"has",e),ee(n,"has",r)),e===r?s.has(e):s.has(e)||s.has(r)}function gt(e,t=!1){return e=e.__v_raw,!t&&ee(F(e),"iterate",Ne),Reflect.get(e,"size",e)}function Ds(e){e=F(e);const t=F(this);return Mt(t).has.call(t,e)||(t.add(e),xe(t,"add",e,e)),this}function Ws(e,t){t=F(t);const s=F(this),{has:n,get:r}=Mt(s);let i=n.call(s,e);i||(e=F(e),i=n.call(s,e));const l=r.call(s,e);return s.set(e,t),i?Ie(t,l)&&xe(s,"set",e,t):xe(s,"add",e,t),this}function qs(e){const t=F(this),{has:s,get:n}=Mt(t);let r=s.call(t,e);r||(e=F(e),r=s.call(t,e)),n&&n.call(t,e);const i=t.delete(e);return r&&xe(t,"delete",e,void 0),i}function zs(){const e=F(this),t=e.size!==0,s=e.clear();return t&&xe(e,"clear",void 0,void 0),s}function _t(e,t){return function(n,r){const i=this,l=i.__v_raw,f=F(l),u=t?ys:e?Os:rt;return!e&&ee(f,"iterate",Ne),l.forEach((d,h)=>n.call(r,u(d),u(h),i))}}function mt(e,t,s){return function(...n){const r=this.__v_raw,i=F(r),l=et(i),f=e==="entries"||e===Symbol.iterator&&l,u=e==="keys"&&l,d=r[e](...n),h=s?ys:t?Os:rt;return!t&&ee(i,"iterate",u?ss:Ne),{next(){const{value:v,done:w}=d.next();return w?{value:v,done:w}:{value:f?[h(v[0]),h(v[1])]:h(v),done:w}},[Symbol.iterator](){return this}}}}function ve(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function $r(){const e={get(i){return ht(this,i)},get size(){return gt(this)},has:pt,add:Ds,set:Ws,delete:qs,clear:zs,forEach:_t(!1,!1)},t={get(i){return ht(this,i,!1,!0)},get size(){return gt(this)},has:pt,add:Ds,set:Ws,delete:qs,clear:zs,forEach:_t(!1,!0)},s={get(i){return ht(this,i,!0)},get size(){return gt(this,!0)},has(i){return pt.call(this,i,!0)},add:ve("add"),set:ve("set"),delete:ve("delete"),clear:ve("clear"),forEach:_t(!0,!1)},n={get(i){return ht(this,i,!0,!0)},get size(){return gt(this,!0)},has(i){return pt.call(this,i,!0)},add:ve("add"),set:ve("set"),delete:ve("delete"),clear:ve("clear"),forEach:_t(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=mt(i,!1,!1),s[i]=mt(i,!0,!1),t[i]=mt(i,!1,!0),n[i]=mt(i,!0,!0)}),[e,s,t,n]}const[Hr,Ur,Kr,Vr]=$r();function vs(e,t){const s=t?e?Vr:Kr:e?Ur:Hr;return(n,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?n:Reflect.get(R(s,r)&&r in n?s:n,r,i)}const Br={get:vs(!1,!1)},Dr={get:vs(!1,!0)},Wr={get:vs(!0,!1)},Rn=new WeakMap,Mn=new WeakMap,Fn=new WeakMap,qr=new WeakMap;function zr(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Gr(e){return e.__v_skip||!Object.isExtensible(e)?0:zr(gr(e))}function Es(e){return ze(e)?e:ws(e,!1,Lr,Br,Rn)}function Jr(e){return ws(e,!1,jr,Dr,Mn)}function Ln(e){return ws(e,!0,Nr,Wr,Fn)}function ws(e,t,s,n,r){if(!B(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const l=Gr(e);if(l===0)return e;const f=new Proxy(e,l===2?n:s);return r.set(e,f),f}function De(e){return ze(e)?De(e.__v_raw):!!(e&&e.__v_isReactive)}function ze(e){return!!(e&&e.__v_isReadonly)}function Ct(e){return!!(e&&e.__v_isShallow)}function Nn(e){return De(e)||ze(e)}function F(e){const t=e&&e.__v_raw;return t?F(t):e}function Cs(e){return Object.isExtensible(e)&&wt(e,"__v_skip",!0),e}const rt=e=>B(e)?Es(e):e,Os=e=>B(e)?Ln(e):e;class jn{constructor(t,s,n,r){this._setter=s,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new ms(()=>t(this._value),()=>xt(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=n}get value(){const t=F(this);return(!t._cacheable||t.effect.dirty)&&Ie(t._value,t._value=t.effect.run())&&xt(t,4),$n(t),t.effect._dirtyLevel>=2&&xt(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function Yr(e,t,s=!1){let n,r;const i=A(e);return i?(n=e,r=re):(n=e.get,r=e.set),new jn(n,r,i||!r,s)}function $n(e){var t;Oe&&Le&&(e=F(e),On(Le,(t=e.dep)!=null?t:e.dep=In(()=>e.dep=void 0,e instanceof jn?e:void 0)))}function xt(e,t=4,s){e=F(e);const n=e.dep;n&&Tn(n,t)}function te(e){return!!(e&&e.__v_isRef===!0)}function Xr(e){return Zr(e,!1)}function Zr(e,t){return te(e)?e:new Qr(e,t)}class Qr{constructor(t,s){this.__v_isShallow=s,this.dep=void 0,this.__v_isRef=!0,this._rawValue=s?t:F(t),this._value=s?t:rt(t)}get value(){return $n(this),this._value}set value(t){const s=this.__v_isShallow||Ct(t)||ze(t);t=s?t:F(t),Ie(t,this._rawValue)&&(this._rawValue=t,this._value=s?t:rt(t),xt(this,4))}}function kr(e){return te(e)?e.value:e}const ei={get:(e,t,s)=>kr(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const r=e[t];return te(r)&&!te(s)?(r.value=s,!0):Reflect.set(e,t,s,n)}};function Hn(e){return De(e)?e:new Proxy(e,ei)}/** +* @vue/runtime-core v3.4.19 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Te(e,t,s,n){try{return n?e(...n):e()}catch(r){Ft(r,t,s)}}function le(e,t,s,n){if(A(e)){const i=Te(e,t,s,n);return i&&bn(i)&&i.catch(l=>{Ft(l,t,s)}),i}const r=[];for(let i=0;i>>1,r=J[n],i=ot(r);ipe&&J.splice(t,1)}function ii(e){P(e)?We.push(...e):(!Ee||!Ee.includes(e,e.allowRecurse?Fe+1:Fe))&&We.push(e),Kn()}function Gs(e,t,s=it?pe+1:0){for(;sot(s)-ot(n));if(We.length=0,Ee){Ee.push(...t);return}for(Ee=t,Fe=0;Fee.id==null?1/0:e.id,oi=(e,t)=>{const s=ot(e)-ot(t);if(s===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return s};function Bn(e){ns=!1,it=!0,J.sort(oi);try{for(pe=0;peG(I)?I.trim():I)),v&&(r=s.map(xr))}let f,u=n[f=Wt(t)]||n[f=Wt(qe(t))];!u&&i&&(u=n[f=Wt(Je(t))]),u&&le(u,e,6,r);const d=n[f+"Once"];if(d){if(!e.emitted)e.emitted={};else if(e.emitted[f])return;e.emitted[f]=!0,le(d,e,6,r)}}function Dn(e,t,s=!1){const n=t.emitsCache,r=n.get(e);if(r!==void 0)return r;const i=e.emits;let l={},f=!1;if(!A(e)){const u=d=>{const h=Dn(d,t,!0);h&&(f=!0,Y(l,h))};!s&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}return!i&&!f?(B(e)&&n.set(e,null),null):(P(i)?i.forEach(u=>l[u]=null):Y(l,i),B(e)&&n.set(e,l),l)}function Lt(e,t){return!e||!Pt(t)?!1:(t=t.slice(2).replace(/Once$/,""),R(e,t[0].toLowerCase()+t.slice(1))||R(e,Je(t))||R(e,t))}let ge=null,Wn=null;function Ot(e){const t=ge;return ge=e,Wn=e&&e.type.__scopeId||null,t}function ci(e,t=ge,s){if(!t||e._n)return e;const n=(...r)=>{n._d&&nn(-1);const i=Ot(t);let l;try{l=e(...r)}finally{Ot(i),n._d&&nn(1)}return l};return n._n=!0,n._c=!0,n._d=!0,n}function zt(e){const{type:t,vnode:s,proxy:n,withProxy:r,props:i,propsOptions:[l],slots:f,attrs:u,emit:d,render:h,renderCache:v,data:w,setupState:I,ctx:V,inheritAttrs:L}=e;let W,D;const ce=Ot(e);try{if(s.shapeFlag&4){const q=r||n,ne=q;W=he(h.call(ne,q,v,i,I,w,V)),D=u}else{const q=t;W=he(q.length>1?q(i,{attrs:u,slots:f,emit:d}):q(i,null)),D=t.props?u:fi(u)}}catch(q){Ft(q,e,1),W=je(lt)}let j=W;if(D&&L!==!1){const q=Object.keys(D),{shapeFlag:ne}=j;q.length&&ne&7&&(l&&q.some(ds)&&(D=ui(D,l)),j=Ge(j,D))}return s.dirs&&(j=Ge(j),j.dirs=j.dirs?j.dirs.concat(s.dirs):s.dirs),s.transition&&(j.transition=s.transition),W=j,Ot(ce),W}const fi=e=>{let t;for(const s in e)(s==="class"||s==="style"||Pt(s))&&((t||(t={}))[s]=e[s]);return t},ui=(e,t)=>{const s={};for(const n in e)(!ds(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function ai(e,t,s){const{props:n,children:r,component:i}=e,{props:l,children:f,patchFlag:u}=t,d=i.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&u>=0){if(u&1024)return!0;if(u&16)return n?Js(n,l,d):!!l;if(u&8){const h=t.dynamicProps;for(let v=0;ve.__isSuspense;function gi(e,t){t&&t.pendingBranch?P(e)?t.effects.push(...e):t.effects.push(e):ii(e)}const _i=Symbol.for("v-scx"),mi=()=>vt(_i),bt={};function Gt(e,t,s){return qn(e,t,s)}function qn(e,t,{immediate:s,deep:n,flush:r,once:i,onTrack:l,onTrigger:f}=U){if(t&&i){const M=t;t=(..._e)=>{M(..._e),ne()}}const u=Q,d=M=>n===!0?M:Ve(M,n===!1?1:void 0);let h,v=!1,w=!1;if(te(e)?(h=()=>e.value,v=Ct(e)):De(e)?(h=()=>d(e),v=!0):P(e)?(w=!0,v=e.some(M=>De(M)||Ct(M)),h=()=>e.map(M=>{if(te(M))return M.value;if(De(M))return d(M);if(A(M))return Te(M,u,2)})):A(e)?t?h=()=>Te(e,u,2):h=()=>(I&&I(),le(e,u,3,[V])):h=re,t&&n){const M=h;h=()=>Ve(M())}let I,V=M=>{I=j.onStop=()=>{Te(M,u,4),I=j.onStop=void 0}},L;if(Ht)if(V=re,t?s&&le(t,u,3,[h(),w?[]:void 0,V]):h(),r==="sync"){const M=mi();L=M.__watcherHandles||(M.__watcherHandles=[])}else return re;let W=w?new Array(e.length).fill(bt):bt;const D=()=>{if(!(!j.active||!j.dirty))if(t){const M=j.run();(n||v||(w?M.some((_e,fe)=>Ie(_e,W[fe])):Ie(M,W)))&&(I&&I(),le(t,u,3,[M,W===bt?void 0:w&&W[0]===bt?[]:W,V]),W=M)}else j.run()};D.allowRecurse=!!t;let ce;r==="sync"?ce=D:r==="post"?ce=()=>k(D,u&&u.suspense):(D.pre=!0,u&&(D.id=u.uid),ce=()=>Is(D));const j=new ms(h,re,ce),q=Pr(),ne=()=>{j.stop(),q&&hs(q.effects,j)};return t?s?D():W=j.run():r==="post"?k(j.run.bind(j),u&&u.suspense):j.run(),L&&L.push(ne),ne}function bi(e,t,s){const n=this.proxy,r=G(e)?e.includes(".")?zn(n,e):()=>n[e]:e.bind(n,n);let i;A(t)?i=t:(i=t.handler,s=t);const l=ct(this),f=qn(r,i.bind(n),s);return l(),f}function zn(e,t){const s=t.split(".");return()=>{let n=e;for(let r=0;r0){if(s>=t)return e;s++}if(n=n||new Set,n.has(e))return e;if(n.add(e),te(e))Ve(e.value,t,s,n);else if(P(e))for(let r=0;r{Ve(r,t,s,n)});else if(_r(e))for(const r in e)Ve(e[r],t,s,n);return e}function Re(e,t,s,n){const r=e.dirs,i=t&&t.dirs;for(let l=0;l!!e.type.__asyncLoader,Gn=e=>e.type.__isKeepAlive;function xi(e,t){Jn(e,"a",t)}function yi(e,t){Jn(e,"da",t)}function Jn(e,t,s=Q){const n=e.__wdc||(e.__wdc=()=>{let r=s;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Nt(t,n,s),s){let r=s.parent;for(;r&&r.parent;)Gn(r.parent.vnode)&&vi(n,t,s,r),r=r.parent}}function vi(e,t,s,n){const r=Nt(t,e,n,!0);Yn(()=>{hs(n[t],r)},s)}function Nt(e,t,s=Q,n=!1){if(s){const r=s[e]||(s[e]=[]),i=t.__weh||(t.__weh=(...l)=>{if(s.isUnmounted)return;$e();const f=ct(s),u=le(t,s,e,l);return f(),He(),u});return n?r.unshift(i):r.push(i),i}}const ye=e=>(t,s=Q)=>(!Ht||e==="sp")&&Nt(e,(...n)=>t(...n),s),Ei=ye("bm"),wi=ye("m"),Ci=ye("bu"),Oi=ye("u"),Ti=ye("bum"),Yn=ye("um"),Ii=ye("sp"),Pi=ye("rtg"),Ai=ye("rtc");function Si(e,t=Q){Nt("ec",e,t)}const rs=e=>e?or(e)?Ms(e)||e.proxy:rs(e.parent):null,st=Y(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>rs(e.parent),$root:e=>rs(e.root),$emit:e=>e.emit,$options:e=>Ps(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Is(e.update)}),$nextTick:e=>e.n||(e.n=si.bind(e.proxy)),$watch:e=>bi.bind(e)}),Jt=(e,t)=>e!==U&&!e.__isScriptSetup&&R(e,t),Ri={get({_:e},t){const{ctx:s,setupState:n,data:r,props:i,accessCache:l,type:f,appContext:u}=e;let d;if(t[0]!=="$"){const I=l[t];if(I!==void 0)switch(I){case 1:return n[t];case 2:return r[t];case 4:return s[t];case 3:return i[t]}else{if(Jt(n,t))return l[t]=1,n[t];if(r!==U&&R(r,t))return l[t]=2,r[t];if((d=e.propsOptions[0])&&R(d,t))return l[t]=3,i[t];if(s!==U&&R(s,t))return l[t]=4,s[t];is&&(l[t]=0)}}const h=st[t];let v,w;if(h)return t==="$attrs"&&ee(e,"get",t),h(e);if((v=f.__cssModules)&&(v=v[t]))return v;if(s!==U&&R(s,t))return l[t]=4,s[t];if(w=u.config.globalProperties,R(w,t))return w[t]},set({_:e},t,s){const{data:n,setupState:r,ctx:i}=e;return Jt(r,t)?(r[t]=s,!0):n!==U&&R(n,t)?(n[t]=s,!0):R(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:r,propsOptions:i}},l){let f;return!!s[l]||e!==U&&R(e,l)||Jt(t,l)||(f=i[0])&&R(f,l)||R(n,l)||R(st,l)||R(r.config.globalProperties,l)},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:R(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function Ys(e){return P(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let is=!0;function Mi(e){const t=Ps(e),s=e.proxy,n=e.ctx;is=!1,t.beforeCreate&&Xs(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:l,watch:f,provide:u,inject:d,created:h,beforeMount:v,mounted:w,beforeUpdate:I,updated:V,activated:L,deactivated:W,beforeDestroy:D,beforeUnmount:ce,destroyed:j,unmounted:q,render:ne,renderTracked:M,renderTriggered:_e,errorCaptured:fe,serverPrefetch:Ut,expose:Pe,inheritAttrs:Ye,components:ft,directives:ut,filters:Kt}=t;if(d&&Fi(d,n,null),l)for(const K in l){const $=l[K];A($)&&(n[K]=$.bind(s))}if(r){const K=r.call(s,s);B(K)&&(e.data=Es(K))}if(is=!0,i)for(const K in i){const $=i[K],Ae=A($)?$.bind(s,s):A($.get)?$.get.bind(s,s):re,at=!A($)&&A($.set)?$.set.bind(s):re,Se=uo({get:Ae,set:at});Object.defineProperty(n,K,{enumerable:!0,configurable:!0,get:()=>Se.value,set:ue=>Se.value=ue})}if(f)for(const K in f)Xn(f[K],n,s,K);if(u){const K=A(u)?u.call(s):u;Reflect.ownKeys(K).forEach($=>{Ui($,K[$])})}h&&Xs(h,e,"c");function X(K,$){P($)?$.forEach(Ae=>K(Ae.bind(s))):$&&K($.bind(s))}if(X(Ei,v),X(wi,w),X(Ci,I),X(Oi,V),X(xi,L),X(yi,W),X(Si,fe),X(Ai,M),X(Pi,_e),X(Ti,ce),X(Yn,q),X(Ii,Ut),P(Pe))if(Pe.length){const K=e.exposed||(e.exposed={});Pe.forEach($=>{Object.defineProperty(K,$,{get:()=>s[$],set:Ae=>s[$]=Ae})})}else e.exposed||(e.exposed={});ne&&e.render===re&&(e.render=ne),Ye!=null&&(e.inheritAttrs=Ye),ft&&(e.components=ft),ut&&(e.directives=ut)}function Fi(e,t,s=re){P(e)&&(e=os(e));for(const n in e){const r=e[n];let i;B(r)?"default"in r?i=vt(r.from||n,r.default,!0):i=vt(r.from||n):i=vt(r),te(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:l=>i.value=l}):t[n]=i}}function Xs(e,t,s){le(P(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function Xn(e,t,s,n){const r=n.includes(".")?zn(s,n):()=>s[n];if(G(e)){const i=t[e];A(i)&&Gt(r,i)}else if(A(e))Gt(r,e.bind(s));else if(B(e))if(P(e))e.forEach(i=>Xn(i,t,s,n));else{const i=A(e.handler)?e.handler.bind(s):t[e.handler];A(i)&&Gt(r,i,e)}}function Ps(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:l}}=e.appContext,f=i.get(t);let u;return f?u=f:!r.length&&!s&&!n?u=t:(u={},r.length&&r.forEach(d=>Tt(u,d,l,!0)),Tt(u,t,l)),B(t)&&i.set(t,u),u}function Tt(e,t,s,n=!1){const{mixins:r,extends:i}=t;i&&Tt(e,i,s,!0),r&&r.forEach(l=>Tt(e,l,s,!0));for(const l in t)if(!(n&&l==="expose")){const f=Li[l]||s&&s[l];e[l]=f?f(e[l],t[l]):t[l]}return e}const Li={data:Zs,props:Qs,emits:Qs,methods:Qe,computed:Qe,beforeCreate:Z,created:Z,beforeMount:Z,mounted:Z,beforeUpdate:Z,updated:Z,beforeDestroy:Z,beforeUnmount:Z,destroyed:Z,unmounted:Z,activated:Z,deactivated:Z,errorCaptured:Z,serverPrefetch:Z,components:Qe,directives:Qe,watch:ji,provide:Zs,inject:Ni};function Zs(e,t){return t?e?function(){return Y(A(e)?e.call(this,this):e,A(t)?t.call(this,this):t)}:t:e}function Ni(e,t){return Qe(os(e),os(t))}function os(e){if(P(e)){const t={};for(let s=0;s1)return s&&A(t)?t.call(n&&n.proxy):t}}function Ki(e,t,s,n=!1){const r={},i={};wt(i,$t,1),e.propsDefaults=Object.create(null),Qn(e,t,r,i);for(const l in e.propsOptions[0])l in r||(r[l]=void 0);s?e.props=n?r:Jr(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Vi(e,t,s,n){const{props:r,attrs:i,vnode:{patchFlag:l}}=e,f=F(r),[u]=e.propsOptions;let d=!1;if((n||l>0)&&!(l&16)){if(l&8){const h=e.vnode.dynamicProps;for(let v=0;v{u=!0;const[w,I]=kn(v,t,!0);Y(l,w),I&&f.push(...I)};!s&&t.mixins.length&&t.mixins.forEach(h),e.extends&&h(e.extends),e.mixins&&e.mixins.forEach(h)}if(!i&&!u)return B(e)&&n.set(e,ke),ke;if(P(i))for(let h=0;h-1,I[1]=L<0||V-1||R(I,"default"))&&f.push(v)}}}const d=[l,f];return B(e)&&n.set(e,d),d}function ks(e){return e[0]!=="$"&&!tt(e)}function en(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function tn(e,t){return en(e)===en(t)}function sn(e,t){return P(t)?t.findIndex(s=>tn(s,e)):A(t)&&tn(t,e)?0:-1}const er=e=>e[0]==="_"||e==="$stable",As=e=>P(e)?e.map(he):[he(e)],Bi=(e,t,s)=>{if(t._n)return t;const n=ci((...r)=>As(t(...r)),s);return n._c=!1,n},tr=(e,t,s)=>{const n=e._ctx;for(const r in e){if(er(r))continue;const i=e[r];if(A(i))t[r]=Bi(r,i,n);else if(i!=null){const l=As(i);t[r]=()=>l}}},sr=(e,t)=>{const s=As(t);e.slots.default=()=>s},Di=(e,t)=>{if(e.vnode.shapeFlag&32){const s=t._;s?(e.slots=F(t),wt(t,"_",s)):tr(t,e.slots={})}else e.slots={},t&&sr(e,t);wt(e.slots,$t,1)},Wi=(e,t,s)=>{const{vnode:n,slots:r}=e;let i=!0,l=U;if(n.shapeFlag&32){const f=t._;f?s&&f===1?i=!1:(Y(r,t),!s&&f===1&&delete r._):(i=!t.$stable,tr(t,r)),l=t}else t&&(sr(e,t),l={default:1});if(i)for(const f in r)!er(f)&&l[f]==null&&delete r[f]};function cs(e,t,s,n,r=!1){if(P(e)){e.forEach((w,I)=>cs(w,t&&(P(t)?t[I]:t),s,n,r));return}if(yt(n)&&!r)return;const i=n.shapeFlag&4?Ms(n.component)||n.component.proxy:n.el,l=r?null:i,{i:f,r:u}=e,d=t&&t.r,h=f.refs===U?f.refs={}:f.refs,v=f.setupState;if(d!=null&&d!==u&&(G(d)?(h[d]=null,R(v,d)&&(v[d]=null)):te(d)&&(d.value=null)),A(u))Te(u,f,12,[l,h]);else{const w=G(u),I=te(u);if(w||I){const V=()=>{if(e.f){const L=w?R(v,u)?v[u]:h[u]:u.value;r?P(L)&&hs(L,i):P(L)?L.includes(i)||L.push(i):w?(h[u]=[i],R(v,u)&&(v[u]=h[u])):(u.value=[i],e.k&&(h[e.k]=u.value))}else w?(h[u]=l,R(v,u)&&(v[u]=l)):I&&(u.value=l,e.k&&(h[e.k]=l))};l?(V.id=-1,k(V,s)):V()}}}const k=gi;function qi(e){return zi(e)}function zi(e,t){const s=yn();s.__VUE__=!0;const{insert:n,remove:r,patchProp:i,createElement:l,createText:f,createComment:u,setText:d,setElementText:h,parentNode:v,nextSibling:w,setScopeId:I=re,insertStaticContent:V}=e,L=(o,c,a,p=null,g=null,b=null,y=void 0,m=null,x=!!c.dynamicChildren)=>{if(o===c)return;o&&!Ze(o,c)&&(p=dt(o),ue(o,g,b,!0),o=null),c.patchFlag===-2&&(x=!1,c.dynamicChildren=null);const{type:_,ref:E,shapeFlag:O}=c;switch(_){case jt:W(o,c,a,p);break;case lt:D(o,c,a,p);break;case Xt:o==null&&ce(c,a,p,y);break;case be:ft(o,c,a,p,g,b,y,m,x);break;default:O&1?ne(o,c,a,p,g,b,y,m,x):O&6?ut(o,c,a,p,g,b,y,m,x):(O&64||O&128)&&_.process(o,c,a,p,g,b,y,m,x,Ue)}E!=null&&g&&cs(E,o&&o.ref,b,c||o,!c)},W=(o,c,a,p)=>{if(o==null)n(c.el=f(c.children),a,p);else{const g=c.el=o.el;c.children!==o.children&&d(g,c.children)}},D=(o,c,a,p)=>{o==null?n(c.el=u(c.children||""),a,p):c.el=o.el},ce=(o,c,a,p)=>{[o.el,o.anchor]=V(o.children,c,a,p,o.el,o.anchor)},j=({el:o,anchor:c},a,p)=>{let g;for(;o&&o!==c;)g=w(o),n(o,a,p),o=g;n(c,a,p)},q=({el:o,anchor:c})=>{let a;for(;o&&o!==c;)a=w(o),r(o),o=a;r(c)},ne=(o,c,a,p,g,b,y,m,x)=>{c.type==="svg"?y="svg":c.type==="math"&&(y="mathml"),o==null?M(c,a,p,g,b,y,m,x):Ut(o,c,g,b,y,m,x)},M=(o,c,a,p,g,b,y,m)=>{let x,_;const{props:E,shapeFlag:O,transition:C,dirs:T}=o;if(x=o.el=l(o.type,b,E&&E.is,E),O&8?h(x,o.children):O&16&&fe(o.children,x,null,p,g,Yt(o,b),y,m),T&&Re(o,null,p,"created"),_e(x,o,o.scopeId,y,p),E){for(const N in E)N!=="value"&&!tt(N)&&i(x,N,null,E[N],b,o.children,p,g,me);"value"in E&&i(x,"value",null,E.value,b),(_=E.onVnodeBeforeMount)&&de(_,p,o)}T&&Re(o,null,p,"beforeMount");const S=Gi(g,C);S&&C.beforeEnter(x),n(x,c,a),((_=E&&E.onVnodeMounted)||S||T)&&k(()=>{_&&de(_,p,o),S&&C.enter(x),T&&Re(o,null,p,"mounted")},g)},_e=(o,c,a,p,g)=>{if(a&&I(o,a),p)for(let b=0;b{for(let _=x;_{const m=c.el=o.el;let{patchFlag:x,dynamicChildren:_,dirs:E}=c;x|=o.patchFlag&16;const O=o.props||U,C=c.props||U;let T;if(a&&Me(a,!1),(T=C.onVnodeBeforeUpdate)&&de(T,a,c,o),E&&Re(c,o,a,"beforeUpdate"),a&&Me(a,!0),_?Pe(o.dynamicChildren,_,m,a,p,Yt(c,g),b):y||$(o,c,m,null,a,p,Yt(c,g),b,!1),x>0){if(x&16)Ye(m,c,O,C,a,p,g);else if(x&2&&O.class!==C.class&&i(m,"class",null,C.class,g),x&4&&i(m,"style",O.style,C.style,g),x&8){const S=c.dynamicProps;for(let N=0;N{T&&de(T,a,c,o),E&&Re(c,o,a,"updated")},p)},Pe=(o,c,a,p,g,b,y)=>{for(let m=0;m{if(a!==p){if(a!==U)for(const m in a)!tt(m)&&!(m in p)&&i(o,m,a[m],null,y,c.children,g,b,me);for(const m in p){if(tt(m))continue;const x=p[m],_=a[m];x!==_&&m!=="value"&&i(o,m,_,x,y,c.children,g,b,me)}"value"in p&&i(o,"value",a.value,p.value,y)}},ft=(o,c,a,p,g,b,y,m,x)=>{const _=c.el=o?o.el:f(""),E=c.anchor=o?o.anchor:f("");let{patchFlag:O,dynamicChildren:C,slotScopeIds:T}=c;T&&(m=m?m.concat(T):T),o==null?(n(_,a,p),n(E,a,p),fe(c.children||[],a,E,g,b,y,m,x)):O>0&&O&64&&C&&o.dynamicChildren?(Pe(o.dynamicChildren,C,a,g,b,y,m),(c.key!=null||g&&c===g.subTree)&&nr(o,c,!0)):$(o,c,a,E,g,b,y,m,x)},ut=(o,c,a,p,g,b,y,m,x)=>{c.slotScopeIds=m,o==null?c.shapeFlag&512?g.ctx.activate(c,a,p,y,x):Kt(c,a,p,g,b,y,x):Fs(o,c,x)},Kt=(o,c,a,p,g,b,y)=>{const m=o.component=ro(o,p,g);if(Gn(o)&&(m.ctx.renderer=Ue),io(m),m.asyncDep){if(g&&g.registerDep(m,X),!o.el){const x=m.subTree=je(lt);D(null,x,c,a)}}else X(m,o,c,a,g,b,y)},Fs=(o,c,a)=>{const p=c.component=o.component;if(ai(o,c,a))if(p.asyncDep&&!p.asyncResolved){K(p,c,a);return}else p.next=c,ri(p.update),p.effect.dirty=!0,p.update();else c.el=o.el,p.vnode=c},X=(o,c,a,p,g,b,y)=>{const m=()=>{if(o.isMounted){let{next:E,bu:O,u:C,parent:T,vnode:S}=o;{const Ke=rr(o);if(Ke){E&&(E.el=S.el,K(o,E,y)),Ke.asyncDep.then(()=>{o.isUnmounted||m()});return}}let N=E,H;Me(o,!1),E?(E.el=S.el,K(o,E,y)):E=S,O&&qt(O),(H=E.props&&E.props.onVnodeBeforeUpdate)&&de(H,T,E,S),Me(o,!0);const z=zt(o),ie=o.subTree;o.subTree=z,L(ie,z,v(ie.el),dt(ie),o,g,b),E.el=z.el,N===null&&di(o,z.el),C&&k(C,g),(H=E.props&&E.props.onVnodeUpdated)&&k(()=>de(H,T,E,S),g)}else{let E;const{el:O,props:C}=c,{bm:T,m:S,parent:N}=o,H=yt(c);if(Me(o,!1),T&&qt(T),!H&&(E=C&&C.onVnodeBeforeMount)&&de(E,N,c),Me(o,!0),O&&Dt){const z=()=>{o.subTree=zt(o),Dt(O,o.subTree,o,g,null)};H?c.type.__asyncLoader().then(()=>!o.isUnmounted&&z()):z()}else{const z=o.subTree=zt(o);L(null,z,a,p,o,g,b),c.el=z.el}if(S&&k(S,g),!H&&(E=C&&C.onVnodeMounted)){const z=c;k(()=>de(E,N,z),g)}(c.shapeFlag&256||N&&yt(N.vnode)&&N.vnode.shapeFlag&256)&&o.a&&k(o.a,g),o.isMounted=!0,c=a=p=null}},x=o.effect=new ms(m,re,()=>Is(_),o.scope),_=o.update=()=>{x.dirty&&x.run()};_.id=o.uid,Me(o,!0),_()},K=(o,c,a)=>{c.component=o;const p=o.vnode.props;o.vnode=c,o.next=null,Vi(o,c.props,p,a),Wi(o,c.children,a),$e(),Gs(o),He()},$=(o,c,a,p,g,b,y,m,x=!1)=>{const _=o&&o.children,E=o?o.shapeFlag:0,O=c.children,{patchFlag:C,shapeFlag:T}=c;if(C>0){if(C&128){at(_,O,a,p,g,b,y,m,x);return}else if(C&256){Ae(_,O,a,p,g,b,y,m,x);return}}T&8?(E&16&&me(_,g,b),O!==_&&h(a,O)):E&16?T&16?at(_,O,a,p,g,b,y,m,x):me(_,g,b,!0):(E&8&&h(a,""),T&16&&fe(O,a,p,g,b,y,m,x))},Ae=(o,c,a,p,g,b,y,m,x)=>{o=o||ke,c=c||ke;const _=o.length,E=c.length,O=Math.min(_,E);let C;for(C=0;CE?me(o,g,b,!0,!1,O):fe(c,a,p,g,b,y,m,x,O)},at=(o,c,a,p,g,b,y,m,x)=>{let _=0;const E=c.length;let O=o.length-1,C=E-1;for(;_<=O&&_<=C;){const T=o[_],S=c[_]=x?we(c[_]):he(c[_]);if(Ze(T,S))L(T,S,a,null,g,b,y,m,x);else break;_++}for(;_<=O&&_<=C;){const T=o[O],S=c[C]=x?we(c[C]):he(c[C]);if(Ze(T,S))L(T,S,a,null,g,b,y,m,x);else break;O--,C--}if(_>O){if(_<=C){const T=C+1,S=TC)for(;_<=O;)ue(o[_],g,b,!0),_++;else{const T=_,S=_,N=new Map;for(_=S;_<=C;_++){const se=c[_]=x?we(c[_]):he(c[_]);se.key!=null&&N.set(se.key,_)}let H,z=0;const ie=C-S+1;let Ke=!1,js=0;const Xe=new Array(ie);for(_=0;_=ie){ue(se,g,b,!0);continue}let ae;if(se.key!=null)ae=N.get(se.key);else for(H=S;H<=C;H++)if(Xe[H-S]===0&&Ze(se,c[H])){ae=H;break}ae===void 0?ue(se,g,b,!0):(Xe[ae-S]=_+1,ae>=js?js=ae:Ke=!0,L(se,c[ae],a,null,g,b,y,m,x),z++)}const $s=Ke?Ji(Xe):ke;for(H=$s.length-1,_=ie-1;_>=0;_--){const se=S+_,ae=c[se],Hs=se+1{const{el:b,type:y,transition:m,children:x,shapeFlag:_}=o;if(_&6){Se(o.component.subTree,c,a,p);return}if(_&128){o.suspense.move(c,a,p);return}if(_&64){y.move(o,c,a,Ue);return}if(y===be){n(b,c,a);for(let O=0;Om.enter(b),g);else{const{leave:O,delayLeave:C,afterLeave:T}=m,S=()=>n(b,c,a),N=()=>{O(b,()=>{S(),T&&T()})};C?C(b,S,N):N()}else n(b,c,a)},ue=(o,c,a,p=!1,g=!1)=>{const{type:b,props:y,ref:m,children:x,dynamicChildren:_,shapeFlag:E,patchFlag:O,dirs:C}=o;if(m!=null&&cs(m,null,a,o,!0),E&256){c.ctx.deactivate(o);return}const T=E&1&&C,S=!yt(o);let N;if(S&&(N=y&&y.onVnodeBeforeUnmount)&&de(N,c,o),E&6)ur(o.component,a,p);else{if(E&128){o.suspense.unmount(a,p);return}T&&Re(o,null,c,"beforeUnmount"),E&64?o.type.remove(o,c,a,g,Ue,p):_&&(b!==be||O>0&&O&64)?me(_,c,a,!1,!0):(b===be&&O&384||!g&&E&16)&&me(x,c,a),p&&Ls(o)}(S&&(N=y&&y.onVnodeUnmounted)||T)&&k(()=>{N&&de(N,c,o),T&&Re(o,null,c,"unmounted")},a)},Ls=o=>{const{type:c,el:a,anchor:p,transition:g}=o;if(c===be){fr(a,p);return}if(c===Xt){q(o);return}const b=()=>{r(a),g&&!g.persisted&&g.afterLeave&&g.afterLeave()};if(o.shapeFlag&1&&g&&!g.persisted){const{leave:y,delayLeave:m}=g,x=()=>y(a,b);m?m(o.el,b,x):x()}else b()},fr=(o,c)=>{let a;for(;o!==c;)a=w(o),r(o),o=a;r(c)},ur=(o,c,a)=>{const{bum:p,scope:g,update:b,subTree:y,um:m}=o;p&&qt(p),g.stop(),b&&(b.active=!1,ue(y,o,c,a)),m&&k(m,c),k(()=>{o.isUnmounted=!0},c),c&&c.pendingBranch&&!c.isUnmounted&&o.asyncDep&&!o.asyncResolved&&o.suspenseId===c.pendingId&&(c.deps--,c.deps===0&&c.resolve())},me=(o,c,a,p=!1,g=!1,b=0)=>{for(let y=b;yo.shapeFlag&6?dt(o.component.subTree):o.shapeFlag&128?o.suspense.next():w(o.anchor||o.el);let Vt=!1;const Ns=(o,c,a)=>{o==null?c._vnode&&ue(c._vnode,null,null,!0):L(c._vnode||null,o,c,null,null,null,a),Vt||(Vt=!0,Gs(),Vn(),Vt=!1),c._vnode=o},Ue={p:L,um:ue,m:Se,r:Ls,mt:Kt,mc:fe,pc:$,pbc:Pe,n:dt,o:e};let Bt,Dt;return t&&([Bt,Dt]=t(Ue)),{render:Ns,hydrate:Bt,createApp:Hi(Ns,Bt)}}function Yt({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function Me({effect:e,update:t},s){e.allowRecurse=t.allowRecurse=s}function Gi(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function nr(e,t,s=!1){const n=e.children,r=t.children;if(P(n)&&P(r))for(let i=0;i>1,e[s[f]]0&&(t[n]=s[i-1]),s[i]=n)}}for(i=s.length,l=s[i-1];i-- >0;)s[i]=l,l=t[l];return s}function rr(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:rr(t)}const Yi=e=>e.__isTeleport,be=Symbol.for("v-fgt"),jt=Symbol.for("v-txt"),lt=Symbol.for("v-cmt"),Xt=Symbol.for("v-stc");let Be=null,Ss=1;function nn(e){Ss+=e}function Xi(e){return e?e.__v_isVNode===!0:!1}function Ze(e,t){return e.type===t.type&&e.key===t.key}const $t="__vInternal",ir=({key:e})=>e??null,Et=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?G(e)||te(e)||A(e)?{i:ge,r:e,k:t,f:!!s}:e:null);function Zi(e,t=null,s=null,n=0,r=null,i=e===be?0:1,l=!1,f=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ir(t),ref:t&&Et(t),scopeId:Wn,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:n,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:ge};return f?(Rs(u,s),i&128&&e.normalize(u)):s&&(u.shapeFlag|=G(s)?8:16),Ss>0&&!l&&Be&&(u.patchFlag>0||i&6)&&u.patchFlag!==32&&Be.push(u),u}const je=Qi;function Qi(e,t=null,s=null,n=0,r=null,i=!1){if((!e||e===hi)&&(e=lt),Xi(e)){const f=Ge(e,t,!0);return s&&Rs(f,s),Ss>0&&!i&&Be&&(f.shapeFlag&6?Be[Be.indexOf(e)]=f:Be.push(f)),f.patchFlag|=-2,f}if(fo(e)&&(e=e.__vccOpts),t){t=ki(t);let{class:f,style:u}=t;f&&!G(f)&&(t.class=_s(f)),B(u)&&(Nn(u)&&!P(u)&&(u=Y({},u)),t.style=gs(u))}const l=G(e)?1:pi(e)?128:Yi(e)?64:B(e)?4:A(e)?2:0;return Zi(e,t,s,n,r,l,i,!0)}function ki(e){return e?Nn(e)||$t in e?Y({},e):e:null}function Ge(e,t,s=!1){const{props:n,ref:r,patchFlag:i,children:l}=e,f=t?to(n||{},t):n;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&ir(f),ref:t&&t.ref?s&&r?P(r)?r.concat(Et(t)):[r,Et(t)]:Et(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==be?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ge(e.ssContent),ssFallback:e.ssFallback&&Ge(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function eo(e=" ",t=0){return je(jt,null,e,t)}function he(e){return e==null||typeof e=="boolean"?je(lt):P(e)?je(be,null,e.slice()):typeof e=="object"?we(e):je(jt,null,String(e))}function we(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ge(e)}function Rs(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(P(t))s=16;else if(typeof t=="object")if(n&65){const r=t.default;r&&(r._c&&(r._d=!1),Rs(e,r()),r._c&&(r._d=!0));return}else{s=32;const r=t._;!r&&!($t in t)?t._ctx=ge:r===3&&ge&&(ge.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else A(t)?(t={default:t,_ctx:ge},s=32):(t=String(t),n&64?(s=16,t=[eo(t)]):s=8);e.children=t,e.shapeFlag|=s}function to(...e){const t={};for(let s=0;s{let r;return(r=e[s])||(r=e[s]=[]),r.push(n),i=>{r.length>1?r.forEach(l=>l(i)):r[0](i)}};It=t("__VUE_INSTANCE_SETTERS__",s=>Q=s),fs=t("__VUE_SSR_SETTERS__",s=>Ht=s)}const ct=e=>{const t=Q;return It(e),e.scope.on(),()=>{e.scope.off(),It(t)}},rn=()=>{Q&&Q.scope.off(),It(null)};function or(e){return e.vnode.shapeFlag&4}let Ht=!1;function io(e,t=!1){t&&fs(t);const{props:s,children:n}=e.vnode,r=or(e);Ki(e,s,r,t),Di(e,n);const i=r?oo(e,t):void 0;return t&&fs(!1),i}function oo(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=Cs(new Proxy(e.ctx,Ri));const{setup:n}=s;if(n){const r=e.setupContext=n.length>1?co(e):null,i=ct(e);$e();const l=Te(n,e,0,[e.props,r]);if(He(),i(),bn(l)){if(l.then(rn,rn),t)return l.then(f=>{on(e,f,t)}).catch(f=>{Ft(f,e,0)});e.asyncDep=l}else on(e,l,t)}else lr(e,t)}function on(e,t,s){A(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:B(t)&&(e.setupState=Hn(t)),lr(e,s)}let ln;function lr(e,t,s){const n=e.type;if(!e.render){if(!t&&ln&&!n.render){const r=n.template||Ps(e).template;if(r){const{isCustomElement:i,compilerOptions:l}=e.appContext.config,{delimiters:f,compilerOptions:u}=n,d=Y(Y({isCustomElement:i,delimiters:f},l),u);n.render=ln(r,d)}}e.render=n.render||re}{const r=ct(e);$e();try{Mi(e)}finally{He(),r()}}}function lo(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,s){return ee(e,"get","$attrs"),t[s]}}))}function co(e){const t=s=>{e.exposed=s||{}};return{get attrs(){return lo(e)},slots:e.slots,emit:e.emit,expose:t}}function Ms(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Hn(Cs(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in st)return st[s](e)},has(t,s){return s in t||s in st}}))}function fo(e){return A(e)&&"__vccOpts"in e}const uo=(e,t)=>Yr(e,t,Ht),ao="3.4.19";/** +* @vue/runtime-dom v3.4.19 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const ho="http://www.w3.org/2000/svg",po="http://www.w3.org/1998/Math/MathML",Ce=typeof document<"u"?document:null,cn=Ce&&Ce.createElement("template"),go={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const r=t==="svg"?Ce.createElementNS(ho,e):t==="mathml"?Ce.createElementNS(po,e):Ce.createElement(e,s?{is:s}:void 0);return e==="select"&&n&&n.multiple!=null&&r.setAttribute("multiple",n.multiple),r},createText:e=>Ce.createTextNode(e),createComment:e=>Ce.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ce.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,r,i){const l=s?s.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),s),!(r===i||!(r=r.nextSibling)););else{cn.innerHTML=n==="svg"?`${e}`:n==="mathml"?`${e}`:e;const f=cn.content;if(n==="svg"||n==="mathml"){const u=f.firstChild;for(;u.firstChild;)f.appendChild(u.firstChild);f.removeChild(u)}t.insertBefore(f,s)}return[l?l.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},_o=Symbol("_vtc");function mo(e,t,s){const n=e[_o];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const fn=Symbol("_vod"),bo=Symbol(""),xo=/(^|;)\s*display\s*:/;function yo(e,t,s){const n=e.style,r=G(s),i=n.display;let l=!1;if(s&&!r){if(t&&!G(t))for(const f in t)s[f]==null&&us(n,f,"");for(const f in s)f==="display"&&(l=!0),us(n,f,s[f])}else if(r){if(t!==s){const f=n[bo];f&&(s+=";"+f),n.cssText=s,l=xo.test(s)}}else t&&e.removeAttribute("style");fn in e&&(e[fn]=l?n.display:"",n.display=i)}const un=/\s*!important$/;function us(e,t,s){if(P(s))s.forEach(n=>us(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=vo(e,t);un.test(s)?e.setProperty(Je(n),s.replace(un,""),"important"):e[n]=s}}const an=["Webkit","Moz","ms"],Zt={};function vo(e,t){const s=Zt[t];if(s)return s;let n=qe(t);if(n!=="filter"&&n in e)return Zt[t]=n;n=xn(n);for(let r=0;rQt||(Po.then(()=>Qt=0),Qt=Date.now());function So(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;le(Ro(n,s.value),t,5,[n])};return s.value=e,s.attached=Ao(),s}function Ro(e,t){if(P(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(n=>r=>!r._stopped&&n&&n(r))}else return t}const gn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Mo=(e,t,s,n,r,i,l,f,u)=>{const d=r==="svg";t==="class"?mo(e,n,d):t==="style"?yo(e,s,n):Pt(t)?ds(t)||To(e,t,s,n,l):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Fo(e,t,n,d))?wo(e,t,n,i,l,f,u):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),Eo(e,t,n,d))};function Fo(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&gn(t)&&A(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return gn(t)&&G(s)?!1:t in e}const Lo=Y({patchProp:Mo},go);let _n;function No(){return _n||(_n=qi(Lo))}const jo=(...e)=>{const t=No().createApp(...e),{mount:s}=t;return t.mount=n=>{const r=Ho(n);if(!r)return;const i=t._component;!A(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.innerHTML="";const l=s(r,!1,$o(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),l},t};function $o(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Ho(e){return G(e)?document.querySelector(e):e}var Uo=!1;/*! + * pinia v2.1.7 + * (c) 2023 Eduardo San Martin Morote + * @license MIT + */const Ko=Symbol();var mn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(mn||(mn={}));function Vo(){const e=Tr(!0),t=e.run(()=>Xr({}));let s=[],n=[];const r=Cs({install(i){r._a=i,i.provide(Ko,r),i.config.globalProperties.$pinia=r,n.forEach(l=>s.push(l)),n=[]},use(i){return!this._a&&!Uo?n.push(i):s.push(i),this},_p:s,_a:null,_e:e,_s:new Map,state:t});return r}const Bo=(e,t)=>{const s=e.__vccOpts||e;for(const[n,r]of t)s[n]=r;return s},Do={};function Wo(e,t){return" Test Template content "}const qo=Bo(Do,[["render",Wo]]),cr=jo(qo);cr.use(Vo());cr.mount("#app"); diff --git a/cookbook/static/vue3/assets/main-DFkSTGyd.css b/cookbook/static/vue3/assets/main-DFkSTGyd.css new file mode 100644 index 000000000..8d5ff16ce --- /dev/null +++ b/cookbook/static/vue3/assets/main-DFkSTGyd.css @@ -0,0 +1,9 @@ +.v-avatar{flex:none;align-items:center;display:inline-flex;justify-content:center;line-height:normal;overflow:hidden;position:relative;text-align:center;transition:.2s cubic-bezier(.4,0,.2,1);transition-property:width,height;vertical-align:middle;border-radius:50%}.v-avatar.v-avatar--size-x-small{--v-avatar-height: 24px}.v-avatar.v-avatar--size-small{--v-avatar-height: 32px}.v-avatar.v-avatar--size-default{--v-avatar-height: 40px}.v-avatar.v-avatar--size-large{--v-avatar-height: 48px}.v-avatar.v-avatar--size-x-large{--v-avatar-height: 56px}.v-avatar.v-avatar--density-default{height:calc(var(--v-avatar-height) + 0px);width:calc(var(--v-avatar-height) + 0px)}.v-avatar.v-avatar--density-comfortable{height:calc(var(--v-avatar-height) + -4px);width:calc(var(--v-avatar-height) + -4px)}.v-avatar.v-avatar--density-compact{height:calc(var(--v-avatar-height) + -8px);width:calc(var(--v-avatar-height) + -8px)}.v-avatar--variant-plain,.v-avatar--variant-outlined,.v-avatar--variant-text,.v-avatar--variant-tonal{background:transparent;color:inherit}.v-avatar--variant-plain{opacity:.62}.v-avatar--variant-plain:focus,.v-avatar--variant-plain:hover{opacity:1}.v-avatar--variant-plain .v-avatar__overlay{display:none}.v-avatar--variant-elevated,.v-avatar--variant-flat{background:var(--v-theme-surface);color:rgba(var(--v-theme-on-surface),var(--v-medium-emphasis-opacity))}.v-avatar--variant-elevated{box-shadow:0 2px 1px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 1px 1px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 3px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-avatar--variant-flat{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-avatar--variant-outlined{border:thin solid currentColor}.v-avatar--variant-text .v-avatar__overlay{background:currentColor}.v-avatar--variant-tonal .v-avatar__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.v-avatar--rounded{border-radius:4px}.v-avatar .v-img{height:100%;width:100%}.v-icon{--v-icon-size-multiplier: 1;align-items:center;display:inline-flex;font-feature-settings:"liga";height:1em;justify-content:center;letter-spacing:normal;line-height:1;position:relative;text-indent:0;text-align:center;-webkit-user-select:none;user-select:none;vertical-align:middle;width:1em;min-width:1em}.v-icon--clickable{cursor:pointer}.v-icon--size-x-small{font-size:calc(var(--v-icon-size-multiplier) * 1em)}.v-icon--size-small{font-size:calc(var(--v-icon-size-multiplier) * 1.25em)}.v-icon--size-default{font-size:calc(var(--v-icon-size-multiplier) * 1.5em)}.v-icon--size-large{font-size:calc(var(--v-icon-size-multiplier) * 1.75em)}.v-icon--size-x-large{font-size:calc(var(--v-icon-size-multiplier) * 2em)}.v-icon__svg{fill:currentColor;width:100%;height:100%}.v-icon--start{margin-inline-end:8px}.v-icon--end{margin-inline-start:8px}.v-img{--v-theme-overlay-multiplier: 3;z-index:0}.v-img--booting .v-responsive__sizer{transition:none}.v-img--rounded{border-radius:4px}.v-img__img,.v-img__picture,.v-img__gradient,.v-img__placeholder,.v-img__error{z-index:-1;position:absolute;top:0;left:0;width:100%;height:100%}.v-img__img--preload{filter:blur(4px)}.v-img__img--contain{object-fit:contain}.v-img__img--cover{object-fit:cover}.v-img__gradient{background-repeat:no-repeat}.v-responsive{display:flex;flex:1 0 auto;max-height:100%;max-width:100%;overflow:hidden;position:relative}.v-responsive--inline{display:inline-flex;flex:0 0 auto}.v-responsive__content{flex:1 0 0px;max-width:100%}.v-responsive__sizer~.v-responsive__content{margin-inline-start:-100%}.v-responsive__sizer{flex:1 0 0px;transition:padding-bottom .2s cubic-bezier(.4,0,.2,1);pointer-events:none}.v-btn{align-items:center;border-radius:4px;display:inline-grid;grid-template-areas:"prepend content append";grid-template-columns:max-content auto max-content;font-weight:500;justify-content:center;letter-spacing:.0892857143em;line-height:normal;max-width:100%;outline:none;position:relative;text-decoration:none;text-indent:.0892857143em;text-transform:uppercase;transition-property:box-shadow,transform,opacity,background;transition-duration:.28s;transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-user-select:none;user-select:none;vertical-align:middle;flex-shrink:0;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0}.v-btn--size-x-small{--v-btn-size: .625rem;--v-btn-height: 20px;font-size:var(--v-btn-size);min-width:36px;padding:0 8px}.v-btn--size-small{--v-btn-size: .75rem;--v-btn-height: 28px;font-size:var(--v-btn-size);min-width:50px;padding:0 12px}.v-btn--size-default{--v-btn-size: .875rem;--v-btn-height: 36px;font-size:var(--v-btn-size);min-width:64px;padding:0 16px}.v-btn--size-large{--v-btn-size: 1rem;--v-btn-height: 44px;font-size:var(--v-btn-size);min-width:78px;padding:0 20px}.v-btn--size-x-large{--v-btn-size: 1.125rem;--v-btn-height: 52px;font-size:var(--v-btn-size);min-width:92px;padding:0 24px}.v-btn.v-btn--density-default{height:calc(var(--v-btn-height) + 0px)}.v-btn.v-btn--density-comfortable{height:calc(var(--v-btn-height) + -8px)}.v-btn.v-btn--density-compact{height:calc(var(--v-btn-height) + -12px)}.v-btn--border{border-width:thin;box-shadow:none}.v-btn--absolute{position:absolute}.v-btn--fixed{position:fixed}.v-btn:hover>.v-btn__overlay{opacity:calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier))}.v-btn:focus-visible>.v-btn__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-btn:focus>.v-btn__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}}.v-btn--active>.v-btn__overlay,.v-btn[aria-haspopup=menu][aria-expanded=true]>.v-btn__overlay{opacity:calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier))}.v-btn--active:hover>.v-btn__overlay,.v-btn[aria-haspopup=menu][aria-expanded=true]:hover>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}.v-btn--active:focus-visible>.v-btn__overlay,.v-btn[aria-haspopup=menu][aria-expanded=true]:focus-visible>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-btn--active:focus>.v-btn__overlay,.v-btn[aria-haspopup=menu][aria-expanded=true]:focus>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}}.v-btn--variant-plain,.v-btn--variant-outlined,.v-btn--variant-text,.v-btn--variant-tonal{background:transparent;color:inherit}.v-btn--variant-plain{opacity:.62}.v-btn--variant-plain:focus,.v-btn--variant-plain:hover{opacity:1}.v-btn--variant-plain .v-btn__overlay{display:none}.v-btn--variant-elevated,.v-btn--variant-flat{background:rgb(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-btn--variant-elevated{box-shadow:0 3px 1px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 2px 2px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 5px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-btn--variant-flat{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-btn--variant-outlined{border:thin solid currentColor}.v-btn--variant-text .v-btn__overlay{background:currentColor}.v-btn--variant-tonal .v-btn__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}@supports selector(:focus-visible){.v-btn:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;border:2px solid currentColor;border-radius:inherit;opacity:0;transition:opacity .2s ease-in-out}.v-btn:focus-visible:after{opacity:calc(.25 * var(--v-theme-overlay-multiplier))}}.v-btn--icon{border-radius:50%;min-width:0;padding:0}.v-btn--icon.v-btn--size-default{--v-btn-size: 1rem}.v-btn--icon.v-btn--density-default{width:calc(var(--v-btn-height) + 12px);height:calc(var(--v-btn-height) + 12px)}.v-btn--icon.v-btn--density-comfortable{width:calc(var(--v-btn-height) + 0px);height:calc(var(--v-btn-height) + 0px)}.v-btn--icon.v-btn--density-compact{width:calc(var(--v-btn-height) + -8px);height:calc(var(--v-btn-height) + -8px)}.v-btn--elevated:hover,.v-btn--elevated:focus{box-shadow:0 2px 4px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 4px 5px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 10px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-btn--elevated:active{box-shadow:0 5px 5px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 8px 10px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 3px 14px 2px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-btn--flat{box-shadow:none}.v-btn--block{display:flex;flex:1 0 auto;min-width:100%}.v-btn--disabled{pointer-events:none;opacity:.26}.v-btn--disabled:hover{opacity:.26}.v-btn--disabled.v-btn--variant-elevated,.v-btn--disabled.v-btn--variant-flat{box-shadow:none;opacity:1;color:rgba(var(--v-theme-on-surface),.26);background:rgb(var(--v-theme-surface))}.v-btn--disabled.v-btn--variant-elevated .v-btn__overlay,.v-btn--disabled.v-btn--variant-flat .v-btn__overlay{opacity:.4615384615}.v-btn--loading{pointer-events:none}.v-btn--loading .v-btn__content,.v-btn--loading .v-btn__prepend,.v-btn--loading .v-btn__append{opacity:0}.v-btn--stacked{grid-template-areas:"prepend" "content" "append";grid-template-columns:auto;grid-template-rows:max-content max-content max-content;justify-items:center;align-content:center}.v-btn--stacked .v-btn__content{flex-direction:column;line-height:1.25}.v-btn--stacked .v-btn__prepend,.v-btn--stacked .v-btn__append,.v-btn--stacked .v-btn__content>.v-icon--start,.v-btn--stacked .v-btn__content>.v-icon--end{margin-inline:0}.v-btn--stacked .v-btn__prepend,.v-btn--stacked .v-btn__content>.v-icon--start{margin-bottom:4px}.v-btn--stacked .v-btn__append,.v-btn--stacked .v-btn__content>.v-icon--end{margin-top:4px}.v-btn--stacked.v-btn--size-x-small{--v-btn-size: .625rem;--v-btn-height: 56px;font-size:var(--v-btn-size);min-width:56px;padding:0 12px}.v-btn--stacked.v-btn--size-small{--v-btn-size: .75rem;--v-btn-height: 64px;font-size:var(--v-btn-size);min-width:64px;padding:0 14px}.v-btn--stacked.v-btn--size-default{--v-btn-size: .875rem;--v-btn-height: 72px;font-size:var(--v-btn-size);min-width:72px;padding:0 16px}.v-btn--stacked.v-btn--size-large{--v-btn-size: 1rem;--v-btn-height: 80px;font-size:var(--v-btn-size);min-width:80px;padding:0 18px}.v-btn--stacked.v-btn--size-x-large{--v-btn-size: 1.125rem;--v-btn-height: 88px;font-size:var(--v-btn-size);min-width:88px;padding:0 20px}.v-btn--stacked.v-btn--density-default{height:calc(var(--v-btn-height) + 0px)}.v-btn--stacked.v-btn--density-comfortable{height:calc(var(--v-btn-height) + -16px)}.v-btn--stacked.v-btn--density-compact{height:calc(var(--v-btn-height) + -24px)}.v-btn--slim{padding:0 8px}.v-btn--rounded{border-radius:24px}.v-btn--rounded.v-btn--icon{border-radius:4px}.v-btn .v-icon{--v-icon-size-multiplier: .8571428571}.v-btn--icon .v-icon{--v-icon-size-multiplier: 1}.v-btn--stacked .v-icon{--v-icon-size-multiplier: 1.1428571429}.v-btn__loader{align-items:center;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.v-btn__content,.v-btn__prepend,.v-btn__append{align-items:center;display:flex;transition:transform,opacity .2s cubic-bezier(.4,0,.2,1)}.v-btn__prepend{grid-area:prepend;margin-inline:calc(var(--v-btn-height) / -9) calc(var(--v-btn-height) / 4.5)}.v-btn__append{grid-area:append;margin-inline:calc(var(--v-btn-height) / 4.5) calc(var(--v-btn-height) / -9)}.v-btn__content{grid-area:content;justify-content:center;white-space:nowrap}.v-btn__content>.v-icon--start{margin-inline:calc(var(--v-btn-height) / -9) calc(var(--v-btn-height) / 4.5)}.v-btn__content>.v-icon--end{margin-inline:calc(var(--v-btn-height) / 4.5) calc(var(--v-btn-height) / -9)}.v-btn--stacked .v-btn__content{white-space:normal}.v-btn__overlay{background-color:currentColor;border-radius:inherit;opacity:0;transition:opacity .2s ease-in-out}.v-btn__overlay,.v-btn__underlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.v-card-actions .v-btn~.v-btn:not(.v-btn-toggle .v-btn){margin-inline-start:.5rem}.v-pagination .v-btn{border-radius:4px}.v-pagination .v-btn--rounded{border-radius:50%}.v-btn__overlay{transition:none}.v-pagination__item--is-active .v-btn__overlay{opacity:var(--v-border-opacity)}.v-btn-toggle>.v-btn.v-btn--active:not(.v-btn--disabled)>.v-btn__overlay{opacity:calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier))}.v-btn-toggle>.v-btn.v-btn--active:not(.v-btn--disabled):hover>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}.v-btn-toggle>.v-btn.v-btn--active:not(.v-btn--disabled):focus-visible>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-btn-toggle>.v-btn.v-btn--active:not(.v-btn--disabled):focus>.v-btn__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}}.v-btn-group{display:inline-flex;flex-wrap:nowrap;max-width:100%;min-width:0;overflow:hidden;vertical-align:middle;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12));border-radius:4px;background:transparent;color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-btn-group--border{border-width:thin;box-shadow:none}.v-btn-group--density-default.v-btn-group{height:48px}.v-btn-group--density-comfortable.v-btn-group{height:40px}.v-btn-group--density-compact.v-btn-group{height:36px}.v-btn-group .v-btn{border-radius:0;border-color:inherit}.v-btn-group .v-btn:not(:last-child){border-inline-end:none}.v-btn-group .v-btn:not(:first-child){border-inline-start:none}.v-btn-group .v-btn:first-child{border-start-start-radius:inherit;border-end-start-radius:inherit}.v-btn-group .v-btn:last-child{border-start-end-radius:inherit;border-end-end-radius:inherit}.v-btn-group--divided .v-btn:not(:last-child){border-inline-end-width:thin;border-inline-end-style:solid;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))}.v-btn-group--tile{border-radius:0}.v-progress-circular{align-items:center;display:inline-flex;justify-content:center;position:relative;vertical-align:middle}.v-progress-circular>svg{width:100%;height:100%;margin:auto;position:absolute;top:0;bottom:0;left:0;right:0;z-index:0}.v-progress-circular__content{align-items:center;display:flex;justify-content:center}.v-progress-circular__underlay{color:rgba(var(--v-border-color),var(--v-border-opacity));stroke:currentColor;z-index:1}.v-progress-circular__overlay{stroke:currentColor;transition:all .2s ease-in-out,stroke-width 0s;z-index:2}.v-progress-circular--size-x-small{height:16px;width:16px}.v-progress-circular--size-small{height:24px;width:24px}.v-progress-circular--size-default{height:32px;width:32px}.v-progress-circular--size-large{height:48px;width:48px}.v-progress-circular--size-x-large{height:64px;width:64px}.v-progress-circular--indeterminate>svg{animation:progress-circular-rotate 1.4s linear infinite;transform-origin:center center;transition:all .2s ease-in-out}.v-progress-circular--indeterminate .v-progress-circular__overlay{animation:progress-circular-dash 1.4s ease-in-out infinite,progress-circular-rotate 1.4s linear infinite;stroke-dasharray:25,200;stroke-dashoffset:0;stroke-linecap:round;transform-origin:center center;transform:rotate(-90deg)}.v-progress-circular--disable-shrink>svg{animation-duration:.7s}.v-progress-circular--disable-shrink .v-progress-circular__overlay{animation:none}.v-progress-circular--indeterminate:not(.v-progress-circular--visible)>svg,.v-progress-circular--indeterminate:not(.v-progress-circular--visible) .v-progress-circular__overlay{animation-play-state:paused!important}@keyframes progress-circular-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0px}50%{stroke-dasharray:100,200;stroke-dashoffset:-15px}to{stroke-dasharray:100,200;stroke-dashoffset:-124px}}@keyframes progress-circular-rotate{to{transform:rotate(270deg)}}.v-progress-linear{background:transparent;overflow:hidden;position:relative;transition:.2s cubic-bezier(.4,0,.2,1);width:100%}.v-progress-linear__background{background:currentColor;bottom:0;left:0;opacity:var(--v-border-opacity);position:absolute;top:0;transition-property:width,left,right;transition:inherit}.v-progress-linear__content{align-items:center;display:flex;height:100%;justify-content:center;left:0;pointer-events:none;position:absolute;top:0;width:100%}.v-progress-linear__determinate,.v-progress-linear__indeterminate{background:currentColor}.v-progress-linear__determinate{height:inherit;left:0;position:absolute;transition:inherit;transition-property:width,left,right}.v-progress-linear__indeterminate .long,.v-progress-linear__indeterminate .short{animation-play-state:paused;animation-duration:2.2s;animation-iteration-count:infinite;bottom:0;height:inherit;left:0;position:absolute;right:auto;top:0;width:auto;will-change:left,right}.v-progress-linear__indeterminate .long{animation-name:indeterminate-ltr}.v-progress-linear__indeterminate .short{animation-name:indeterminate-short-ltr}.v-progress-linear__stream{animation:stream .25s infinite linear;animation-play-state:paused;bottom:0;left:auto;opacity:.3;pointer-events:none;position:absolute;transition:inherit;transition-property:width,left,right}.v-progress-linear--reverse .v-progress-linear__background,.v-progress-linear--reverse .v-progress-linear__determinate,.v-progress-linear--reverse .v-progress-linear__content,.v-progress-linear--reverse .v-progress-linear__indeterminate .long,.v-progress-linear--reverse .v-progress-linear__indeterminate .short{left:auto;right:0}.v-progress-linear--reverse .v-progress-linear__indeterminate .long{animation-name:indeterminate-rtl}.v-progress-linear--reverse .v-progress-linear__indeterminate .short{animation-name:indeterminate-short-rtl}.v-progress-linear--reverse .v-progress-linear__stream{right:auto}.v-progress-linear--absolute,.v-progress-linear--fixed{left:0;z-index:1}.v-progress-linear--absolute{position:absolute}.v-progress-linear--fixed{position:fixed}.v-progress-linear--rounded{border-radius:9999px}.v-progress-linear--rounded.v-progress-linear--rounded-bar .v-progress-linear__determinate,.v-progress-linear--rounded.v-progress-linear--rounded-bar .v-progress-linear__indeterminate{border-radius:inherit}.v-progress-linear--striped .v-progress-linear__determinate{animation:progress-linear-stripes 1s infinite linear;background-image:linear-gradient(135deg,hsla(0,0%,100%,.25) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.25) 0,hsla(0,0%,100%,.25) 75%,transparent 0,transparent);background-repeat:repeat;background-size:var(--v-progress-linear-height)}.v-progress-linear--active .v-progress-linear__indeterminate .long,.v-progress-linear--active .v-progress-linear__indeterminate .short,.v-progress-linear--active .v-progress-linear__stream{animation-play-state:running}.v-progress-linear--rounded-bar .v-progress-linear__determinate,.v-progress-linear--rounded-bar .v-progress-linear__indeterminate,.v-progress-linear--rounded-bar .v-progress-linear__stream+.v-progress-linear__background{border-radius:9999px}.v-progress-linear--rounded-bar .v-progress-linear__determinate{border-start-start-radius:0;border-end-start-radius:0}@keyframes indeterminate-ltr{0%{left:-90%;right:100%}60%{left:-90%;right:100%}to{left:100%;right:-35%}}@keyframes indeterminate-rtl{0%{left:100%;right:-90%}60%{left:100%;right:-90%}to{left:-35%;right:100%}}@keyframes indeterminate-short-ltr{0%{left:-200%;right:100%}60%{left:107%;right:-8%}to{left:107%;right:-8%}}@keyframes indeterminate-short-rtl{0%{left:100%;right:-200%}60%{left:-8%;right:107%}to{left:-8%;right:107%}}@keyframes stream{to{transform:translate(var(--v-progress-linear-stream-to))}}@keyframes progress-linear-stripes{0%{background-position-x:var(--v-progress-linear-height)}}.v-ripple__container{color:inherit;border-radius:inherit;position:absolute;width:100%;height:100%;left:0;top:0;overflow:hidden;z-index:0;pointer-events:none;contain:strict}.v-ripple__animation{color:inherit;position:absolute;top:0;left:0;border-radius:50%;background:currentColor;opacity:0;pointer-events:none;overflow:hidden;will-change:transform,opacity}.v-ripple__animation--enter{transition:none;opacity:0}.v-ripple__animation--in{transition:transform .25s cubic-bezier(0,0,.2,1),opacity .1s cubic-bezier(0,0,.2,1);opacity:calc(.25 * var(--v-theme-overlay-multiplier))}.v-ripple__animation--out{transition:opacity .3s cubic-bezier(0,0,.2,1);opacity:0}.v-card{display:block;overflow:hidden;overflow-wrap:break-word;position:relative;padding:0;text-decoration:none;transition-duration:.28s;transition-property:box-shadow,opacity,background;transition-timing-function:cubic-bezier(.4,0,.2,1);z-index:0;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;border-radius:4px}.v-card--border{border-width:thin;box-shadow:none}.v-card--absolute{position:absolute}.v-card--fixed{position:fixed}.v-card:hover>.v-card__overlay{opacity:calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier))}.v-card:focus-visible>.v-card__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-card:focus>.v-card__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}}.v-card--active>.v-card__overlay,.v-card[aria-haspopup=menu][aria-expanded=true]>.v-card__overlay{opacity:calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier))}.v-card--active:hover>.v-card__overlay,.v-card[aria-haspopup=menu][aria-expanded=true]:hover>.v-card__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}.v-card--active:focus-visible>.v-card__overlay,.v-card[aria-haspopup=menu][aria-expanded=true]:focus-visible>.v-card__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-card--active:focus>.v-card__overlay,.v-card[aria-haspopup=menu][aria-expanded=true]:focus>.v-card__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}}.v-card--variant-plain,.v-card--variant-outlined,.v-card--variant-text,.v-card--variant-tonal{background:transparent;color:inherit}.v-card--variant-plain{opacity:.62}.v-card--variant-plain:focus,.v-card--variant-plain:hover{opacity:1}.v-card--variant-plain .v-card__overlay{display:none}.v-card--variant-elevated,.v-card--variant-flat{background:rgb(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-card--variant-elevated{box-shadow:0 2px 1px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 1px 1px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 3px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-card--variant-flat{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-card--variant-outlined{border:thin solid currentColor}.v-card--variant-text .v-card__overlay{background:currentColor}.v-card--variant-tonal .v-card__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.v-card--disabled{pointer-events:none;-webkit-user-select:none;user-select:none}.v-card--disabled>:not(.v-card__loader){opacity:.6}.v-card--flat{box-shadow:none}.v-card--hover{cursor:pointer}.v-card--hover:before,.v-card--hover:after{border-radius:inherit;bottom:0;content:"";display:block;left:0;pointer-events:none;position:absolute;right:0;top:0;transition:inherit}.v-card--hover:before{opacity:1;z-index:-1;box-shadow:0 2px 1px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 1px 1px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 3px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-card--hover:after{z-index:1;opacity:0;box-shadow:0 5px 5px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 8px 10px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 3px 14px 2px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-card--hover:hover:after{opacity:1}.v-card--hover:hover:before{opacity:0}.v-card--hover:hover{box-shadow:0 5px 5px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 8px 10px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 3px 14px 2px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-card--link{cursor:pointer}.v-card-actions{align-items:center;display:flex;flex:none;min-height:52px;padding:.5rem}.v-card-item{align-items:center;display:grid;flex:none;grid-template-areas:"prepend content append";grid-template-columns:max-content auto max-content;padding:.625rem 1rem}.v-card-item+.v-card-text{padding-top:0}.v-card-item__prepend,.v-card-item__append{align-items:center;display:flex}.v-card-item__prepend{grid-area:prepend;padding-inline-end:.5rem}.v-card-item__append{grid-area:append;padding-inline-start:.5rem}.v-card-item__content{align-self:center;grid-area:content;overflow:hidden}.v-card-title{display:block;flex:none;font-size:1.25rem;font-weight:500;-webkit-hyphens:auto;hyphens:auto;letter-spacing:.0125em;min-width:0;overflow-wrap:normal;overflow:hidden;padding:.5rem 1rem;text-overflow:ellipsis;text-transform:none;white-space:nowrap;word-break:normal;word-wrap:break-word}.v-card .v-card-title{line-height:2rem}.v-card--density-comfortable .v-card-title{line-height:1.75rem}.v-card--density-compact .v-card-title{line-height:1.55rem}.v-card-item .v-card-title{padding:0}.v-card-title+.v-card-text,.v-card-title+.v-card-actions{padding-top:0}.v-card-subtitle{display:block;flex:none;font-size:.875rem;font-weight:400;letter-spacing:.0178571429em;opacity:var(--v-medium-emphasis-opacity);overflow:hidden;padding:0 1rem;text-overflow:ellipsis;text-transform:none;white-space:nowrap}.v-card .v-card-subtitle{line-height:1.25rem}.v-card--density-comfortable .v-card-subtitle{line-height:1.125rem}.v-card--density-compact .v-card-subtitle{line-height:1rem}.v-card-item .v-card-subtitle{padding:0 0 .25rem}.v-card-text{flex:1 1 auto;font-size:.875rem;font-weight:400;letter-spacing:.0178571429em;padding:1rem;text-transform:none}.v-card .v-card-text{line-height:1.25rem}.v-card--density-comfortable .v-card-text{line-height:1.2rem}.v-card--density-compact .v-card-text{line-height:1.15rem}.v-card__image{display:flex;height:100%;flex:1 1 auto;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:-1}.v-card__content{border-radius:inherit;overflow:hidden;position:relative}.v-card__loader{bottom:auto;top:0;left:0;position:absolute;right:0;width:100%;z-index:1}.v-card__overlay{background-color:currentColor;border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.v-dialog{align-items:center;justify-content:center;margin:auto}.v-dialog>.v-overlay__content{max-height:calc(100% - 48px);width:calc(100% - 48px);max-width:calc(100% - 48px);margin:24px}.v-dialog>.v-overlay__content,.v-dialog>.v-overlay__content>form{display:flex;flex-direction:column;min-height:0}.v-dialog>.v-overlay__content>.v-card,.v-dialog>.v-overlay__content>.v-sheet,.v-dialog>.v-overlay__content>form>.v-card,.v-dialog>.v-overlay__content>form>.v-sheet{--v-scrollbar-offset: 0px;border-radius:4px;overflow-y:auto;box-shadow:0 11px 15px -7px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 24px 38px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 9px 46px 8px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-dialog>.v-overlay__content>.v-card,.v-dialog>.v-overlay__content>form>.v-card{display:flex;flex-direction:column}.v-dialog>.v-overlay__content>.v-card>.v-card-item,.v-dialog>.v-overlay__content>form>.v-card>.v-card-item{padding:14px 24px 0}.v-dialog>.v-overlay__content>.v-card>.v-card-item+.v-card-text,.v-dialog>.v-overlay__content>form>.v-card>.v-card-item+.v-card-text{padding-top:10px}.v-dialog>.v-overlay__content>.v-card>.v-card-text,.v-dialog>.v-overlay__content>form>.v-card>.v-card-text{font-size:inherit;letter-spacing:.03125em;line-height:inherit;padding:16px 24px 10px}.v-dialog--fullscreen{--v-scrollbar-offset: 0px}.v-dialog--fullscreen>.v-overlay__content{border-radius:0;margin:0;padding:0;width:100%;height:100%;max-width:100%;max-height:100%;overflow-y:auto;top:0;left:0}.v-dialog--fullscreen>.v-overlay__content>.v-card,.v-dialog--fullscreen>.v-overlay__content>.v-sheet,.v-dialog--fullscreen>.v-overlay__content>form>.v-card,.v-dialog--fullscreen>.v-overlay__content>form>.v-sheet{min-height:100%;min-width:100%;border-radius:0}.v-dialog--scrollable>.v-overlay__content,.v-dialog--scrollable>.v-overlay__content>form{display:flex}.v-dialog--scrollable>.v-overlay__content>.v-card,.v-dialog--scrollable>.v-overlay__content>form>.v-card{display:flex;flex:1 1 100%;flex-direction:column;max-height:100%;max-width:100%}.v-dialog--scrollable>.v-overlay__content>.v-card>.v-card-text,.v-dialog--scrollable>.v-overlay__content>form>.v-card>.v-card-text{backface-visibility:hidden;overflow-y:auto}.v-overlay-container{contain:layout;left:0;pointer-events:none;position:absolute;top:0;display:contents}.v-overlay-scroll-blocked{padding-inline-end:var(--v-scrollbar-offset)}.v-overlay-scroll-blocked:not(html){overflow-y:hidden!important}html.v-overlay-scroll-blocked{position:fixed;top:var(--v-body-scroll-y);left:var(--v-body-scroll-x);width:100%;height:100%}.v-overlay{border-radius:inherit;display:flex;left:0;pointer-events:none;position:fixed;top:0;bottom:0;right:0}.v-overlay__content{outline:none;position:absolute;pointer-events:auto;contain:layout}.v-overlay__scrim{pointer-events:auto;background:rgb(var(--v-theme-on-surface));border-radius:inherit;bottom:0;left:0;opacity:var(--v-overlay-opacity, .32);position:fixed;right:0;top:0}.v-overlay--absolute,.v-overlay--contained .v-overlay__scrim{position:absolute}.v-overlay--scroll-blocked{padding-inline-end:var(--v-scrollbar-offset)}.v-divider{display:block;flex:1 1 100%;height:0px;max-height:0px;opacity:var(--v-border-opacity);transition:inherit;border-style:solid;border-width:thin 0 0 0}.v-divider--vertical{align-self:stretch;border-width:0 thin 0 0;display:inline-flex;height:inherit;margin-left:-1px;max-height:100%;max-width:0px;vertical-align:text-bottom;width:0px}.v-divider--inset:not(.v-divider--vertical){max-width:calc(100% - 72px);margin-inline-start:72px}.v-divider--inset.v-divider--vertical{margin-bottom:8px;margin-top:8px;max-height:calc(100% - 16px)}.v-text-field input{color:inherit;opacity:0;flex:1;transition:.15s opacity cubic-bezier(.4,0,.2,1);min-width:0}.v-text-field input:focus,.v-text-field input:active{outline:none}.v-text-field input:invalid{box-shadow:none}.v-text-field .v-field{cursor:text}.v-text-field--prefixed.v-text-field .v-field__input{--v-field-padding-start: 6px}.v-text-field--suffixed.v-text-field .v-field__input{--v-field-padding-end: 0}.v-text-field .v-input__details{padding-inline:16px}.v-input--plain-underlined.v-text-field .v-input__details{padding-inline:0}.v-text-field .v-field--no-label input,.v-text-field .v-field--active input{opacity:1}.v-text-field .v-field--single-line input{transition:none}.v-text-field__prefix,.v-text-field__suffix{align-items:center;color:rgba(var(--v-theme-on-surface),var(--v-medium-emphasis-opacity));cursor:default;display:flex;opacity:0;transition:inherit;white-space:nowrap;min-height:max(var(--v-input-control-height, 56px),1.5rem + var(--v-field-input-padding-top) + var(--v-field-input-padding-bottom));padding-top:calc(var(--v-field-padding-top, 4px) + var(--v-input-padding-top, 0));padding-bottom:var(--v-field-padding-bottom, 6px)}.v-field--active .v-text-field__prefix,.v-field--active .v-text-field__suffix{opacity:1}.v-field--disabled .v-text-field__prefix,.v-field--disabled .v-text-field__suffix{color:rgba(var(--v-theme-on-surface),var(--v-disabled-opacity))}.v-text-field__prefix{padding-inline-start:var(--v-field-padding-start)}.v-text-field__suffix{padding-inline-end:var(--v-field-padding-end)}.v-counter{color:rgba(var(--v-theme-on-surface),var(--v-medium-emphasis-opacity));flex:0 1 auto;font-size:12px;transition-duration:.15s}.v-field{display:grid;grid-template-areas:"prepend-inner field clear append-inner";grid-template-columns:min-content minmax(0,1fr) min-content min-content;font-size:16px;letter-spacing:.009375em;max-width:100%;border-radius:4px;contain:layout;flex:1 0;grid-area:control;position:relative;--v-field-padding-start: 16px;--v-field-padding-end: 16px;--v-field-padding-top: 8px;--v-field-padding-bottom: 4px;--v-field-input-padding-top: calc(var(--v-field-padding-top, 8px) + var(--v-input-padding-top, 0));--v-field-input-padding-bottom: var(--v-field-padding-bottom, 4px)}.v-field--disabled{opacity:var(--v-disabled-opacity);pointer-events:none}.v-field .v-chip{--v-chip-height: 24px}.v-field--prepended{padding-inline-start:12px}.v-field--appended{padding-inline-end:12px}.v-field--variant-solo,.v-field--variant-solo-filled,.v-field--variant-solo-inverted{background:rgb(var(--v-theme-surface));border-color:transparent;color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity));box-shadow:0 3px 1px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 2px 2px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 5px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-field--variant-solo-inverted.v-field--focused{color:rgb(var(--v-theme-on-surface-variant))}.v-field--variant-filled{border-bottom-left-radius:0;border-bottom-right-radius:0}.v-input--density-default .v-field--variant-solo,.v-input--density-default .v-field--variant-solo-inverted,.v-input--density-default .v-field--variant-solo-filled,.v-input--density-default .v-field--variant-filled{--v-input-control-height: 56px;--v-field-padding-bottom: 4px}.v-input--density-comfortable .v-field--variant-solo,.v-input--density-comfortable .v-field--variant-solo-inverted,.v-input--density-comfortable .v-field--variant-solo-filled,.v-input--density-comfortable .v-field--variant-filled{--v-input-control-height: 48px;--v-field-padding-bottom: 0px}.v-input--density-compact .v-field--variant-solo,.v-input--density-compact .v-field--variant-solo-inverted,.v-input--density-compact .v-field--variant-solo-filled,.v-input--density-compact .v-field--variant-filled{--v-input-control-height: 40px;--v-field-padding-bottom: 0px}.v-field--variant-outlined,.v-field--single-line,.v-field--no-label{--v-field-padding-top: 0px}.v-input--density-default .v-field--variant-outlined,.v-input--density-default .v-field--single-line,.v-input--density-default .v-field--no-label{--v-field-padding-bottom: 16px}.v-input--density-comfortable .v-field--variant-outlined,.v-input--density-comfortable .v-field--single-line,.v-input--density-comfortable .v-field--no-label{--v-field-padding-bottom: 12px}.v-input--density-compact .v-field--variant-outlined,.v-input--density-compact .v-field--single-line,.v-input--density-compact .v-field--no-label{--v-field-padding-bottom: 8px}.v-field--variant-plain,.v-field--variant-underlined{border-radius:0;padding:0}.v-field--variant-plain.v-field,.v-field--variant-underlined.v-field{--v-field-padding-start: 0px;--v-field-padding-end: 0px}.v-input--density-default .v-field--variant-plain,.v-input--density-default .v-field--variant-underlined{--v-input-control-height: 48px;--v-field-padding-top: 4px;--v-field-padding-bottom: 4px}.v-input--density-comfortable .v-field--variant-plain,.v-input--density-comfortable .v-field--variant-underlined{--v-input-control-height: 40px;--v-field-padding-top: 2px;--v-field-padding-bottom: 0px}.v-input--density-compact .v-field--variant-plain,.v-input--density-compact .v-field--variant-underlined{--v-input-control-height: 32px;--v-field-padding-top: 0px;--v-field-padding-bottom: 0px}.v-field--flat{box-shadow:none}.v-field--rounded{border-radius:9999px}.v-field.v-field--prepended{--v-field-padding-start: 6px}.v-field.v-field--appended{--v-field-padding-end: 6px}.v-field__input{align-items:center;color:inherit;column-gap:2px;display:flex;flex-wrap:wrap;letter-spacing:.009375em;opacity:var(--v-high-emphasis-opacity);min-height:max(var(--v-input-control-height, 56px),1.5rem + var(--v-field-input-padding-top) + var(--v-field-input-padding-bottom));min-width:0;padding-inline:var(--v-field-padding-start) var(--v-field-padding-end);padding-top:var(--v-field-input-padding-top);padding-bottom:var(--v-field-input-padding-bottom);position:relative;width:100%}.v-input--density-default .v-field__input{row-gap:8px}.v-input--density-comfortable .v-field__input{row-gap:6px}.v-input--density-compact .v-field__input{row-gap:4px}.v-field__input input{letter-spacing:inherit}.v-field__input input::placeholder,input.v-field__input::placeholder,textarea.v-field__input::placeholder{color:currentColor;opacity:var(--v-disabled-opacity)}.v-field__input:focus,.v-field__input:active{outline:none}.v-field__input:invalid{box-shadow:none}.v-field__field{flex:1 0;grid-area:field;position:relative;align-items:flex-start;display:flex}.v-field__prepend-inner{grid-area:prepend-inner;padding-inline-end:var(--v-field-padding-after)}.v-field__clearable{grid-area:clear}.v-field__append-inner{grid-area:append-inner;padding-inline-start:var(--v-field-padding-after)}.v-field__append-inner,.v-field__clearable,.v-field__prepend-inner{display:flex;align-items:flex-start;padding-top:var(--v-input-padding-top, 8px)}.v-field--center-affix .v-field__append-inner,.v-field--center-affix .v-field__clearable,.v-field--center-affix .v-field__prepend-inner{align-items:center;padding-top:0}.v-field.v-field--variant-underlined .v-field__append-inner,.v-field.v-field--variant-underlined .v-field__clearable,.v-field.v-field--variant-underlined .v-field__prepend-inner,.v-field.v-field--variant-plain .v-field__append-inner,.v-field.v-field--variant-plain .v-field__clearable,.v-field.v-field--variant-plain .v-field__prepend-inner{align-items:flex-start;padding-top:calc(var(--v-field-padding-top, 8px) + var(--v-input-padding-top, 0));padding-bottom:var(--v-field-padding-bottom, 4px)}.v-field--focused .v-field__prepend-inner,.v-field--focused .v-field__append-inner{opacity:1}.v-field__prepend-inner>.v-icon,.v-field__append-inner>.v-icon,.v-field__clearable>.v-icon{opacity:var(--v-medium-emphasis-opacity)}.v-field--disabled .v-field__prepend-inner>.v-icon,.v-field--error .v-field__prepend-inner>.v-icon,.v-field--disabled .v-field__append-inner>.v-icon,.v-field--error .v-field__append-inner>.v-icon,.v-field--disabled .v-field__clearable>.v-icon,.v-field--error .v-field__clearable>.v-icon{opacity:1}.v-field--error:not(.v-field--disabled) .v-field__prepend-inner>.v-icon,.v-field--error:not(.v-field--disabled) .v-field__append-inner>.v-icon,.v-field--error:not(.v-field--disabled) .v-field__clearable>.v-icon{color:rgb(var(--v-theme-error))}.v-field__clearable{cursor:pointer;opacity:0;overflow:hidden;margin-inline:4px;transition:.15s cubic-bezier(.4,0,.2,1);transition-property:opacity,transform,width}.v-field--focused .v-field__clearable,.v-field--persistent-clear .v-field__clearable{opacity:1}@media (hover: hover){.v-field:hover .v-field__clearable{opacity:1}}@media (hover: none){.v-field__clearable{opacity:1}}.v-label.v-field-label{contain:layout paint;display:block;margin-inline-start:var(--v-field-padding-start);margin-inline-end:var(--v-field-padding-end);max-width:calc(100% - var(--v-field-padding-start) - var(--v-field-padding-end));pointer-events:none;position:absolute;top:var(--v-input-padding-top);transform-origin:left center;transition:.15s cubic-bezier(.4,0,.2,1);transition-property:opacity,transform;z-index:1}.v-field--variant-underlined .v-label.v-field-label,.v-field--variant-plain .v-label.v-field-label{top:calc(var(--v-input-padding-top) + var(--v-field-padding-top))}.v-field--center-affix .v-label.v-field-label{top:50%;transform:translateY(-50%)}.v-field--active .v-label.v-field-label{visibility:hidden}.v-field--focused .v-label.v-field-label,.v-field--error .v-label.v-field-label{opacity:1}.v-field--error:not(.v-field--disabled) .v-label.v-field-label{color:rgb(var(--v-theme-error))}.v-label.v-field-label--floating{--v-field-label-scale: .75em;font-size:var(--v-field-label-scale);visibility:hidden;max-width:100%}.v-field--center-affix .v-label.v-field-label--floating{transform:none}.v-field.v-field--active .v-label.v-field-label--floating{visibility:unset}.v-input--density-default .v-field--variant-solo .v-label.v-field-label--floating,.v-input--density-default .v-field--variant-solo-inverted .v-label.v-field-label--floating,.v-input--density-default .v-field--variant-filled .v-label.v-field-label--floating,.v-input--density-default .v-field--variant-solo-filled .v-label.v-field-label--floating{top:7px}.v-input--density-comfortable .v-field--variant-solo .v-label.v-field-label--floating,.v-input--density-comfortable .v-field--variant-solo-inverted .v-label.v-field-label--floating,.v-input--density-comfortable .v-field--variant-filled .v-label.v-field-label--floating,.v-input--density-comfortable .v-field--variant-solo-filled .v-label.v-field-label--floating{top:5px}.v-input--density-compact .v-field--variant-solo .v-label.v-field-label--floating,.v-input--density-compact .v-field--variant-solo-inverted .v-label.v-field-label--floating,.v-input--density-compact .v-field--variant-filled .v-label.v-field-label--floating,.v-input--density-compact .v-field--variant-solo-filled .v-label.v-field-label--floating{top:3px}.v-field--variant-plain .v-label.v-field-label--floating,.v-field--variant-underlined .v-label.v-field-label--floating{transform:translateY(-16px);margin:0;top:var(--v-input-padding-top)}.v-field--variant-outlined .v-label.v-field-label--floating{transform:translateY(-50%);transform-origin:center;position:static;margin:0 4px}.v-field__outline{--v-field-border-width: 1px;--v-field-border-opacity: .38;align-items:stretch;contain:layout;display:flex;height:100%;left:0;pointer-events:none;position:absolute;right:0;width:100%}@media (hover: hover){.v-field:hover .v-field__outline{--v-field-border-opacity: var(--v-high-emphasis-opacity)}}.v-field--error:not(.v-field--disabled) .v-field__outline{color:rgb(var(--v-theme-error))}.v-field.v-field--focused .v-field__outline,.v-input.v-input--error .v-field__outline{--v-field-border-opacity: 1}.v-field--variant-outlined.v-field--focused .v-field__outline{--v-field-border-width: 2px}.v-field--variant-filled .v-field__outline:before,.v-field--variant-underlined .v-field__outline:before{border-color:currentColor;border-style:solid;border-width:0 0 var(--v-field-border-width);opacity:var(--v-field-border-opacity);transition:opacity .25s cubic-bezier(.4,0,.2,1);content:"";position:absolute;top:0;left:0;width:100%;height:100%}.v-field--variant-filled .v-field__outline:after,.v-field--variant-underlined .v-field__outline:after{border-color:currentColor;border-style:solid;border-width:0 0 2px;transform:scaleX(0);transition:transform .15s cubic-bezier(.4,0,.2,1);content:"";position:absolute;top:0;left:0;width:100%;height:100%}.v-field--focused.v-field--variant-filled .v-field__outline:after,.v-field--focused.v-field--variant-underlined .v-field__outline:after{transform:scaleX(1)}.v-field--variant-outlined .v-field__outline{border-radius:inherit}.v-field--variant-outlined .v-field__outline__start,.v-field--variant-outlined .v-field__outline__notch:before,.v-field--variant-outlined .v-field__outline__notch:after,.v-field--variant-outlined .v-field__outline__end{border:0 solid currentColor;opacity:var(--v-field-border-opacity);transition:opacity .25s cubic-bezier(.4,0,.2,1)}.v-field--variant-outlined .v-field__outline__start{flex:0 0 12px;border-top-width:var(--v-field-border-width);border-bottom-width:var(--v-field-border-width);border-inline-start-width:var(--v-field-border-width);border-start-start-radius:inherit;border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:inherit}.v-field--rounded.v-field--variant-outlined .v-field__outline__start,[class^=rounded-].v-field--variant-outlined .v-field__outline__start,[class*=" rounded-"].v-field--variant-outlined .v-field__outline__start{flex-basis:calc(var(--v-input-control-height) / 2 + 2px)}.v-field--variant-outlined .v-field__outline__notch{flex:none;position:relative;max-width:calc(100% - 12px)}.v-field--variant-outlined .v-field__outline__notch:before,.v-field--variant-outlined .v-field__outline__notch:after{opacity:var(--v-field-border-opacity);transition:opacity .25s cubic-bezier(.4,0,.2,1);content:"";position:absolute;top:0;left:0;width:100%;height:100%}.v-field--variant-outlined .v-field__outline__notch:before{border-width:var(--v-field-border-width) 0 0}.v-field--variant-outlined .v-field__outline__notch:after{bottom:0;border-width:0 0 var(--v-field-border-width)}.v-field--active.v-field--variant-outlined .v-field__outline__notch:before{opacity:0}.v-field--variant-outlined .v-field__outline__end{flex:1;border-top-width:var(--v-field-border-width);border-bottom-width:var(--v-field-border-width);border-inline-end-width:var(--v-field-border-width);border-start-start-radius:0;border-start-end-radius:inherit;border-end-end-radius:inherit;border-end-start-radius:0}.v-field__loader{top:calc(100% - 2px);left:0;position:absolute;right:0;width:100%;border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;overflow:hidden}.v-field--variant-outlined .v-field__loader{top:calc(100% - 3px)}.v-field__overlay{border-radius:inherit;pointer-events:none;position:absolute;top:0;left:0;width:100%;height:100%}.v-field--variant-filled .v-field__overlay{background-color:currentColor;opacity:.04;transition:opacity .25s cubic-bezier(.4,0,.2,1)}.v-field--variant-filled.v-field--has-background .v-field__overlay{opacity:0}@media (hover: hover){.v-field--variant-filled:hover .v-field__overlay{opacity:calc((.04 + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}}.v-field--variant-filled.v-field--focused .v-field__overlay{opacity:calc((.04 + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}.v-field--variant-solo-filled .v-field__overlay{background-color:currentColor;opacity:.04;transition:opacity .25s cubic-bezier(.4,0,.2,1)}@media (hover: hover){.v-field--variant-solo-filled:hover .v-field__overlay{opacity:calc((.04 + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}}.v-field--variant-solo-filled.v-field--focused .v-field__overlay{opacity:calc((.04 + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}.v-field--variant-solo-inverted .v-field__overlay{transition:opacity .25s cubic-bezier(.4,0,.2,1)}.v-field--variant-solo-inverted.v-field--has-background .v-field__overlay{opacity:0}@media (hover: hover){.v-field--variant-solo-inverted:hover .v-field__overlay{opacity:calc((.04 + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}}.v-field--variant-solo-inverted.v-field--focused .v-field__overlay{background-color:rgb(var(--v-theme-surface-variant));opacity:1}.v-field--reverse .v-field__field,.v-field--reverse .v-field__input{flex-direction:row-reverse}.v-field--reverse .v-field__input,.v-field--reverse input{text-align:end}.v-input--disabled .v-field--variant-filled .v-field__outline:before,.v-input--disabled .v-field--variant-underlined .v-field__outline:before{border-image:repeating-linear-gradient(to right,rgba(var(--v-theme-on-surface),var(--v-disabled-opacity)) 0px,rgba(var(--v-theme-on-surface),var(--v-disabled-opacity)) 2px,transparent 2px,transparent 4px) 1 repeat}.v-field--loading .v-field__outline:after,.v-field--loading .v-field__outline:before{opacity:0}.v-label{align-items:center;color:inherit;display:inline-flex;font-size:1rem;letter-spacing:.009375em;min-width:0;opacity:var(--v-medium-emphasis-opacity);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v-label--clickable{cursor:pointer}.v-input{display:grid;flex:1 1 auto;font-size:1rem;font-weight:400;line-height:1.5}.v-input--disabled{pointer-events:none}.v-input--density-default{--v-input-control-height: 56px;--v-input-padding-top: 16px}.v-input--density-comfortable{--v-input-control-height: 48px;--v-input-padding-top: 12px}.v-input--density-compact{--v-input-control-height: 40px;--v-input-padding-top: 8px}.v-input--vertical{grid-template-areas:"append" "control" "prepend";grid-template-rows:max-content auto max-content;grid-template-columns:min-content}.v-input--vertical .v-input__prepend{margin-block-start:16px}.v-input--vertical .v-input__append{margin-block-end:16px}.v-input--horizontal{grid-template-areas:"prepend control append" "a messages b";grid-template-columns:max-content minmax(0,1fr) max-content;grid-template-rows:auto auto}.v-input--horizontal .v-input__prepend{margin-inline-end:16px}.v-input--horizontal .v-input__append{margin-inline-start:16px}.v-input__details{align-items:flex-end;display:flex;font-size:.75rem;font-weight:400;grid-area:messages;letter-spacing:.0333333333em;line-height:normal;min-height:22px;padding-top:6px;overflow:hidden;justify-content:space-between}.v-input__details>.v-icon,.v-input__prepend>.v-icon,.v-input__append>.v-icon{opacity:var(--v-medium-emphasis-opacity)}.v-input--disabled .v-input__details>.v-icon,.v-input--disabled .v-input__details .v-messages,.v-input--error .v-input__details>.v-icon,.v-input--error .v-input__details .v-messages,.v-input--disabled .v-input__prepend>.v-icon,.v-input--disabled .v-input__prepend .v-messages,.v-input--error .v-input__prepend>.v-icon,.v-input--error .v-input__prepend .v-messages,.v-input--disabled .v-input__append>.v-icon,.v-input--disabled .v-input__append .v-messages,.v-input--error .v-input__append>.v-icon,.v-input--error .v-input__append .v-messages{opacity:1}.v-input--disabled .v-input__details,.v-input--disabled .v-input__prepend,.v-input--disabled .v-input__append{opacity:var(--v-disabled-opacity)}.v-input--error:not(.v-input--disabled) .v-input__details>.v-icon,.v-input--error:not(.v-input--disabled) .v-input__details .v-messages,.v-input--error:not(.v-input--disabled) .v-input__prepend>.v-icon,.v-input--error:not(.v-input--disabled) .v-input__prepend .v-messages,.v-input--error:not(.v-input--disabled) .v-input__append>.v-icon,.v-input--error:not(.v-input--disabled) .v-input__append .v-messages{color:rgb(var(--v-theme-error))}.v-input__prepend,.v-input__append{display:flex;align-items:flex-start;padding-top:var(--v-input-padding-top)}.v-input--center-affix .v-input__prepend,.v-input--center-affix .v-input__append{align-items:center;padding-top:0}.v-input__prepend{grid-area:prepend}.v-input__append{grid-area:append}.v-input__control{display:flex;grid-area:control}.v-input--hide-spin-buttons input::-webkit-outer-spin-button,.v-input--hide-spin-buttons input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.v-input--hide-spin-buttons input[type=number]{-moz-appearance:textfield}.v-input--plain-underlined .v-input__prepend,.v-input--plain-underlined .v-input__append{align-items:flex-start}.v-input--density-default.v-input--plain-underlined .v-input__prepend,.v-input--density-default.v-input--plain-underlined .v-input__append{padding-top:calc(var(--v-input-padding-top) + 4px)}.v-input--density-comfortable.v-input--plain-underlined .v-input__prepend,.v-input--density-comfortable.v-input--plain-underlined .v-input__append{padding-top:calc(var(--v-input-padding-top) + 2px)}.v-input--density-compact.v-input--plain-underlined .v-input__prepend,.v-input--density-compact.v-input--plain-underlined .v-input__append{padding-top:calc(var(--v-input-padding-top) + 0px)}.v-messages{flex:1 1 auto;font-size:12px;min-height:14px;min-width:1px;opacity:var(--v-medium-emphasis-opacity);position:relative}.v-messages__message{line-height:12px;word-break:break-word;overflow-wrap:break-word;word-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;transition-duration:.15s}.v-application{display:flex;background:rgb(var(--v-theme-background));color:rgba(var(--v-theme-on-background),var(--v-high-emphasis-opacity))}.v-application__wrap{backface-visibility:hidden;display:flex;flex-direction:column;flex:1 1 auto;max-width:100%;min-height:100vh;min-height:100dvh;position:relative}.v-app-bar{display:flex}.v-app-bar.v-toolbar{background:rgb(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-app-bar.v-toolbar:not(.v-toolbar--flat){box-shadow:0 2px 4px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 4px 5px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 10px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-app-bar:not(.v-toolbar--absolute){padding-inline-end:var(--v-scrollbar-offset)}.v-toolbar{align-items:flex-start;display:flex;flex:none;flex-direction:column;justify-content:space-between;max-width:100%;overflow:hidden;position:relative;transition:.2s cubic-bezier(.4,0,.2,1);transition-property:height,width,transform,max-width,left,right,top,bottom,box-shadow;width:100%;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12));border-radius:0;background:rgb(var(--v-theme-surface-light));color:rgba(var(--v-theme-on-surface-light),var(--v-high-emphasis-opacity))}.v-toolbar--border{border-width:thin;box-shadow:none}.v-toolbar--absolute{position:absolute}.v-toolbar--collapse{max-width:112px;overflow:hidden;border-end-end-radius:24px}.v-toolbar--collapse .v-toolbar-title{display:none}.v-toolbar--flat{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-toolbar--floating{display:inline-flex}.v-toolbar--rounded{border-radius:4px}.v-toolbar__content,.v-toolbar__extension{align-items:center;display:flex;flex:0 0 auto;position:relative;transition:inherit;width:100%}.v-toolbar__content>.v-btn:first-child{margin-inline-start:10px}.v-toolbar__content>.v-btn:last-child{margin-inline-end:10px}.v-toolbar__content>.v-toolbar-title{margin-inline-start:16px}.v-toolbar--density-prominent .v-toolbar__content{align-items:flex-start}.v-toolbar__image{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;opacity:var(--v-toolbar-image-opacity, 1);transition-property:opacity}.v-toolbar__prepend,.v-toolbar__append{align-items:center;align-self:stretch;display:flex}.v-toolbar__prepend{margin-inline:10px auto}.v-toolbar__append{margin-inline:auto 10px}.v-toolbar-title{flex:1 1;min-width:0;font-size:1.25rem;font-weight:400;letter-spacing:0;line-height:1.75rem;text-transform:none}.v-toolbar--density-prominent .v-toolbar-title{align-self:flex-end;padding-bottom:6px;font-size:1.5rem;font-weight:400;letter-spacing:0;line-height:2.25rem;text-transform:none}.v-toolbar-title__placeholder{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v-toolbar-items{display:flex;height:inherit;align-self:stretch}.v-toolbar-items>.v-btn{border-radius:0}.v-bottom-navigation{display:flex;max-width:100%;overflow:hidden;position:absolute;transition:transform,color .2s,.2s cubic-bezier(.4,0,.2,1);border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;border-radius:0;background:rgb(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-bottom-navigation--border{border-width:thin;box-shadow:none}.v-bottom-navigation--active{box-shadow:0 2px 4px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 4px 5px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 10px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-bottom-navigation__content{display:flex;flex:none;font-size:.75rem;justify-content:center;transition:inherit;width:100%}.v-bottom-navigation .v-bottom-navigation__content>.v-btn{font-size:inherit;height:100%;max-width:168px;min-width:80px;text-transform:none;transition:inherit;width:auto;border-radius:0}.v-bottom-navigation .v-bottom-navigation__content>.v-btn .v-btn__content,.v-bottom-navigation .v-bottom-navigation__content>.v-btn .v-btn__icon{transition:inherit}.v-bottom-navigation .v-bottom-navigation__content>.v-btn .v-btn__icon{font-size:1.5rem}.v-bottom-navigation--grow .v-bottom-navigation__content>.v-btn{flex-grow:1}.v-bottom-navigation--shift .v-bottom-navigation__content .v-btn:not(.v-btn--selected) .v-btn__content>span{transition:inherit;opacity:0}.v-bottom-navigation--shift .v-bottom-navigation__content .v-btn:not(.v-btn--selected) .v-btn__content{transform:translateY(.5rem)}.v-container{width:100%;padding:16px;margin-right:auto;margin-left:auto}@media (min-width: 960px){.v-container{max-width:900px}}@media (min-width: 1280px){.v-container{max-width:1200px}}@media (min-width: 1920px){.v-container{max-width:1800px}}@media (min-width: 2560px){.v-container{max-width:2400px}}.v-container--fluid{max-width:100%}.v-container.fill-height{align-items:center;display:flex;flex-wrap:wrap}.v-row{display:flex;flex-wrap:wrap;flex:1 1 auto;margin:-12px}.v-row+.v-row{margin-top:12px}.v-row+.v-row--dense{margin-top:4px}.v-row--dense{margin:-4px}.v-row--dense>.v-col,.v-row--dense>[class*=v-col-]{padding:4px}.v-row.v-row--no-gutters{margin:0}.v-row.v-row--no-gutters>.v-col,.v-row.v-row--no-gutters>[class*=v-col-]{padding:0}.v-spacer{flex-grow:1}.v-col-xxl,.v-col-xxl-auto,.v-col-xxl-12,.v-col-xxl-11,.v-col-xxl-10,.v-col-xxl-9,.v-col-xxl-8,.v-col-xxl-7,.v-col-xxl-6,.v-col-xxl-5,.v-col-xxl-4,.v-col-xxl-3,.v-col-xxl-2,.v-col-xxl-1,.v-col-xl,.v-col-xl-auto,.v-col-xl-12,.v-col-xl-11,.v-col-xl-10,.v-col-xl-9,.v-col-xl-8,.v-col-xl-7,.v-col-xl-6,.v-col-xl-5,.v-col-xl-4,.v-col-xl-3,.v-col-xl-2,.v-col-xl-1,.v-col-lg,.v-col-lg-auto,.v-col-lg-12,.v-col-lg-11,.v-col-lg-10,.v-col-lg-9,.v-col-lg-8,.v-col-lg-7,.v-col-lg-6,.v-col-lg-5,.v-col-lg-4,.v-col-lg-3,.v-col-lg-2,.v-col-lg-1,.v-col-md,.v-col-md-auto,.v-col-md-12,.v-col-md-11,.v-col-md-10,.v-col-md-9,.v-col-md-8,.v-col-md-7,.v-col-md-6,.v-col-md-5,.v-col-md-4,.v-col-md-3,.v-col-md-2,.v-col-md-1,.v-col-sm,.v-col-sm-auto,.v-col-sm-12,.v-col-sm-11,.v-col-sm-10,.v-col-sm-9,.v-col-sm-8,.v-col-sm-7,.v-col-sm-6,.v-col-sm-5,.v-col-sm-4,.v-col-sm-3,.v-col-sm-2,.v-col-sm-1,.v-col,.v-col-auto,.v-col-12,.v-col-11,.v-col-10,.v-col-9,.v-col-8,.v-col-7,.v-col-6,.v-col-5,.v-col-4,.v-col-3,.v-col-2,.v-col-1{width:100%;padding:12px}.v-col{flex-basis:0;flex-grow:1;max-width:100%}.v-col-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-3{flex:0 0 25%;max-width:25%}.v-col-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-6{flex:0 0 50%;max-width:50%}.v-col-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-9{flex:0 0 75%;max-width:75%}.v-col-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-12{flex:0 0 100%;max-width:100%}.offset-1{margin-inline-start:8.3333333333%}.offset-2{margin-inline-start:16.6666666667%}.offset-3{margin-inline-start:25%}.offset-4{margin-inline-start:33.3333333333%}.offset-5{margin-inline-start:41.6666666667%}.offset-6{margin-inline-start:50%}.offset-7{margin-inline-start:58.3333333333%}.offset-8{margin-inline-start:66.6666666667%}.offset-9{margin-inline-start:75%}.offset-10{margin-inline-start:83.3333333333%}.offset-11{margin-inline-start:91.6666666667%}@media (min-width: 600px){.v-col-sm{flex-basis:0;flex-grow:1;max-width:100%}.v-col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-sm-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-sm-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-sm-3{flex:0 0 25%;max-width:25%}.v-col-sm-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-sm-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-sm-6{flex:0 0 50%;max-width:50%}.v-col-sm-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-sm-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-sm-9{flex:0 0 75%;max-width:75%}.v-col-sm-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-sm-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-sm-12{flex:0 0 100%;max-width:100%}.offset-sm-0{margin-inline-start:0}.offset-sm-1{margin-inline-start:8.3333333333%}.offset-sm-2{margin-inline-start:16.6666666667%}.offset-sm-3{margin-inline-start:25%}.offset-sm-4{margin-inline-start:33.3333333333%}.offset-sm-5{margin-inline-start:41.6666666667%}.offset-sm-6{margin-inline-start:50%}.offset-sm-7{margin-inline-start:58.3333333333%}.offset-sm-8{margin-inline-start:66.6666666667%}.offset-sm-9{margin-inline-start:75%}.offset-sm-10{margin-inline-start:83.3333333333%}.offset-sm-11{margin-inline-start:91.6666666667%}}@media (min-width: 960px){.v-col-md{flex-basis:0;flex-grow:1;max-width:100%}.v-col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-md-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-md-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-md-3{flex:0 0 25%;max-width:25%}.v-col-md-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-md-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-md-6{flex:0 0 50%;max-width:50%}.v-col-md-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-md-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-md-9{flex:0 0 75%;max-width:75%}.v-col-md-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-md-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-md-12{flex:0 0 100%;max-width:100%}.offset-md-0{margin-inline-start:0}.offset-md-1{margin-inline-start:8.3333333333%}.offset-md-2{margin-inline-start:16.6666666667%}.offset-md-3{margin-inline-start:25%}.offset-md-4{margin-inline-start:33.3333333333%}.offset-md-5{margin-inline-start:41.6666666667%}.offset-md-6{margin-inline-start:50%}.offset-md-7{margin-inline-start:58.3333333333%}.offset-md-8{margin-inline-start:66.6666666667%}.offset-md-9{margin-inline-start:75%}.offset-md-10{margin-inline-start:83.3333333333%}.offset-md-11{margin-inline-start:91.6666666667%}}@media (min-width: 1280px){.v-col-lg{flex-basis:0;flex-grow:1;max-width:100%}.v-col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-lg-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-lg-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-lg-3{flex:0 0 25%;max-width:25%}.v-col-lg-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-lg-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-lg-6{flex:0 0 50%;max-width:50%}.v-col-lg-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-lg-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-lg-9{flex:0 0 75%;max-width:75%}.v-col-lg-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-lg-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-lg-12{flex:0 0 100%;max-width:100%}.offset-lg-0{margin-inline-start:0}.offset-lg-1{margin-inline-start:8.3333333333%}.offset-lg-2{margin-inline-start:16.6666666667%}.offset-lg-3{margin-inline-start:25%}.offset-lg-4{margin-inline-start:33.3333333333%}.offset-lg-5{margin-inline-start:41.6666666667%}.offset-lg-6{margin-inline-start:50%}.offset-lg-7{margin-inline-start:58.3333333333%}.offset-lg-8{margin-inline-start:66.6666666667%}.offset-lg-9{margin-inline-start:75%}.offset-lg-10{margin-inline-start:83.3333333333%}.offset-lg-11{margin-inline-start:91.6666666667%}}@media (min-width: 1920px){.v-col-xl{flex-basis:0;flex-grow:1;max-width:100%}.v-col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-xl-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-xl-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-xl-3{flex:0 0 25%;max-width:25%}.v-col-xl-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-xl-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-xl-6{flex:0 0 50%;max-width:50%}.v-col-xl-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-xl-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-xl-9{flex:0 0 75%;max-width:75%}.v-col-xl-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-xl-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-xl-12{flex:0 0 100%;max-width:100%}.offset-xl-0{margin-inline-start:0}.offset-xl-1{margin-inline-start:8.3333333333%}.offset-xl-2{margin-inline-start:16.6666666667%}.offset-xl-3{margin-inline-start:25%}.offset-xl-4{margin-inline-start:33.3333333333%}.offset-xl-5{margin-inline-start:41.6666666667%}.offset-xl-6{margin-inline-start:50%}.offset-xl-7{margin-inline-start:58.3333333333%}.offset-xl-8{margin-inline-start:66.6666666667%}.offset-xl-9{margin-inline-start:75%}.offset-xl-10{margin-inline-start:83.3333333333%}.offset-xl-11{margin-inline-start:91.6666666667%}}@media (min-width: 2560px){.v-col-xxl{flex-basis:0;flex-grow:1;max-width:100%}.v-col-xxl-auto{flex:0 0 auto;width:auto;max-width:100%}.v-col-xxl-1{flex:0 0 8.3333333333%;max-width:8.3333333333%}.v-col-xxl-2{flex:0 0 16.6666666667%;max-width:16.6666666667%}.v-col-xxl-3{flex:0 0 25%;max-width:25%}.v-col-xxl-4{flex:0 0 33.3333333333%;max-width:33.3333333333%}.v-col-xxl-5{flex:0 0 41.6666666667%;max-width:41.6666666667%}.v-col-xxl-6{flex:0 0 50%;max-width:50%}.v-col-xxl-7{flex:0 0 58.3333333333%;max-width:58.3333333333%}.v-col-xxl-8{flex:0 0 66.6666666667%;max-width:66.6666666667%}.v-col-xxl-9{flex:0 0 75%;max-width:75%}.v-col-xxl-10{flex:0 0 83.3333333333%;max-width:83.3333333333%}.v-col-xxl-11{flex:0 0 91.6666666667%;max-width:91.6666666667%}.v-col-xxl-12{flex:0 0 100%;max-width:100%}.offset-xxl-0{margin-inline-start:0}.offset-xxl-1{margin-inline-start:8.3333333333%}.offset-xxl-2{margin-inline-start:16.6666666667%}.offset-xxl-3{margin-inline-start:25%}.offset-xxl-4{margin-inline-start:33.3333333333%}.offset-xxl-5{margin-inline-start:41.6666666667%}.offset-xxl-6{margin-inline-start:50%}.offset-xxl-7{margin-inline-start:58.3333333333%}.offset-xxl-8{margin-inline-start:66.6666666667%}.offset-xxl-9{margin-inline-start:75%}.offset-xxl-10{margin-inline-start:83.3333333333%}.offset-xxl-11{margin-inline-start:91.6666666667%}}.v-main{flex:1 0 auto;max-width:100%;transition:.2s cubic-bezier(.4,0,.2,1);padding-left:var(--v-layout-left);padding-right:var(--v-layout-right);padding-top:var(--v-layout-top);padding-bottom:var(--v-layout-bottom)}.v-main__scroller{max-width:100%;position:relative}.v-main--scrollable{display:flex;position:absolute;top:0;left:0;width:100%;height:100%}.v-main--scrollable>.v-main__scroller{flex:1 1 auto;overflow-y:auto;--v-layout-left: 0px;--v-layout-right: 0px;--v-layout-top: 0px;--v-layout-bottom: 0px}/*! +* Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com +* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) +* Copyright 2023 Fonticons, Inc. +*/.fa{font-family:var(--fa-style-family, "Font Awesome 6 Free");font-weight:var(--fa-style, 900)}.fa,.fa-classic,.fa-sharp,.fas,.fa-solid,.far,.fa-regular,.fab,.fa-brands{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display, inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fas,.fa-classic,.fa-solid,.far,.fa-regular{font-family:"Font Awesome 6 Free"}.fab,.fa-brands{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin, 2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em) * -1);position:absolute;text-align:center;width:var(--fa-li-width, 2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color, #eee);border-radius:var(--fa-border-radius, .1em);border-style:var(--fa-border-style, solid);border-width:var(--fa-border-width, .08em);padding:var(--fa-border-padding, .2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin, .3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin, .3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay, 0s);animation-delay:var(--fa-animation-delay, 0s);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, ease-in-out);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay, 0s);animation-delay:var(--fa-animation-delay, 0s);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, cubic-bezier(.28, .84, .42, 1));animation-timing-function:var(--fa-animation-timing, cubic-bezier(.28, .84, .42, 1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-delay:var(--fa-animation-delay, 0s);animation-delay:var(--fa-animation-delay, 0s);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, cubic-bezier(.4, 0, .6, 1));animation-timing-function:var(--fa-animation-timing, cubic-bezier(.4, 0, .6, 1))}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-delay:var(--fa-animation-delay, 0s);animation-delay:var(--fa-animation-delay, 0s);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, cubic-bezier(.4, 0, .6, 1));animation-timing-function:var(--fa-animation-timing, cubic-bezier(.4, 0, .6, 1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay, 0s);animation-delay:var(--fa-animation-delay, 0s);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, ease-in-out);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-delay:var(--fa-animation-delay, 0s);animation-delay:var(--fa-animation-delay, 0s);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, linear);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-delay:var(--fa-animation-delay, 0s);animation-delay:var(--fa-animation-delay, 0s);-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 2s);animation-duration:var(--fa-animation-duration, 2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, linear);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin-reverse{--fa-animation-direction: reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction, normal);animation-direction:var(--fa-animation-direction, normal);-webkit-animation-duration:var(--fa-animation-duration, 1s);animation-duration:var(--fa-animation-duration, 1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-iteration-count:var(--fa-animation-iteration-count, infinite);-webkit-animation-timing-function:var(--fa-animation-timing, steps(8));animation-timing-function:var(--fa-animation-timing, steps(8))}@media (prefers-reduced-motion: reduce){.fa-beat,.fa-bounce,.fa-fade,.fa-beat-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-transition-delay:0s;transition-delay:0s;-webkit-transition-duration:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale, 1.25));transform:scale(var(--fa-beat-scale, 1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale, 1.25));transform:scale(var(--fa-beat-scale, 1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em));transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound, -.125em));transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1,1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em));transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound, -.125em));transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1,1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale, 1.125));transform:scale(var(--fa-beat-fade-scale, 1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale, 1.125));transform:scale(var(--fa-beat-fade-scale, 1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg));transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg));transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle, none));transform:rotate(var(--fa-rotate-angle, none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index, auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse, #fff)}.fa-0:before{content:"0"}.fa-1:before{content:"1"}.fa-2:before{content:"2"}.fa-3:before{content:"3"}.fa-4:before{content:"4"}.fa-5:before{content:"5"}.fa-6:before{content:"6"}.fa-7:before{content:"7"}.fa-8:before{content:"8"}.fa-9:before{content:"9"}.fa-fill-drip:before{content:""}.fa-arrows-to-circle:before{content:""}.fa-circle-chevron-right:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-at:before{content:"@"}.fa-trash-can:before{content:""}.fa-trash-alt:before{content:""}.fa-text-height:before{content:""}.fa-user-xmark:before{content:""}.fa-user-times:before{content:""}.fa-stethoscope:before{content:""}.fa-message:before{content:""}.fa-comment-alt:before{content:""}.fa-info:before{content:""}.fa-down-left-and-up-right-to-center:before{content:""}.fa-compress-alt:before{content:""}.fa-explosion:before{content:""}.fa-file-lines:before{content:""}.fa-file-alt:before{content:""}.fa-file-text:before{content:""}.fa-wave-square:before{content:""}.fa-ring:before{content:""}.fa-building-un:before{content:""}.fa-dice-three:before{content:""}.fa-calendar-days:before{content:""}.fa-calendar-alt:before{content:""}.fa-anchor-circle-check:before{content:""}.fa-building-circle-arrow-right:before{content:""}.fa-volleyball:before{content:""}.fa-volleyball-ball:before{content:""}.fa-arrows-up-to-line:before{content:""}.fa-sort-down:before{content:""}.fa-sort-desc:before{content:""}.fa-circle-minus:before{content:""}.fa-minus-circle:before{content:""}.fa-door-open:before{content:""}.fa-right-from-bracket:before{content:""}.fa-sign-out-alt:before{content:""}.fa-atom:before{content:""}.fa-soap:before{content:""}.fa-icons:before{content:""}.fa-heart-music-camera-bolt:before{content:""}.fa-microphone-lines-slash:before{content:""}.fa-microphone-alt-slash:before{content:""}.fa-bridge-circle-check:before{content:""}.fa-pump-medical:before{content:""}.fa-fingerprint:before{content:""}.fa-hand-point-right:before{content:""}.fa-magnifying-glass-location:before{content:""}.fa-search-location:before{content:""}.fa-forward-step:before{content:""}.fa-step-forward:before{content:""}.fa-face-smile-beam:before{content:""}.fa-smile-beam:before{content:""}.fa-flag-checkered:before{content:""}.fa-football:before{content:""}.fa-football-ball:before{content:""}.fa-school-circle-exclamation:before{content:""}.fa-crop:before{content:""}.fa-angles-down:before{content:""}.fa-angle-double-down:before{content:""}.fa-users-rectangle:before{content:""}.fa-people-roof:before{content:""}.fa-people-line:before{content:""}.fa-beer-mug-empty:before{content:""}.fa-beer:before{content:""}.fa-diagram-predecessor:before{content:""}.fa-arrow-up-long:before{content:""}.fa-long-arrow-up:before{content:""}.fa-fire-flame-simple:before{content:""}.fa-burn:before{content:""}.fa-person:before{content:""}.fa-male:before{content:""}.fa-laptop:before{content:""}.fa-file-csv:before{content:""}.fa-menorah:before{content:""}.fa-truck-plane:before{content:""}.fa-record-vinyl:before{content:""}.fa-face-grin-stars:before{content:""}.fa-grin-stars:before{content:""}.fa-bong:before{content:""}.fa-spaghetti-monster-flying:before{content:""}.fa-pastafarianism:before{content:""}.fa-arrow-down-up-across-line:before{content:""}.fa-spoon:before{content:""}.fa-utensil-spoon:before{content:""}.fa-jar-wheat:before{content:""}.fa-envelopes-bulk:before{content:""}.fa-mail-bulk:before{content:""}.fa-file-circle-exclamation:before{content:""}.fa-circle-h:before{content:""}.fa-hospital-symbol:before{content:""}.fa-pager:before{content:""}.fa-address-book:before{content:""}.fa-contact-book:before{content:""}.fa-strikethrough:before{content:""}.fa-k:before{content:"K"}.fa-landmark-flag:before{content:""}.fa-pencil:before{content:""}.fa-pencil-alt:before{content:""}.fa-backward:before{content:""}.fa-caret-right:before{content:""}.fa-comments:before{content:""}.fa-paste:before{content:""}.fa-file-clipboard:before{content:""}.fa-code-pull-request:before{content:""}.fa-clipboard-list:before{content:""}.fa-truck-ramp-box:before{content:""}.fa-truck-loading:before{content:""}.fa-user-check:before{content:""}.fa-vial-virus:before{content:""}.fa-sheet-plastic:before{content:""}.fa-blog:before{content:""}.fa-user-ninja:before{content:""}.fa-person-arrow-up-from-line:before{content:""}.fa-scroll-torah:before{content:""}.fa-torah:before{content:""}.fa-broom-ball:before{content:""}.fa-quidditch:before{content:""}.fa-quidditch-broom-ball:before{content:""}.fa-toggle-off:before{content:""}.fa-box-archive:before{content:""}.fa-archive:before{content:""}.fa-person-drowning:before{content:""}.fa-arrow-down-9-1:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-sort-numeric-down-alt:before{content:""}.fa-face-grin-tongue-squint:before{content:""}.fa-grin-tongue-squint:before{content:""}.fa-spray-can:before{content:""}.fa-truck-monster:before{content:""}.fa-w:before{content:"W"}.fa-earth-africa:before{content:""}.fa-globe-africa:before{content:""}.fa-rainbow:before{content:""}.fa-circle-notch:before{content:""}.fa-tablet-screen-button:before{content:""}.fa-tablet-alt:before{content:""}.fa-paw:before{content:""}.fa-cloud:before{content:""}.fa-trowel-bricks:before{content:""}.fa-face-flushed:before{content:""}.fa-flushed:before{content:""}.fa-hospital-user:before{content:""}.fa-tent-arrow-left-right:before{content:""}.fa-gavel:before{content:""}.fa-legal:before{content:""}.fa-binoculars:before{content:""}.fa-microphone-slash:before{content:""}.fa-box-tissue:before{content:""}.fa-motorcycle:before{content:""}.fa-bell-concierge:before{content:""}.fa-concierge-bell:before{content:""}.fa-pen-ruler:before{content:""}.fa-pencil-ruler:before{content:""}.fa-people-arrows:before{content:""}.fa-people-arrows-left-right:before{content:""}.fa-mars-and-venus-burst:before{content:""}.fa-square-caret-right:before{content:""}.fa-caret-square-right:before{content:""}.fa-scissors:before{content:""}.fa-cut:before{content:""}.fa-sun-plant-wilt:before{content:""}.fa-toilets-portable:before{content:""}.fa-hockey-puck:before{content:""}.fa-table:before{content:""}.fa-magnifying-glass-arrow-right:before{content:""}.fa-tachograph-digital:before{content:""}.fa-digital-tachograph:before{content:""}.fa-users-slash:before{content:""}.fa-clover:before{content:""}.fa-reply:before{content:""}.fa-mail-reply:before{content:""}.fa-star-and-crescent:before{content:""}.fa-house-fire:before{content:""}.fa-square-minus:before{content:""}.fa-minus-square:before{content:""}.fa-helicopter:before{content:""}.fa-compass:before{content:""}.fa-square-caret-down:before{content:""}.fa-caret-square-down:before{content:""}.fa-file-circle-question:before{content:""}.fa-laptop-code:before{content:""}.fa-swatchbook:before{content:""}.fa-prescription-bottle:before{content:""}.fa-bars:before{content:""}.fa-navicon:before{content:""}.fa-people-group:before{content:""}.fa-hourglass-end:before{content:""}.fa-hourglass-3:before{content:""}.fa-heart-crack:before{content:""}.fa-heart-broken:before{content:""}.fa-square-up-right:before{content:""}.fa-external-link-square-alt:before{content:""}.fa-face-kiss-beam:before{content:""}.fa-kiss-beam:before{content:""}.fa-film:before{content:""}.fa-ruler-horizontal:before{content:""}.fa-people-robbery:before{content:""}.fa-lightbulb:before{content:""}.fa-caret-left:before{content:""}.fa-circle-exclamation:before{content:""}.fa-exclamation-circle:before{content:""}.fa-school-circle-xmark:before{content:""}.fa-arrow-right-from-bracket:before{content:""}.fa-sign-out:before{content:""}.fa-circle-chevron-down:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-unlock-keyhole:before{content:""}.fa-unlock-alt:before{content:""}.fa-cloud-showers-heavy:before{content:""}.fa-headphones-simple:before{content:""}.fa-headphones-alt:before{content:""}.fa-sitemap:before{content:""}.fa-circle-dollar-to-slot:before{content:""}.fa-donate:before{content:""}.fa-memory:before{content:""}.fa-road-spikes:before{content:""}.fa-fire-burner:before{content:""}.fa-flag:before{content:""}.fa-hanukiah:before{content:""}.fa-feather:before{content:""}.fa-volume-low:before{content:""}.fa-volume-down:before{content:""}.fa-comment-slash:before{content:""}.fa-cloud-sun-rain:before{content:""}.fa-compress:before{content:""}.fa-wheat-awn:before{content:""}.fa-wheat-alt:before{content:""}.fa-ankh:before{content:""}.fa-hands-holding-child:before{content:""}.fa-asterisk:before{content:"*"}.fa-square-check:before{content:""}.fa-check-square:before{content:""}.fa-peseta-sign:before{content:""}.fa-heading:before{content:""}.fa-header:before{content:""}.fa-ghost:before{content:""}.fa-list:before{content:""}.fa-list-squares:before{content:""}.fa-square-phone-flip:before{content:""}.fa-phone-square-alt:before{content:""}.fa-cart-plus:before{content:""}.fa-gamepad:before{content:""}.fa-circle-dot:before{content:""}.fa-dot-circle:before{content:""}.fa-face-dizzy:before{content:""}.fa-dizzy:before{content:""}.fa-egg:before{content:""}.fa-house-medical-circle-xmark:before{content:""}.fa-campground:before{content:""}.fa-folder-plus:before{content:""}.fa-futbol:before{content:""}.fa-futbol-ball:before{content:""}.fa-soccer-ball:before{content:""}.fa-paintbrush:before{content:""}.fa-paint-brush:before{content:""}.fa-lock:before{content:""}.fa-gas-pump:before{content:""}.fa-hot-tub-person:before{content:""}.fa-hot-tub:before{content:""}.fa-map-location:before{content:""}.fa-map-marked:before{content:""}.fa-house-flood-water:before{content:""}.fa-tree:before{content:""}.fa-bridge-lock:before{content:""}.fa-sack-dollar:before{content:""}.fa-pen-to-square:before{content:""}.fa-edit:before{content:""}.fa-car-side:before{content:""}.fa-share-nodes:before{content:""}.fa-share-alt:before{content:""}.fa-heart-circle-minus:before{content:""}.fa-hourglass-half:before{content:""}.fa-hourglass-2:before{content:""}.fa-microscope:before{content:""}.fa-sink:before{content:""}.fa-bag-shopping:before{content:""}.fa-shopping-bag:before{content:""}.fa-arrow-down-z-a:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-alpha-down-alt:before{content:""}.fa-mitten:before{content:""}.fa-person-rays:before{content:""}.fa-users:before{content:""}.fa-eye-slash:before{content:""}.fa-flask-vial:before{content:""}.fa-hand:before{content:""}.fa-hand-paper:before{content:""}.fa-om:before{content:""}.fa-worm:before{content:""}.fa-house-circle-xmark:before{content:""}.fa-plug:before{content:""}.fa-chevron-up:before{content:""}.fa-hand-spock:before{content:""}.fa-stopwatch:before{content:""}.fa-face-kiss:before{content:""}.fa-kiss:before{content:""}.fa-bridge-circle-xmark:before{content:""}.fa-face-grin-tongue:before{content:""}.fa-grin-tongue:before{content:""}.fa-chess-bishop:before{content:""}.fa-face-grin-wink:before{content:""}.fa-grin-wink:before{content:""}.fa-ear-deaf:before{content:""}.fa-deaf:before{content:""}.fa-deafness:before{content:""}.fa-hard-of-hearing:before{content:""}.fa-road-circle-check:before{content:""}.fa-dice-five:before{content:""}.fa-square-rss:before{content:""}.fa-rss-square:before{content:""}.fa-land-mine-on:before{content:""}.fa-i-cursor:before{content:""}.fa-stamp:before{content:""}.fa-stairs:before{content:""}.fa-i:before{content:"I"}.fa-hryvnia-sign:before{content:""}.fa-hryvnia:before{content:""}.fa-pills:before{content:""}.fa-face-grin-wide:before{content:""}.fa-grin-alt:before{content:""}.fa-tooth:before{content:""}.fa-v:before{content:"V"}.fa-bangladeshi-taka-sign:before{content:""}.fa-bicycle:before{content:""}.fa-staff-snake:before{content:""}.fa-rod-asclepius:before{content:""}.fa-rod-snake:before{content:""}.fa-staff-aesculapius:before{content:""}.fa-head-side-cough-slash:before{content:""}.fa-truck-medical:before{content:""}.fa-ambulance:before{content:""}.fa-wheat-awn-circle-exclamation:before{content:""}.fa-snowman:before{content:""}.fa-mortar-pestle:before{content:""}.fa-road-barrier:before{content:""}.fa-school:before{content:""}.fa-igloo:before{content:""}.fa-joint:before{content:""}.fa-angle-right:before{content:""}.fa-horse:before{content:""}.fa-q:before{content:"Q"}.fa-g:before{content:"G"}.fa-notes-medical:before{content:""}.fa-temperature-half:before{content:""}.fa-temperature-2:before{content:""}.fa-thermometer-2:before{content:""}.fa-thermometer-half:before{content:""}.fa-dong-sign:before{content:""}.fa-capsules:before{content:""}.fa-poo-storm:before{content:""}.fa-poo-bolt:before{content:""}.fa-face-frown-open:before{content:""}.fa-frown-open:before{content:""}.fa-hand-point-up:before{content:""}.fa-money-bill:before{content:""}.fa-bookmark:before{content:""}.fa-align-justify:before{content:""}.fa-umbrella-beach:before{content:""}.fa-helmet-un:before{content:""}.fa-bullseye:before{content:""}.fa-bacon:before{content:""}.fa-hand-point-down:before{content:""}.fa-arrow-up-from-bracket:before{content:""}.fa-folder:before{content:""}.fa-folder-blank:before{content:""}.fa-file-waveform:before{content:""}.fa-file-medical-alt:before{content:""}.fa-radiation:before{content:""}.fa-chart-simple:before{content:""}.fa-mars-stroke:before{content:""}.fa-vial:before{content:""}.fa-gauge:before{content:""}.fa-dashboard:before{content:""}.fa-gauge-med:before{content:""}.fa-tachometer-alt-average:before{content:""}.fa-wand-magic-sparkles:before{content:""}.fa-magic-wand-sparkles:before{content:""}.fa-e:before{content:"E"}.fa-pen-clip:before{content:""}.fa-pen-alt:before{content:""}.fa-bridge-circle-exclamation:before{content:""}.fa-user:before{content:""}.fa-school-circle-check:before{content:""}.fa-dumpster:before{content:""}.fa-van-shuttle:before{content:""}.fa-shuttle-van:before{content:""}.fa-building-user:before{content:""}.fa-square-caret-left:before{content:""}.fa-caret-square-left:before{content:""}.fa-highlighter:before{content:""}.fa-key:before{content:""}.fa-bullhorn:before{content:""}.fa-globe:before{content:""}.fa-synagogue:before{content:""}.fa-person-half-dress:before{content:""}.fa-road-bridge:before{content:""}.fa-location-arrow:before{content:""}.fa-c:before{content:"C"}.fa-tablet-button:before{content:""}.fa-building-lock:before{content:""}.fa-pizza-slice:before{content:""}.fa-money-bill-wave:before{content:""}.fa-chart-area:before{content:""}.fa-area-chart:before{content:""}.fa-house-flag:before{content:""}.fa-person-circle-minus:before{content:""}.fa-ban:before{content:""}.fa-cancel:before{content:""}.fa-camera-rotate:before{content:""}.fa-spray-can-sparkles:before{content:""}.fa-air-freshener:before{content:""}.fa-star:before{content:""}.fa-repeat:before{content:""}.fa-cross:before{content:""}.fa-box:before{content:""}.fa-venus-mars:before{content:""}.fa-arrow-pointer:before{content:""}.fa-mouse-pointer:before{content:""}.fa-maximize:before{content:""}.fa-expand-arrows-alt:before{content:""}.fa-charging-station:before{content:""}.fa-shapes:before{content:""}.fa-triangle-circle-square:before{content:""}.fa-shuffle:before{content:""}.fa-random:before{content:""}.fa-person-running:before{content:""}.fa-running:before{content:""}.fa-mobile-retro:before{content:""}.fa-grip-lines-vertical:before{content:""}.fa-spider:before{content:""}.fa-hands-bound:before{content:""}.fa-file-invoice-dollar:before{content:""}.fa-plane-circle-exclamation:before{content:""}.fa-x-ray:before{content:""}.fa-spell-check:before{content:""}.fa-slash:before{content:""}.fa-computer-mouse:before{content:""}.fa-mouse:before{content:""}.fa-arrow-right-to-bracket:before{content:""}.fa-sign-in:before{content:""}.fa-shop-slash:before{content:""}.fa-store-alt-slash:before{content:""}.fa-server:before{content:""}.fa-virus-covid-slash:before{content:""}.fa-shop-lock:before{content:""}.fa-hourglass-start:before{content:""}.fa-hourglass-1:before{content:""}.fa-blender-phone:before{content:""}.fa-building-wheat:before{content:""}.fa-person-breastfeeding:before{content:""}.fa-right-to-bracket:before{content:""}.fa-sign-in-alt:before{content:""}.fa-venus:before{content:""}.fa-passport:before{content:""}.fa-heart-pulse:before{content:""}.fa-heartbeat:before{content:""}.fa-people-carry-box:before{content:""}.fa-people-carry:before{content:""}.fa-temperature-high:before{content:""}.fa-microchip:before{content:""}.fa-crown:before{content:""}.fa-weight-hanging:before{content:""}.fa-xmarks-lines:before{content:""}.fa-file-prescription:before{content:""}.fa-weight-scale:before{content:""}.fa-weight:before{content:""}.fa-user-group:before{content:""}.fa-user-friends:before{content:""}.fa-arrow-up-a-z:before{content:""}.fa-sort-alpha-up:before{content:""}.fa-chess-knight:before{content:""}.fa-face-laugh-squint:before{content:""}.fa-laugh-squint:before{content:""}.fa-wheelchair:before{content:""}.fa-circle-arrow-up:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-toggle-on:before{content:""}.fa-person-walking:before{content:""}.fa-walking:before{content:""}.fa-l:before{content:"L"}.fa-fire:before{content:""}.fa-bed-pulse:before{content:""}.fa-procedures:before{content:""}.fa-shuttle-space:before{content:""}.fa-space-shuttle:before{content:""}.fa-face-laugh:before{content:""}.fa-laugh:before{content:""}.fa-folder-open:before{content:""}.fa-heart-circle-plus:before{content:""}.fa-code-fork:before{content:""}.fa-city:before{content:""}.fa-microphone-lines:before{content:""}.fa-microphone-alt:before{content:""}.fa-pepper-hot:before{content:""}.fa-unlock:before{content:""}.fa-colon-sign:before{content:""}.fa-headset:before{content:""}.fa-store-slash:before{content:""}.fa-road-circle-xmark:before{content:""}.fa-user-minus:before{content:""}.fa-mars-stroke-up:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-champagne-glasses:before{content:""}.fa-glass-cheers:before{content:""}.fa-clipboard:before{content:""}.fa-house-circle-exclamation:before{content:""}.fa-file-arrow-up:before{content:""}.fa-file-upload:before{content:""}.fa-wifi:before{content:""}.fa-wifi-3:before{content:""}.fa-wifi-strong:before{content:""}.fa-bath:before{content:""}.fa-bathtub:before{content:""}.fa-underline:before{content:""}.fa-user-pen:before{content:""}.fa-user-edit:before{content:""}.fa-signature:before{content:""}.fa-stroopwafel:before{content:""}.fa-bold:before{content:""}.fa-anchor-lock:before{content:""}.fa-building-ngo:before{content:""}.fa-manat-sign:before{content:""}.fa-not-equal:before{content:""}.fa-border-top-left:before{content:""}.fa-border-style:before{content:""}.fa-map-location-dot:before{content:""}.fa-map-marked-alt:before{content:""}.fa-jedi:before{content:""}.fa-square-poll-vertical:before{content:""}.fa-poll:before{content:""}.fa-mug-hot:before{content:""}.fa-car-battery:before{content:""}.fa-battery-car:before{content:""}.fa-gift:before{content:""}.fa-dice-two:before{content:""}.fa-chess-queen:before{content:""}.fa-glasses:before{content:""}.fa-chess-board:before{content:""}.fa-building-circle-check:before{content:""}.fa-person-chalkboard:before{content:""}.fa-mars-stroke-right:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-hand-back-fist:before{content:""}.fa-hand-rock:before{content:""}.fa-square-caret-up:before{content:""}.fa-caret-square-up:before{content:""}.fa-cloud-showers-water:before{content:""}.fa-chart-bar:before{content:""}.fa-bar-chart:before{content:""}.fa-hands-bubbles:before{content:""}.fa-hands-wash:before{content:""}.fa-less-than-equal:before{content:""}.fa-train:before{content:""}.fa-eye-low-vision:before{content:""}.fa-low-vision:before{content:""}.fa-crow:before{content:""}.fa-sailboat:before{content:""}.fa-window-restore:before{content:""}.fa-square-plus:before{content:""}.fa-plus-square:before{content:""}.fa-torii-gate:before{content:""}.fa-frog:before{content:""}.fa-bucket:before{content:""}.fa-image:before{content:""}.fa-microphone:before{content:""}.fa-cow:before{content:""}.fa-caret-up:before{content:""}.fa-screwdriver:before{content:""}.fa-folder-closed:before{content:""}.fa-house-tsunami:before{content:""}.fa-square-nfi:before{content:""}.fa-arrow-up-from-ground-water:before{content:""}.fa-martini-glass:before{content:""}.fa-glass-martini-alt:before{content:""}.fa-rotate-left:before{content:""}.fa-rotate-back:before{content:""}.fa-rotate-backward:before{content:""}.fa-undo-alt:before{content:""}.fa-table-columns:before{content:""}.fa-columns:before{content:""}.fa-lemon:before{content:""}.fa-head-side-mask:before{content:""}.fa-handshake:before{content:""}.fa-gem:before{content:""}.fa-dolly:before{content:""}.fa-dolly-box:before{content:""}.fa-smoking:before{content:""}.fa-minimize:before{content:""}.fa-compress-arrows-alt:before{content:""}.fa-monument:before{content:""}.fa-snowplow:before{content:""}.fa-angles-right:before{content:""}.fa-angle-double-right:before{content:""}.fa-cannabis:before{content:""}.fa-circle-play:before{content:""}.fa-play-circle:before{content:""}.fa-tablets:before{content:""}.fa-ethernet:before{content:""}.fa-euro-sign:before{content:""}.fa-eur:before{content:""}.fa-euro:before{content:""}.fa-chair:before{content:""}.fa-circle-check:before{content:""}.fa-check-circle:before{content:""}.fa-circle-stop:before{content:""}.fa-stop-circle:before{content:""}.fa-compass-drafting:before{content:""}.fa-drafting-compass:before{content:""}.fa-plate-wheat:before{content:""}.fa-icicles:before{content:""}.fa-person-shelter:before{content:""}.fa-neuter:before{content:""}.fa-id-badge:before{content:""}.fa-marker:before{content:""}.fa-face-laugh-beam:before{content:""}.fa-laugh-beam:before{content:""}.fa-helicopter-symbol:before{content:""}.fa-universal-access:before{content:""}.fa-circle-chevron-up:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-lari-sign:before{content:""}.fa-volcano:before{content:""}.fa-person-walking-dashed-line-arrow-right:before{content:""}.fa-sterling-sign:before{content:""}.fa-gbp:before{content:""}.fa-pound-sign:before{content:""}.fa-viruses:before{content:""}.fa-square-person-confined:before{content:""}.fa-user-tie:before{content:""}.fa-arrow-down-long:before{content:""}.fa-long-arrow-down:before{content:""}.fa-tent-arrow-down-to-line:before{content:""}.fa-certificate:before{content:""}.fa-reply-all:before{content:""}.fa-mail-reply-all:before{content:""}.fa-suitcase:before{content:""}.fa-person-skating:before{content:""}.fa-skating:before{content:""}.fa-filter-circle-dollar:before{content:""}.fa-funnel-dollar:before{content:""}.fa-camera-retro:before{content:""}.fa-circle-arrow-down:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-file-import:before{content:""}.fa-arrow-right-to-file:before{content:""}.fa-square-arrow-up-right:before{content:""}.fa-external-link-square:before{content:""}.fa-box-open:before{content:""}.fa-scroll:before{content:""}.fa-spa:before{content:""}.fa-location-pin-lock:before{content:""}.fa-pause:before{content:""}.fa-hill-avalanche:before{content:""}.fa-temperature-empty:before{content:""}.fa-temperature-0:before{content:""}.fa-thermometer-0:before{content:""}.fa-thermometer-empty:before{content:""}.fa-bomb:before{content:""}.fa-registered:before{content:""}.fa-address-card:before{content:""}.fa-contact-card:before{content:""}.fa-vcard:before{content:""}.fa-scale-unbalanced-flip:before{content:""}.fa-balance-scale-right:before{content:""}.fa-subscript:before{content:""}.fa-diamond-turn-right:before{content:""}.fa-directions:before{content:""}.fa-burst:before{content:""}.fa-house-laptop:before{content:""}.fa-laptop-house:before{content:""}.fa-face-tired:before{content:""}.fa-tired:before{content:""}.fa-money-bills:before{content:""}.fa-smog:before{content:""}.fa-crutch:before{content:""}.fa-cloud-arrow-up:before{content:""}.fa-cloud-upload:before{content:""}.fa-cloud-upload-alt:before{content:""}.fa-palette:before{content:""}.fa-arrows-turn-right:before{content:""}.fa-vest:before{content:""}.fa-ferry:before{content:""}.fa-arrows-down-to-people:before{content:""}.fa-seedling:before{content:""}.fa-sprout:before{content:""}.fa-left-right:before{content:""}.fa-arrows-alt-h:before{content:""}.fa-boxes-packing:before{content:""}.fa-circle-arrow-left:before{content:""}.fa-arrow-circle-left:before{content:""}.fa-group-arrows-rotate:before{content:""}.fa-bowl-food:before{content:""}.fa-candy-cane:before{content:""}.fa-arrow-down-wide-short:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-down:before{content:""}.fa-cloud-bolt:before{content:""}.fa-thunderstorm:before{content:""}.fa-text-slash:before{content:""}.fa-remove-format:before{content:""}.fa-face-smile-wink:before{content:""}.fa-smile-wink:before{content:""}.fa-file-word:before{content:""}.fa-file-powerpoint:before{content:""}.fa-arrows-left-right:before{content:""}.fa-arrows-h:before{content:""}.fa-house-lock:before{content:""}.fa-cloud-arrow-down:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-download-alt:before{content:""}.fa-children:before{content:""}.fa-chalkboard:before{content:""}.fa-blackboard:before{content:""}.fa-user-large-slash:before{content:""}.fa-user-alt-slash:before{content:""}.fa-envelope-open:before{content:""}.fa-handshake-simple-slash:before{content:""}.fa-handshake-alt-slash:before{content:""}.fa-mattress-pillow:before{content:""}.fa-guarani-sign:before{content:""}.fa-arrows-rotate:before{content:""}.fa-refresh:before{content:""}.fa-sync:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-cruzeiro-sign:before{content:""}.fa-greater-than-equal:before{content:""}.fa-shield-halved:before{content:""}.fa-shield-alt:before{content:""}.fa-book-atlas:before{content:""}.fa-atlas:before{content:""}.fa-virus:before{content:""}.fa-envelope-circle-check:before{content:""}.fa-layer-group:before{content:""}.fa-arrows-to-dot:before{content:""}.fa-archway:before{content:""}.fa-heart-circle-check:before{content:""}.fa-house-chimney-crack:before{content:""}.fa-house-damage:before{content:""}.fa-file-zipper:before{content:""}.fa-file-archive:before{content:""}.fa-square:before{content:""}.fa-martini-glass-empty:before{content:""}.fa-glass-martini:before{content:""}.fa-couch:before{content:""}.fa-cedi-sign:before{content:""}.fa-italic:before{content:""}.fa-church:before{content:""}.fa-comments-dollar:before{content:""}.fa-democrat:before{content:""}.fa-z:before{content:"Z"}.fa-person-skiing:before{content:""}.fa-skiing:before{content:""}.fa-road-lock:before{content:""}.fa-a:before{content:"A"}.fa-temperature-arrow-down:before{content:""}.fa-temperature-down:before{content:""}.fa-feather-pointed:before{content:""}.fa-feather-alt:before{content:""}.fa-p:before{content:"P"}.fa-snowflake:before{content:""}.fa-newspaper:before{content:""}.fa-rectangle-ad:before{content:""}.fa-ad:before{content:""}.fa-circle-arrow-right:before{content:""}.fa-arrow-circle-right:before{content:""}.fa-filter-circle-xmark:before{content:""}.fa-locust:before{content:""}.fa-sort:before{content:""}.fa-unsorted:before{content:""}.fa-list-ol:before{content:""}.fa-list-1-2:before{content:""}.fa-list-numeric:before{content:""}.fa-person-dress-burst:before{content:""}.fa-money-check-dollar:before{content:""}.fa-money-check-alt:before{content:""}.fa-vector-square:before{content:""}.fa-bread-slice:before{content:""}.fa-language:before{content:""}.fa-face-kiss-wink-heart:before{content:""}.fa-kiss-wink-heart:before{content:""}.fa-filter:before{content:""}.fa-question:before{content:"?"}.fa-file-signature:before{content:""}.fa-up-down-left-right:before{content:""}.fa-arrows-alt:before{content:""}.fa-house-chimney-user:before{content:""}.fa-hand-holding-heart:before{content:""}.fa-puzzle-piece:before{content:""}.fa-money-check:before{content:""}.fa-star-half-stroke:before{content:""}.fa-star-half-alt:before{content:""}.fa-code:before{content:""}.fa-whiskey-glass:before{content:""}.fa-glass-whiskey:before{content:""}.fa-building-circle-exclamation:before{content:""}.fa-magnifying-glass-chart:before{content:""}.fa-arrow-up-right-from-square:before{content:""}.fa-external-link:before{content:""}.fa-cubes-stacked:before{content:""}.fa-won-sign:before{content:""}.fa-krw:before{content:""}.fa-won:before{content:""}.fa-virus-covid:before{content:""}.fa-austral-sign:before{content:""}.fa-f:before{content:"F"}.fa-leaf:before{content:""}.fa-road:before{content:""}.fa-taxi:before{content:""}.fa-cab:before{content:""}.fa-person-circle-plus:before{content:""}.fa-chart-pie:before{content:""}.fa-pie-chart:before{content:""}.fa-bolt-lightning:before{content:""}.fa-sack-xmark:before{content:""}.fa-file-excel:before{content:""}.fa-file-contract:before{content:""}.fa-fish-fins:before{content:""}.fa-building-flag:before{content:""}.fa-face-grin-beam:before{content:""}.fa-grin-beam:before{content:""}.fa-object-ungroup:before{content:""}.fa-poop:before{content:""}.fa-location-pin:before{content:""}.fa-map-marker:before{content:""}.fa-kaaba:before{content:""}.fa-toilet-paper:before{content:""}.fa-helmet-safety:before{content:""}.fa-hard-hat:before{content:""}.fa-hat-hard:before{content:""}.fa-eject:before{content:""}.fa-circle-right:before{content:""}.fa-arrow-alt-circle-right:before{content:""}.fa-plane-circle-check:before{content:""}.fa-face-rolling-eyes:before{content:""}.fa-meh-rolling-eyes:before{content:""}.fa-object-group:before{content:""}.fa-chart-line:before{content:""}.fa-line-chart:before{content:""}.fa-mask-ventilator:before{content:""}.fa-arrow-right:before{content:""}.fa-signs-post:before{content:""}.fa-map-signs:before{content:""}.fa-cash-register:before{content:""}.fa-person-circle-question:before{content:""}.fa-h:before{content:"H"}.fa-tarp:before{content:""}.fa-screwdriver-wrench:before{content:""}.fa-tools:before{content:""}.fa-arrows-to-eye:before{content:""}.fa-plug-circle-bolt:before{content:""}.fa-heart:before{content:""}.fa-mars-and-venus:before{content:""}.fa-house-user:before{content:""}.fa-home-user:before{content:""}.fa-dumpster-fire:before{content:""}.fa-house-crack:before{content:""}.fa-martini-glass-citrus:before{content:""}.fa-cocktail:before{content:""}.fa-face-surprise:before{content:""}.fa-surprise:before{content:""}.fa-bottle-water:before{content:""}.fa-circle-pause:before{content:""}.fa-pause-circle:before{content:""}.fa-toilet-paper-slash:before{content:""}.fa-apple-whole:before{content:""}.fa-apple-alt:before{content:""}.fa-kitchen-set:before{content:""}.fa-r:before{content:"R"}.fa-temperature-quarter:before{content:""}.fa-temperature-1:before{content:""}.fa-thermometer-1:before{content:""}.fa-thermometer-quarter:before{content:""}.fa-cube:before{content:""}.fa-bitcoin-sign:before{content:""}.fa-shield-dog:before{content:""}.fa-solar-panel:before{content:""}.fa-lock-open:before{content:""}.fa-elevator:before{content:""}.fa-money-bill-transfer:before{content:""}.fa-money-bill-trend-up:before{content:""}.fa-house-flood-water-circle-arrow-right:before{content:""}.fa-square-poll-horizontal:before{content:""}.fa-poll-h:before{content:""}.fa-circle:before{content:""}.fa-backward-fast:before{content:""}.fa-fast-backward:before{content:""}.fa-recycle:before{content:""}.fa-user-astronaut:before{content:""}.fa-plane-slash:before{content:""}.fa-trademark:before{content:""}.fa-basketball:before{content:""}.fa-basketball-ball:before{content:""}.fa-satellite-dish:before{content:""}.fa-circle-up:before{content:""}.fa-arrow-alt-circle-up:before{content:""}.fa-mobile-screen-button:before{content:""}.fa-mobile-alt:before{content:""}.fa-volume-high:before{content:""}.fa-volume-up:before{content:""}.fa-users-rays:before{content:""}.fa-wallet:before{content:""}.fa-clipboard-check:before{content:""}.fa-file-audio:before{content:""}.fa-burger:before{content:""}.fa-hamburger:before{content:""}.fa-wrench:before{content:""}.fa-bugs:before{content:""}.fa-rupee-sign:before{content:""}.fa-rupee:before{content:""}.fa-file-image:before{content:""}.fa-circle-question:before{content:""}.fa-question-circle:before{content:""}.fa-plane-departure:before{content:""}.fa-handshake-slash:before{content:""}.fa-book-bookmark:before{content:""}.fa-code-branch:before{content:""}.fa-hat-cowboy:before{content:""}.fa-bridge:before{content:""}.fa-phone-flip:before{content:""}.fa-phone-alt:before{content:""}.fa-truck-front:before{content:""}.fa-cat:before{content:""}.fa-anchor-circle-exclamation:before{content:""}.fa-truck-field:before{content:""}.fa-route:before{content:""}.fa-clipboard-question:before{content:""}.fa-panorama:before{content:""}.fa-comment-medical:before{content:""}.fa-teeth-open:before{content:""}.fa-file-circle-minus:before{content:""}.fa-tags:before{content:""}.fa-wine-glass:before{content:""}.fa-forward-fast:before{content:""}.fa-fast-forward:before{content:""}.fa-face-meh-blank:before{content:""}.fa-meh-blank:before{content:""}.fa-square-parking:before{content:""}.fa-parking:before{content:""}.fa-house-signal:before{content:""}.fa-bars-progress:before{content:""}.fa-tasks-alt:before{content:""}.fa-faucet-drip:before{content:""}.fa-cart-flatbed:before{content:""}.fa-dolly-flatbed:before{content:""}.fa-ban-smoking:before{content:""}.fa-smoking-ban:before{content:""}.fa-terminal:before{content:""}.fa-mobile-button:before{content:""}.fa-house-medical-flag:before{content:""}.fa-basket-shopping:before{content:""}.fa-shopping-basket:before{content:""}.fa-tape:before{content:""}.fa-bus-simple:before{content:""}.fa-bus-alt:before{content:""}.fa-eye:before{content:""}.fa-face-sad-cry:before{content:""}.fa-sad-cry:before{content:""}.fa-audio-description:before{content:""}.fa-person-military-to-person:before{content:""}.fa-file-shield:before{content:""}.fa-user-slash:before{content:""}.fa-pen:before{content:""}.fa-tower-observation:before{content:""}.fa-file-code:before{content:""}.fa-signal:before{content:""}.fa-signal-5:before{content:""}.fa-signal-perfect:before{content:""}.fa-bus:before{content:""}.fa-heart-circle-xmark:before{content:""}.fa-house-chimney:before{content:""}.fa-home-lg:before{content:""}.fa-window-maximize:before{content:""}.fa-face-frown:before{content:""}.fa-frown:before{content:""}.fa-prescription:before{content:""}.fa-shop:before{content:""}.fa-store-alt:before{content:""}.fa-floppy-disk:before{content:""}.fa-save:before{content:""}.fa-vihara:before{content:""}.fa-scale-unbalanced:before{content:""}.fa-balance-scale-left:before{content:""}.fa-sort-up:before{content:""}.fa-sort-asc:before{content:""}.fa-comment-dots:before{content:""}.fa-commenting:before{content:""}.fa-plant-wilt:before{content:""}.fa-diamond:before{content:""}.fa-face-grin-squint:before{content:""}.fa-grin-squint:before{content:""}.fa-hand-holding-dollar:before{content:""}.fa-hand-holding-usd:before{content:""}.fa-bacterium:before{content:""}.fa-hand-pointer:before{content:""}.fa-drum-steelpan:before{content:""}.fa-hand-scissors:before{content:""}.fa-hands-praying:before{content:""}.fa-praying-hands:before{content:""}.fa-arrow-rotate-right:before{content:""}.fa-arrow-right-rotate:before{content:""}.fa-arrow-rotate-forward:before{content:""}.fa-redo:before{content:""}.fa-biohazard:before{content:""}.fa-location-crosshairs:before{content:""}.fa-location:before{content:""}.fa-mars-double:before{content:""}.fa-child-dress:before{content:""}.fa-users-between-lines:before{content:""}.fa-lungs-virus:before{content:""}.fa-face-grin-tears:before{content:""}.fa-grin-tears:before{content:""}.fa-phone:before{content:""}.fa-calendar-xmark:before{content:""}.fa-calendar-times:before{content:""}.fa-child-reaching:before{content:""}.fa-head-side-virus:before{content:""}.fa-user-gear:before{content:""}.fa-user-cog:before{content:""}.fa-arrow-up-1-9:before{content:""}.fa-sort-numeric-up:before{content:""}.fa-door-closed:before{content:""}.fa-shield-virus:before{content:""}.fa-dice-six:before{content:""}.fa-mosquito-net:before{content:""}.fa-bridge-water:before{content:""}.fa-person-booth:before{content:""}.fa-text-width:before{content:""}.fa-hat-wizard:before{content:""}.fa-pen-fancy:before{content:""}.fa-person-digging:before{content:""}.fa-digging:before{content:""}.fa-trash:before{content:""}.fa-gauge-simple:before{content:""}.fa-gauge-simple-med:before{content:""}.fa-tachometer-average:before{content:""}.fa-book-medical:before{content:""}.fa-poo:before{content:""}.fa-quote-right:before{content:""}.fa-quote-right-alt:before{content:""}.fa-shirt:before{content:""}.fa-t-shirt:before{content:""}.fa-tshirt:before{content:""}.fa-cubes:before{content:""}.fa-divide:before{content:""}.fa-tenge-sign:before{content:""}.fa-tenge:before{content:""}.fa-headphones:before{content:""}.fa-hands-holding:before{content:""}.fa-hands-clapping:before{content:""}.fa-republican:before{content:""}.fa-arrow-left:before{content:""}.fa-person-circle-xmark:before{content:""}.fa-ruler:before{content:""}.fa-align-left:before{content:""}.fa-dice-d6:before{content:""}.fa-restroom:before{content:""}.fa-j:before{content:"J"}.fa-users-viewfinder:before{content:""}.fa-file-video:before{content:""}.fa-up-right-from-square:before{content:""}.fa-external-link-alt:before{content:""}.fa-table-cells:before{content:""}.fa-th:before{content:""}.fa-file-pdf:before{content:""}.fa-book-bible:before{content:""}.fa-bible:before{content:""}.fa-o:before{content:"O"}.fa-suitcase-medical:before{content:""}.fa-medkit:before{content:""}.fa-user-secret:before{content:""}.fa-otter:before{content:""}.fa-person-dress:before{content:""}.fa-female:before{content:""}.fa-comment-dollar:before{content:""}.fa-business-time:before{content:""}.fa-briefcase-clock:before{content:""}.fa-table-cells-large:before{content:""}.fa-th-large:before{content:""}.fa-book-tanakh:before{content:""}.fa-tanakh:before{content:""}.fa-phone-volume:before{content:""}.fa-volume-control-phone:before{content:""}.fa-hat-cowboy-side:before{content:""}.fa-clipboard-user:before{content:""}.fa-child:before{content:""}.fa-lira-sign:before{content:""}.fa-satellite:before{content:""}.fa-plane-lock:before{content:""}.fa-tag:before{content:""}.fa-comment:before{content:""}.fa-cake-candles:before{content:""}.fa-birthday-cake:before{content:""}.fa-cake:before{content:""}.fa-envelope:before{content:""}.fa-angles-up:before{content:""}.fa-angle-double-up:before{content:""}.fa-paperclip:before{content:""}.fa-arrow-right-to-city:before{content:""}.fa-ribbon:before{content:""}.fa-lungs:before{content:""}.fa-arrow-up-9-1:before{content:""}.fa-sort-numeric-up-alt:before{content:""}.fa-litecoin-sign:before{content:""}.fa-border-none:before{content:""}.fa-circle-nodes:before{content:""}.fa-parachute-box:before{content:""}.fa-indent:before{content:""}.fa-truck-field-un:before{content:""}.fa-hourglass:before{content:""}.fa-hourglass-empty:before{content:""}.fa-mountain:before{content:""}.fa-user-doctor:before{content:""}.fa-user-md:before{content:""}.fa-circle-info:before{content:""}.fa-info-circle:before{content:""}.fa-cloud-meatball:before{content:""}.fa-camera:before{content:""}.fa-camera-alt:before{content:""}.fa-square-virus:before{content:""}.fa-meteor:before{content:""}.fa-car-on:before{content:""}.fa-sleigh:before{content:""}.fa-arrow-down-1-9:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-down:before{content:""}.fa-hand-holding-droplet:before{content:""}.fa-hand-holding-water:before{content:""}.fa-water:before{content:""}.fa-calendar-check:before{content:""}.fa-braille:before{content:""}.fa-prescription-bottle-medical:before{content:""}.fa-prescription-bottle-alt:before{content:""}.fa-landmark:before{content:""}.fa-truck:before{content:""}.fa-crosshairs:before{content:""}.fa-person-cane:before{content:""}.fa-tent:before{content:""}.fa-vest-patches:before{content:""}.fa-check-double:before{content:""}.fa-arrow-down-a-z:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-down:before{content:""}.fa-money-bill-wheat:before{content:""}.fa-cookie:before{content:""}.fa-arrow-rotate-left:before{content:""}.fa-arrow-left-rotate:before{content:""}.fa-arrow-rotate-back:before{content:""}.fa-arrow-rotate-backward:before{content:""}.fa-undo:before{content:""}.fa-hard-drive:before{content:""}.fa-hdd:before{content:""}.fa-face-grin-squint-tears:before{content:""}.fa-grin-squint-tears:before{content:""}.fa-dumbbell:before{content:""}.fa-rectangle-list:before{content:""}.fa-list-alt:before{content:""}.fa-tarp-droplet:before{content:""}.fa-house-medical-circle-check:before{content:""}.fa-person-skiing-nordic:before{content:""}.fa-skiing-nordic:before{content:""}.fa-calendar-plus:before{content:""}.fa-plane-arrival:before{content:""}.fa-circle-left:before{content:""}.fa-arrow-alt-circle-left:before{content:""}.fa-train-subway:before{content:""}.fa-subway:before{content:""}.fa-chart-gantt:before{content:""}.fa-indian-rupee-sign:before{content:""}.fa-indian-rupee:before{content:""}.fa-inr:before{content:""}.fa-crop-simple:before{content:""}.fa-crop-alt:before{content:""}.fa-money-bill-1:before{content:""}.fa-money-bill-alt:before{content:""}.fa-left-long:before{content:""}.fa-long-arrow-alt-left:before{content:""}.fa-dna:before{content:""}.fa-virus-slash:before{content:""}.fa-minus:before{content:""}.fa-subtract:before{content:""}.fa-chess:before{content:""}.fa-arrow-left-long:before{content:""}.fa-long-arrow-left:before{content:""}.fa-plug-circle-check:before{content:""}.fa-street-view:before{content:""}.fa-franc-sign:before{content:""}.fa-volume-off:before{content:""}.fa-hands-asl-interpreting:before{content:""}.fa-american-sign-language-interpreting:before{content:""}.fa-asl-interpreting:before{content:""}.fa-hands-american-sign-language-interpreting:before{content:""}.fa-gear:before{content:""}.fa-cog:before{content:""}.fa-droplet-slash:before{content:""}.fa-tint-slash:before{content:""}.fa-mosque:before{content:""}.fa-mosquito:before{content:""}.fa-star-of-david:before{content:""}.fa-person-military-rifle:before{content:""}.fa-cart-shopping:before{content:""}.fa-shopping-cart:before{content:""}.fa-vials:before{content:""}.fa-plug-circle-plus:before{content:""}.fa-place-of-worship:before{content:""}.fa-grip-vertical:before{content:""}.fa-arrow-turn-up:before{content:""}.fa-level-up:before{content:""}.fa-u:before{content:"U"}.fa-square-root-variable:before{content:""}.fa-square-root-alt:before{content:""}.fa-clock:before{content:""}.fa-clock-four:before{content:""}.fa-backward-step:before{content:""}.fa-step-backward:before{content:""}.fa-pallet:before{content:""}.fa-faucet:before{content:""}.fa-baseball-bat-ball:before{content:""}.fa-s:before{content:"S"}.fa-timeline:before{content:""}.fa-keyboard:before{content:""}.fa-caret-down:before{content:""}.fa-house-chimney-medical:before{content:""}.fa-clinic-medical:before{content:""}.fa-temperature-three-quarters:before{content:""}.fa-temperature-3:before{content:""}.fa-thermometer-3:before{content:""}.fa-thermometer-three-quarters:before{content:""}.fa-mobile-screen:before{content:""}.fa-mobile-android-alt:before{content:""}.fa-plane-up:before{content:""}.fa-piggy-bank:before{content:""}.fa-battery-half:before{content:""}.fa-battery-3:before{content:""}.fa-mountain-city:before{content:""}.fa-coins:before{content:""}.fa-khanda:before{content:""}.fa-sliders:before{content:""}.fa-sliders-h:before{content:""}.fa-folder-tree:before{content:""}.fa-network-wired:before{content:""}.fa-map-pin:before{content:""}.fa-hamsa:before{content:""}.fa-cent-sign:before{content:""}.fa-flask:before{content:""}.fa-person-pregnant:before{content:""}.fa-wand-sparkles:before{content:""}.fa-ellipsis-vertical:before{content:""}.fa-ellipsis-v:before{content:""}.fa-ticket:before{content:""}.fa-power-off:before{content:""}.fa-right-long:before{content:""}.fa-long-arrow-alt-right:before{content:""}.fa-flag-usa:before{content:""}.fa-laptop-file:before{content:""}.fa-tty:before{content:""}.fa-teletype:before{content:""}.fa-diagram-next:before{content:""}.fa-person-rifle:before{content:""}.fa-house-medical-circle-exclamation:before{content:""}.fa-closed-captioning:before{content:""}.fa-person-hiking:before{content:""}.fa-hiking:before{content:""}.fa-venus-double:before{content:""}.fa-images:before{content:""}.fa-calculator:before{content:""}.fa-people-pulling:before{content:""}.fa-n:before{content:"N"}.fa-cable-car:before{content:""}.fa-tram:before{content:""}.fa-cloud-rain:before{content:""}.fa-building-circle-xmark:before{content:""}.fa-ship:before{content:""}.fa-arrows-down-to-line:before{content:""}.fa-download:before{content:""}.fa-face-grin:before{content:""}.fa-grin:before{content:""}.fa-delete-left:before{content:""}.fa-backspace:before{content:""}.fa-eye-dropper:before{content:""}.fa-eye-dropper-empty:before{content:""}.fa-eyedropper:before{content:""}.fa-file-circle-check:before{content:""}.fa-forward:before{content:""}.fa-mobile:before{content:""}.fa-mobile-android:before{content:""}.fa-mobile-phone:before{content:""}.fa-face-meh:before{content:""}.fa-meh:before{content:""}.fa-align-center:before{content:""}.fa-book-skull:before{content:""}.fa-book-dead:before{content:""}.fa-id-card:before{content:""}.fa-drivers-license:before{content:""}.fa-outdent:before{content:""}.fa-dedent:before{content:""}.fa-heart-circle-exclamation:before{content:""}.fa-house:before{content:""}.fa-home:before{content:""}.fa-home-alt:before{content:""}.fa-home-lg-alt:before{content:""}.fa-calendar-week:before{content:""}.fa-laptop-medical:before{content:""}.fa-b:before{content:"B"}.fa-file-medical:before{content:""}.fa-dice-one:before{content:""}.fa-kiwi-bird:before{content:""}.fa-arrow-right-arrow-left:before{content:""}.fa-exchange:before{content:""}.fa-rotate-right:before{content:""}.fa-redo-alt:before{content:""}.fa-rotate-forward:before{content:""}.fa-utensils:before{content:""}.fa-cutlery:before{content:""}.fa-arrow-up-wide-short:before{content:""}.fa-sort-amount-up:before{content:""}.fa-mill-sign:before{content:""}.fa-bowl-rice:before{content:""}.fa-skull:before{content:""}.fa-tower-broadcast:before{content:""}.fa-broadcast-tower:before{content:""}.fa-truck-pickup:before{content:""}.fa-up-long:before{content:""}.fa-long-arrow-alt-up:before{content:""}.fa-stop:before{content:""}.fa-code-merge:before{content:""}.fa-upload:before{content:""}.fa-hurricane:before{content:""}.fa-mound:before{content:""}.fa-toilet-portable:before{content:""}.fa-compact-disc:before{content:""}.fa-file-arrow-down:before{content:""}.fa-file-download:before{content:""}.fa-caravan:before{content:""}.fa-shield-cat:before{content:""}.fa-bolt:before{content:""}.fa-zap:before{content:""}.fa-glass-water:before{content:""}.fa-oil-well:before{content:""}.fa-vault:before{content:""}.fa-mars:before{content:""}.fa-toilet:before{content:""}.fa-plane-circle-xmark:before{content:""}.fa-yen-sign:before{content:""}.fa-cny:before{content:""}.fa-jpy:before{content:""}.fa-rmb:before{content:""}.fa-yen:before{content:""}.fa-ruble-sign:before{content:""}.fa-rouble:before{content:""}.fa-rub:before{content:""}.fa-ruble:before{content:""}.fa-sun:before{content:""}.fa-guitar:before{content:""}.fa-face-laugh-wink:before{content:""}.fa-laugh-wink:before{content:""}.fa-horse-head:before{content:""}.fa-bore-hole:before{content:""}.fa-industry:before{content:""}.fa-circle-down:before{content:""}.fa-arrow-alt-circle-down:before{content:""}.fa-arrows-turn-to-dots:before{content:""}.fa-florin-sign:before{content:""}.fa-arrow-down-short-wide:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-amount-down-alt:before{content:""}.fa-less-than:before{content:"<"}.fa-angle-down:before{content:""}.fa-car-tunnel:before{content:""}.fa-head-side-cough:before{content:""}.fa-grip-lines:before{content:""}.fa-thumbs-down:before{content:""}.fa-user-lock:before{content:""}.fa-arrow-right-long:before{content:""}.fa-long-arrow-right:before{content:""}.fa-anchor-circle-xmark:before{content:""}.fa-ellipsis:before{content:""}.fa-ellipsis-h:before{content:""}.fa-chess-pawn:before{content:""}.fa-kit-medical:before{content:""}.fa-first-aid:before{content:""}.fa-person-through-window:before{content:""}.fa-toolbox:before{content:""}.fa-hands-holding-circle:before{content:""}.fa-bug:before{content:""}.fa-credit-card:before{content:""}.fa-credit-card-alt:before{content:""}.fa-car:before{content:""}.fa-automobile:before{content:""}.fa-hand-holding-hand:before{content:""}.fa-book-open-reader:before{content:""}.fa-book-reader:before{content:""}.fa-mountain-sun:before{content:""}.fa-arrows-left-right-to-line:before{content:""}.fa-dice-d20:before{content:""}.fa-truck-droplet:before{content:""}.fa-file-circle-xmark:before{content:""}.fa-temperature-arrow-up:before{content:""}.fa-temperature-up:before{content:""}.fa-medal:before{content:""}.fa-bed:before{content:""}.fa-square-h:before{content:""}.fa-h-square:before{content:""}.fa-podcast:before{content:""}.fa-temperature-full:before{content:""}.fa-temperature-4:before{content:""}.fa-thermometer-4:before{content:""}.fa-thermometer-full:before{content:""}.fa-bell:before{content:""}.fa-superscript:before{content:""}.fa-plug-circle-xmark:before{content:""}.fa-star-of-life:before{content:""}.fa-phone-slash:before{content:""}.fa-paint-roller:before{content:""}.fa-handshake-angle:before{content:""}.fa-hands-helping:before{content:""}.fa-location-dot:before{content:""}.fa-map-marker-alt:before{content:""}.fa-file:before{content:""}.fa-greater-than:before{content:">"}.fa-person-swimming:before{content:""}.fa-swimmer:before{content:""}.fa-arrow-down:before{content:""}.fa-droplet:before{content:""}.fa-tint:before{content:""}.fa-eraser:before{content:""}.fa-earth-americas:before{content:""}.fa-earth:before{content:""}.fa-earth-america:before{content:""}.fa-globe-americas:before{content:""}.fa-person-burst:before{content:""}.fa-dove:before{content:""}.fa-battery-empty:before{content:""}.fa-battery-0:before{content:""}.fa-socks:before{content:""}.fa-inbox:before{content:""}.fa-section:before{content:""}.fa-gauge-high:before{content:""}.fa-tachometer-alt:before{content:""}.fa-tachometer-alt-fast:before{content:""}.fa-envelope-open-text:before{content:""}.fa-hospital:before{content:""}.fa-hospital-alt:before{content:""}.fa-hospital-wide:before{content:""}.fa-wine-bottle:before{content:""}.fa-chess-rook:before{content:""}.fa-bars-staggered:before{content:""}.fa-reorder:before{content:""}.fa-stream:before{content:""}.fa-dharmachakra:before{content:""}.fa-hotdog:before{content:""}.fa-person-walking-with-cane:before{content:""}.fa-blind:before{content:""}.fa-drum:before{content:""}.fa-ice-cream:before{content:""}.fa-heart-circle-bolt:before{content:""}.fa-fax:before{content:""}.fa-paragraph:before{content:""}.fa-check-to-slot:before{content:""}.fa-vote-yea:before{content:""}.fa-star-half:before{content:""}.fa-boxes-stacked:before{content:""}.fa-boxes:before{content:""}.fa-boxes-alt:before{content:""}.fa-link:before{content:""}.fa-chain:before{content:""}.fa-ear-listen:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-tree-city:before{content:""}.fa-play:before{content:""}.fa-font:before{content:""}.fa-rupiah-sign:before{content:""}.fa-magnifying-glass:before{content:""}.fa-search:before{content:""}.fa-table-tennis-paddle-ball:before{content:""}.fa-ping-pong-paddle-ball:before{content:""}.fa-table-tennis:before{content:""}.fa-person-dots-from-line:before{content:""}.fa-diagnoses:before{content:""}.fa-trash-can-arrow-up:before{content:""}.fa-trash-restore-alt:before{content:""}.fa-naira-sign:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-walkie-talkie:before{content:""}.fa-file-pen:before{content:""}.fa-file-edit:before{content:""}.fa-receipt:before{content:""}.fa-square-pen:before{content:""}.fa-pen-square:before{content:""}.fa-pencil-square:before{content:""}.fa-suitcase-rolling:before{content:""}.fa-person-circle-exclamation:before{content:""}.fa-chevron-down:before{content:""}.fa-battery-full:before{content:""}.fa-battery:before{content:""}.fa-battery-5:before{content:""}.fa-skull-crossbones:before{content:""}.fa-code-compare:before{content:""}.fa-list-ul:before{content:""}.fa-list-dots:before{content:""}.fa-school-lock:before{content:""}.fa-tower-cell:before{content:""}.fa-down-long:before{content:""}.fa-long-arrow-alt-down:before{content:""}.fa-ranking-star:before{content:""}.fa-chess-king:before{content:""}.fa-person-harassing:before{content:""}.fa-brazilian-real-sign:before{content:""}.fa-landmark-dome:before{content:""}.fa-landmark-alt:before{content:""}.fa-arrow-up:before{content:""}.fa-tv:before{content:""}.fa-television:before{content:""}.fa-tv-alt:before{content:""}.fa-shrimp:before{content:""}.fa-list-check:before{content:""}.fa-tasks:before{content:""}.fa-jug-detergent:before{content:""}.fa-circle-user:before{content:""}.fa-user-circle:before{content:""}.fa-user-shield:before{content:""}.fa-wind:before{content:""}.fa-car-burst:before{content:""}.fa-car-crash:before{content:""}.fa-y:before{content:"Y"}.fa-person-snowboarding:before{content:""}.fa-snowboarding:before{content:""}.fa-truck-fast:before{content:""}.fa-shipping-fast:before{content:""}.fa-fish:before{content:""}.fa-user-graduate:before{content:""}.fa-circle-half-stroke:before{content:""}.fa-adjust:before{content:""}.fa-clapperboard:before{content:""}.fa-circle-radiation:before{content:""}.fa-radiation-alt:before{content:""}.fa-baseball:before{content:""}.fa-baseball-ball:before{content:""}.fa-jet-fighter-up:before{content:""}.fa-diagram-project:before{content:""}.fa-project-diagram:before{content:""}.fa-copy:before{content:""}.fa-volume-xmark:before{content:""}.fa-volume-mute:before{content:""}.fa-volume-times:before{content:""}.fa-hand-sparkles:before{content:""}.fa-grip:before{content:""}.fa-grip-horizontal:before{content:""}.fa-share-from-square:before{content:""}.fa-share-square:before{content:""}.fa-child-combatant:before{content:""}.fa-child-rifle:before{content:""}.fa-gun:before{content:""}.fa-square-phone:before{content:""}.fa-phone-square:before{content:""}.fa-plus:before{content:"+"}.fa-add:before{content:"+"}.fa-expand:before{content:""}.fa-computer:before{content:""}.fa-xmark:before{content:""}.fa-close:before{content:""}.fa-multiply:before{content:""}.fa-remove:before{content:""}.fa-times:before{content:""}.fa-arrows-up-down-left-right:before{content:""}.fa-arrows:before{content:""}.fa-chalkboard-user:before{content:""}.fa-chalkboard-teacher:before{content:""}.fa-peso-sign:before{content:""}.fa-building-shield:before{content:""}.fa-baby:before{content:""}.fa-users-line:before{content:""}.fa-quote-left:before{content:""}.fa-quote-left-alt:before{content:""}.fa-tractor:before{content:""}.fa-trash-arrow-up:before{content:""}.fa-trash-restore:before{content:""}.fa-arrow-down-up-lock:before{content:""}.fa-lines-leaning:before{content:""}.fa-ruler-combined:before{content:""}.fa-copyright:before{content:""}.fa-equals:before{content:"="}.fa-blender:before{content:""}.fa-teeth:before{content:""}.fa-shekel-sign:before{content:""}.fa-ils:before{content:""}.fa-shekel:before{content:""}.fa-sheqel:before{content:""}.fa-sheqel-sign:before{content:""}.fa-map:before{content:""}.fa-rocket:before{content:""}.fa-photo-film:before{content:""}.fa-photo-video:before{content:""}.fa-folder-minus:before{content:""}.fa-store:before{content:""}.fa-arrow-trend-up:before{content:""}.fa-plug-circle-minus:before{content:""}.fa-sign-hanging:before{content:""}.fa-sign:before{content:""}.fa-bezier-curve:before{content:""}.fa-bell-slash:before{content:""}.fa-tablet:before{content:""}.fa-tablet-android:before{content:""}.fa-school-flag:before{content:""}.fa-fill:before{content:""}.fa-angle-up:before{content:""}.fa-drumstick-bite:before{content:""}.fa-holly-berry:before{content:""}.fa-chevron-left:before{content:""}.fa-bacteria:before{content:""}.fa-hand-lizard:before{content:""}.fa-notdef:before{content:""}.fa-disease:before{content:""}.fa-briefcase-medical:before{content:""}.fa-genderless:before{content:""}.fa-chevron-right:before{content:""}.fa-retweet:before{content:""}.fa-car-rear:before{content:""}.fa-car-alt:before{content:""}.fa-pump-soap:before{content:""}.fa-video-slash:before{content:""}.fa-battery-quarter:before{content:""}.fa-battery-2:before{content:""}.fa-radio:before{content:""}.fa-baby-carriage:before{content:""}.fa-carriage-baby:before{content:""}.fa-traffic-light:before{content:""}.fa-thermometer:before{content:""}.fa-vr-cardboard:before{content:""}.fa-hand-middle-finger:before{content:""}.fa-percent:before{content:"%"}.fa-percentage:before{content:"%"}.fa-truck-moving:before{content:""}.fa-glass-water-droplet:before{content:""}.fa-display:before{content:""}.fa-face-smile:before{content:""}.fa-smile:before{content:""}.fa-thumbtack:before{content:""}.fa-thumb-tack:before{content:""}.fa-trophy:before{content:""}.fa-person-praying:before{content:""}.fa-pray:before{content:""}.fa-hammer:before{content:""}.fa-hand-peace:before{content:""}.fa-rotate:before{content:""}.fa-sync-alt:before{content:""}.fa-spinner:before{content:""}.fa-robot:before{content:""}.fa-peace:before{content:""}.fa-gears:before{content:""}.fa-cogs:before{content:""}.fa-warehouse:before{content:""}.fa-arrow-up-right-dots:before{content:""}.fa-splotch:before{content:""}.fa-face-grin-hearts:before{content:""}.fa-grin-hearts:before{content:""}.fa-dice-four:before{content:""}.fa-sim-card:before{content:""}.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-mercury:before{content:""}.fa-arrow-turn-down:before{content:""}.fa-level-down:before{content:""}.fa-person-falling-burst:before{content:""}.fa-award:before{content:""}.fa-ticket-simple:before{content:""}.fa-ticket-alt:before{content:""}.fa-building:before{content:""}.fa-angles-left:before{content:""}.fa-angle-double-left:before{content:""}.fa-qrcode:before{content:""}.fa-clock-rotate-left:before{content:""}.fa-history:before{content:""}.fa-face-grin-beam-sweat:before{content:""}.fa-grin-beam-sweat:before{content:""}.fa-file-export:before{content:""}.fa-arrow-right-from-file:before{content:""}.fa-shield:before{content:""}.fa-shield-blank:before{content:""}.fa-arrow-up-short-wide:before{content:""}.fa-sort-amount-up-alt:before{content:""}.fa-house-medical:before{content:""}.fa-golf-ball-tee:before{content:""}.fa-golf-ball:before{content:""}.fa-circle-chevron-left:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-house-chimney-window:before{content:""}.fa-pen-nib:before{content:""}.fa-tent-arrow-turn-left:before{content:""}.fa-tents:before{content:""}.fa-wand-magic:before{content:""}.fa-magic:before{content:""}.fa-dog:before{content:""}.fa-carrot:before{content:""}.fa-moon:before{content:""}.fa-wine-glass-empty:before{content:""}.fa-wine-glass-alt:before{content:""}.fa-cheese:before{content:""}.fa-yin-yang:before{content:""}.fa-music:before{content:""}.fa-code-commit:before{content:""}.fa-temperature-low:before{content:""}.fa-person-biking:before{content:""}.fa-biking:before{content:""}.fa-broom:before{content:""}.fa-shield-heart:before{content:""}.fa-gopuram:before{content:""}.fa-earth-oceania:before{content:""}.fa-globe-oceania:before{content:""}.fa-square-xmark:before{content:""}.fa-times-square:before{content:""}.fa-xmark-square:before{content:""}.fa-hashtag:before{content:"#"}.fa-up-right-and-down-left-from-center:before{content:""}.fa-expand-alt:before{content:""}.fa-oil-can:before{content:""}.fa-t:before{content:"T"}.fa-hippo:before{content:""}.fa-chart-column:before{content:""}.fa-infinity:before{content:""}.fa-vial-circle-check:before{content:""}.fa-person-arrow-down-to-line:before{content:""}.fa-voicemail:before{content:""}.fa-fan:before{content:""}.fa-person-walking-luggage:before{content:""}.fa-up-down:before{content:""}.fa-arrows-alt-v:before{content:""}.fa-cloud-moon-rain:before{content:""}.fa-calendar:before{content:""}.fa-trailer:before{content:""}.fa-bahai:before{content:""}.fa-haykal:before{content:""}.fa-sd-card:before{content:""}.fa-dragon:before{content:""}.fa-shoe-prints:before{content:""}.fa-circle-plus:before{content:""}.fa-plus-circle:before{content:""}.fa-face-grin-tongue-wink:before{content:""}.fa-grin-tongue-wink:before{content:""}.fa-hand-holding:before{content:""}.fa-plug-circle-exclamation:before{content:""}.fa-link-slash:before{content:""}.fa-chain-broken:before{content:""}.fa-chain-slash:before{content:""}.fa-unlink:before{content:""}.fa-clone:before{content:""}.fa-person-walking-arrow-loop-left:before{content:""}.fa-arrow-up-z-a:before{content:""}.fa-sort-alpha-up-alt:before{content:""}.fa-fire-flame-curved:before{content:""}.fa-fire-alt:before{content:""}.fa-tornado:before{content:""}.fa-file-circle-plus:before{content:""}.fa-book-quran:before{content:""}.fa-quran:before{content:""}.fa-anchor:before{content:""}.fa-border-all:before{content:""}.fa-face-angry:before{content:""}.fa-angry:before{content:""}.fa-cookie-bite:before{content:""}.fa-arrow-trend-down:before{content:""}.fa-rss:before{content:""}.fa-feed:before{content:""}.fa-draw-polygon:before{content:""}.fa-scale-balanced:before{content:""}.fa-balance-scale:before{content:""}.fa-gauge-simple-high:before{content:""}.fa-tachometer:before{content:""}.fa-tachometer-fast:before{content:""}.fa-shower:before{content:""}.fa-desktop:before{content:""}.fa-desktop-alt:before{content:""}.fa-m:before{content:"M"}.fa-table-list:before{content:""}.fa-th-list:before{content:""}.fa-comment-sms:before{content:""}.fa-sms:before{content:""}.fa-book:before{content:""}.fa-user-plus:before{content:""}.fa-check:before{content:""}.fa-battery-three-quarters:before{content:""}.fa-battery-4:before{content:""}.fa-house-circle-check:before{content:""}.fa-angle-left:before{content:""}.fa-diagram-successor:before{content:""}.fa-truck-arrow-right:before{content:""}.fa-arrows-split-up-and-left:before{content:""}.fa-hand-fist:before{content:""}.fa-fist-raised:before{content:""}.fa-cloud-moon:before{content:""}.fa-briefcase:before{content:""}.fa-person-falling:before{content:""}.fa-image-portrait:before{content:""}.fa-portrait:before{content:""}.fa-user-tag:before{content:""}.fa-rug:before{content:""}.fa-earth-europe:before{content:""}.fa-globe-europe:before{content:""}.fa-cart-flatbed-suitcase:before{content:""}.fa-luggage-cart:before{content:""}.fa-rectangle-xmark:before{content:""}.fa-rectangle-times:before{content:""}.fa-times-rectangle:before{content:""}.fa-window-close:before{content:""}.fa-baht-sign:before{content:""}.fa-book-open:before{content:""}.fa-book-journal-whills:before{content:""}.fa-journal-whills:before{content:""}.fa-handcuffs:before{content:""}.fa-triangle-exclamation:before{content:""}.fa-exclamation-triangle:before{content:""}.fa-warning:before{content:""}.fa-database:before{content:""}.fa-share:before{content:""}.fa-mail-forward:before{content:""}.fa-bottle-droplet:before{content:""}.fa-mask-face:before{content:""}.fa-hill-rockslide:before{content:""}.fa-right-left:before{content:""}.fa-exchange-alt:before{content:""}.fa-paper-plane:before{content:""}.fa-road-circle-exclamation:before{content:""}.fa-dungeon:before{content:""}.fa-align-right:before{content:""}.fa-money-bill-1-wave:before{content:""}.fa-money-bill-wave-alt:before{content:""}.fa-life-ring:before{content:""}.fa-hands:before{content:""}.fa-sign-language:before{content:""}.fa-signing:before{content:""}.fa-calendar-day:before{content:""}.fa-water-ladder:before{content:""}.fa-ladder-water:before{content:""}.fa-swimming-pool:before{content:""}.fa-arrows-up-down:before{content:""}.fa-arrows-v:before{content:""}.fa-face-grimace:before{content:""}.fa-grimace:before{content:""}.fa-wheelchair-move:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-turn-down:before{content:""}.fa-level-down-alt:before{content:""}.fa-person-walking-arrow-right:before{content:""}.fa-square-envelope:before{content:""}.fa-envelope-square:before{content:""}.fa-dice:before{content:""}.fa-bowling-ball:before{content:""}.fa-brain:before{content:""}.fa-bandage:before{content:""}.fa-band-aid:before{content:""}.fa-calendar-minus:before{content:""}.fa-circle-xmark:before{content:""}.fa-times-circle:before{content:""}.fa-xmark-circle:before{content:""}.fa-gifts:before{content:""}.fa-hotel:before{content:""}.fa-earth-asia:before{content:""}.fa-globe-asia:before{content:""}.fa-id-card-clip:before{content:""}.fa-id-card-alt:before{content:""}.fa-magnifying-glass-plus:before{content:""}.fa-search-plus:before{content:""}.fa-thumbs-up:before{content:""}.fa-user-clock:before{content:""}.fa-hand-dots:before{content:""}.fa-allergies:before{content:""}.fa-file-invoice:before{content:""}.fa-window-minimize:before{content:""}.fa-mug-saucer:before{content:""}.fa-coffee:before{content:""}.fa-brush:before{content:""}.fa-mask:before{content:""}.fa-magnifying-glass-minus:before{content:""}.fa-search-minus:before{content:""}.fa-ruler-vertical:before{content:""}.fa-user-large:before{content:""}.fa-user-alt:before{content:""}.fa-train-tram:before{content:""}.fa-user-nurse:before{content:""}.fa-syringe:before{content:""}.fa-cloud-sun:before{content:""}.fa-stopwatch-20:before{content:""}.fa-square-full:before{content:""}.fa-magnet:before{content:""}.fa-jar:before{content:""}.fa-note-sticky:before{content:""}.fa-sticky-note:before{content:""}.fa-bug-slash:before{content:""}.fa-arrow-up-from-water-pump:before{content:""}.fa-bone:before{content:""}.fa-user-injured:before{content:""}.fa-face-sad-tear:before{content:""}.fa-sad-tear:before{content:""}.fa-plane:before{content:""}.fa-tent-arrows-down:before{content:""}.fa-exclamation:before{content:"!"}.fa-arrows-spin:before{content:""}.fa-print:before{content:""}.fa-turkish-lira-sign:before{content:""}.fa-try:before{content:""}.fa-turkish-lira:before{content:""}.fa-dollar-sign:before{content:"$"}.fa-dollar:before{content:"$"}.fa-usd:before{content:"$"}.fa-x:before{content:"X"}.fa-magnifying-glass-dollar:before{content:""}.fa-search-dollar:before{content:""}.fa-users-gear:before{content:""}.fa-users-cog:before{content:""}.fa-person-military-pointing:before{content:""}.fa-building-columns:before{content:""}.fa-bank:before{content:""}.fa-institution:before{content:""}.fa-museum:before{content:""}.fa-university:before{content:""}.fa-umbrella:before{content:""}.fa-trowel:before{content:""}.fa-d:before{content:"D"}.fa-stapler:before{content:""}.fa-masks-theater:before{content:""}.fa-theater-masks:before{content:""}.fa-kip-sign:before{content:""}.fa-hand-point-left:before{content:""}.fa-handshake-simple:before{content:""}.fa-handshake-alt:before{content:""}.fa-jet-fighter:before{content:""}.fa-fighter-jet:before{content:""}.fa-square-share-nodes:before{content:""}.fa-share-alt-square:before{content:""}.fa-barcode:before{content:""}.fa-plus-minus:before{content:""}.fa-video:before{content:""}.fa-video-camera:before{content:""}.fa-graduation-cap:before{content:""}.fa-mortar-board:before{content:""}.fa-hand-holding-medical:before{content:""}.fa-person-circle-check:before{content:""}.fa-turn-up:before{content:""}.fa-level-up-alt:before{content:""}.sr-only,.fa-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sr-only-focusable:not(:focus),.fa-sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:root,:host{--fa-style-family-brands: "Font Awesome 6 Brands";--fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(/static/vue3/assets/fa-brands-400-C99Yv4gD.woff2) format("woff2"),url(/static/vue3/assets/fa-brands-400-DtZKBM2a.ttf) format("truetype")}.fab,.fa-brands{font-weight:400}.fa-monero:before{content:""}.fa-hooli:before{content:""}.fa-yelp:before{content:""}.fa-cc-visa:before{content:""}.fa-lastfm:before{content:""}.fa-shopware:before{content:""}.fa-creative-commons-nc:before{content:""}.fa-aws:before{content:""}.fa-redhat:before{content:""}.fa-yoast:before{content:""}.fa-cloudflare:before{content:""}.fa-ups:before{content:""}.fa-pixiv:before{content:""}.fa-wpexplorer:before{content:""}.fa-dyalog:before{content:""}.fa-bity:before{content:""}.fa-stackpath:before{content:""}.fa-buysellads:before{content:""}.fa-first-order:before{content:""}.fa-modx:before{content:""}.fa-guilded:before{content:""}.fa-vnv:before{content:""}.fa-square-js:before{content:""}.fa-js-square:before{content:""}.fa-microsoft:before{content:""}.fa-qq:before{content:""}.fa-orcid:before{content:""}.fa-java:before{content:""}.fa-invision:before{content:""}.fa-creative-commons-pd-alt:before{content:""}.fa-centercode:before{content:""}.fa-glide-g:before{content:""}.fa-drupal:before{content:""}.fa-hire-a-helper:before{content:""}.fa-creative-commons-by:before{content:""}.fa-unity:before{content:""}.fa-whmcs:before{content:""}.fa-rocketchat:before{content:""}.fa-vk:before{content:""}.fa-untappd:before{content:""}.fa-mailchimp:before{content:""}.fa-css3-alt:before{content:""}.fa-square-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-vimeo-v:before{content:""}.fa-contao:before{content:""}.fa-square-font-awesome:before{content:""}.fa-deskpro:before{content:""}.fa-brave:before{content:""}.fa-sistrix:before{content:""}.fa-square-instagram:before{content:""}.fa-instagram-square:before{content:""}.fa-battle-net:before{content:""}.fa-the-red-yeti:before{content:""}.fa-square-hacker-news:before{content:""}.fa-hacker-news-square:before{content:""}.fa-edge:before{content:""}.fa-threads:before{content:""}.fa-napster:before{content:""}.fa-square-snapchat:before{content:""}.fa-snapchat-square:before{content:""}.fa-google-plus-g:before{content:""}.fa-artstation:before{content:""}.fa-markdown:before{content:""}.fa-sourcetree:before{content:""}.fa-google-plus:before{content:""}.fa-diaspora:before{content:""}.fa-foursquare:before{content:""}.fa-stack-overflow:before{content:""}.fa-github-alt:before{content:""}.fa-phoenix-squadron:before{content:""}.fa-pagelines:before{content:""}.fa-algolia:before{content:""}.fa-red-river:before{content:""}.fa-creative-commons-sa:before{content:""}.fa-safari:before{content:""}.fa-google:before{content:""}.fa-square-font-awesome-stroke:before{content:""}.fa-font-awesome-alt:before{content:""}.fa-atlassian:before{content:""}.fa-linkedin-in:before{content:""}.fa-digital-ocean:before{content:""}.fa-nimblr:before{content:""}.fa-chromecast:before{content:""}.fa-evernote:before{content:""}.fa-hacker-news:before{content:""}.fa-creative-commons-sampling:before{content:""}.fa-adversal:before{content:""}.fa-creative-commons:before{content:""}.fa-watchman-monitoring:before{content:""}.fa-fonticons:before{content:""}.fa-weixin:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-codepen:before{content:""}.fa-git-alt:before{content:""}.fa-lyft:before{content:""}.fa-rev:before{content:""}.fa-windows:before{content:""}.fa-wizards-of-the-coast:before{content:""}.fa-square-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-meetup:before{content:""}.fa-centos:before{content:""}.fa-adn:before{content:""}.fa-cloudsmith:before{content:""}.fa-opensuse:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-square-dribbble:before{content:""}.fa-dribbble-square:before{content:""}.fa-codiepie:before{content:""}.fa-node:before{content:""}.fa-mix:before{content:""}.fa-steam:before{content:""}.fa-cc-apple-pay:before{content:""}.fa-scribd:before{content:""}.fa-debian:before{content:""}.fa-openid:before{content:""}.fa-instalod:before{content:""}.fa-expeditedssl:before{content:""}.fa-sellcast:before{content:""}.fa-square-twitter:before{content:""}.fa-twitter-square:before{content:""}.fa-r-project:before{content:""}.fa-delicious:before{content:""}.fa-freebsd:before{content:""}.fa-vuejs:before{content:""}.fa-accusoft:before{content:""}.fa-ioxhost:before{content:""}.fa-fonticons-fi:before{content:""}.fa-app-store:before{content:""}.fa-cc-mastercard:before{content:""}.fa-itunes-note:before{content:""}.fa-golang:before{content:""}.fa-kickstarter:before{content:""}.fa-grav:before{content:""}.fa-weibo:before{content:""}.fa-uncharted:before{content:""}.fa-firstdraft:before{content:""}.fa-square-youtube:before{content:""}.fa-youtube-square:before{content:""}.fa-wikipedia-w:before{content:""}.fa-wpressr:before{content:""}.fa-rendact:before{content:""}.fa-angellist:before{content:""}.fa-galactic-republic:before{content:""}.fa-nfc-directional:before{content:""}.fa-skype:before{content:""}.fa-joget:before{content:""}.fa-fedora:before{content:""}.fa-stripe-s:before{content:""}.fa-meta:before{content:""}.fa-laravel:before{content:""}.fa-hotjar:before{content:""}.fa-bluetooth-b:before{content:""}.fa-square-letterboxd:before{content:""}.fa-sticker-mule:before{content:""}.fa-creative-commons-zero:before{content:""}.fa-hips:before{content:""}.fa-behance:before{content:""}.fa-reddit:before{content:""}.fa-discord:before{content:""}.fa-chrome:before{content:""}.fa-app-store-ios:before{content:""}.fa-cc-discover:before{content:""}.fa-wpbeginner:before{content:""}.fa-confluence:before{content:""}.fa-shoelace:before{content:""}.fa-mdb:before{content:""}.fa-dochub:before{content:""}.fa-accessible-icon:before{content:""}.fa-ebay:before{content:""}.fa-amazon:before{content:""}.fa-unsplash:before{content:""}.fa-yarn:before{content:""}.fa-square-steam:before{content:""}.fa-steam-square:before{content:""}.fa-500px:before{content:""}.fa-square-vimeo:before{content:""}.fa-vimeo-square:before{content:""}.fa-asymmetrik:before{content:""}.fa-font-awesome:before{content:""}.fa-font-awesome-flag:before{content:""}.fa-font-awesome-logo-full:before{content:""}.fa-gratipay:before{content:""}.fa-apple:before{content:""}.fa-hive:before{content:""}.fa-gitkraken:before{content:""}.fa-keybase:before{content:""}.fa-apple-pay:before{content:""}.fa-padlet:before{content:""}.fa-amazon-pay:before{content:""}.fa-square-github:before{content:""}.fa-github-square:before{content:""}.fa-stumbleupon:before{content:""}.fa-fedex:before{content:""}.fa-phoenix-framework:before{content:""}.fa-shopify:before{content:""}.fa-neos:before{content:""}.fa-square-threads:before{content:""}.fa-hackerrank:before{content:""}.fa-researchgate:before{content:""}.fa-swift:before{content:""}.fa-angular:before{content:""}.fa-speakap:before{content:""}.fa-angrycreative:before{content:""}.fa-y-combinator:before{content:""}.fa-empire:before{content:""}.fa-envira:before{content:""}.fa-google-scholar:before{content:""}.fa-square-gitlab:before{content:""}.fa-gitlab-square:before{content:""}.fa-studiovinari:before{content:""}.fa-pied-piper:before{content:""}.fa-wordpress:before{content:""}.fa-product-hunt:before{content:""}.fa-firefox:before{content:""}.fa-linode:before{content:""}.fa-goodreads:before{content:""}.fa-square-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-jsfiddle:before{content:""}.fa-sith:before{content:""}.fa-themeisle:before{content:""}.fa-page4:before{content:""}.fa-hashnode:before{content:""}.fa-react:before{content:""}.fa-cc-paypal:before{content:""}.fa-squarespace:before{content:""}.fa-cc-stripe:before{content:""}.fa-creative-commons-share:before{content:""}.fa-bitcoin:before{content:""}.fa-keycdn:before{content:""}.fa-opera:before{content:""}.fa-itch-io:before{content:""}.fa-umbraco:before{content:""}.fa-galactic-senate:before{content:""}.fa-ubuntu:before{content:""}.fa-draft2digital:before{content:""}.fa-stripe:before{content:""}.fa-houzz:before{content:""}.fa-gg:before{content:""}.fa-dhl:before{content:""}.fa-square-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-xing:before{content:""}.fa-blackberry:before{content:""}.fa-creative-commons-pd:before{content:""}.fa-playstation:before{content:""}.fa-quinscape:before{content:""}.fa-less:before{content:""}.fa-blogger-b:before{content:""}.fa-opencart:before{content:""}.fa-vine:before{content:""}.fa-signal-messenger:before{content:""}.fa-paypal:before{content:""}.fa-gitlab:before{content:""}.fa-typo3:before{content:""}.fa-reddit-alien:before{content:""}.fa-yahoo:before{content:""}.fa-dailymotion:before{content:""}.fa-affiliatetheme:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-bootstrap:before{content:""}.fa-odnoklassniki:before{content:""}.fa-nfc-symbol:before{content:""}.fa-mintbit:before{content:""}.fa-ethereum:before{content:""}.fa-speaker-deck:before{content:""}.fa-creative-commons-nc-eu:before{content:""}.fa-patreon:before{content:""}.fa-avianex:before{content:""}.fa-ello:before{content:""}.fa-gofore:before{content:""}.fa-bimobject:before{content:""}.fa-brave-reverse:before{content:""}.fa-facebook-f:before{content:""}.fa-square-google-plus:before{content:""}.fa-google-plus-square:before{content:""}.fa-mandalorian:before{content:""}.fa-first-order-alt:before{content:""}.fa-osi:before{content:""}.fa-google-wallet:before{content:""}.fa-d-and-d-beyond:before{content:""}.fa-periscope:before{content:""}.fa-fulcrum:before{content:""}.fa-cloudscale:before{content:""}.fa-forumbee:before{content:""}.fa-mizuni:before{content:""}.fa-schlix:before{content:""}.fa-square-xing:before{content:""}.fa-xing-square:before{content:""}.fa-bandcamp:before{content:""}.fa-wpforms:before{content:""}.fa-cloudversify:before{content:""}.fa-usps:before{content:""}.fa-megaport:before{content:""}.fa-magento:before{content:""}.fa-spotify:before{content:""}.fa-optin-monster:before{content:""}.fa-fly:before{content:""}.fa-aviato:before{content:""}.fa-itunes:before{content:""}.fa-cuttlefish:before{content:""}.fa-blogger:before{content:""}.fa-flickr:before{content:""}.fa-viber:before{content:""}.fa-soundcloud:before{content:""}.fa-digg:before{content:""}.fa-tencent-weibo:before{content:""}.fa-letterboxd:before{content:""}.fa-symfony:before{content:""}.fa-maxcdn:before{content:""}.fa-etsy:before{content:""}.fa-facebook-messenger:before{content:""}.fa-audible:before{content:""}.fa-think-peaks:before{content:""}.fa-bilibili:before{content:""}.fa-erlang:before{content:""}.fa-x-twitter:before{content:""}.fa-cotton-bureau:before{content:""}.fa-dashcube:before{content:""}.fa-42-group:before{content:""}.fa-innosoft:before{content:""}.fa-stack-exchange:before{content:""}.fa-elementor:before{content:""}.fa-square-pied-piper:before{content:""}.fa-pied-piper-square:before{content:""}.fa-creative-commons-nd:before{content:""}.fa-palfed:before{content:""}.fa-superpowers:before{content:""}.fa-resolving:before{content:""}.fa-xbox:before{content:""}.fa-searchengin:before{content:""}.fa-tiktok:before{content:""}.fa-square-facebook:before{content:""}.fa-facebook-square:before{content:""}.fa-renren:before{content:""}.fa-linux:before{content:""}.fa-glide:before{content:""}.fa-linkedin:before{content:""}.fa-hubspot:before{content:""}.fa-deploydog:before{content:""}.fa-twitch:before{content:""}.fa-ravelry:before{content:""}.fa-mixer:before{content:""}.fa-square-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-vimeo:before{content:""}.fa-mendeley:before{content:""}.fa-uniregistry:before{content:""}.fa-figma:before{content:""}.fa-creative-commons-remix:before{content:""}.fa-cc-amazon-pay:before{content:""}.fa-dropbox:before{content:""}.fa-instagram:before{content:""}.fa-cmplid:before{content:""}.fa-upwork:before{content:""}.fa-facebook:before{content:""}.fa-gripfire:before{content:""}.fa-jedi-order:before{content:""}.fa-uikit:before{content:""}.fa-fort-awesome-alt:before{content:""}.fa-phabricator:before{content:""}.fa-ussunnah:before{content:""}.fa-earlybirds:before{content:""}.fa-trade-federation:before{content:""}.fa-autoprefixer:before{content:""}.fa-whatsapp:before{content:""}.fa-slideshare:before{content:""}.fa-google-play:before{content:""}.fa-viadeo:before{content:""}.fa-line:before{content:""}.fa-google-drive:before{content:""}.fa-servicestack:before{content:""}.fa-simplybuilt:before{content:""}.fa-bitbucket:before{content:""}.fa-imdb:before{content:""}.fa-deezer:before{content:""}.fa-raspberry-pi:before{content:""}.fa-jira:before{content:""}.fa-docker:before{content:""}.fa-screenpal:before{content:""}.fa-bluetooth:before{content:""}.fa-gitter:before{content:""}.fa-d-and-d:before{content:""}.fa-microblog:before{content:""}.fa-cc-diners-club:before{content:""}.fa-gg-circle:before{content:""}.fa-pied-piper-hat:before{content:""}.fa-kickstarter-k:before{content:""}.fa-yandex:before{content:""}.fa-readme:before{content:""}.fa-html5:before{content:""}.fa-sellsy:before{content:""}.fa-sass:before{content:""}.fa-wirsindhandwerk:before{content:""}.fa-wsh:before{content:""}.fa-buromobelexperte:before{content:""}.fa-salesforce:before{content:""}.fa-octopus-deploy:before{content:""}.fa-medapps:before{content:""}.fa-ns8:before{content:""}.fa-pinterest-p:before{content:""}.fa-apper:before{content:""}.fa-fort-awesome:before{content:""}.fa-waze:before{content:""}.fa-cc-jcb:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-fantasy-flight-games:before{content:""}.fa-rust:before{content:""}.fa-wix:before{content:""}.fa-square-behance:before{content:""}.fa-behance-square:before{content:""}.fa-supple:before{content:""}.fa-webflow:before{content:""}.fa-rebel:before{content:""}.fa-css3:before{content:""}.fa-staylinked:before{content:""}.fa-kaggle:before{content:""}.fa-space-awesome:before{content:""}.fa-deviantart:before{content:""}.fa-cpanel:before{content:""}.fa-goodreads-g:before{content:""}.fa-square-git:before{content:""}.fa-git-square:before{content:""}.fa-square-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-trello:before{content:""}.fa-creative-commons-nc-jp:before{content:""}.fa-get-pocket:before{content:""}.fa-perbyte:before{content:""}.fa-grunt:before{content:""}.fa-weebly:before{content:""}.fa-connectdevelop:before{content:""}.fa-leanpub:before{content:""}.fa-black-tie:before{content:""}.fa-themeco:before{content:""}.fa-python:before{content:""}.fa-android:before{content:""}.fa-bots:before{content:""}.fa-free-code-camp:before{content:""}.fa-hornbill:before{content:""}.fa-js:before{content:""}.fa-ideal:before{content:""}.fa-git:before{content:""}.fa-dev:before{content:""}.fa-sketch:before{content:""}.fa-yandex-international:before{content:""}.fa-cc-amex:before{content:""}.fa-uber:before{content:""}.fa-github:before{content:""}.fa-php:before{content:""}.fa-alipay:before{content:""}.fa-youtube:before{content:""}.fa-skyatlas:before{content:""}.fa-firefox-browser:before{content:""}.fa-replyd:before{content:""}.fa-suse:before{content:""}.fa-jenkins:before{content:""}.fa-twitter:before{content:""}.fa-rockrms:before{content:""}.fa-pinterest:before{content:""}.fa-buffer:before{content:""}.fa-npm:before{content:""}.fa-yammer:before{content:""}.fa-btc:before{content:""}.fa-dribbble:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-internet-explorer:before{content:""}.fa-stubber:before{content:""}.fa-telegram:before{content:""}.fa-telegram-plane:before{content:""}.fa-old-republic:before{content:""}.fa-odysee:before{content:""}.fa-square-whatsapp:before{content:""}.fa-whatsapp-square:before{content:""}.fa-node-js:before{content:""}.fa-edge-legacy:before{content:""}.fa-slack:before{content:""}.fa-slack-hash:before{content:""}.fa-medrt:before{content:""}.fa-usb:before{content:""}.fa-tumblr:before{content:""}.fa-vaadin:before{content:""}.fa-quora:before{content:""}.fa-square-x-twitter:before{content:""}.fa-reacteurope:before{content:""}.fa-medium:before{content:""}.fa-medium-m:before{content:""}.fa-amilia:before{content:""}.fa-mixcloud:before{content:""}.fa-flipboard:before{content:""}.fa-viacoin:before{content:""}.fa-critical-role:before{content:""}.fa-sitrox:before{content:""}.fa-discourse:before{content:""}.fa-joomla:before{content:""}.fa-mastodon:before{content:""}.fa-airbnb:before{content:""}.fa-wolf-pack-battalion:before{content:""}.fa-buy-n-large:before{content:""}.fa-gulp:before{content:""}.fa-creative-commons-sampling-plus:before{content:""}.fa-strava:before{content:""}.fa-ember:before{content:""}.fa-canadian-maple-leaf:before{content:""}.fa-teamspeak:before{content:""}.fa-pushed:before{content:""}.fa-wordpress-simple:before{content:""}.fa-nutritionix:before{content:""}.fa-wodu:before{content:""}.fa-google-pay:before{content:""}.fa-intercom:before{content:""}.fa-zhihu:before{content:""}.fa-korvue:before{content:""}.fa-pix:before{content:""}.fa-steam-symbol:before{content:""}:root,:host{--fa-style-family-classic: "Font Awesome 6 Free";--fa-font-regular: normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(/static/vue3/assets/fa-regular-400-OOsPf1xj.woff2) format("woff2"),url(/static/vue3/assets/fa-regular-400-BMFokQJ2.ttf) format("truetype")}.far,.fa-regular{font-weight:400}:root,:host{--fa-style-family-classic: "Font Awesome 6 Free";--fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(/static/vue3/assets/fa-solid-900-DAI24fNt.woff2) format("woff2"),url(/static/vue3/assets/fa-solid-900-DM0teJdg.ttf) format("truetype")}.fas,.fa-solid{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(/static/vue3/assets/fa-brands-400-C99Yv4gD.woff2) format("woff2"),url(/static/vue3/assets/fa-brands-400-DtZKBM2a.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(/static/vue3/assets/fa-solid-900-DAI24fNt.woff2) format("woff2"),url(/static/vue3/assets/fa-solid-900-DM0teJdg.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(/static/vue3/assets/fa-regular-400-OOsPf1xj.woff2) format("woff2"),url(/static/vue3/assets/fa-regular-400-BMFokQJ2.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/static/vue3/assets/fa-solid-900-DAI24fNt.woff2) format("woff2"),url(/static/vue3/assets/fa-solid-900-DM0teJdg.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/static/vue3/assets/fa-brands-400-C99Yv4gD.woff2) format("woff2"),url(/static/vue3/assets/fa-brands-400-DtZKBM2a.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/static/vue3/assets/fa-regular-400-OOsPf1xj.woff2) format("woff2"),url(/static/vue3/assets/fa-regular-400-BMFokQJ2.ttf) format("truetype");unicode-range:U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC}@font-face{font-family:FontAwesome;font-display:block;src:url(/static/vue3/assets/fa-v4compatibility-aR9vOKaP.woff2) format("woff2"),url(/static/vue3/assets/fa-v4compatibility-F0dlVTLQ.ttf) format("truetype");unicode-range:U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A}@keyframes v-shake{59%{margin-left:0}60%,80%{margin-left:2px}70%,90%{margin-left:-2px}}.bg-black{background-color:#000!important;color:#fff!important}.bg-white{background-color:#fff!important;color:#000!important}.bg-transparent{background-color:transparent!important;color:currentColor!important}.bg-red{background-color:#f44336!important;color:#fff!important}.bg-red-lighten-5{background-color:#ffebee!important;color:#000!important}.bg-red-lighten-4{background-color:#ffcdd2!important;color:#000!important}.bg-red-lighten-3{background-color:#ef9a9a!important;color:#000!important}.bg-red-lighten-2{background-color:#e57373!important;color:#fff!important}.bg-red-lighten-1{background-color:#ef5350!important;color:#fff!important}.bg-red-darken-1{background-color:#e53935!important;color:#fff!important}.bg-red-darken-2{background-color:#d32f2f!important;color:#fff!important}.bg-red-darken-3{background-color:#c62828!important;color:#fff!important}.bg-red-darken-4{background-color:#b71c1c!important;color:#fff!important}.bg-red-accent-1{background-color:#ff8a80!important;color:#000!important}.bg-red-accent-2{background-color:#ff5252!important;color:#fff!important}.bg-red-accent-3{background-color:#ff1744!important;color:#fff!important}.bg-red-accent-4{background-color:#d50000!important;color:#fff!important}.bg-pink{background-color:#e91e63!important;color:#fff!important}.bg-pink-lighten-5{background-color:#fce4ec!important;color:#000!important}.bg-pink-lighten-4{background-color:#f8bbd0!important;color:#000!important}.bg-pink-lighten-3{background-color:#f48fb1!important;color:#000!important}.bg-pink-lighten-2{background-color:#f06292!important;color:#fff!important}.bg-pink-lighten-1{background-color:#ec407a!important;color:#fff!important}.bg-pink-darken-1{background-color:#d81b60!important;color:#fff!important}.bg-pink-darken-2{background-color:#c2185b!important;color:#fff!important}.bg-pink-darken-3{background-color:#ad1457!important;color:#fff!important}.bg-pink-darken-4{background-color:#880e4f!important;color:#fff!important}.bg-pink-accent-1{background-color:#ff80ab!important;color:#fff!important}.bg-pink-accent-2{background-color:#ff4081!important;color:#fff!important}.bg-pink-accent-3{background-color:#f50057!important;color:#fff!important}.bg-pink-accent-4{background-color:#c51162!important;color:#fff!important}.bg-purple{background-color:#9c27b0!important;color:#fff!important}.bg-purple-lighten-5{background-color:#f3e5f5!important;color:#000!important}.bg-purple-lighten-4{background-color:#e1bee7!important;color:#000!important}.bg-purple-lighten-3{background-color:#ce93d8!important;color:#fff!important}.bg-purple-lighten-2{background-color:#ba68c8!important;color:#fff!important}.bg-purple-lighten-1{background-color:#ab47bc!important;color:#fff!important}.bg-purple-darken-1{background-color:#8e24aa!important;color:#fff!important}.bg-purple-darken-2{background-color:#7b1fa2!important;color:#fff!important}.bg-purple-darken-3{background-color:#6a1b9a!important;color:#fff!important}.bg-purple-darken-4{background-color:#4a148c!important;color:#fff!important}.bg-purple-accent-1{background-color:#ea80fc!important;color:#fff!important}.bg-purple-accent-2{background-color:#e040fb!important;color:#fff!important}.bg-purple-accent-3{background-color:#d500f9!important;color:#fff!important}.bg-purple-accent-4{background-color:#a0f!important;color:#fff!important}.bg-deep-purple{background-color:#673ab7!important;color:#fff!important}.bg-deep-purple-lighten-5{background-color:#ede7f6!important;color:#000!important}.bg-deep-purple-lighten-4{background-color:#d1c4e9!important;color:#000!important}.bg-deep-purple-lighten-3{background-color:#b39ddb!important;color:#fff!important}.bg-deep-purple-lighten-2{background-color:#9575cd!important;color:#fff!important}.bg-deep-purple-lighten-1{background-color:#7e57c2!important;color:#fff!important}.bg-deep-purple-darken-1{background-color:#5e35b1!important;color:#fff!important}.bg-deep-purple-darken-2{background-color:#512da8!important;color:#fff!important}.bg-deep-purple-darken-3{background-color:#4527a0!important;color:#fff!important}.bg-deep-purple-darken-4{background-color:#311b92!important;color:#fff!important}.bg-deep-purple-accent-1{background-color:#b388ff!important;color:#fff!important}.bg-deep-purple-accent-2{background-color:#7c4dff!important;color:#fff!important}.bg-deep-purple-accent-3{background-color:#651fff!important;color:#fff!important}.bg-deep-purple-accent-4{background-color:#6200ea!important;color:#fff!important}.bg-indigo{background-color:#3f51b5!important;color:#fff!important}.bg-indigo-lighten-5{background-color:#e8eaf6!important;color:#000!important}.bg-indigo-lighten-4{background-color:#c5cae9!important;color:#000!important}.bg-indigo-lighten-3{background-color:#9fa8da!important;color:#fff!important}.bg-indigo-lighten-2{background-color:#7986cb!important;color:#fff!important}.bg-indigo-lighten-1{background-color:#5c6bc0!important;color:#fff!important}.bg-indigo-darken-1{background-color:#3949ab!important;color:#fff!important}.bg-indigo-darken-2{background-color:#303f9f!important;color:#fff!important}.bg-indigo-darken-3{background-color:#283593!important;color:#fff!important}.bg-indigo-darken-4{background-color:#1a237e!important;color:#fff!important}.bg-indigo-accent-1{background-color:#8c9eff!important;color:#fff!important}.bg-indigo-accent-2{background-color:#536dfe!important;color:#fff!important}.bg-indigo-accent-3{background-color:#3d5afe!important;color:#fff!important}.bg-indigo-accent-4{background-color:#304ffe!important;color:#fff!important}.bg-blue{background-color:#2196f3!important;color:#fff!important}.bg-blue-lighten-5{background-color:#e3f2fd!important;color:#000!important}.bg-blue-lighten-4{background-color:#bbdefb!important;color:#000!important}.bg-blue-lighten-3{background-color:#90caf9!important;color:#000!important}.bg-blue-lighten-2{background-color:#64b5f6!important;color:#000!important}.bg-blue-lighten-1{background-color:#42a5f5!important;color:#fff!important}.bg-blue-darken-1{background-color:#1e88e5!important;color:#fff!important}.bg-blue-darken-2{background-color:#1976d2!important;color:#fff!important}.bg-blue-darken-3{background-color:#1565c0!important;color:#fff!important}.bg-blue-darken-4{background-color:#0d47a1!important;color:#fff!important}.bg-blue-accent-1{background-color:#82b1ff!important;color:#000!important}.bg-blue-accent-2{background-color:#448aff!important;color:#fff!important}.bg-blue-accent-3{background-color:#2979ff!important;color:#fff!important}.bg-blue-accent-4{background-color:#2962ff!important;color:#fff!important}.bg-light-blue{background-color:#03a9f4!important;color:#fff!important}.bg-light-blue-lighten-5{background-color:#e1f5fe!important;color:#000!important}.bg-light-blue-lighten-4{background-color:#b3e5fc!important;color:#000!important}.bg-light-blue-lighten-3{background-color:#81d4fa!important;color:#000!important}.bg-light-blue-lighten-2{background-color:#4fc3f7!important;color:#000!important}.bg-light-blue-lighten-1{background-color:#29b6f6!important;color:#000!important}.bg-light-blue-darken-1{background-color:#039be5!important;color:#fff!important}.bg-light-blue-darken-2{background-color:#0288d1!important;color:#fff!important}.bg-light-blue-darken-3{background-color:#0277bd!important;color:#fff!important}.bg-light-blue-darken-4{background-color:#01579b!important;color:#fff!important}.bg-light-blue-accent-1{background-color:#80d8ff!important;color:#000!important}.bg-light-blue-accent-2{background-color:#40c4ff!important;color:#000!important}.bg-light-blue-accent-3{background-color:#00b0ff!important;color:#fff!important}.bg-light-blue-accent-4{background-color:#0091ea!important;color:#fff!important}.bg-cyan{background-color:#00bcd4!important;color:#000!important}.bg-cyan-lighten-5{background-color:#e0f7fa!important;color:#000!important}.bg-cyan-lighten-4{background-color:#b2ebf2!important;color:#000!important}.bg-cyan-lighten-3{background-color:#80deea!important;color:#000!important}.bg-cyan-lighten-2{background-color:#4dd0e1!important;color:#000!important}.bg-cyan-lighten-1{background-color:#26c6da!important;color:#000!important}.bg-cyan-darken-1{background-color:#00acc1!important;color:#fff!important}.bg-cyan-darken-2{background-color:#0097a7!important;color:#fff!important}.bg-cyan-darken-3{background-color:#00838f!important;color:#fff!important}.bg-cyan-darken-4{background-color:#006064!important;color:#fff!important}.bg-cyan-accent-1{background-color:#84ffff!important;color:#000!important}.bg-cyan-accent-2{background-color:#18ffff!important;color:#000!important}.bg-cyan-accent-3{background-color:#00e5ff!important;color:#000!important}.bg-cyan-accent-4{background-color:#00b8d4!important;color:#fff!important}.bg-teal{background-color:#009688!important;color:#fff!important}.bg-teal-lighten-5{background-color:#e0f2f1!important;color:#000!important}.bg-teal-lighten-4{background-color:#b2dfdb!important;color:#000!important}.bg-teal-lighten-3{background-color:#80cbc4!important;color:#000!important}.bg-teal-lighten-2{background-color:#4db6ac!important;color:#fff!important}.bg-teal-lighten-1{background-color:#26a69a!important;color:#fff!important}.bg-teal-darken-1{background-color:#00897b!important;color:#fff!important}.bg-teal-darken-2{background-color:#00796b!important;color:#fff!important}.bg-teal-darken-3{background-color:#00695c!important;color:#fff!important}.bg-teal-darken-4{background-color:#004d40!important;color:#fff!important}.bg-teal-accent-1{background-color:#a7ffeb!important;color:#000!important}.bg-teal-accent-2{background-color:#64ffda!important;color:#000!important}.bg-teal-accent-3{background-color:#1de9b6!important;color:#000!important}.bg-teal-accent-4{background-color:#00bfa5!important;color:#fff!important}.bg-green{background-color:#4caf50!important;color:#fff!important}.bg-green-lighten-5{background-color:#e8f5e9!important;color:#000!important}.bg-green-lighten-4{background-color:#c8e6c9!important;color:#000!important}.bg-green-lighten-3{background-color:#a5d6a7!important;color:#000!important}.bg-green-lighten-2{background-color:#81c784!important;color:#000!important}.bg-green-lighten-1{background-color:#66bb6a!important;color:#fff!important}.bg-green-darken-1{background-color:#43a047!important;color:#fff!important}.bg-green-darken-2{background-color:#388e3c!important;color:#fff!important}.bg-green-darken-3{background-color:#2e7d32!important;color:#fff!important}.bg-green-darken-4{background-color:#1b5e20!important;color:#fff!important}.bg-green-accent-1{background-color:#b9f6ca!important;color:#000!important}.bg-green-accent-2{background-color:#69f0ae!important;color:#000!important}.bg-green-accent-3{background-color:#00e676!important;color:#000!important}.bg-green-accent-4{background-color:#00c853!important;color:#000!important}.bg-light-green{background-color:#8bc34a!important;color:#000!important}.bg-light-green-lighten-5{background-color:#f1f8e9!important;color:#000!important}.bg-light-green-lighten-4{background-color:#dcedc8!important;color:#000!important}.bg-light-green-lighten-3{background-color:#c5e1a5!important;color:#000!important}.bg-light-green-lighten-2{background-color:#aed581!important;color:#000!important}.bg-light-green-lighten-1{background-color:#9ccc65!important;color:#000!important}.bg-light-green-darken-1{background-color:#7cb342!important;color:#fff!important}.bg-light-green-darken-2{background-color:#689f38!important;color:#fff!important}.bg-light-green-darken-3{background-color:#558b2f!important;color:#fff!important}.bg-light-green-darken-4{background-color:#33691e!important;color:#fff!important}.bg-light-green-accent-1{background-color:#ccff90!important;color:#000!important}.bg-light-green-accent-2{background-color:#b2ff59!important;color:#000!important}.bg-light-green-accent-3{background-color:#76ff03!important;color:#000!important}.bg-light-green-accent-4{background-color:#64dd17!important;color:#000!important}.bg-lime{background-color:#cddc39!important;color:#000!important}.bg-lime-lighten-5{background-color:#f9fbe7!important;color:#000!important}.bg-lime-lighten-4{background-color:#f0f4c3!important;color:#000!important}.bg-lime-lighten-3{background-color:#e6ee9c!important;color:#000!important}.bg-lime-lighten-2{background-color:#dce775!important;color:#000!important}.bg-lime-lighten-1{background-color:#d4e157!important;color:#000!important}.bg-lime-darken-1{background-color:#c0ca33!important;color:#000!important}.bg-lime-darken-2{background-color:#afb42b!important;color:#000!important}.bg-lime-darken-3{background-color:#9e9d24!important;color:#fff!important}.bg-lime-darken-4{background-color:#827717!important;color:#fff!important}.bg-lime-accent-1{background-color:#f4ff81!important;color:#000!important}.bg-lime-accent-2{background-color:#eeff41!important;color:#000!important}.bg-lime-accent-3{background-color:#c6ff00!important;color:#000!important}.bg-lime-accent-4{background-color:#aeea00!important;color:#000!important}.bg-yellow{background-color:#ffeb3b!important;color:#000!important}.bg-yellow-lighten-5{background-color:#fffde7!important;color:#000!important}.bg-yellow-lighten-4{background-color:#fff9c4!important;color:#000!important}.bg-yellow-lighten-3{background-color:#fff59d!important;color:#000!important}.bg-yellow-lighten-2{background-color:#fff176!important;color:#000!important}.bg-yellow-lighten-1{background-color:#ffee58!important;color:#000!important}.bg-yellow-darken-1{background-color:#fdd835!important;color:#000!important}.bg-yellow-darken-2{background-color:#fbc02d!important;color:#000!important}.bg-yellow-darken-3{background-color:#f9a825!important;color:#000!important}.bg-yellow-darken-4{background-color:#f57f17!important;color:#fff!important}.bg-yellow-accent-1{background-color:#ffff8d!important;color:#000!important}.bg-yellow-accent-2{background-color:#ff0!important;color:#000!important}.bg-yellow-accent-3{background-color:#ffea00!important;color:#000!important}.bg-yellow-accent-4{background-color:#ffd600!important;color:#000!important}.bg-amber{background-color:#ffc107!important;color:#000!important}.bg-amber-lighten-5{background-color:#fff8e1!important;color:#000!important}.bg-amber-lighten-4{background-color:#ffecb3!important;color:#000!important}.bg-amber-lighten-3{background-color:#ffe082!important;color:#000!important}.bg-amber-lighten-2{background-color:#ffd54f!important;color:#000!important}.bg-amber-lighten-1{background-color:#ffca28!important;color:#000!important}.bg-amber-darken-1{background-color:#ffb300!important;color:#000!important}.bg-amber-darken-2{background-color:#ffa000!important;color:#000!important}.bg-amber-darken-3{background-color:#ff8f00!important;color:#000!important}.bg-amber-darken-4{background-color:#ff6f00!important;color:#fff!important}.bg-amber-accent-1{background-color:#ffe57f!important;color:#000!important}.bg-amber-accent-2{background-color:#ffd740!important;color:#000!important}.bg-amber-accent-3{background-color:#ffc400!important;color:#000!important}.bg-amber-accent-4{background-color:#ffab00!important;color:#000!important}.bg-orange{background-color:#ff9800!important;color:#000!important}.bg-orange-lighten-5{background-color:#fff3e0!important;color:#000!important}.bg-orange-lighten-4{background-color:#ffe0b2!important;color:#000!important}.bg-orange-lighten-3{background-color:#ffcc80!important;color:#000!important}.bg-orange-lighten-2{background-color:#ffb74d!important;color:#000!important}.bg-orange-lighten-1{background-color:#ffa726!important;color:#000!important}.bg-orange-darken-1{background-color:#fb8c00!important;color:#fff!important}.bg-orange-darken-2{background-color:#f57c00!important;color:#fff!important}.bg-orange-darken-3{background-color:#ef6c00!important;color:#fff!important}.bg-orange-darken-4{background-color:#e65100!important;color:#fff!important}.bg-orange-accent-1{background-color:#ffd180!important;color:#000!important}.bg-orange-accent-2{background-color:#ffab40!important;color:#000!important}.bg-orange-accent-3{background-color:#ff9100!important;color:#000!important}.bg-orange-accent-4{background-color:#ff6d00!important;color:#fff!important}.bg-deep-orange{background-color:#ff5722!important;color:#fff!important}.bg-deep-orange-lighten-5{background-color:#fbe9e7!important;color:#000!important}.bg-deep-orange-lighten-4{background-color:#ffccbc!important;color:#000!important}.bg-deep-orange-lighten-3{background-color:#ffab91!important;color:#000!important}.bg-deep-orange-lighten-2{background-color:#ff8a65!important;color:#000!important}.bg-deep-orange-lighten-1{background-color:#ff7043!important;color:#fff!important}.bg-deep-orange-darken-1{background-color:#f4511e!important;color:#fff!important}.bg-deep-orange-darken-2{background-color:#e64a19!important;color:#fff!important}.bg-deep-orange-darken-3{background-color:#d84315!important;color:#fff!important}.bg-deep-orange-darken-4{background-color:#bf360c!important;color:#fff!important}.bg-deep-orange-accent-1{background-color:#ff9e80!important;color:#000!important}.bg-deep-orange-accent-2{background-color:#ff6e40!important;color:#fff!important}.bg-deep-orange-accent-3{background-color:#ff3d00!important;color:#fff!important}.bg-deep-orange-accent-4{background-color:#dd2c00!important;color:#fff!important}.bg-brown{background-color:#795548!important;color:#fff!important}.bg-brown-lighten-5{background-color:#efebe9!important;color:#000!important}.bg-brown-lighten-4{background-color:#d7ccc8!important;color:#000!important}.bg-brown-lighten-3{background-color:#bcaaa4!important;color:#000!important}.bg-brown-lighten-2{background-color:#a1887f!important;color:#fff!important}.bg-brown-lighten-1{background-color:#8d6e63!important;color:#fff!important}.bg-brown-darken-1{background-color:#6d4c41!important;color:#fff!important}.bg-brown-darken-2{background-color:#5d4037!important;color:#fff!important}.bg-brown-darken-3{background-color:#4e342e!important;color:#fff!important}.bg-brown-darken-4{background-color:#3e2723!important;color:#fff!important}.bg-blue-grey{background-color:#607d8b!important;color:#fff!important}.bg-blue-grey-lighten-5{background-color:#eceff1!important;color:#000!important}.bg-blue-grey-lighten-4{background-color:#cfd8dc!important;color:#000!important}.bg-blue-grey-lighten-3{background-color:#b0bec5!important;color:#000!important}.bg-blue-grey-lighten-2{background-color:#90a4ae!important;color:#fff!important}.bg-blue-grey-lighten-1{background-color:#78909c!important;color:#fff!important}.bg-blue-grey-darken-1{background-color:#546e7a!important;color:#fff!important}.bg-blue-grey-darken-2{background-color:#455a64!important;color:#fff!important}.bg-blue-grey-darken-3{background-color:#37474f!important;color:#fff!important}.bg-blue-grey-darken-4{background-color:#263238!important;color:#fff!important}.bg-grey{background-color:#9e9e9e!important;color:#fff!important}.bg-grey-lighten-5{background-color:#fafafa!important;color:#000!important}.bg-grey-lighten-4{background-color:#f5f5f5!important;color:#000!important}.bg-grey-lighten-3{background-color:#eee!important;color:#000!important}.bg-grey-lighten-2{background-color:#e0e0e0!important;color:#000!important}.bg-grey-lighten-1{background-color:#bdbdbd!important;color:#000!important}.bg-grey-darken-1{background-color:#757575!important;color:#fff!important}.bg-grey-darken-2{background-color:#616161!important;color:#fff!important}.bg-grey-darken-3{background-color:#424242!important;color:#fff!important}.bg-grey-darken-4{background-color:#212121!important;color:#fff!important}.bg-shades-black{background-color:#000!important;color:#fff!important}.bg-shades-white{background-color:#fff!important;color:#000!important}.bg-shades-transparent{background-color:transparent!important;color:currentColor!important}.text-black{color:#000!important}.text-white{color:#fff!important}.text-transparent{color:transparent!important}.text-red{color:#f44336!important}.text-red-lighten-5{color:#ffebee!important}.text-red-lighten-4{color:#ffcdd2!important}.text-red-lighten-3{color:#ef9a9a!important}.text-red-lighten-2{color:#e57373!important}.text-red-lighten-1{color:#ef5350!important}.text-red-darken-1{color:#e53935!important}.text-red-darken-2{color:#d32f2f!important}.text-red-darken-3{color:#c62828!important}.text-red-darken-4{color:#b71c1c!important}.text-red-accent-1{color:#ff8a80!important}.text-red-accent-2{color:#ff5252!important}.text-red-accent-3{color:#ff1744!important}.text-red-accent-4{color:#d50000!important}.text-pink{color:#e91e63!important}.text-pink-lighten-5{color:#fce4ec!important}.text-pink-lighten-4{color:#f8bbd0!important}.text-pink-lighten-3{color:#f48fb1!important}.text-pink-lighten-2{color:#f06292!important}.text-pink-lighten-1{color:#ec407a!important}.text-pink-darken-1{color:#d81b60!important}.text-pink-darken-2{color:#c2185b!important}.text-pink-darken-3{color:#ad1457!important}.text-pink-darken-4{color:#880e4f!important}.text-pink-accent-1{color:#ff80ab!important}.text-pink-accent-2{color:#ff4081!important}.text-pink-accent-3{color:#f50057!important}.text-pink-accent-4{color:#c51162!important}.text-purple{color:#9c27b0!important}.text-purple-lighten-5{color:#f3e5f5!important}.text-purple-lighten-4{color:#e1bee7!important}.text-purple-lighten-3{color:#ce93d8!important}.text-purple-lighten-2{color:#ba68c8!important}.text-purple-lighten-1{color:#ab47bc!important}.text-purple-darken-1{color:#8e24aa!important}.text-purple-darken-2{color:#7b1fa2!important}.text-purple-darken-3{color:#6a1b9a!important}.text-purple-darken-4{color:#4a148c!important}.text-purple-accent-1{color:#ea80fc!important}.text-purple-accent-2{color:#e040fb!important}.text-purple-accent-3{color:#d500f9!important}.text-purple-accent-4{color:#a0f!important}.text-deep-purple{color:#673ab7!important}.text-deep-purple-lighten-5{color:#ede7f6!important}.text-deep-purple-lighten-4{color:#d1c4e9!important}.text-deep-purple-lighten-3{color:#b39ddb!important}.text-deep-purple-lighten-2{color:#9575cd!important}.text-deep-purple-lighten-1{color:#7e57c2!important}.text-deep-purple-darken-1{color:#5e35b1!important}.text-deep-purple-darken-2{color:#512da8!important}.text-deep-purple-darken-3{color:#4527a0!important}.text-deep-purple-darken-4{color:#311b92!important}.text-deep-purple-accent-1{color:#b388ff!important}.text-deep-purple-accent-2{color:#7c4dff!important}.text-deep-purple-accent-3{color:#651fff!important}.text-deep-purple-accent-4{color:#6200ea!important}.text-indigo{color:#3f51b5!important}.text-indigo-lighten-5{color:#e8eaf6!important}.text-indigo-lighten-4{color:#c5cae9!important}.text-indigo-lighten-3{color:#9fa8da!important}.text-indigo-lighten-2{color:#7986cb!important}.text-indigo-lighten-1{color:#5c6bc0!important}.text-indigo-darken-1{color:#3949ab!important}.text-indigo-darken-2{color:#303f9f!important}.text-indigo-darken-3{color:#283593!important}.text-indigo-darken-4{color:#1a237e!important}.text-indigo-accent-1{color:#8c9eff!important}.text-indigo-accent-2{color:#536dfe!important}.text-indigo-accent-3{color:#3d5afe!important}.text-indigo-accent-4{color:#304ffe!important}.text-blue{color:#2196f3!important}.text-blue-lighten-5{color:#e3f2fd!important}.text-blue-lighten-4{color:#bbdefb!important}.text-blue-lighten-3{color:#90caf9!important}.text-blue-lighten-2{color:#64b5f6!important}.text-blue-lighten-1{color:#42a5f5!important}.text-blue-darken-1{color:#1e88e5!important}.text-blue-darken-2{color:#1976d2!important}.text-blue-darken-3{color:#1565c0!important}.text-blue-darken-4{color:#0d47a1!important}.text-blue-accent-1{color:#82b1ff!important}.text-blue-accent-2{color:#448aff!important}.text-blue-accent-3{color:#2979ff!important}.text-blue-accent-4{color:#2962ff!important}.text-light-blue{color:#03a9f4!important}.text-light-blue-lighten-5{color:#e1f5fe!important}.text-light-blue-lighten-4{color:#b3e5fc!important}.text-light-blue-lighten-3{color:#81d4fa!important}.text-light-blue-lighten-2{color:#4fc3f7!important}.text-light-blue-lighten-1{color:#29b6f6!important}.text-light-blue-darken-1{color:#039be5!important}.text-light-blue-darken-2{color:#0288d1!important}.text-light-blue-darken-3{color:#0277bd!important}.text-light-blue-darken-4{color:#01579b!important}.text-light-blue-accent-1{color:#80d8ff!important}.text-light-blue-accent-2{color:#40c4ff!important}.text-light-blue-accent-3{color:#00b0ff!important}.text-light-blue-accent-4{color:#0091ea!important}.text-cyan{color:#00bcd4!important}.text-cyan-lighten-5{color:#e0f7fa!important}.text-cyan-lighten-4{color:#b2ebf2!important}.text-cyan-lighten-3{color:#80deea!important}.text-cyan-lighten-2{color:#4dd0e1!important}.text-cyan-lighten-1{color:#26c6da!important}.text-cyan-darken-1{color:#00acc1!important}.text-cyan-darken-2{color:#0097a7!important}.text-cyan-darken-3{color:#00838f!important}.text-cyan-darken-4{color:#006064!important}.text-cyan-accent-1{color:#84ffff!important}.text-cyan-accent-2{color:#18ffff!important}.text-cyan-accent-3{color:#00e5ff!important}.text-cyan-accent-4{color:#00b8d4!important}.text-teal{color:#009688!important}.text-teal-lighten-5{color:#e0f2f1!important}.text-teal-lighten-4{color:#b2dfdb!important}.text-teal-lighten-3{color:#80cbc4!important}.text-teal-lighten-2{color:#4db6ac!important}.text-teal-lighten-1{color:#26a69a!important}.text-teal-darken-1{color:#00897b!important}.text-teal-darken-2{color:#00796b!important}.text-teal-darken-3{color:#00695c!important}.text-teal-darken-4{color:#004d40!important}.text-teal-accent-1{color:#a7ffeb!important}.text-teal-accent-2{color:#64ffda!important}.text-teal-accent-3{color:#1de9b6!important}.text-teal-accent-4{color:#00bfa5!important}.text-green{color:#4caf50!important}.text-green-lighten-5{color:#e8f5e9!important}.text-green-lighten-4{color:#c8e6c9!important}.text-green-lighten-3{color:#a5d6a7!important}.text-green-lighten-2{color:#81c784!important}.text-green-lighten-1{color:#66bb6a!important}.text-green-darken-1{color:#43a047!important}.text-green-darken-2{color:#388e3c!important}.text-green-darken-3{color:#2e7d32!important}.text-green-darken-4{color:#1b5e20!important}.text-green-accent-1{color:#b9f6ca!important}.text-green-accent-2{color:#69f0ae!important}.text-green-accent-3{color:#00e676!important}.text-green-accent-4{color:#00c853!important}.text-light-green{color:#8bc34a!important}.text-light-green-lighten-5{color:#f1f8e9!important}.text-light-green-lighten-4{color:#dcedc8!important}.text-light-green-lighten-3{color:#c5e1a5!important}.text-light-green-lighten-2{color:#aed581!important}.text-light-green-lighten-1{color:#9ccc65!important}.text-light-green-darken-1{color:#7cb342!important}.text-light-green-darken-2{color:#689f38!important}.text-light-green-darken-3{color:#558b2f!important}.text-light-green-darken-4{color:#33691e!important}.text-light-green-accent-1{color:#ccff90!important}.text-light-green-accent-2{color:#b2ff59!important}.text-light-green-accent-3{color:#76ff03!important}.text-light-green-accent-4{color:#64dd17!important}.text-lime{color:#cddc39!important}.text-lime-lighten-5{color:#f9fbe7!important}.text-lime-lighten-4{color:#f0f4c3!important}.text-lime-lighten-3{color:#e6ee9c!important}.text-lime-lighten-2{color:#dce775!important}.text-lime-lighten-1{color:#d4e157!important}.text-lime-darken-1{color:#c0ca33!important}.text-lime-darken-2{color:#afb42b!important}.text-lime-darken-3{color:#9e9d24!important}.text-lime-darken-4{color:#827717!important}.text-lime-accent-1{color:#f4ff81!important}.text-lime-accent-2{color:#eeff41!important}.text-lime-accent-3{color:#c6ff00!important}.text-lime-accent-4{color:#aeea00!important}.text-yellow{color:#ffeb3b!important}.text-yellow-lighten-5{color:#fffde7!important}.text-yellow-lighten-4{color:#fff9c4!important}.text-yellow-lighten-3{color:#fff59d!important}.text-yellow-lighten-2{color:#fff176!important}.text-yellow-lighten-1{color:#ffee58!important}.text-yellow-darken-1{color:#fdd835!important}.text-yellow-darken-2{color:#fbc02d!important}.text-yellow-darken-3{color:#f9a825!important}.text-yellow-darken-4{color:#f57f17!important}.text-yellow-accent-1{color:#ffff8d!important}.text-yellow-accent-2{color:#ff0!important}.text-yellow-accent-3{color:#ffea00!important}.text-yellow-accent-4{color:#ffd600!important}.text-amber{color:#ffc107!important}.text-amber-lighten-5{color:#fff8e1!important}.text-amber-lighten-4{color:#ffecb3!important}.text-amber-lighten-3{color:#ffe082!important}.text-amber-lighten-2{color:#ffd54f!important}.text-amber-lighten-1{color:#ffca28!important}.text-amber-darken-1{color:#ffb300!important}.text-amber-darken-2{color:#ffa000!important}.text-amber-darken-3{color:#ff8f00!important}.text-amber-darken-4{color:#ff6f00!important}.text-amber-accent-1{color:#ffe57f!important}.text-amber-accent-2{color:#ffd740!important}.text-amber-accent-3{color:#ffc400!important}.text-amber-accent-4{color:#ffab00!important}.text-orange{color:#ff9800!important}.text-orange-lighten-5{color:#fff3e0!important}.text-orange-lighten-4{color:#ffe0b2!important}.text-orange-lighten-3{color:#ffcc80!important}.text-orange-lighten-2{color:#ffb74d!important}.text-orange-lighten-1{color:#ffa726!important}.text-orange-darken-1{color:#fb8c00!important}.text-orange-darken-2{color:#f57c00!important}.text-orange-darken-3{color:#ef6c00!important}.text-orange-darken-4{color:#e65100!important}.text-orange-accent-1{color:#ffd180!important}.text-orange-accent-2{color:#ffab40!important}.text-orange-accent-3{color:#ff9100!important}.text-orange-accent-4{color:#ff6d00!important}.text-deep-orange{color:#ff5722!important}.text-deep-orange-lighten-5{color:#fbe9e7!important}.text-deep-orange-lighten-4{color:#ffccbc!important}.text-deep-orange-lighten-3{color:#ffab91!important}.text-deep-orange-lighten-2{color:#ff8a65!important}.text-deep-orange-lighten-1{color:#ff7043!important}.text-deep-orange-darken-1{color:#f4511e!important}.text-deep-orange-darken-2{color:#e64a19!important}.text-deep-orange-darken-3{color:#d84315!important}.text-deep-orange-darken-4{color:#bf360c!important}.text-deep-orange-accent-1{color:#ff9e80!important}.text-deep-orange-accent-2{color:#ff6e40!important}.text-deep-orange-accent-3{color:#ff3d00!important}.text-deep-orange-accent-4{color:#dd2c00!important}.text-brown{color:#795548!important}.text-brown-lighten-5{color:#efebe9!important}.text-brown-lighten-4{color:#d7ccc8!important}.text-brown-lighten-3{color:#bcaaa4!important}.text-brown-lighten-2{color:#a1887f!important}.text-brown-lighten-1{color:#8d6e63!important}.text-brown-darken-1{color:#6d4c41!important}.text-brown-darken-2{color:#5d4037!important}.text-brown-darken-3{color:#4e342e!important}.text-brown-darken-4{color:#3e2723!important}.text-blue-grey{color:#607d8b!important}.text-blue-grey-lighten-5{color:#eceff1!important}.text-blue-grey-lighten-4{color:#cfd8dc!important}.text-blue-grey-lighten-3{color:#b0bec5!important}.text-blue-grey-lighten-2{color:#90a4ae!important}.text-blue-grey-lighten-1{color:#78909c!important}.text-blue-grey-darken-1{color:#546e7a!important}.text-blue-grey-darken-2{color:#455a64!important}.text-blue-grey-darken-3{color:#37474f!important}.text-blue-grey-darken-4{color:#263238!important}.text-grey{color:#9e9e9e!important}.text-grey-lighten-5{color:#fafafa!important}.text-grey-lighten-4{color:#f5f5f5!important}.text-grey-lighten-3{color:#eee!important}.text-grey-lighten-2{color:#e0e0e0!important}.text-grey-lighten-1{color:#bdbdbd!important}.text-grey-darken-1{color:#757575!important}.text-grey-darken-2{color:#616161!important}.text-grey-darken-3{color:#424242!important}.text-grey-darken-4{color:#212121!important}.text-shades-black{color:#000!important}.text-shades-white{color:#fff!important}.text-shades-transparent{color:transparent!important}/*! + * ress.css • v2.0.4 + * MIT License + * github.com/filipelinhares/ress + */html{box-sizing:border-box;overflow-y:scroll;-webkit-text-size-adjust:100%;word-break:normal;-moz-tab-size:4;tab-size:4}*,:before,:after{background-repeat:no-repeat;box-sizing:inherit}:before,:after{text-decoration:inherit;vertical-align:inherit}*{padding:0;margin:0}hr{overflow:visible;height:0}details,main{display:block}summary{display:list-item}small{font-size:80%}[hidden]{display:none}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}a{background-color:transparent}a:active,a:hover{outline-width:0}code,kbd,pre,samp{font-family:monospace,monospace}pre{font-size:1em}b,strong{font-weight:bolder}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}input{border-radius:0}[disabled]{cursor:default}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{overflow:auto;resize:vertical}button,input,optgroup,select,textarea{font:inherit}optgroup{font-weight:700}button{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit],[role=button]{cursor:pointer;color:inherit}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{outline:1px dotted ButtonText}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button,input,select,textarea{background-color:transparent;border-style:none}select{-moz-appearance:none;-webkit-appearance:none}select::-ms-expand{display:none}select::-ms-value{color:currentColor}legend{border:0;color:inherit;display:table;white-space:normal;max-width:100%}::-webkit-file-upload-button{-webkit-appearance:button;color:inherit;font:inherit}::-ms-clear,::-ms-reveal{display:none}img{border-style:none}progress{vertical-align:baseline}@media screen{[hidden~=screen]{display:inherit}[hidden~=screen]:not(:active):not(:focus):not(:target){position:absolute!important;clip:rect(0 0 0 0)!important}}[aria-busy=true]{cursor:progress}[aria-controls]{cursor:pointer}[aria-disabled=true]{cursor:default}.dialog-transition-enter-active,.dialog-bottom-transition-enter-active,.dialog-top-transition-enter-active{transition-duration:225ms!important;transition-timing-function:cubic-bezier(0,0,.2,1)!important}.dialog-transition-leave-active,.dialog-bottom-transition-leave-active,.dialog-top-transition-leave-active{transition-duration:125ms!important;transition-timing-function:cubic-bezier(.4,0,1,1)!important}.dialog-transition-enter-active,.dialog-transition-leave-active,.dialog-bottom-transition-enter-active,.dialog-bottom-transition-leave-active,.dialog-top-transition-enter-active,.dialog-top-transition-leave-active{transition-property:transform,opacity!important;pointer-events:none}.dialog-transition-enter-from,.dialog-transition-leave-to{transform:scale(.9);opacity:0}.dialog-transition-enter-to,.dialog-transition-leave-from{opacity:1}.dialog-bottom-transition-enter-from,.dialog-bottom-transition-leave-to{transform:translateY(calc(50vh + 50%))}.dialog-top-transition-enter-from,.dialog-top-transition-leave-to{transform:translateY(calc(-50vh - 50%))}.picker-transition-enter-active,.picker-reverse-transition-enter-active,.picker-transition-leave-active,.picker-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-transition-move,.picker-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-transition-enter-from,.picker-transition-leave-to,.picker-reverse-transition-enter-from,.picker-reverse-transition-leave-to{opacity:0}.picker-transition-leave-from,.picker-transition-leave-active,.picker-transition-leave-to,.picker-reverse-transition-leave-from,.picker-reverse-transition-leave-active,.picker-reverse-transition-leave-to{position:absolute!important}.picker-transition-enter-active,.picker-transition-leave-active,.picker-reverse-transition-enter-active,.picker-reverse-transition-leave-active{transition-property:transform,opacity!important}.picker-transition-enter-active,.picker-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-transition-enter-from{transform:translateY(100%)}.picker-transition-leave-to{transform:translateY(-100%)}.picker-reverse-transition-enter-active,.picker-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.picker-reverse-transition-enter-from{transform:translateY(-100%)}.picker-reverse-transition-leave-to{transform:translateY(100%)}.expand-transition-enter-active,.expand-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.expand-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.expand-transition-enter-active,.expand-transition-leave-active{transition-property:height!important}.expand-x-transition-enter-active,.expand-x-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.expand-x-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.expand-x-transition-enter-active,.expand-x-transition-leave-active{transition-property:width!important}.scale-transition-enter-active,.scale-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-transition-leave-to{opacity:0}.scale-transition-leave-active{transition-duration:.1s!important}.scale-transition-enter-from{opacity:0;transform:scale(0)}.scale-transition-enter-active,.scale-transition-leave-active{transition-property:transform,opacity!important}.scale-rotate-transition-enter-active,.scale-rotate-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-rotate-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-rotate-transition-leave-to{opacity:0}.scale-rotate-transition-leave-active{transition-duration:.1s!important}.scale-rotate-transition-enter-from{opacity:0;transform:scale(0) rotate(-45deg)}.scale-rotate-transition-enter-active,.scale-rotate-transition-leave-active{transition-property:transform,opacity!important}.scale-rotate-reverse-transition-enter-active,.scale-rotate-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-rotate-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scale-rotate-reverse-transition-leave-to{opacity:0}.scale-rotate-reverse-transition-leave-active{transition-duration:.1s!important}.scale-rotate-reverse-transition-enter-from{opacity:0;transform:scale(0) rotate(45deg)}.scale-rotate-reverse-transition-enter-active,.scale-rotate-reverse-transition-leave-active{transition-property:transform,opacity!important}.message-transition-enter-active,.message-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.message-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.message-transition-enter-from,.message-transition-leave-to{opacity:0;transform:translateY(-15px)}.message-transition-leave-from,.message-transition-leave-active{position:absolute}.message-transition-enter-active,.message-transition-leave-active{transition-property:transform,opacity!important}.slide-y-transition-enter-active,.slide-y-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-y-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-y-transition-enter-from,.slide-y-transition-leave-to{opacity:0;transform:translateY(-15px)}.slide-y-transition-enter-active,.slide-y-transition-leave-active{transition-property:transform,opacity!important}.slide-y-reverse-transition-enter-active,.slide-y-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-y-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-y-reverse-transition-enter-from,.slide-y-reverse-transition-leave-to{opacity:0;transform:translateY(15px)}.slide-y-reverse-transition-enter-active,.slide-y-reverse-transition-leave-active{transition-property:transform,opacity!important}.scroll-y-transition-enter-active,.scroll-y-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-y-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-y-transition-enter-from,.scroll-y-transition-leave-to{opacity:0}.scroll-y-transition-enter-from{transform:translateY(-15px)}.scroll-y-transition-leave-to{transform:translateY(15px)}.scroll-y-transition-enter-active,.scroll-y-transition-leave-active{transition-property:transform,opacity!important}.scroll-y-reverse-transition-enter-active,.scroll-y-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-y-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-y-reverse-transition-enter-from,.scroll-y-reverse-transition-leave-to{opacity:0}.scroll-y-reverse-transition-enter-from{transform:translateY(15px)}.scroll-y-reverse-transition-leave-to{transform:translateY(-15px)}.scroll-y-reverse-transition-enter-active,.scroll-y-reverse-transition-leave-active{transition-property:transform,opacity!important}.scroll-x-transition-enter-active,.scroll-x-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-x-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-x-transition-enter-from,.scroll-x-transition-leave-to{opacity:0}.scroll-x-transition-enter-from{transform:translate(-15px)}.scroll-x-transition-leave-to{transform:translate(15px)}.scroll-x-transition-enter-active,.scroll-x-transition-leave-active{transition-property:transform,opacity!important}.scroll-x-reverse-transition-enter-active,.scroll-x-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-x-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.scroll-x-reverse-transition-enter-from,.scroll-x-reverse-transition-leave-to{opacity:0}.scroll-x-reverse-transition-enter-from{transform:translate(15px)}.scroll-x-reverse-transition-leave-to{transform:translate(-15px)}.scroll-x-reverse-transition-enter-active,.scroll-x-reverse-transition-leave-active{transition-property:transform,opacity!important}.slide-x-transition-enter-active,.slide-x-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-x-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-x-transition-enter-from,.slide-x-transition-leave-to{opacity:0;transform:translate(-15px)}.slide-x-transition-enter-active,.slide-x-transition-leave-active{transition-property:transform,opacity!important}.slide-x-reverse-transition-enter-active,.slide-x-reverse-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-x-reverse-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.slide-x-reverse-transition-enter-from,.slide-x-reverse-transition-leave-to{opacity:0;transform:translate(15px)}.slide-x-reverse-transition-enter-active,.slide-x-reverse-transition-leave-active{transition-property:transform,opacity!important}.fade-transition-enter-active,.fade-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.fade-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.fade-transition-enter-from,.fade-transition-leave-to{opacity:0!important}.fade-transition-enter-active,.fade-transition-leave-active{transition-property:opacity!important}.fab-transition-enter-active,.fab-transition-leave-active{transition-duration:.3s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.fab-transition-move{transition-duration:.5s!important;transition-property:transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.fab-transition-enter-from,.fab-transition-leave-to{transform:scale(0) rotate(-45deg)}.fab-transition-enter-active,.fab-transition-leave-active{transition-property:transform!important}.v-locale--is-rtl{direction:rtl}.v-locale--is-ltr{direction:ltr}.blockquote{padding:16px 0 16px 24px;font-size:18px;font-weight:300}html{font-family:Roboto,sans-serif;line-height:1.5;font-size:1rem;overflow-x:hidden;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:rgba(0,0,0,0)}html.overflow-y-hidden{overflow-y:hidden!important}:root{--v-theme-overlay-multiplier: 1;--v-scrollbar-offset: 0px}@supports (-webkit-touch-callout: none){body{cursor:pointer}}@media only print{.hidden-print-only{display:none!important}}@media only screen{.hidden-screen-only{display:none!important}}@media (max-width: 599.98px){.hidden-xs{display:none!important}}@media (min-width: 600px) and (max-width: 959.98px){.hidden-sm{display:none!important}}@media (min-width: 960px) and (max-width: 1279.98px){.hidden-md{display:none!important}}@media (min-width: 1280px) and (max-width: 1919.98px){.hidden-lg{display:none!important}}@media (min-width: 1920px) and (max-width: 2559.98px){.hidden-xl{display:none!important}}@media (min-width: 2560px){.hidden-xxl{display:none!important}}@media (min-width: 600px){.hidden-sm-and-up{display:none!important}}@media (min-width: 960px){.hidden-md-and-up{display:none!important}}@media (min-width: 1280px){.hidden-lg-and-up{display:none!important}}@media (min-width: 1920px){.hidden-xl-and-up{display:none!important}}@media (max-width: 959.98px){.hidden-sm-and-down{display:none!important}}@media (max-width: 1279.98px){.hidden-md-and-down{display:none!important}}@media (max-width: 1919.98px){.hidden-lg-and-down{display:none!important}}@media (max-width: 2559.98px){.hidden-xl-and-down{display:none!important}}.elevation-24{box-shadow:0 11px 15px -7px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 24px 38px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 9px 46px 8px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-23{box-shadow:0 11px 14px -7px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 23px 36px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 9px 44px 8px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-22{box-shadow:0 10px 14px -6px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 22px 35px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 8px 42px 7px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-21{box-shadow:0 10px 13px -6px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 21px 33px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 8px 40px 7px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-20{box-shadow:0 10px 13px -6px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 20px 31px 3px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 8px 38px 7px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-19{box-shadow:0 9px 12px -6px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 19px 29px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 7px 36px 6px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-18{box-shadow:0 9px 11px -5px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 18px 28px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 7px 34px 6px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-17{box-shadow:0 8px 11px -5px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 17px 26px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 6px 32px 5px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-16{box-shadow:0 8px 10px -5px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 16px 24px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 6px 30px 5px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-15{box-shadow:0 8px 9px -5px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 15px 22px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 6px 28px 5px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-14{box-shadow:0 7px 9px -4px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 14px 21px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 5px 26px 4px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-13{box-shadow:0 7px 8px -4px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 13px 19px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 5px 24px 4px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-12{box-shadow:0 7px 8px -4px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 12px 17px 2px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 5px 22px 4px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-11{box-shadow:0 6px 7px -4px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 11px 15px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 4px 20px 3px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-10{box-shadow:0 6px 6px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 10px 14px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 4px 18px 3px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-9{box-shadow:0 5px 6px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 9px 12px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 3px 16px 2px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-8{box-shadow:0 5px 5px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 8px 10px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 3px 14px 2px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-7{box-shadow:0 4px 5px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 7px 10px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 2px 16px 1px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-6{box-shadow:0 3px 5px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 6px 10px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 18px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-5{box-shadow:0 3px 5px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 5px 8px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 14px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-4{box-shadow:0 2px 4px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 4px 5px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 10px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-3{box-shadow:0 3px 3px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 3px 4px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 8px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-2{box-shadow:0 3px 1px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 2px 2px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 5px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-1{box-shadow:0 2px 1px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 1px 1px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 3px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.elevation-0{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))!important}.d-sr-only,.d-sr-only-focusable:not(:focus){border:0!important;clip:rect(0,0,0,0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.float-none{float:none!important}.float-left{float:left!important}.float-right{float:right!important}.v-locale--is-rtl .float-end{float:left!important}.v-locale--is-rtl .float-start,.v-locale--is-ltr .float-end{float:right!important}.v-locale--is-ltr .float-start{float:left!important}.flex-fill,.flex-1-1{flex:1 1 auto!important}.flex-1-0{flex:1 0 auto!important}.flex-0-1{flex:0 1 auto!important}.flex-0-0{flex:0 0 auto!important}.flex-1-1-100{flex:1 1 100%!important}.flex-1-0-100{flex:1 0 100%!important}.flex-0-1-100{flex:0 1 100%!important}.flex-0-0-100{flex:0 0 100%!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-start{justify-content:flex-start!important}.justify-end{justify-content:flex-end!important}.justify-center{justify-content:center!important}.justify-space-between{justify-content:space-between!important}.justify-space-around{justify-content:space-around!important}.justify-space-evenly{justify-content:space-evenly!important}.align-start{align-items:flex-start!important}.align-end{align-items:flex-end!important}.align-center{align-items:center!important}.align-baseline{align-items:baseline!important}.align-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-space-between{align-content:space-between!important}.align-content-space-around{align-content:space-around!important}.align-content-space-evenly{align-content:space-evenly!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-6{order:6!important}.order-7{order:7!important}.order-8{order:8!important}.order-9{order:9!important}.order-10{order:10!important}.order-11{order:11!important}.order-12{order:12!important}.order-last{order:13!important}.ga-0{gap:0px!important}.ga-1{gap:4px!important}.ga-2{gap:8px!important}.ga-3{gap:12px!important}.ga-4{gap:16px!important}.ga-5{gap:20px!important}.ga-6{gap:24px!important}.ga-7{gap:28px!important}.ga-8{gap:32px!important}.ga-9{gap:36px!important}.ga-10{gap:40px!important}.ga-11{gap:44px!important}.ga-12{gap:48px!important}.ga-13{gap:52px!important}.ga-14{gap:56px!important}.ga-15{gap:60px!important}.ga-16{gap:64px!important}.ga-auto{gap:auto!important}.gr-0{row-gap:0px!important}.gr-1{row-gap:4px!important}.gr-2{row-gap:8px!important}.gr-3{row-gap:12px!important}.gr-4{row-gap:16px!important}.gr-5{row-gap:20px!important}.gr-6{row-gap:24px!important}.gr-7{row-gap:28px!important}.gr-8{row-gap:32px!important}.gr-9{row-gap:36px!important}.gr-10{row-gap:40px!important}.gr-11{row-gap:44px!important}.gr-12{row-gap:48px!important}.gr-13{row-gap:52px!important}.gr-14{row-gap:56px!important}.gr-15{row-gap:60px!important}.gr-16{row-gap:64px!important}.gr-auto{row-gap:auto!important}.gc-0{column-gap:0px!important}.gc-1{column-gap:4px!important}.gc-2{column-gap:8px!important}.gc-3{column-gap:12px!important}.gc-4{column-gap:16px!important}.gc-5{column-gap:20px!important}.gc-6{column-gap:24px!important}.gc-7{column-gap:28px!important}.gc-8{column-gap:32px!important}.gc-9{column-gap:36px!important}.gc-10{column-gap:40px!important}.gc-11{column-gap:44px!important}.gc-12{column-gap:48px!important}.gc-13{column-gap:52px!important}.gc-14{column-gap:56px!important}.gc-15{column-gap:60px!important}.gc-16{column-gap:64px!important}.gc-auto{column-gap:auto!important}.ma-0{margin:0!important}.ma-1{margin:4px!important}.ma-2{margin:8px!important}.ma-3{margin:12px!important}.ma-4{margin:16px!important}.ma-5{margin:20px!important}.ma-6{margin:24px!important}.ma-7{margin:28px!important}.ma-8{margin:32px!important}.ma-9{margin:36px!important}.ma-10{margin:40px!important}.ma-11{margin:44px!important}.ma-12{margin:48px!important}.ma-13{margin:52px!important}.ma-14{margin:56px!important}.ma-15{margin:60px!important}.ma-16{margin:64px!important}.ma-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:4px!important;margin-left:4px!important}.mx-2{margin-right:8px!important;margin-left:8px!important}.mx-3{margin-right:12px!important;margin-left:12px!important}.mx-4{margin-right:16px!important;margin-left:16px!important}.mx-5{margin-right:20px!important;margin-left:20px!important}.mx-6{margin-right:24px!important;margin-left:24px!important}.mx-7{margin-right:28px!important;margin-left:28px!important}.mx-8{margin-right:32px!important;margin-left:32px!important}.mx-9{margin-right:36px!important;margin-left:36px!important}.mx-10{margin-right:40px!important;margin-left:40px!important}.mx-11{margin-right:44px!important;margin-left:44px!important}.mx-12{margin-right:48px!important;margin-left:48px!important}.mx-13{margin-right:52px!important;margin-left:52px!important}.mx-14{margin-right:56px!important;margin-left:56px!important}.mx-15{margin-right:60px!important;margin-left:60px!important}.mx-16{margin-right:64px!important;margin-left:64px!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:4px!important;margin-bottom:4px!important}.my-2{margin-top:8px!important;margin-bottom:8px!important}.my-3{margin-top:12px!important;margin-bottom:12px!important}.my-4{margin-top:16px!important;margin-bottom:16px!important}.my-5{margin-top:20px!important;margin-bottom:20px!important}.my-6{margin-top:24px!important;margin-bottom:24px!important}.my-7{margin-top:28px!important;margin-bottom:28px!important}.my-8{margin-top:32px!important;margin-bottom:32px!important}.my-9{margin-top:36px!important;margin-bottom:36px!important}.my-10{margin-top:40px!important;margin-bottom:40px!important}.my-11{margin-top:44px!important;margin-bottom:44px!important}.my-12{margin-top:48px!important;margin-bottom:48px!important}.my-13{margin-top:52px!important;margin-bottom:52px!important}.my-14{margin-top:56px!important;margin-bottom:56px!important}.my-15{margin-top:60px!important;margin-bottom:60px!important}.my-16{margin-top:64px!important;margin-bottom:64px!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:4px!important}.mt-2{margin-top:8px!important}.mt-3{margin-top:12px!important}.mt-4{margin-top:16px!important}.mt-5{margin-top:20px!important}.mt-6{margin-top:24px!important}.mt-7{margin-top:28px!important}.mt-8{margin-top:32px!important}.mt-9{margin-top:36px!important}.mt-10{margin-top:40px!important}.mt-11{margin-top:44px!important}.mt-12{margin-top:48px!important}.mt-13{margin-top:52px!important}.mt-14{margin-top:56px!important}.mt-15{margin-top:60px!important}.mt-16{margin-top:64px!important}.mt-auto{margin-top:auto!important}.mr-0{margin-right:0!important}.mr-1{margin-right:4px!important}.mr-2{margin-right:8px!important}.mr-3{margin-right:12px!important}.mr-4{margin-right:16px!important}.mr-5{margin-right:20px!important}.mr-6{margin-right:24px!important}.mr-7{margin-right:28px!important}.mr-8{margin-right:32px!important}.mr-9{margin-right:36px!important}.mr-10{margin-right:40px!important}.mr-11{margin-right:44px!important}.mr-12{margin-right:48px!important}.mr-13{margin-right:52px!important}.mr-14{margin-right:56px!important}.mr-15{margin-right:60px!important}.mr-16{margin-right:64px!important}.mr-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:4px!important}.mb-2{margin-bottom:8px!important}.mb-3{margin-bottom:12px!important}.mb-4{margin-bottom:16px!important}.mb-5{margin-bottom:20px!important}.mb-6{margin-bottom:24px!important}.mb-7{margin-bottom:28px!important}.mb-8{margin-bottom:32px!important}.mb-9{margin-bottom:36px!important}.mb-10{margin-bottom:40px!important}.mb-11{margin-bottom:44px!important}.mb-12{margin-bottom:48px!important}.mb-13{margin-bottom:52px!important}.mb-14{margin-bottom:56px!important}.mb-15{margin-bottom:60px!important}.mb-16{margin-bottom:64px!important}.mb-auto{margin-bottom:auto!important}.ml-0{margin-left:0!important}.ml-1{margin-left:4px!important}.ml-2{margin-left:8px!important}.ml-3{margin-left:12px!important}.ml-4{margin-left:16px!important}.ml-5{margin-left:20px!important}.ml-6{margin-left:24px!important}.ml-7{margin-left:28px!important}.ml-8{margin-left:32px!important}.ml-9{margin-left:36px!important}.ml-10{margin-left:40px!important}.ml-11{margin-left:44px!important}.ml-12{margin-left:48px!important}.ml-13{margin-left:52px!important}.ml-14{margin-left:56px!important}.ml-15{margin-left:60px!important}.ml-16{margin-left:64px!important}.ml-auto{margin-left:auto!important}.ms-0{margin-inline-start:0px!important}.ms-1{margin-inline-start:4px!important}.ms-2{margin-inline-start:8px!important}.ms-3{margin-inline-start:12px!important}.ms-4{margin-inline-start:16px!important}.ms-5{margin-inline-start:20px!important}.ms-6{margin-inline-start:24px!important}.ms-7{margin-inline-start:28px!important}.ms-8{margin-inline-start:32px!important}.ms-9{margin-inline-start:36px!important}.ms-10{margin-inline-start:40px!important}.ms-11{margin-inline-start:44px!important}.ms-12{margin-inline-start:48px!important}.ms-13{margin-inline-start:52px!important}.ms-14{margin-inline-start:56px!important}.ms-15{margin-inline-start:60px!important}.ms-16{margin-inline-start:64px!important}.ms-auto{margin-inline-start:auto!important}.me-0{margin-inline-end:0px!important}.me-1{margin-inline-end:4px!important}.me-2{margin-inline-end:8px!important}.me-3{margin-inline-end:12px!important}.me-4{margin-inline-end:16px!important}.me-5{margin-inline-end:20px!important}.me-6{margin-inline-end:24px!important}.me-7{margin-inline-end:28px!important}.me-8{margin-inline-end:32px!important}.me-9{margin-inline-end:36px!important}.me-10{margin-inline-end:40px!important}.me-11{margin-inline-end:44px!important}.me-12{margin-inline-end:48px!important}.me-13{margin-inline-end:52px!important}.me-14{margin-inline-end:56px!important}.me-15{margin-inline-end:60px!important}.me-16{margin-inline-end:64px!important}.me-auto{margin-inline-end:auto!important}.ma-n1{margin:-4px!important}.ma-n2{margin:-8px!important}.ma-n3{margin:-12px!important}.ma-n4{margin:-16px!important}.ma-n5{margin:-20px!important}.ma-n6{margin:-24px!important}.ma-n7{margin:-28px!important}.ma-n8{margin:-32px!important}.ma-n9{margin:-36px!important}.ma-n10{margin:-40px!important}.ma-n11{margin:-44px!important}.ma-n12{margin:-48px!important}.ma-n13{margin:-52px!important}.ma-n14{margin:-56px!important}.ma-n15{margin:-60px!important}.ma-n16{margin:-64px!important}.mx-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-n16{margin-right:-64px!important;margin-left:-64px!important}.my-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-n1{margin-top:-4px!important}.mt-n2{margin-top:-8px!important}.mt-n3{margin-top:-12px!important}.mt-n4{margin-top:-16px!important}.mt-n5{margin-top:-20px!important}.mt-n6{margin-top:-24px!important}.mt-n7{margin-top:-28px!important}.mt-n8{margin-top:-32px!important}.mt-n9{margin-top:-36px!important}.mt-n10{margin-top:-40px!important}.mt-n11{margin-top:-44px!important}.mt-n12{margin-top:-48px!important}.mt-n13{margin-top:-52px!important}.mt-n14{margin-top:-56px!important}.mt-n15{margin-top:-60px!important}.mt-n16{margin-top:-64px!important}.mr-n1{margin-right:-4px!important}.mr-n2{margin-right:-8px!important}.mr-n3{margin-right:-12px!important}.mr-n4{margin-right:-16px!important}.mr-n5{margin-right:-20px!important}.mr-n6{margin-right:-24px!important}.mr-n7{margin-right:-28px!important}.mr-n8{margin-right:-32px!important}.mr-n9{margin-right:-36px!important}.mr-n10{margin-right:-40px!important}.mr-n11{margin-right:-44px!important}.mr-n12{margin-right:-48px!important}.mr-n13{margin-right:-52px!important}.mr-n14{margin-right:-56px!important}.mr-n15{margin-right:-60px!important}.mr-n16{margin-right:-64px!important}.mb-n1{margin-bottom:-4px!important}.mb-n2{margin-bottom:-8px!important}.mb-n3{margin-bottom:-12px!important}.mb-n4{margin-bottom:-16px!important}.mb-n5{margin-bottom:-20px!important}.mb-n6{margin-bottom:-24px!important}.mb-n7{margin-bottom:-28px!important}.mb-n8{margin-bottom:-32px!important}.mb-n9{margin-bottom:-36px!important}.mb-n10{margin-bottom:-40px!important}.mb-n11{margin-bottom:-44px!important}.mb-n12{margin-bottom:-48px!important}.mb-n13{margin-bottom:-52px!important}.mb-n14{margin-bottom:-56px!important}.mb-n15{margin-bottom:-60px!important}.mb-n16{margin-bottom:-64px!important}.ml-n1{margin-left:-4px!important}.ml-n2{margin-left:-8px!important}.ml-n3{margin-left:-12px!important}.ml-n4{margin-left:-16px!important}.ml-n5{margin-left:-20px!important}.ml-n6{margin-left:-24px!important}.ml-n7{margin-left:-28px!important}.ml-n8{margin-left:-32px!important}.ml-n9{margin-left:-36px!important}.ml-n10{margin-left:-40px!important}.ml-n11{margin-left:-44px!important}.ml-n12{margin-left:-48px!important}.ml-n13{margin-left:-52px!important}.ml-n14{margin-left:-56px!important}.ml-n15{margin-left:-60px!important}.ml-n16{margin-left:-64px!important}.ms-n1{margin-inline-start:-4px!important}.ms-n2{margin-inline-start:-8px!important}.ms-n3{margin-inline-start:-12px!important}.ms-n4{margin-inline-start:-16px!important}.ms-n5{margin-inline-start:-20px!important}.ms-n6{margin-inline-start:-24px!important}.ms-n7{margin-inline-start:-28px!important}.ms-n8{margin-inline-start:-32px!important}.ms-n9{margin-inline-start:-36px!important}.ms-n10{margin-inline-start:-40px!important}.ms-n11{margin-inline-start:-44px!important}.ms-n12{margin-inline-start:-48px!important}.ms-n13{margin-inline-start:-52px!important}.ms-n14{margin-inline-start:-56px!important}.ms-n15{margin-inline-start:-60px!important}.ms-n16{margin-inline-start:-64px!important}.me-n1{margin-inline-end:-4px!important}.me-n2{margin-inline-end:-8px!important}.me-n3{margin-inline-end:-12px!important}.me-n4{margin-inline-end:-16px!important}.me-n5{margin-inline-end:-20px!important}.me-n6{margin-inline-end:-24px!important}.me-n7{margin-inline-end:-28px!important}.me-n8{margin-inline-end:-32px!important}.me-n9{margin-inline-end:-36px!important}.me-n10{margin-inline-end:-40px!important}.me-n11{margin-inline-end:-44px!important}.me-n12{margin-inline-end:-48px!important}.me-n13{margin-inline-end:-52px!important}.me-n14{margin-inline-end:-56px!important}.me-n15{margin-inline-end:-60px!important}.me-n16{margin-inline-end:-64px!important}.pa-0{padding:0!important}.pa-1{padding:4px!important}.pa-2{padding:8px!important}.pa-3{padding:12px!important}.pa-4{padding:16px!important}.pa-5{padding:20px!important}.pa-6{padding:24px!important}.pa-7{padding:28px!important}.pa-8{padding:32px!important}.pa-9{padding:36px!important}.pa-10{padding:40px!important}.pa-11{padding:44px!important}.pa-12{padding:48px!important}.pa-13{padding:52px!important}.pa-14{padding:56px!important}.pa-15{padding:60px!important}.pa-16{padding:64px!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:4px!important;padding-left:4px!important}.px-2{padding-right:8px!important;padding-left:8px!important}.px-3{padding-right:12px!important;padding-left:12px!important}.px-4{padding-right:16px!important;padding-left:16px!important}.px-5{padding-right:20px!important;padding-left:20px!important}.px-6{padding-right:24px!important;padding-left:24px!important}.px-7{padding-right:28px!important;padding-left:28px!important}.px-8{padding-right:32px!important;padding-left:32px!important}.px-9{padding-right:36px!important;padding-left:36px!important}.px-10{padding-right:40px!important;padding-left:40px!important}.px-11{padding-right:44px!important;padding-left:44px!important}.px-12{padding-right:48px!important;padding-left:48px!important}.px-13{padding-right:52px!important;padding-left:52px!important}.px-14{padding-right:56px!important;padding-left:56px!important}.px-15{padding-right:60px!important;padding-left:60px!important}.px-16{padding-right:64px!important;padding-left:64px!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:4px!important;padding-bottom:4px!important}.py-2{padding-top:8px!important;padding-bottom:8px!important}.py-3{padding-top:12px!important;padding-bottom:12px!important}.py-4{padding-top:16px!important;padding-bottom:16px!important}.py-5{padding-top:20px!important;padding-bottom:20px!important}.py-6{padding-top:24px!important;padding-bottom:24px!important}.py-7{padding-top:28px!important;padding-bottom:28px!important}.py-8{padding-top:32px!important;padding-bottom:32px!important}.py-9{padding-top:36px!important;padding-bottom:36px!important}.py-10{padding-top:40px!important;padding-bottom:40px!important}.py-11{padding-top:44px!important;padding-bottom:44px!important}.py-12{padding-top:48px!important;padding-bottom:48px!important}.py-13{padding-top:52px!important;padding-bottom:52px!important}.py-14{padding-top:56px!important;padding-bottom:56px!important}.py-15{padding-top:60px!important;padding-bottom:60px!important}.py-16{padding-top:64px!important;padding-bottom:64px!important}.pt-0{padding-top:0!important}.pt-1{padding-top:4px!important}.pt-2{padding-top:8px!important}.pt-3{padding-top:12px!important}.pt-4{padding-top:16px!important}.pt-5{padding-top:20px!important}.pt-6{padding-top:24px!important}.pt-7{padding-top:28px!important}.pt-8{padding-top:32px!important}.pt-9{padding-top:36px!important}.pt-10{padding-top:40px!important}.pt-11{padding-top:44px!important}.pt-12{padding-top:48px!important}.pt-13{padding-top:52px!important}.pt-14{padding-top:56px!important}.pt-15{padding-top:60px!important}.pt-16{padding-top:64px!important}.pr-0{padding-right:0!important}.pr-1{padding-right:4px!important}.pr-2{padding-right:8px!important}.pr-3{padding-right:12px!important}.pr-4{padding-right:16px!important}.pr-5{padding-right:20px!important}.pr-6{padding-right:24px!important}.pr-7{padding-right:28px!important}.pr-8{padding-right:32px!important}.pr-9{padding-right:36px!important}.pr-10{padding-right:40px!important}.pr-11{padding-right:44px!important}.pr-12{padding-right:48px!important}.pr-13{padding-right:52px!important}.pr-14{padding-right:56px!important}.pr-15{padding-right:60px!important}.pr-16{padding-right:64px!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:4px!important}.pb-2{padding-bottom:8px!important}.pb-3{padding-bottom:12px!important}.pb-4{padding-bottom:16px!important}.pb-5{padding-bottom:20px!important}.pb-6{padding-bottom:24px!important}.pb-7{padding-bottom:28px!important}.pb-8{padding-bottom:32px!important}.pb-9{padding-bottom:36px!important}.pb-10{padding-bottom:40px!important}.pb-11{padding-bottom:44px!important}.pb-12{padding-bottom:48px!important}.pb-13{padding-bottom:52px!important}.pb-14{padding-bottom:56px!important}.pb-15{padding-bottom:60px!important}.pb-16{padding-bottom:64px!important}.pl-0{padding-left:0!important}.pl-1{padding-left:4px!important}.pl-2{padding-left:8px!important}.pl-3{padding-left:12px!important}.pl-4{padding-left:16px!important}.pl-5{padding-left:20px!important}.pl-6{padding-left:24px!important}.pl-7{padding-left:28px!important}.pl-8{padding-left:32px!important}.pl-9{padding-left:36px!important}.pl-10{padding-left:40px!important}.pl-11{padding-left:44px!important}.pl-12{padding-left:48px!important}.pl-13{padding-left:52px!important}.pl-14{padding-left:56px!important}.pl-15{padding-left:60px!important}.pl-16{padding-left:64px!important}.ps-0{padding-inline-start:0px!important}.ps-1{padding-inline-start:4px!important}.ps-2{padding-inline-start:8px!important}.ps-3{padding-inline-start:12px!important}.ps-4{padding-inline-start:16px!important}.ps-5{padding-inline-start:20px!important}.ps-6{padding-inline-start:24px!important}.ps-7{padding-inline-start:28px!important}.ps-8{padding-inline-start:32px!important}.ps-9{padding-inline-start:36px!important}.ps-10{padding-inline-start:40px!important}.ps-11{padding-inline-start:44px!important}.ps-12{padding-inline-start:48px!important}.ps-13{padding-inline-start:52px!important}.ps-14{padding-inline-start:56px!important}.ps-15{padding-inline-start:60px!important}.ps-16{padding-inline-start:64px!important}.pe-0{padding-inline-end:0px!important}.pe-1{padding-inline-end:4px!important}.pe-2{padding-inline-end:8px!important}.pe-3{padding-inline-end:12px!important}.pe-4{padding-inline-end:16px!important}.pe-5{padding-inline-end:20px!important}.pe-6{padding-inline-end:24px!important}.pe-7{padding-inline-end:28px!important}.pe-8{padding-inline-end:32px!important}.pe-9{padding-inline-end:36px!important}.pe-10{padding-inline-end:40px!important}.pe-11{padding-inline-end:44px!important}.pe-12{padding-inline-end:48px!important}.pe-13{padding-inline-end:52px!important}.pe-14{padding-inline-end:56px!important}.pe-15{padding-inline-end:60px!important}.pe-16{padding-inline-end:64px!important}.rounded-0{border-radius:0!important}.rounded-sm{border-radius:2px!important}.rounded{border-radius:4px!important}.rounded-lg{border-radius:8px!important}.rounded-xl{border-radius:24px!important}.rounded-pill{border-radius:9999px!important}.rounded-circle{border-radius:50%!important}.rounded-shaped{border-radius:24px 0!important}.rounded-t-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-t-sm{border-top-left-radius:2px!important;border-top-right-radius:2px!important}.rounded-t{border-top-left-radius:4px!important;border-top-right-radius:4px!important}.rounded-t-lg{border-top-left-radius:8px!important;border-top-right-radius:8px!important}.rounded-t-xl{border-top-left-radius:24px!important;border-top-right-radius:24px!important}.rounded-t-pill{border-top-left-radius:9999px!important;border-top-right-radius:9999px!important}.rounded-t-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-t-shaped{border-top-left-radius:24px!important;border-top-right-radius:0!important}.v-locale--is-ltr .rounded-e-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.v-locale--is-rtl .rounded-e-0{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.v-locale--is-ltr .rounded-e-sm{border-top-right-radius:2px!important;border-bottom-right-radius:2px!important}.v-locale--is-rtl .rounded-e-sm{border-top-left-radius:2px!important;border-bottom-left-radius:2px!important}.v-locale--is-ltr .rounded-e{border-top-right-radius:4px!important;border-bottom-right-radius:4px!important}.v-locale--is-rtl .rounded-e{border-top-left-radius:4px!important;border-bottom-left-radius:4px!important}.v-locale--is-ltr .rounded-e-lg{border-top-right-radius:8px!important;border-bottom-right-radius:8px!important}.v-locale--is-rtl .rounded-e-lg{border-top-left-radius:8px!important;border-bottom-left-radius:8px!important}.v-locale--is-ltr .rounded-e-xl{border-top-right-radius:24px!important;border-bottom-right-radius:24px!important}.v-locale--is-rtl .rounded-e-xl{border-top-left-radius:24px!important;border-bottom-left-radius:24px!important}.v-locale--is-ltr .rounded-e-pill{border-top-right-radius:9999px!important;border-bottom-right-radius:9999px!important}.v-locale--is-rtl .rounded-e-pill{border-top-left-radius:9999px!important;border-bottom-left-radius:9999px!important}.v-locale--is-ltr .rounded-e-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.v-locale--is-rtl .rounded-e-circle{border-top-left-radius:50%!important;border-bottom-left-radius:50%!important}.v-locale--is-ltr .rounded-e-shaped{border-top-right-radius:24px!important;border-bottom-right-radius:0!important}.v-locale--is-rtl .rounded-e-shaped{border-top-left-radius:24px!important;border-bottom-left-radius:0!important}.rounded-b-0{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.rounded-b-sm{border-bottom-left-radius:2px!important;border-bottom-right-radius:2px!important}.rounded-b{border-bottom-left-radius:4px!important;border-bottom-right-radius:4px!important}.rounded-b-lg{border-bottom-left-radius:8px!important;border-bottom-right-radius:8px!important}.rounded-b-xl{border-bottom-left-radius:24px!important;border-bottom-right-radius:24px!important}.rounded-b-pill{border-bottom-left-radius:9999px!important;border-bottom-right-radius:9999px!important}.rounded-b-circle{border-bottom-left-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-b-shaped{border-bottom-left-radius:24px!important;border-bottom-right-radius:0!important}.v-locale--is-ltr .rounded-s-0{border-top-left-radius:0!important;border-bottom-left-radius:0!important}.v-locale--is-rtl .rounded-s-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.v-locale--is-ltr .rounded-s-sm{border-top-left-radius:2px!important;border-bottom-left-radius:2px!important}.v-locale--is-rtl .rounded-s-sm{border-top-right-radius:2px!important;border-bottom-right-radius:2px!important}.v-locale--is-ltr .rounded-s{border-top-left-radius:4px!important;border-bottom-left-radius:4px!important}.v-locale--is-rtl .rounded-s{border-top-right-radius:4px!important;border-bottom-right-radius:4px!important}.v-locale--is-ltr .rounded-s-lg{border-top-left-radius:8px!important;border-bottom-left-radius:8px!important}.v-locale--is-rtl .rounded-s-lg{border-top-right-radius:8px!important;border-bottom-right-radius:8px!important}.v-locale--is-ltr .rounded-s-xl{border-top-left-radius:24px!important;border-bottom-left-radius:24px!important}.v-locale--is-rtl .rounded-s-xl{border-top-right-radius:24px!important;border-bottom-right-radius:24px!important}.v-locale--is-ltr .rounded-s-pill{border-top-left-radius:9999px!important;border-bottom-left-radius:9999px!important}.v-locale--is-rtl .rounded-s-pill{border-top-right-radius:9999px!important;border-bottom-right-radius:9999px!important}.v-locale--is-ltr .rounded-s-circle{border-top-left-radius:50%!important;border-bottom-left-radius:50%!important}.v-locale--is-rtl .rounded-s-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.v-locale--is-ltr .rounded-s-shaped{border-top-left-radius:24px!important;border-bottom-left-radius:0!important}.v-locale--is-rtl .rounded-s-shaped{border-top-right-radius:24px!important;border-bottom-right-radius:0!important}.v-locale--is-ltr .rounded-ts-0{border-top-left-radius:0!important}.v-locale--is-rtl .rounded-ts-0{border-top-right-radius:0!important}.v-locale--is-ltr .rounded-ts-sm{border-top-left-radius:2px!important}.v-locale--is-rtl .rounded-ts-sm{border-top-right-radius:2px!important}.v-locale--is-ltr .rounded-ts{border-top-left-radius:4px!important}.v-locale--is-rtl .rounded-ts{border-top-right-radius:4px!important}.v-locale--is-ltr .rounded-ts-lg{border-top-left-radius:8px!important}.v-locale--is-rtl .rounded-ts-lg{border-top-right-radius:8px!important}.v-locale--is-ltr .rounded-ts-xl{border-top-left-radius:24px!important}.v-locale--is-rtl .rounded-ts-xl{border-top-right-radius:24px!important}.v-locale--is-ltr .rounded-ts-pill{border-top-left-radius:9999px!important}.v-locale--is-rtl .rounded-ts-pill{border-top-right-radius:9999px!important}.v-locale--is-ltr .rounded-ts-circle{border-top-left-radius:50%!important}.v-locale--is-rtl .rounded-ts-circle{border-top-right-radius:50%!important}.v-locale--is-ltr .rounded-ts-shaped{border-top-left-radius:24px 0!important}.v-locale--is-rtl .rounded-ts-shaped{border-top-right-radius:24px 0!important}.v-locale--is-ltr .rounded-te-0{border-top-right-radius:0!important}.v-locale--is-rtl .rounded-te-0{border-top-left-radius:0!important}.v-locale--is-ltr .rounded-te-sm{border-top-right-radius:2px!important}.v-locale--is-rtl .rounded-te-sm{border-top-left-radius:2px!important}.v-locale--is-ltr .rounded-te{border-top-right-radius:4px!important}.v-locale--is-rtl .rounded-te{border-top-left-radius:4px!important}.v-locale--is-ltr .rounded-te-lg{border-top-right-radius:8px!important}.v-locale--is-rtl .rounded-te-lg{border-top-left-radius:8px!important}.v-locale--is-ltr .rounded-te-xl{border-top-right-radius:24px!important}.v-locale--is-rtl .rounded-te-xl{border-top-left-radius:24px!important}.v-locale--is-ltr .rounded-te-pill{border-top-right-radius:9999px!important}.v-locale--is-rtl .rounded-te-pill{border-top-left-radius:9999px!important}.v-locale--is-ltr .rounded-te-circle{border-top-right-radius:50%!important}.v-locale--is-rtl .rounded-te-circle{border-top-left-radius:50%!important}.v-locale--is-ltr .rounded-te-shaped{border-top-right-radius:24px 0!important}.v-locale--is-rtl .rounded-te-shaped{border-top-left-radius:24px 0!important}.v-locale--is-ltr .rounded-be-0{border-bottom-right-radius:0!important}.v-locale--is-rtl .rounded-be-0{border-bottom-left-radius:0!important}.v-locale--is-ltr .rounded-be-sm{border-bottom-right-radius:2px!important}.v-locale--is-rtl .rounded-be-sm{border-bottom-left-radius:2px!important}.v-locale--is-ltr .rounded-be{border-bottom-right-radius:4px!important}.v-locale--is-rtl .rounded-be{border-bottom-left-radius:4px!important}.v-locale--is-ltr .rounded-be-lg{border-bottom-right-radius:8px!important}.v-locale--is-rtl .rounded-be-lg{border-bottom-left-radius:8px!important}.v-locale--is-ltr .rounded-be-xl{border-bottom-right-radius:24px!important}.v-locale--is-rtl .rounded-be-xl{border-bottom-left-radius:24px!important}.v-locale--is-ltr .rounded-be-pill{border-bottom-right-radius:9999px!important}.v-locale--is-rtl .rounded-be-pill{border-bottom-left-radius:9999px!important}.v-locale--is-ltr .rounded-be-circle{border-bottom-right-radius:50%!important}.v-locale--is-rtl .rounded-be-circle{border-bottom-left-radius:50%!important}.v-locale--is-ltr .rounded-be-shaped{border-bottom-right-radius:24px 0!important}.v-locale--is-rtl .rounded-be-shaped{border-bottom-left-radius:24px 0!important}.v-locale--is-ltr .rounded-bs-0{border-bottom-left-radius:0!important}.v-locale--is-rtl .rounded-bs-0{border-bottom-right-radius:0!important}.v-locale--is-ltr .rounded-bs-sm{border-bottom-left-radius:2px!important}.v-locale--is-rtl .rounded-bs-sm{border-bottom-right-radius:2px!important}.v-locale--is-ltr .rounded-bs{border-bottom-left-radius:4px!important}.v-locale--is-rtl .rounded-bs{border-bottom-right-radius:4px!important}.v-locale--is-ltr .rounded-bs-lg{border-bottom-left-radius:8px!important}.v-locale--is-rtl .rounded-bs-lg{border-bottom-right-radius:8px!important}.v-locale--is-ltr .rounded-bs-xl{border-bottom-left-radius:24px!important}.v-locale--is-rtl .rounded-bs-xl{border-bottom-right-radius:24px!important}.v-locale--is-ltr .rounded-bs-pill{border-bottom-left-radius:9999px!important}.v-locale--is-rtl .rounded-bs-pill{border-bottom-right-radius:9999px!important}.v-locale--is-ltr .rounded-bs-circle{border-bottom-left-radius:50%!important}.v-locale--is-rtl .rounded-bs-circle{border-bottom-right-radius:50%!important}.v-locale--is-ltr .rounded-bs-shaped{border-bottom-left-radius:24px 0!important}.v-locale--is-rtl .rounded-bs-shaped{border-bottom-right-radius:24px 0!important}.border-0{border-width:0!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border{border-width:thin!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-sm{border-width:1px!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-md{border-width:2px!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-lg{border-width:4px!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-xl{border-width:8px!important;border-style:solid!important;border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-opacity-0{--v-border-opacity: 0 !important}.border-opacity{--v-border-opacity: .12 !important}.border-opacity-25{--v-border-opacity: .25 !important}.border-opacity-50{--v-border-opacity: .5 !important}.border-opacity-75{--v-border-opacity: .75 !important}.border-opacity-100{--v-border-opacity: 1 !important}.border-t-0{border-block-start-width:0!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t{border-block-start-width:thin!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t-sm{border-block-start-width:1px!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t-md{border-block-start-width:2px!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t-lg{border-block-start-width:4px!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-t-xl{border-block-start-width:8px!important;border-block-start-style:solid!important;border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e-0{border-inline-end-width:0!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e{border-inline-end-width:thin!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e-sm{border-inline-end-width:1px!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e-md{border-inline-end-width:2px!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e-lg{border-inline-end-width:4px!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-e-xl{border-inline-end-width:8px!important;border-inline-end-style:solid!important;border-inline-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-0{border-block-end-width:0!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b{border-block-end-width:thin!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-sm{border-block-end-width:1px!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-md{border-block-end-width:2px!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-lg{border-block-end-width:4px!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-b-xl{border-block-end-width:8px!important;border-block-end-style:solid!important;border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s-0{border-inline-start-width:0!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s{border-inline-start-width:thin!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s-sm{border-inline-start-width:1px!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s-md{border-inline-start-width:2px!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s-lg{border-inline-start-width:4px!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-s-xl{border-inline-start-width:8px!important;border-inline-start-style:solid!important;border-inline-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important}.border-solid{border-style:solid!important}.border-dashed{border-style:dashed!important}.border-dotted{border-style:dotted!important}.border-double{border-style:double!important}.border-none{border-style:none!important}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}.text-justify{text-align:justify!important}.text-start{text-align:start!important}.text-end{text-align:end!important}.text-decoration-line-through{text-decoration:line-through!important}.text-decoration-none{text-decoration:none!important}.text-decoration-overline{text-decoration:overline!important}.text-decoration-underline{text-decoration:underline!important}.text-wrap{white-space:normal!important}.text-no-wrap{white-space:nowrap!important}.text-pre{white-space:pre!important}.text-pre-line{white-space:pre-line!important}.text-pre-wrap{white-space:pre-wrap!important}.text-break{overflow-wrap:break-word!important;word-break:break-word!important}.text-high-emphasis{color:rgba(var(--v-theme-on-background),var(--v-high-emphasis-opacity))!important}.text-medium-emphasis{color:rgba(var(--v-theme-on-background),var(--v-medium-emphasis-opacity))!important}.text-disabled{color:rgba(var(--v-theme-on-background),var(--v-disabled-opacity))!important}.text-truncate{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}.text-h1{font-size:6rem!important;font-weight:300;line-height:6rem;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-h2{font-size:3.75rem!important;font-weight:300;line-height:3.75rem;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-h3{font-size:3rem!important;font-weight:400;line-height:3.125rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-h4{font-size:2.125rem!important;font-weight:400;line-height:2.5rem;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-h5{font-size:1.5rem!important;font-weight:400;line-height:2rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-h6{font-size:1.25rem!important;font-weight:500;line-height:2rem;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-body-1{font-size:1rem!important;font-weight:400;line-height:1.5rem;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-body-2{font-size:.875rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-caption{font-size:.75rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-overline{font-size:.75rem!important;font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-none{text-transform:none!important}.text-capitalize{text-transform:capitalize!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.font-weight-thin{font-weight:100!important}.font-weight-light{font-weight:300!important}.font-weight-regular{font-weight:400!important}.font-weight-medium{font-weight:500!important}.font-weight-bold{font-weight:700!important}.font-weight-black{font-weight:900!important}.font-italic{font-style:italic!important}.text-mono{font-family:monospace!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-fixed{position:fixed!important}.position-absolute{position:absolute!important}.position-sticky{position:sticky!important}.cursor-auto{cursor:auto!important}.cursor-default{cursor:default!important}.cursor-pointer{cursor:pointer!important}.cursor-wait{cursor:wait!important}.cursor-text{cursor:text!important}.cursor-move{cursor:move!important}.cursor-help{cursor:help!important}.cursor-not-allowed{cursor:not-allowed!important}.cursor-progress{cursor:progress!important}.cursor-grab{cursor:grab!important}.cursor-grabbing{cursor:grabbing!important}.cursor-none{cursor:none!important}.fill-height{height:100%!important}.h-auto{height:auto!important}.h-screen{height:100vh!important}.h-0{height:0!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-screen{height:100dvh!important}.w-auto{width:auto!important}.w-0{width:0!important}.w-25{width:25%!important}.w-33{width:33%!important}.w-50{width:50%!important}.w-66{width:66%!important}.w-75{width:75%!important}.w-100{width:100%!important}@media (min-width: 600px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.float-sm-none{float:none!important}.float-sm-left{float:left!important}.float-sm-right{float:right!important}.v-locale--is-rtl .float-sm-end{float:left!important}.v-locale--is-rtl .float-sm-start,.v-locale--is-ltr .float-sm-end{float:right!important}.v-locale--is-ltr .float-sm-start{float:left!important}.flex-sm-fill,.flex-sm-1-1{flex:1 1 auto!important}.flex-sm-1-0{flex:1 0 auto!important}.flex-sm-0-1{flex:0 1 auto!important}.flex-sm-0-0{flex:0 0 auto!important}.flex-sm-1-1-100{flex:1 1 100%!important}.flex-sm-1-0-100{flex:1 0 100%!important}.flex-sm-0-1-100{flex:0 1 100%!important}.flex-sm-0-0-100{flex:0 0 100%!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-sm-start{justify-content:flex-start!important}.justify-sm-end{justify-content:flex-end!important}.justify-sm-center{justify-content:center!important}.justify-sm-space-between{justify-content:space-between!important}.justify-sm-space-around{justify-content:space-around!important}.justify-sm-space-evenly{justify-content:space-evenly!important}.align-sm-start{align-items:flex-start!important}.align-sm-end{align-items:flex-end!important}.align-sm-center{align-items:center!important}.align-sm-baseline{align-items:baseline!important}.align-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-space-between{align-content:space-between!important}.align-content-sm-space-around{align-content:space-around!important}.align-content-sm-space-evenly{align-content:space-evenly!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-6{order:6!important}.order-sm-7{order:7!important}.order-sm-8{order:8!important}.order-sm-9{order:9!important}.order-sm-10{order:10!important}.order-sm-11{order:11!important}.order-sm-12{order:12!important}.order-sm-last{order:13!important}.ga-sm-0{gap:0px!important}.ga-sm-1{gap:4px!important}.ga-sm-2{gap:8px!important}.ga-sm-3{gap:12px!important}.ga-sm-4{gap:16px!important}.ga-sm-5{gap:20px!important}.ga-sm-6{gap:24px!important}.ga-sm-7{gap:28px!important}.ga-sm-8{gap:32px!important}.ga-sm-9{gap:36px!important}.ga-sm-10{gap:40px!important}.ga-sm-11{gap:44px!important}.ga-sm-12{gap:48px!important}.ga-sm-13{gap:52px!important}.ga-sm-14{gap:56px!important}.ga-sm-15{gap:60px!important}.ga-sm-16{gap:64px!important}.ga-sm-auto{gap:auto!important}.gr-sm-0{row-gap:0px!important}.gr-sm-1{row-gap:4px!important}.gr-sm-2{row-gap:8px!important}.gr-sm-3{row-gap:12px!important}.gr-sm-4{row-gap:16px!important}.gr-sm-5{row-gap:20px!important}.gr-sm-6{row-gap:24px!important}.gr-sm-7{row-gap:28px!important}.gr-sm-8{row-gap:32px!important}.gr-sm-9{row-gap:36px!important}.gr-sm-10{row-gap:40px!important}.gr-sm-11{row-gap:44px!important}.gr-sm-12{row-gap:48px!important}.gr-sm-13{row-gap:52px!important}.gr-sm-14{row-gap:56px!important}.gr-sm-15{row-gap:60px!important}.gr-sm-16{row-gap:64px!important}.gr-sm-auto{row-gap:auto!important}.gc-sm-0{column-gap:0px!important}.gc-sm-1{column-gap:4px!important}.gc-sm-2{column-gap:8px!important}.gc-sm-3{column-gap:12px!important}.gc-sm-4{column-gap:16px!important}.gc-sm-5{column-gap:20px!important}.gc-sm-6{column-gap:24px!important}.gc-sm-7{column-gap:28px!important}.gc-sm-8{column-gap:32px!important}.gc-sm-9{column-gap:36px!important}.gc-sm-10{column-gap:40px!important}.gc-sm-11{column-gap:44px!important}.gc-sm-12{column-gap:48px!important}.gc-sm-13{column-gap:52px!important}.gc-sm-14{column-gap:56px!important}.gc-sm-15{column-gap:60px!important}.gc-sm-16{column-gap:64px!important}.gc-sm-auto{column-gap:auto!important}.ma-sm-0{margin:0!important}.ma-sm-1{margin:4px!important}.ma-sm-2{margin:8px!important}.ma-sm-3{margin:12px!important}.ma-sm-4{margin:16px!important}.ma-sm-5{margin:20px!important}.ma-sm-6{margin:24px!important}.ma-sm-7{margin:28px!important}.ma-sm-8{margin:32px!important}.ma-sm-9{margin:36px!important}.ma-sm-10{margin:40px!important}.ma-sm-11{margin:44px!important}.ma-sm-12{margin:48px!important}.ma-sm-13{margin:52px!important}.ma-sm-14{margin:56px!important}.ma-sm-15{margin:60px!important}.ma-sm-16{margin:64px!important}.ma-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:4px!important;margin-left:4px!important}.mx-sm-2{margin-right:8px!important;margin-left:8px!important}.mx-sm-3{margin-right:12px!important;margin-left:12px!important}.mx-sm-4{margin-right:16px!important;margin-left:16px!important}.mx-sm-5{margin-right:20px!important;margin-left:20px!important}.mx-sm-6{margin-right:24px!important;margin-left:24px!important}.mx-sm-7{margin-right:28px!important;margin-left:28px!important}.mx-sm-8{margin-right:32px!important;margin-left:32px!important}.mx-sm-9{margin-right:36px!important;margin-left:36px!important}.mx-sm-10{margin-right:40px!important;margin-left:40px!important}.mx-sm-11{margin-right:44px!important;margin-left:44px!important}.mx-sm-12{margin-right:48px!important;margin-left:48px!important}.mx-sm-13{margin-right:52px!important;margin-left:52px!important}.mx-sm-14{margin-right:56px!important;margin-left:56px!important}.mx-sm-15{margin-right:60px!important;margin-left:60px!important}.mx-sm-16{margin-right:64px!important;margin-left:64px!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:4px!important;margin-bottom:4px!important}.my-sm-2{margin-top:8px!important;margin-bottom:8px!important}.my-sm-3{margin-top:12px!important;margin-bottom:12px!important}.my-sm-4{margin-top:16px!important;margin-bottom:16px!important}.my-sm-5{margin-top:20px!important;margin-bottom:20px!important}.my-sm-6{margin-top:24px!important;margin-bottom:24px!important}.my-sm-7{margin-top:28px!important;margin-bottom:28px!important}.my-sm-8{margin-top:32px!important;margin-bottom:32px!important}.my-sm-9{margin-top:36px!important;margin-bottom:36px!important}.my-sm-10{margin-top:40px!important;margin-bottom:40px!important}.my-sm-11{margin-top:44px!important;margin-bottom:44px!important}.my-sm-12{margin-top:48px!important;margin-bottom:48px!important}.my-sm-13{margin-top:52px!important;margin-bottom:52px!important}.my-sm-14{margin-top:56px!important;margin-bottom:56px!important}.my-sm-15{margin-top:60px!important;margin-bottom:60px!important}.my-sm-16{margin-top:64px!important;margin-bottom:64px!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:4px!important}.mt-sm-2{margin-top:8px!important}.mt-sm-3{margin-top:12px!important}.mt-sm-4{margin-top:16px!important}.mt-sm-5{margin-top:20px!important}.mt-sm-6{margin-top:24px!important}.mt-sm-7{margin-top:28px!important}.mt-sm-8{margin-top:32px!important}.mt-sm-9{margin-top:36px!important}.mt-sm-10{margin-top:40px!important}.mt-sm-11{margin-top:44px!important}.mt-sm-12{margin-top:48px!important}.mt-sm-13{margin-top:52px!important}.mt-sm-14{margin-top:56px!important}.mt-sm-15{margin-top:60px!important}.mt-sm-16{margin-top:64px!important}.mt-sm-auto{margin-top:auto!important}.mr-sm-0{margin-right:0!important}.mr-sm-1{margin-right:4px!important}.mr-sm-2{margin-right:8px!important}.mr-sm-3{margin-right:12px!important}.mr-sm-4{margin-right:16px!important}.mr-sm-5{margin-right:20px!important}.mr-sm-6{margin-right:24px!important}.mr-sm-7{margin-right:28px!important}.mr-sm-8{margin-right:32px!important}.mr-sm-9{margin-right:36px!important}.mr-sm-10{margin-right:40px!important}.mr-sm-11{margin-right:44px!important}.mr-sm-12{margin-right:48px!important}.mr-sm-13{margin-right:52px!important}.mr-sm-14{margin-right:56px!important}.mr-sm-15{margin-right:60px!important}.mr-sm-16{margin-right:64px!important}.mr-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:4px!important}.mb-sm-2{margin-bottom:8px!important}.mb-sm-3{margin-bottom:12px!important}.mb-sm-4{margin-bottom:16px!important}.mb-sm-5{margin-bottom:20px!important}.mb-sm-6{margin-bottom:24px!important}.mb-sm-7{margin-bottom:28px!important}.mb-sm-8{margin-bottom:32px!important}.mb-sm-9{margin-bottom:36px!important}.mb-sm-10{margin-bottom:40px!important}.mb-sm-11{margin-bottom:44px!important}.mb-sm-12{margin-bottom:48px!important}.mb-sm-13{margin-bottom:52px!important}.mb-sm-14{margin-bottom:56px!important}.mb-sm-15{margin-bottom:60px!important}.mb-sm-16{margin-bottom:64px!important}.mb-sm-auto{margin-bottom:auto!important}.ml-sm-0{margin-left:0!important}.ml-sm-1{margin-left:4px!important}.ml-sm-2{margin-left:8px!important}.ml-sm-3{margin-left:12px!important}.ml-sm-4{margin-left:16px!important}.ml-sm-5{margin-left:20px!important}.ml-sm-6{margin-left:24px!important}.ml-sm-7{margin-left:28px!important}.ml-sm-8{margin-left:32px!important}.ml-sm-9{margin-left:36px!important}.ml-sm-10{margin-left:40px!important}.ml-sm-11{margin-left:44px!important}.ml-sm-12{margin-left:48px!important}.ml-sm-13{margin-left:52px!important}.ml-sm-14{margin-left:56px!important}.ml-sm-15{margin-left:60px!important}.ml-sm-16{margin-left:64px!important}.ml-sm-auto{margin-left:auto!important}.ms-sm-0{margin-inline-start:0px!important}.ms-sm-1{margin-inline-start:4px!important}.ms-sm-2{margin-inline-start:8px!important}.ms-sm-3{margin-inline-start:12px!important}.ms-sm-4{margin-inline-start:16px!important}.ms-sm-5{margin-inline-start:20px!important}.ms-sm-6{margin-inline-start:24px!important}.ms-sm-7{margin-inline-start:28px!important}.ms-sm-8{margin-inline-start:32px!important}.ms-sm-9{margin-inline-start:36px!important}.ms-sm-10{margin-inline-start:40px!important}.ms-sm-11{margin-inline-start:44px!important}.ms-sm-12{margin-inline-start:48px!important}.ms-sm-13{margin-inline-start:52px!important}.ms-sm-14{margin-inline-start:56px!important}.ms-sm-15{margin-inline-start:60px!important}.ms-sm-16{margin-inline-start:64px!important}.ms-sm-auto{margin-inline-start:auto!important}.me-sm-0{margin-inline-end:0px!important}.me-sm-1{margin-inline-end:4px!important}.me-sm-2{margin-inline-end:8px!important}.me-sm-3{margin-inline-end:12px!important}.me-sm-4{margin-inline-end:16px!important}.me-sm-5{margin-inline-end:20px!important}.me-sm-6{margin-inline-end:24px!important}.me-sm-7{margin-inline-end:28px!important}.me-sm-8{margin-inline-end:32px!important}.me-sm-9{margin-inline-end:36px!important}.me-sm-10{margin-inline-end:40px!important}.me-sm-11{margin-inline-end:44px!important}.me-sm-12{margin-inline-end:48px!important}.me-sm-13{margin-inline-end:52px!important}.me-sm-14{margin-inline-end:56px!important}.me-sm-15{margin-inline-end:60px!important}.me-sm-16{margin-inline-end:64px!important}.me-sm-auto{margin-inline-end:auto!important}.ma-sm-n1{margin:-4px!important}.ma-sm-n2{margin:-8px!important}.ma-sm-n3{margin:-12px!important}.ma-sm-n4{margin:-16px!important}.ma-sm-n5{margin:-20px!important}.ma-sm-n6{margin:-24px!important}.ma-sm-n7{margin:-28px!important}.ma-sm-n8{margin:-32px!important}.ma-sm-n9{margin:-36px!important}.ma-sm-n10{margin:-40px!important}.ma-sm-n11{margin:-44px!important}.ma-sm-n12{margin:-48px!important}.ma-sm-n13{margin:-52px!important}.ma-sm-n14{margin:-56px!important}.ma-sm-n15{margin:-60px!important}.ma-sm-n16{margin:-64px!important}.mx-sm-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-sm-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-sm-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-sm-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-sm-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-sm-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-sm-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-sm-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-sm-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-sm-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-sm-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-sm-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-sm-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-sm-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-sm-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-sm-n16{margin-right:-64px!important;margin-left:-64px!important}.my-sm-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-sm-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-sm-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-sm-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-sm-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-sm-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-sm-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-sm-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-sm-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-sm-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-sm-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-sm-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-sm-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-sm-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-sm-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-sm-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-sm-n1{margin-top:-4px!important}.mt-sm-n2{margin-top:-8px!important}.mt-sm-n3{margin-top:-12px!important}.mt-sm-n4{margin-top:-16px!important}.mt-sm-n5{margin-top:-20px!important}.mt-sm-n6{margin-top:-24px!important}.mt-sm-n7{margin-top:-28px!important}.mt-sm-n8{margin-top:-32px!important}.mt-sm-n9{margin-top:-36px!important}.mt-sm-n10{margin-top:-40px!important}.mt-sm-n11{margin-top:-44px!important}.mt-sm-n12{margin-top:-48px!important}.mt-sm-n13{margin-top:-52px!important}.mt-sm-n14{margin-top:-56px!important}.mt-sm-n15{margin-top:-60px!important}.mt-sm-n16{margin-top:-64px!important}.mr-sm-n1{margin-right:-4px!important}.mr-sm-n2{margin-right:-8px!important}.mr-sm-n3{margin-right:-12px!important}.mr-sm-n4{margin-right:-16px!important}.mr-sm-n5{margin-right:-20px!important}.mr-sm-n6{margin-right:-24px!important}.mr-sm-n7{margin-right:-28px!important}.mr-sm-n8{margin-right:-32px!important}.mr-sm-n9{margin-right:-36px!important}.mr-sm-n10{margin-right:-40px!important}.mr-sm-n11{margin-right:-44px!important}.mr-sm-n12{margin-right:-48px!important}.mr-sm-n13{margin-right:-52px!important}.mr-sm-n14{margin-right:-56px!important}.mr-sm-n15{margin-right:-60px!important}.mr-sm-n16{margin-right:-64px!important}.mb-sm-n1{margin-bottom:-4px!important}.mb-sm-n2{margin-bottom:-8px!important}.mb-sm-n3{margin-bottom:-12px!important}.mb-sm-n4{margin-bottom:-16px!important}.mb-sm-n5{margin-bottom:-20px!important}.mb-sm-n6{margin-bottom:-24px!important}.mb-sm-n7{margin-bottom:-28px!important}.mb-sm-n8{margin-bottom:-32px!important}.mb-sm-n9{margin-bottom:-36px!important}.mb-sm-n10{margin-bottom:-40px!important}.mb-sm-n11{margin-bottom:-44px!important}.mb-sm-n12{margin-bottom:-48px!important}.mb-sm-n13{margin-bottom:-52px!important}.mb-sm-n14{margin-bottom:-56px!important}.mb-sm-n15{margin-bottom:-60px!important}.mb-sm-n16{margin-bottom:-64px!important}.ml-sm-n1{margin-left:-4px!important}.ml-sm-n2{margin-left:-8px!important}.ml-sm-n3{margin-left:-12px!important}.ml-sm-n4{margin-left:-16px!important}.ml-sm-n5{margin-left:-20px!important}.ml-sm-n6{margin-left:-24px!important}.ml-sm-n7{margin-left:-28px!important}.ml-sm-n8{margin-left:-32px!important}.ml-sm-n9{margin-left:-36px!important}.ml-sm-n10{margin-left:-40px!important}.ml-sm-n11{margin-left:-44px!important}.ml-sm-n12{margin-left:-48px!important}.ml-sm-n13{margin-left:-52px!important}.ml-sm-n14{margin-left:-56px!important}.ml-sm-n15{margin-left:-60px!important}.ml-sm-n16{margin-left:-64px!important}.ms-sm-n1{margin-inline-start:-4px!important}.ms-sm-n2{margin-inline-start:-8px!important}.ms-sm-n3{margin-inline-start:-12px!important}.ms-sm-n4{margin-inline-start:-16px!important}.ms-sm-n5{margin-inline-start:-20px!important}.ms-sm-n6{margin-inline-start:-24px!important}.ms-sm-n7{margin-inline-start:-28px!important}.ms-sm-n8{margin-inline-start:-32px!important}.ms-sm-n9{margin-inline-start:-36px!important}.ms-sm-n10{margin-inline-start:-40px!important}.ms-sm-n11{margin-inline-start:-44px!important}.ms-sm-n12{margin-inline-start:-48px!important}.ms-sm-n13{margin-inline-start:-52px!important}.ms-sm-n14{margin-inline-start:-56px!important}.ms-sm-n15{margin-inline-start:-60px!important}.ms-sm-n16{margin-inline-start:-64px!important}.me-sm-n1{margin-inline-end:-4px!important}.me-sm-n2{margin-inline-end:-8px!important}.me-sm-n3{margin-inline-end:-12px!important}.me-sm-n4{margin-inline-end:-16px!important}.me-sm-n5{margin-inline-end:-20px!important}.me-sm-n6{margin-inline-end:-24px!important}.me-sm-n7{margin-inline-end:-28px!important}.me-sm-n8{margin-inline-end:-32px!important}.me-sm-n9{margin-inline-end:-36px!important}.me-sm-n10{margin-inline-end:-40px!important}.me-sm-n11{margin-inline-end:-44px!important}.me-sm-n12{margin-inline-end:-48px!important}.me-sm-n13{margin-inline-end:-52px!important}.me-sm-n14{margin-inline-end:-56px!important}.me-sm-n15{margin-inline-end:-60px!important}.me-sm-n16{margin-inline-end:-64px!important}.pa-sm-0{padding:0!important}.pa-sm-1{padding:4px!important}.pa-sm-2{padding:8px!important}.pa-sm-3{padding:12px!important}.pa-sm-4{padding:16px!important}.pa-sm-5{padding:20px!important}.pa-sm-6{padding:24px!important}.pa-sm-7{padding:28px!important}.pa-sm-8{padding:32px!important}.pa-sm-9{padding:36px!important}.pa-sm-10{padding:40px!important}.pa-sm-11{padding:44px!important}.pa-sm-12{padding:48px!important}.pa-sm-13{padding:52px!important}.pa-sm-14{padding:56px!important}.pa-sm-15{padding:60px!important}.pa-sm-16{padding:64px!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:4px!important;padding-left:4px!important}.px-sm-2{padding-right:8px!important;padding-left:8px!important}.px-sm-3{padding-right:12px!important;padding-left:12px!important}.px-sm-4{padding-right:16px!important;padding-left:16px!important}.px-sm-5{padding-right:20px!important;padding-left:20px!important}.px-sm-6{padding-right:24px!important;padding-left:24px!important}.px-sm-7{padding-right:28px!important;padding-left:28px!important}.px-sm-8{padding-right:32px!important;padding-left:32px!important}.px-sm-9{padding-right:36px!important;padding-left:36px!important}.px-sm-10{padding-right:40px!important;padding-left:40px!important}.px-sm-11{padding-right:44px!important;padding-left:44px!important}.px-sm-12{padding-right:48px!important;padding-left:48px!important}.px-sm-13{padding-right:52px!important;padding-left:52px!important}.px-sm-14{padding-right:56px!important;padding-left:56px!important}.px-sm-15{padding-right:60px!important;padding-left:60px!important}.px-sm-16{padding-right:64px!important;padding-left:64px!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:4px!important;padding-bottom:4px!important}.py-sm-2{padding-top:8px!important;padding-bottom:8px!important}.py-sm-3{padding-top:12px!important;padding-bottom:12px!important}.py-sm-4{padding-top:16px!important;padding-bottom:16px!important}.py-sm-5{padding-top:20px!important;padding-bottom:20px!important}.py-sm-6{padding-top:24px!important;padding-bottom:24px!important}.py-sm-7{padding-top:28px!important;padding-bottom:28px!important}.py-sm-8{padding-top:32px!important;padding-bottom:32px!important}.py-sm-9{padding-top:36px!important;padding-bottom:36px!important}.py-sm-10{padding-top:40px!important;padding-bottom:40px!important}.py-sm-11{padding-top:44px!important;padding-bottom:44px!important}.py-sm-12{padding-top:48px!important;padding-bottom:48px!important}.py-sm-13{padding-top:52px!important;padding-bottom:52px!important}.py-sm-14{padding-top:56px!important;padding-bottom:56px!important}.py-sm-15{padding-top:60px!important;padding-bottom:60px!important}.py-sm-16{padding-top:64px!important;padding-bottom:64px!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:4px!important}.pt-sm-2{padding-top:8px!important}.pt-sm-3{padding-top:12px!important}.pt-sm-4{padding-top:16px!important}.pt-sm-5{padding-top:20px!important}.pt-sm-6{padding-top:24px!important}.pt-sm-7{padding-top:28px!important}.pt-sm-8{padding-top:32px!important}.pt-sm-9{padding-top:36px!important}.pt-sm-10{padding-top:40px!important}.pt-sm-11{padding-top:44px!important}.pt-sm-12{padding-top:48px!important}.pt-sm-13{padding-top:52px!important}.pt-sm-14{padding-top:56px!important}.pt-sm-15{padding-top:60px!important}.pt-sm-16{padding-top:64px!important}.pr-sm-0{padding-right:0!important}.pr-sm-1{padding-right:4px!important}.pr-sm-2{padding-right:8px!important}.pr-sm-3{padding-right:12px!important}.pr-sm-4{padding-right:16px!important}.pr-sm-5{padding-right:20px!important}.pr-sm-6{padding-right:24px!important}.pr-sm-7{padding-right:28px!important}.pr-sm-8{padding-right:32px!important}.pr-sm-9{padding-right:36px!important}.pr-sm-10{padding-right:40px!important}.pr-sm-11{padding-right:44px!important}.pr-sm-12{padding-right:48px!important}.pr-sm-13{padding-right:52px!important}.pr-sm-14{padding-right:56px!important}.pr-sm-15{padding-right:60px!important}.pr-sm-16{padding-right:64px!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:4px!important}.pb-sm-2{padding-bottom:8px!important}.pb-sm-3{padding-bottom:12px!important}.pb-sm-4{padding-bottom:16px!important}.pb-sm-5{padding-bottom:20px!important}.pb-sm-6{padding-bottom:24px!important}.pb-sm-7{padding-bottom:28px!important}.pb-sm-8{padding-bottom:32px!important}.pb-sm-9{padding-bottom:36px!important}.pb-sm-10{padding-bottom:40px!important}.pb-sm-11{padding-bottom:44px!important}.pb-sm-12{padding-bottom:48px!important}.pb-sm-13{padding-bottom:52px!important}.pb-sm-14{padding-bottom:56px!important}.pb-sm-15{padding-bottom:60px!important}.pb-sm-16{padding-bottom:64px!important}.pl-sm-0{padding-left:0!important}.pl-sm-1{padding-left:4px!important}.pl-sm-2{padding-left:8px!important}.pl-sm-3{padding-left:12px!important}.pl-sm-4{padding-left:16px!important}.pl-sm-5{padding-left:20px!important}.pl-sm-6{padding-left:24px!important}.pl-sm-7{padding-left:28px!important}.pl-sm-8{padding-left:32px!important}.pl-sm-9{padding-left:36px!important}.pl-sm-10{padding-left:40px!important}.pl-sm-11{padding-left:44px!important}.pl-sm-12{padding-left:48px!important}.pl-sm-13{padding-left:52px!important}.pl-sm-14{padding-left:56px!important}.pl-sm-15{padding-left:60px!important}.pl-sm-16{padding-left:64px!important}.ps-sm-0{padding-inline-start:0px!important}.ps-sm-1{padding-inline-start:4px!important}.ps-sm-2{padding-inline-start:8px!important}.ps-sm-3{padding-inline-start:12px!important}.ps-sm-4{padding-inline-start:16px!important}.ps-sm-5{padding-inline-start:20px!important}.ps-sm-6{padding-inline-start:24px!important}.ps-sm-7{padding-inline-start:28px!important}.ps-sm-8{padding-inline-start:32px!important}.ps-sm-9{padding-inline-start:36px!important}.ps-sm-10{padding-inline-start:40px!important}.ps-sm-11{padding-inline-start:44px!important}.ps-sm-12{padding-inline-start:48px!important}.ps-sm-13{padding-inline-start:52px!important}.ps-sm-14{padding-inline-start:56px!important}.ps-sm-15{padding-inline-start:60px!important}.ps-sm-16{padding-inline-start:64px!important}.pe-sm-0{padding-inline-end:0px!important}.pe-sm-1{padding-inline-end:4px!important}.pe-sm-2{padding-inline-end:8px!important}.pe-sm-3{padding-inline-end:12px!important}.pe-sm-4{padding-inline-end:16px!important}.pe-sm-5{padding-inline-end:20px!important}.pe-sm-6{padding-inline-end:24px!important}.pe-sm-7{padding-inline-end:28px!important}.pe-sm-8{padding-inline-end:32px!important}.pe-sm-9{padding-inline-end:36px!important}.pe-sm-10{padding-inline-end:40px!important}.pe-sm-11{padding-inline-end:44px!important}.pe-sm-12{padding-inline-end:48px!important}.pe-sm-13{padding-inline-end:52px!important}.pe-sm-14{padding-inline-end:56px!important}.pe-sm-15{padding-inline-end:60px!important}.pe-sm-16{padding-inline-end:64px!important}.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}.text-sm-justify{text-align:justify!important}.text-sm-start{text-align:start!important}.text-sm-end{text-align:end!important}.text-sm-h1{font-size:6rem!important;font-weight:300;line-height:6rem;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-h2{font-size:3.75rem!important;font-weight:300;line-height:3.75rem;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-h3{font-size:3rem!important;font-weight:400;line-height:3.125rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-h4{font-size:2.125rem!important;font-weight:400;line-height:2.5rem;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-h5{font-size:1.5rem!important;font-weight:400;line-height:2rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-h6{font-size:1.25rem!important;font-weight:500;line-height:2rem;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-body-1{font-size:1rem!important;font-weight:400;line-height:1.5rem;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-body-2{font-size:.875rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-sm-caption{font-size:.75rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-sm-overline{font-size:.75rem!important;font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}}@media (min-width: 960px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.float-md-none{float:none!important}.float-md-left{float:left!important}.float-md-right{float:right!important}.v-locale--is-rtl .float-md-end{float:left!important}.v-locale--is-rtl .float-md-start,.v-locale--is-ltr .float-md-end{float:right!important}.v-locale--is-ltr .float-md-start{float:left!important}.flex-md-fill,.flex-md-1-1{flex:1 1 auto!important}.flex-md-1-0{flex:1 0 auto!important}.flex-md-0-1{flex:0 1 auto!important}.flex-md-0-0{flex:0 0 auto!important}.flex-md-1-1-100{flex:1 1 100%!important}.flex-md-1-0-100{flex:1 0 100%!important}.flex-md-0-1-100{flex:0 1 100%!important}.flex-md-0-0-100{flex:0 0 100%!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-md-start{justify-content:flex-start!important}.justify-md-end{justify-content:flex-end!important}.justify-md-center{justify-content:center!important}.justify-md-space-between{justify-content:space-between!important}.justify-md-space-around{justify-content:space-around!important}.justify-md-space-evenly{justify-content:space-evenly!important}.align-md-start{align-items:flex-start!important}.align-md-end{align-items:flex-end!important}.align-md-center{align-items:center!important}.align-md-baseline{align-items:baseline!important}.align-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-space-between{align-content:space-between!important}.align-content-md-space-around{align-content:space-around!important}.align-content-md-space-evenly{align-content:space-evenly!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-6{order:6!important}.order-md-7{order:7!important}.order-md-8{order:8!important}.order-md-9{order:9!important}.order-md-10{order:10!important}.order-md-11{order:11!important}.order-md-12{order:12!important}.order-md-last{order:13!important}.ga-md-0{gap:0px!important}.ga-md-1{gap:4px!important}.ga-md-2{gap:8px!important}.ga-md-3{gap:12px!important}.ga-md-4{gap:16px!important}.ga-md-5{gap:20px!important}.ga-md-6{gap:24px!important}.ga-md-7{gap:28px!important}.ga-md-8{gap:32px!important}.ga-md-9{gap:36px!important}.ga-md-10{gap:40px!important}.ga-md-11{gap:44px!important}.ga-md-12{gap:48px!important}.ga-md-13{gap:52px!important}.ga-md-14{gap:56px!important}.ga-md-15{gap:60px!important}.ga-md-16{gap:64px!important}.ga-md-auto{gap:auto!important}.gr-md-0{row-gap:0px!important}.gr-md-1{row-gap:4px!important}.gr-md-2{row-gap:8px!important}.gr-md-3{row-gap:12px!important}.gr-md-4{row-gap:16px!important}.gr-md-5{row-gap:20px!important}.gr-md-6{row-gap:24px!important}.gr-md-7{row-gap:28px!important}.gr-md-8{row-gap:32px!important}.gr-md-9{row-gap:36px!important}.gr-md-10{row-gap:40px!important}.gr-md-11{row-gap:44px!important}.gr-md-12{row-gap:48px!important}.gr-md-13{row-gap:52px!important}.gr-md-14{row-gap:56px!important}.gr-md-15{row-gap:60px!important}.gr-md-16{row-gap:64px!important}.gr-md-auto{row-gap:auto!important}.gc-md-0{column-gap:0px!important}.gc-md-1{column-gap:4px!important}.gc-md-2{column-gap:8px!important}.gc-md-3{column-gap:12px!important}.gc-md-4{column-gap:16px!important}.gc-md-5{column-gap:20px!important}.gc-md-6{column-gap:24px!important}.gc-md-7{column-gap:28px!important}.gc-md-8{column-gap:32px!important}.gc-md-9{column-gap:36px!important}.gc-md-10{column-gap:40px!important}.gc-md-11{column-gap:44px!important}.gc-md-12{column-gap:48px!important}.gc-md-13{column-gap:52px!important}.gc-md-14{column-gap:56px!important}.gc-md-15{column-gap:60px!important}.gc-md-16{column-gap:64px!important}.gc-md-auto{column-gap:auto!important}.ma-md-0{margin:0!important}.ma-md-1{margin:4px!important}.ma-md-2{margin:8px!important}.ma-md-3{margin:12px!important}.ma-md-4{margin:16px!important}.ma-md-5{margin:20px!important}.ma-md-6{margin:24px!important}.ma-md-7{margin:28px!important}.ma-md-8{margin:32px!important}.ma-md-9{margin:36px!important}.ma-md-10{margin:40px!important}.ma-md-11{margin:44px!important}.ma-md-12{margin:48px!important}.ma-md-13{margin:52px!important}.ma-md-14{margin:56px!important}.ma-md-15{margin:60px!important}.ma-md-16{margin:64px!important}.ma-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:4px!important;margin-left:4px!important}.mx-md-2{margin-right:8px!important;margin-left:8px!important}.mx-md-3{margin-right:12px!important;margin-left:12px!important}.mx-md-4{margin-right:16px!important;margin-left:16px!important}.mx-md-5{margin-right:20px!important;margin-left:20px!important}.mx-md-6{margin-right:24px!important;margin-left:24px!important}.mx-md-7{margin-right:28px!important;margin-left:28px!important}.mx-md-8{margin-right:32px!important;margin-left:32px!important}.mx-md-9{margin-right:36px!important;margin-left:36px!important}.mx-md-10{margin-right:40px!important;margin-left:40px!important}.mx-md-11{margin-right:44px!important;margin-left:44px!important}.mx-md-12{margin-right:48px!important;margin-left:48px!important}.mx-md-13{margin-right:52px!important;margin-left:52px!important}.mx-md-14{margin-right:56px!important;margin-left:56px!important}.mx-md-15{margin-right:60px!important;margin-left:60px!important}.mx-md-16{margin-right:64px!important;margin-left:64px!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:4px!important;margin-bottom:4px!important}.my-md-2{margin-top:8px!important;margin-bottom:8px!important}.my-md-3{margin-top:12px!important;margin-bottom:12px!important}.my-md-4{margin-top:16px!important;margin-bottom:16px!important}.my-md-5{margin-top:20px!important;margin-bottom:20px!important}.my-md-6{margin-top:24px!important;margin-bottom:24px!important}.my-md-7{margin-top:28px!important;margin-bottom:28px!important}.my-md-8{margin-top:32px!important;margin-bottom:32px!important}.my-md-9{margin-top:36px!important;margin-bottom:36px!important}.my-md-10{margin-top:40px!important;margin-bottom:40px!important}.my-md-11{margin-top:44px!important;margin-bottom:44px!important}.my-md-12{margin-top:48px!important;margin-bottom:48px!important}.my-md-13{margin-top:52px!important;margin-bottom:52px!important}.my-md-14{margin-top:56px!important;margin-bottom:56px!important}.my-md-15{margin-top:60px!important;margin-bottom:60px!important}.my-md-16{margin-top:64px!important;margin-bottom:64px!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:4px!important}.mt-md-2{margin-top:8px!important}.mt-md-3{margin-top:12px!important}.mt-md-4{margin-top:16px!important}.mt-md-5{margin-top:20px!important}.mt-md-6{margin-top:24px!important}.mt-md-7{margin-top:28px!important}.mt-md-8{margin-top:32px!important}.mt-md-9{margin-top:36px!important}.mt-md-10{margin-top:40px!important}.mt-md-11{margin-top:44px!important}.mt-md-12{margin-top:48px!important}.mt-md-13{margin-top:52px!important}.mt-md-14{margin-top:56px!important}.mt-md-15{margin-top:60px!important}.mt-md-16{margin-top:64px!important}.mt-md-auto{margin-top:auto!important}.mr-md-0{margin-right:0!important}.mr-md-1{margin-right:4px!important}.mr-md-2{margin-right:8px!important}.mr-md-3{margin-right:12px!important}.mr-md-4{margin-right:16px!important}.mr-md-5{margin-right:20px!important}.mr-md-6{margin-right:24px!important}.mr-md-7{margin-right:28px!important}.mr-md-8{margin-right:32px!important}.mr-md-9{margin-right:36px!important}.mr-md-10{margin-right:40px!important}.mr-md-11{margin-right:44px!important}.mr-md-12{margin-right:48px!important}.mr-md-13{margin-right:52px!important}.mr-md-14{margin-right:56px!important}.mr-md-15{margin-right:60px!important}.mr-md-16{margin-right:64px!important}.mr-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:4px!important}.mb-md-2{margin-bottom:8px!important}.mb-md-3{margin-bottom:12px!important}.mb-md-4{margin-bottom:16px!important}.mb-md-5{margin-bottom:20px!important}.mb-md-6{margin-bottom:24px!important}.mb-md-7{margin-bottom:28px!important}.mb-md-8{margin-bottom:32px!important}.mb-md-9{margin-bottom:36px!important}.mb-md-10{margin-bottom:40px!important}.mb-md-11{margin-bottom:44px!important}.mb-md-12{margin-bottom:48px!important}.mb-md-13{margin-bottom:52px!important}.mb-md-14{margin-bottom:56px!important}.mb-md-15{margin-bottom:60px!important}.mb-md-16{margin-bottom:64px!important}.mb-md-auto{margin-bottom:auto!important}.ml-md-0{margin-left:0!important}.ml-md-1{margin-left:4px!important}.ml-md-2{margin-left:8px!important}.ml-md-3{margin-left:12px!important}.ml-md-4{margin-left:16px!important}.ml-md-5{margin-left:20px!important}.ml-md-6{margin-left:24px!important}.ml-md-7{margin-left:28px!important}.ml-md-8{margin-left:32px!important}.ml-md-9{margin-left:36px!important}.ml-md-10{margin-left:40px!important}.ml-md-11{margin-left:44px!important}.ml-md-12{margin-left:48px!important}.ml-md-13{margin-left:52px!important}.ml-md-14{margin-left:56px!important}.ml-md-15{margin-left:60px!important}.ml-md-16{margin-left:64px!important}.ml-md-auto{margin-left:auto!important}.ms-md-0{margin-inline-start:0px!important}.ms-md-1{margin-inline-start:4px!important}.ms-md-2{margin-inline-start:8px!important}.ms-md-3{margin-inline-start:12px!important}.ms-md-4{margin-inline-start:16px!important}.ms-md-5{margin-inline-start:20px!important}.ms-md-6{margin-inline-start:24px!important}.ms-md-7{margin-inline-start:28px!important}.ms-md-8{margin-inline-start:32px!important}.ms-md-9{margin-inline-start:36px!important}.ms-md-10{margin-inline-start:40px!important}.ms-md-11{margin-inline-start:44px!important}.ms-md-12{margin-inline-start:48px!important}.ms-md-13{margin-inline-start:52px!important}.ms-md-14{margin-inline-start:56px!important}.ms-md-15{margin-inline-start:60px!important}.ms-md-16{margin-inline-start:64px!important}.ms-md-auto{margin-inline-start:auto!important}.me-md-0{margin-inline-end:0px!important}.me-md-1{margin-inline-end:4px!important}.me-md-2{margin-inline-end:8px!important}.me-md-3{margin-inline-end:12px!important}.me-md-4{margin-inline-end:16px!important}.me-md-5{margin-inline-end:20px!important}.me-md-6{margin-inline-end:24px!important}.me-md-7{margin-inline-end:28px!important}.me-md-8{margin-inline-end:32px!important}.me-md-9{margin-inline-end:36px!important}.me-md-10{margin-inline-end:40px!important}.me-md-11{margin-inline-end:44px!important}.me-md-12{margin-inline-end:48px!important}.me-md-13{margin-inline-end:52px!important}.me-md-14{margin-inline-end:56px!important}.me-md-15{margin-inline-end:60px!important}.me-md-16{margin-inline-end:64px!important}.me-md-auto{margin-inline-end:auto!important}.ma-md-n1{margin:-4px!important}.ma-md-n2{margin:-8px!important}.ma-md-n3{margin:-12px!important}.ma-md-n4{margin:-16px!important}.ma-md-n5{margin:-20px!important}.ma-md-n6{margin:-24px!important}.ma-md-n7{margin:-28px!important}.ma-md-n8{margin:-32px!important}.ma-md-n9{margin:-36px!important}.ma-md-n10{margin:-40px!important}.ma-md-n11{margin:-44px!important}.ma-md-n12{margin:-48px!important}.ma-md-n13{margin:-52px!important}.ma-md-n14{margin:-56px!important}.ma-md-n15{margin:-60px!important}.ma-md-n16{margin:-64px!important}.mx-md-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-md-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-md-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-md-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-md-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-md-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-md-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-md-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-md-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-md-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-md-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-md-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-md-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-md-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-md-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-md-n16{margin-right:-64px!important;margin-left:-64px!important}.my-md-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-md-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-md-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-md-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-md-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-md-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-md-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-md-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-md-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-md-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-md-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-md-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-md-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-md-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-md-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-md-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-md-n1{margin-top:-4px!important}.mt-md-n2{margin-top:-8px!important}.mt-md-n3{margin-top:-12px!important}.mt-md-n4{margin-top:-16px!important}.mt-md-n5{margin-top:-20px!important}.mt-md-n6{margin-top:-24px!important}.mt-md-n7{margin-top:-28px!important}.mt-md-n8{margin-top:-32px!important}.mt-md-n9{margin-top:-36px!important}.mt-md-n10{margin-top:-40px!important}.mt-md-n11{margin-top:-44px!important}.mt-md-n12{margin-top:-48px!important}.mt-md-n13{margin-top:-52px!important}.mt-md-n14{margin-top:-56px!important}.mt-md-n15{margin-top:-60px!important}.mt-md-n16{margin-top:-64px!important}.mr-md-n1{margin-right:-4px!important}.mr-md-n2{margin-right:-8px!important}.mr-md-n3{margin-right:-12px!important}.mr-md-n4{margin-right:-16px!important}.mr-md-n5{margin-right:-20px!important}.mr-md-n6{margin-right:-24px!important}.mr-md-n7{margin-right:-28px!important}.mr-md-n8{margin-right:-32px!important}.mr-md-n9{margin-right:-36px!important}.mr-md-n10{margin-right:-40px!important}.mr-md-n11{margin-right:-44px!important}.mr-md-n12{margin-right:-48px!important}.mr-md-n13{margin-right:-52px!important}.mr-md-n14{margin-right:-56px!important}.mr-md-n15{margin-right:-60px!important}.mr-md-n16{margin-right:-64px!important}.mb-md-n1{margin-bottom:-4px!important}.mb-md-n2{margin-bottom:-8px!important}.mb-md-n3{margin-bottom:-12px!important}.mb-md-n4{margin-bottom:-16px!important}.mb-md-n5{margin-bottom:-20px!important}.mb-md-n6{margin-bottom:-24px!important}.mb-md-n7{margin-bottom:-28px!important}.mb-md-n8{margin-bottom:-32px!important}.mb-md-n9{margin-bottom:-36px!important}.mb-md-n10{margin-bottom:-40px!important}.mb-md-n11{margin-bottom:-44px!important}.mb-md-n12{margin-bottom:-48px!important}.mb-md-n13{margin-bottom:-52px!important}.mb-md-n14{margin-bottom:-56px!important}.mb-md-n15{margin-bottom:-60px!important}.mb-md-n16{margin-bottom:-64px!important}.ml-md-n1{margin-left:-4px!important}.ml-md-n2{margin-left:-8px!important}.ml-md-n3{margin-left:-12px!important}.ml-md-n4{margin-left:-16px!important}.ml-md-n5{margin-left:-20px!important}.ml-md-n6{margin-left:-24px!important}.ml-md-n7{margin-left:-28px!important}.ml-md-n8{margin-left:-32px!important}.ml-md-n9{margin-left:-36px!important}.ml-md-n10{margin-left:-40px!important}.ml-md-n11{margin-left:-44px!important}.ml-md-n12{margin-left:-48px!important}.ml-md-n13{margin-left:-52px!important}.ml-md-n14{margin-left:-56px!important}.ml-md-n15{margin-left:-60px!important}.ml-md-n16{margin-left:-64px!important}.ms-md-n1{margin-inline-start:-4px!important}.ms-md-n2{margin-inline-start:-8px!important}.ms-md-n3{margin-inline-start:-12px!important}.ms-md-n4{margin-inline-start:-16px!important}.ms-md-n5{margin-inline-start:-20px!important}.ms-md-n6{margin-inline-start:-24px!important}.ms-md-n7{margin-inline-start:-28px!important}.ms-md-n8{margin-inline-start:-32px!important}.ms-md-n9{margin-inline-start:-36px!important}.ms-md-n10{margin-inline-start:-40px!important}.ms-md-n11{margin-inline-start:-44px!important}.ms-md-n12{margin-inline-start:-48px!important}.ms-md-n13{margin-inline-start:-52px!important}.ms-md-n14{margin-inline-start:-56px!important}.ms-md-n15{margin-inline-start:-60px!important}.ms-md-n16{margin-inline-start:-64px!important}.me-md-n1{margin-inline-end:-4px!important}.me-md-n2{margin-inline-end:-8px!important}.me-md-n3{margin-inline-end:-12px!important}.me-md-n4{margin-inline-end:-16px!important}.me-md-n5{margin-inline-end:-20px!important}.me-md-n6{margin-inline-end:-24px!important}.me-md-n7{margin-inline-end:-28px!important}.me-md-n8{margin-inline-end:-32px!important}.me-md-n9{margin-inline-end:-36px!important}.me-md-n10{margin-inline-end:-40px!important}.me-md-n11{margin-inline-end:-44px!important}.me-md-n12{margin-inline-end:-48px!important}.me-md-n13{margin-inline-end:-52px!important}.me-md-n14{margin-inline-end:-56px!important}.me-md-n15{margin-inline-end:-60px!important}.me-md-n16{margin-inline-end:-64px!important}.pa-md-0{padding:0!important}.pa-md-1{padding:4px!important}.pa-md-2{padding:8px!important}.pa-md-3{padding:12px!important}.pa-md-4{padding:16px!important}.pa-md-5{padding:20px!important}.pa-md-6{padding:24px!important}.pa-md-7{padding:28px!important}.pa-md-8{padding:32px!important}.pa-md-9{padding:36px!important}.pa-md-10{padding:40px!important}.pa-md-11{padding:44px!important}.pa-md-12{padding:48px!important}.pa-md-13{padding:52px!important}.pa-md-14{padding:56px!important}.pa-md-15{padding:60px!important}.pa-md-16{padding:64px!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:4px!important;padding-left:4px!important}.px-md-2{padding-right:8px!important;padding-left:8px!important}.px-md-3{padding-right:12px!important;padding-left:12px!important}.px-md-4{padding-right:16px!important;padding-left:16px!important}.px-md-5{padding-right:20px!important;padding-left:20px!important}.px-md-6{padding-right:24px!important;padding-left:24px!important}.px-md-7{padding-right:28px!important;padding-left:28px!important}.px-md-8{padding-right:32px!important;padding-left:32px!important}.px-md-9{padding-right:36px!important;padding-left:36px!important}.px-md-10{padding-right:40px!important;padding-left:40px!important}.px-md-11{padding-right:44px!important;padding-left:44px!important}.px-md-12{padding-right:48px!important;padding-left:48px!important}.px-md-13{padding-right:52px!important;padding-left:52px!important}.px-md-14{padding-right:56px!important;padding-left:56px!important}.px-md-15{padding-right:60px!important;padding-left:60px!important}.px-md-16{padding-right:64px!important;padding-left:64px!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:4px!important;padding-bottom:4px!important}.py-md-2{padding-top:8px!important;padding-bottom:8px!important}.py-md-3{padding-top:12px!important;padding-bottom:12px!important}.py-md-4{padding-top:16px!important;padding-bottom:16px!important}.py-md-5{padding-top:20px!important;padding-bottom:20px!important}.py-md-6{padding-top:24px!important;padding-bottom:24px!important}.py-md-7{padding-top:28px!important;padding-bottom:28px!important}.py-md-8{padding-top:32px!important;padding-bottom:32px!important}.py-md-9{padding-top:36px!important;padding-bottom:36px!important}.py-md-10{padding-top:40px!important;padding-bottom:40px!important}.py-md-11{padding-top:44px!important;padding-bottom:44px!important}.py-md-12{padding-top:48px!important;padding-bottom:48px!important}.py-md-13{padding-top:52px!important;padding-bottom:52px!important}.py-md-14{padding-top:56px!important;padding-bottom:56px!important}.py-md-15{padding-top:60px!important;padding-bottom:60px!important}.py-md-16{padding-top:64px!important;padding-bottom:64px!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:4px!important}.pt-md-2{padding-top:8px!important}.pt-md-3{padding-top:12px!important}.pt-md-4{padding-top:16px!important}.pt-md-5{padding-top:20px!important}.pt-md-6{padding-top:24px!important}.pt-md-7{padding-top:28px!important}.pt-md-8{padding-top:32px!important}.pt-md-9{padding-top:36px!important}.pt-md-10{padding-top:40px!important}.pt-md-11{padding-top:44px!important}.pt-md-12{padding-top:48px!important}.pt-md-13{padding-top:52px!important}.pt-md-14{padding-top:56px!important}.pt-md-15{padding-top:60px!important}.pt-md-16{padding-top:64px!important}.pr-md-0{padding-right:0!important}.pr-md-1{padding-right:4px!important}.pr-md-2{padding-right:8px!important}.pr-md-3{padding-right:12px!important}.pr-md-4{padding-right:16px!important}.pr-md-5{padding-right:20px!important}.pr-md-6{padding-right:24px!important}.pr-md-7{padding-right:28px!important}.pr-md-8{padding-right:32px!important}.pr-md-9{padding-right:36px!important}.pr-md-10{padding-right:40px!important}.pr-md-11{padding-right:44px!important}.pr-md-12{padding-right:48px!important}.pr-md-13{padding-right:52px!important}.pr-md-14{padding-right:56px!important}.pr-md-15{padding-right:60px!important}.pr-md-16{padding-right:64px!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:4px!important}.pb-md-2{padding-bottom:8px!important}.pb-md-3{padding-bottom:12px!important}.pb-md-4{padding-bottom:16px!important}.pb-md-5{padding-bottom:20px!important}.pb-md-6{padding-bottom:24px!important}.pb-md-7{padding-bottom:28px!important}.pb-md-8{padding-bottom:32px!important}.pb-md-9{padding-bottom:36px!important}.pb-md-10{padding-bottom:40px!important}.pb-md-11{padding-bottom:44px!important}.pb-md-12{padding-bottom:48px!important}.pb-md-13{padding-bottom:52px!important}.pb-md-14{padding-bottom:56px!important}.pb-md-15{padding-bottom:60px!important}.pb-md-16{padding-bottom:64px!important}.pl-md-0{padding-left:0!important}.pl-md-1{padding-left:4px!important}.pl-md-2{padding-left:8px!important}.pl-md-3{padding-left:12px!important}.pl-md-4{padding-left:16px!important}.pl-md-5{padding-left:20px!important}.pl-md-6{padding-left:24px!important}.pl-md-7{padding-left:28px!important}.pl-md-8{padding-left:32px!important}.pl-md-9{padding-left:36px!important}.pl-md-10{padding-left:40px!important}.pl-md-11{padding-left:44px!important}.pl-md-12{padding-left:48px!important}.pl-md-13{padding-left:52px!important}.pl-md-14{padding-left:56px!important}.pl-md-15{padding-left:60px!important}.pl-md-16{padding-left:64px!important}.ps-md-0{padding-inline-start:0px!important}.ps-md-1{padding-inline-start:4px!important}.ps-md-2{padding-inline-start:8px!important}.ps-md-3{padding-inline-start:12px!important}.ps-md-4{padding-inline-start:16px!important}.ps-md-5{padding-inline-start:20px!important}.ps-md-6{padding-inline-start:24px!important}.ps-md-7{padding-inline-start:28px!important}.ps-md-8{padding-inline-start:32px!important}.ps-md-9{padding-inline-start:36px!important}.ps-md-10{padding-inline-start:40px!important}.ps-md-11{padding-inline-start:44px!important}.ps-md-12{padding-inline-start:48px!important}.ps-md-13{padding-inline-start:52px!important}.ps-md-14{padding-inline-start:56px!important}.ps-md-15{padding-inline-start:60px!important}.ps-md-16{padding-inline-start:64px!important}.pe-md-0{padding-inline-end:0px!important}.pe-md-1{padding-inline-end:4px!important}.pe-md-2{padding-inline-end:8px!important}.pe-md-3{padding-inline-end:12px!important}.pe-md-4{padding-inline-end:16px!important}.pe-md-5{padding-inline-end:20px!important}.pe-md-6{padding-inline-end:24px!important}.pe-md-7{padding-inline-end:28px!important}.pe-md-8{padding-inline-end:32px!important}.pe-md-9{padding-inline-end:36px!important}.pe-md-10{padding-inline-end:40px!important}.pe-md-11{padding-inline-end:44px!important}.pe-md-12{padding-inline-end:48px!important}.pe-md-13{padding-inline-end:52px!important}.pe-md-14{padding-inline-end:56px!important}.pe-md-15{padding-inline-end:60px!important}.pe-md-16{padding-inline-end:64px!important}.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}.text-md-justify{text-align:justify!important}.text-md-start{text-align:start!important}.text-md-end{text-align:end!important}.text-md-h1{font-size:6rem!important;font-weight:300;line-height:6rem;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-h2{font-size:3.75rem!important;font-weight:300;line-height:3.75rem;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-h3{font-size:3rem!important;font-weight:400;line-height:3.125rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-h4{font-size:2.125rem!important;font-weight:400;line-height:2.5rem;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-h5{font-size:1.5rem!important;font-weight:400;line-height:2rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-h6{font-size:1.25rem!important;font-weight:500;line-height:2rem;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-body-1{font-size:1rem!important;font-weight:400;line-height:1.5rem;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-body-2{font-size:.875rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-md-caption{font-size:.75rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-md-overline{font-size:.75rem!important;font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}}@media (min-width: 1280px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.float-lg-none{float:none!important}.float-lg-left{float:left!important}.float-lg-right{float:right!important}.v-locale--is-rtl .float-lg-end{float:left!important}.v-locale--is-rtl .float-lg-start,.v-locale--is-ltr .float-lg-end{float:right!important}.v-locale--is-ltr .float-lg-start{float:left!important}.flex-lg-fill,.flex-lg-1-1{flex:1 1 auto!important}.flex-lg-1-0{flex:1 0 auto!important}.flex-lg-0-1{flex:0 1 auto!important}.flex-lg-0-0{flex:0 0 auto!important}.flex-lg-1-1-100{flex:1 1 100%!important}.flex-lg-1-0-100{flex:1 0 100%!important}.flex-lg-0-1-100{flex:0 1 100%!important}.flex-lg-0-0-100{flex:0 0 100%!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-lg-start{justify-content:flex-start!important}.justify-lg-end{justify-content:flex-end!important}.justify-lg-center{justify-content:center!important}.justify-lg-space-between{justify-content:space-between!important}.justify-lg-space-around{justify-content:space-around!important}.justify-lg-space-evenly{justify-content:space-evenly!important}.align-lg-start{align-items:flex-start!important}.align-lg-end{align-items:flex-end!important}.align-lg-center{align-items:center!important}.align-lg-baseline{align-items:baseline!important}.align-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-space-between{align-content:space-between!important}.align-content-lg-space-around{align-content:space-around!important}.align-content-lg-space-evenly{align-content:space-evenly!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-6{order:6!important}.order-lg-7{order:7!important}.order-lg-8{order:8!important}.order-lg-9{order:9!important}.order-lg-10{order:10!important}.order-lg-11{order:11!important}.order-lg-12{order:12!important}.order-lg-last{order:13!important}.ga-lg-0{gap:0px!important}.ga-lg-1{gap:4px!important}.ga-lg-2{gap:8px!important}.ga-lg-3{gap:12px!important}.ga-lg-4{gap:16px!important}.ga-lg-5{gap:20px!important}.ga-lg-6{gap:24px!important}.ga-lg-7{gap:28px!important}.ga-lg-8{gap:32px!important}.ga-lg-9{gap:36px!important}.ga-lg-10{gap:40px!important}.ga-lg-11{gap:44px!important}.ga-lg-12{gap:48px!important}.ga-lg-13{gap:52px!important}.ga-lg-14{gap:56px!important}.ga-lg-15{gap:60px!important}.ga-lg-16{gap:64px!important}.ga-lg-auto{gap:auto!important}.gr-lg-0{row-gap:0px!important}.gr-lg-1{row-gap:4px!important}.gr-lg-2{row-gap:8px!important}.gr-lg-3{row-gap:12px!important}.gr-lg-4{row-gap:16px!important}.gr-lg-5{row-gap:20px!important}.gr-lg-6{row-gap:24px!important}.gr-lg-7{row-gap:28px!important}.gr-lg-8{row-gap:32px!important}.gr-lg-9{row-gap:36px!important}.gr-lg-10{row-gap:40px!important}.gr-lg-11{row-gap:44px!important}.gr-lg-12{row-gap:48px!important}.gr-lg-13{row-gap:52px!important}.gr-lg-14{row-gap:56px!important}.gr-lg-15{row-gap:60px!important}.gr-lg-16{row-gap:64px!important}.gr-lg-auto{row-gap:auto!important}.gc-lg-0{column-gap:0px!important}.gc-lg-1{column-gap:4px!important}.gc-lg-2{column-gap:8px!important}.gc-lg-3{column-gap:12px!important}.gc-lg-4{column-gap:16px!important}.gc-lg-5{column-gap:20px!important}.gc-lg-6{column-gap:24px!important}.gc-lg-7{column-gap:28px!important}.gc-lg-8{column-gap:32px!important}.gc-lg-9{column-gap:36px!important}.gc-lg-10{column-gap:40px!important}.gc-lg-11{column-gap:44px!important}.gc-lg-12{column-gap:48px!important}.gc-lg-13{column-gap:52px!important}.gc-lg-14{column-gap:56px!important}.gc-lg-15{column-gap:60px!important}.gc-lg-16{column-gap:64px!important}.gc-lg-auto{column-gap:auto!important}.ma-lg-0{margin:0!important}.ma-lg-1{margin:4px!important}.ma-lg-2{margin:8px!important}.ma-lg-3{margin:12px!important}.ma-lg-4{margin:16px!important}.ma-lg-5{margin:20px!important}.ma-lg-6{margin:24px!important}.ma-lg-7{margin:28px!important}.ma-lg-8{margin:32px!important}.ma-lg-9{margin:36px!important}.ma-lg-10{margin:40px!important}.ma-lg-11{margin:44px!important}.ma-lg-12{margin:48px!important}.ma-lg-13{margin:52px!important}.ma-lg-14{margin:56px!important}.ma-lg-15{margin:60px!important}.ma-lg-16{margin:64px!important}.ma-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:4px!important;margin-left:4px!important}.mx-lg-2{margin-right:8px!important;margin-left:8px!important}.mx-lg-3{margin-right:12px!important;margin-left:12px!important}.mx-lg-4{margin-right:16px!important;margin-left:16px!important}.mx-lg-5{margin-right:20px!important;margin-left:20px!important}.mx-lg-6{margin-right:24px!important;margin-left:24px!important}.mx-lg-7{margin-right:28px!important;margin-left:28px!important}.mx-lg-8{margin-right:32px!important;margin-left:32px!important}.mx-lg-9{margin-right:36px!important;margin-left:36px!important}.mx-lg-10{margin-right:40px!important;margin-left:40px!important}.mx-lg-11{margin-right:44px!important;margin-left:44px!important}.mx-lg-12{margin-right:48px!important;margin-left:48px!important}.mx-lg-13{margin-right:52px!important;margin-left:52px!important}.mx-lg-14{margin-right:56px!important;margin-left:56px!important}.mx-lg-15{margin-right:60px!important;margin-left:60px!important}.mx-lg-16{margin-right:64px!important;margin-left:64px!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:4px!important;margin-bottom:4px!important}.my-lg-2{margin-top:8px!important;margin-bottom:8px!important}.my-lg-3{margin-top:12px!important;margin-bottom:12px!important}.my-lg-4{margin-top:16px!important;margin-bottom:16px!important}.my-lg-5{margin-top:20px!important;margin-bottom:20px!important}.my-lg-6{margin-top:24px!important;margin-bottom:24px!important}.my-lg-7{margin-top:28px!important;margin-bottom:28px!important}.my-lg-8{margin-top:32px!important;margin-bottom:32px!important}.my-lg-9{margin-top:36px!important;margin-bottom:36px!important}.my-lg-10{margin-top:40px!important;margin-bottom:40px!important}.my-lg-11{margin-top:44px!important;margin-bottom:44px!important}.my-lg-12{margin-top:48px!important;margin-bottom:48px!important}.my-lg-13{margin-top:52px!important;margin-bottom:52px!important}.my-lg-14{margin-top:56px!important;margin-bottom:56px!important}.my-lg-15{margin-top:60px!important;margin-bottom:60px!important}.my-lg-16{margin-top:64px!important;margin-bottom:64px!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:4px!important}.mt-lg-2{margin-top:8px!important}.mt-lg-3{margin-top:12px!important}.mt-lg-4{margin-top:16px!important}.mt-lg-5{margin-top:20px!important}.mt-lg-6{margin-top:24px!important}.mt-lg-7{margin-top:28px!important}.mt-lg-8{margin-top:32px!important}.mt-lg-9{margin-top:36px!important}.mt-lg-10{margin-top:40px!important}.mt-lg-11{margin-top:44px!important}.mt-lg-12{margin-top:48px!important}.mt-lg-13{margin-top:52px!important}.mt-lg-14{margin-top:56px!important}.mt-lg-15{margin-top:60px!important}.mt-lg-16{margin-top:64px!important}.mt-lg-auto{margin-top:auto!important}.mr-lg-0{margin-right:0!important}.mr-lg-1{margin-right:4px!important}.mr-lg-2{margin-right:8px!important}.mr-lg-3{margin-right:12px!important}.mr-lg-4{margin-right:16px!important}.mr-lg-5{margin-right:20px!important}.mr-lg-6{margin-right:24px!important}.mr-lg-7{margin-right:28px!important}.mr-lg-8{margin-right:32px!important}.mr-lg-9{margin-right:36px!important}.mr-lg-10{margin-right:40px!important}.mr-lg-11{margin-right:44px!important}.mr-lg-12{margin-right:48px!important}.mr-lg-13{margin-right:52px!important}.mr-lg-14{margin-right:56px!important}.mr-lg-15{margin-right:60px!important}.mr-lg-16{margin-right:64px!important}.mr-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:4px!important}.mb-lg-2{margin-bottom:8px!important}.mb-lg-3{margin-bottom:12px!important}.mb-lg-4{margin-bottom:16px!important}.mb-lg-5{margin-bottom:20px!important}.mb-lg-6{margin-bottom:24px!important}.mb-lg-7{margin-bottom:28px!important}.mb-lg-8{margin-bottom:32px!important}.mb-lg-9{margin-bottom:36px!important}.mb-lg-10{margin-bottom:40px!important}.mb-lg-11{margin-bottom:44px!important}.mb-lg-12{margin-bottom:48px!important}.mb-lg-13{margin-bottom:52px!important}.mb-lg-14{margin-bottom:56px!important}.mb-lg-15{margin-bottom:60px!important}.mb-lg-16{margin-bottom:64px!important}.mb-lg-auto{margin-bottom:auto!important}.ml-lg-0{margin-left:0!important}.ml-lg-1{margin-left:4px!important}.ml-lg-2{margin-left:8px!important}.ml-lg-3{margin-left:12px!important}.ml-lg-4{margin-left:16px!important}.ml-lg-5{margin-left:20px!important}.ml-lg-6{margin-left:24px!important}.ml-lg-7{margin-left:28px!important}.ml-lg-8{margin-left:32px!important}.ml-lg-9{margin-left:36px!important}.ml-lg-10{margin-left:40px!important}.ml-lg-11{margin-left:44px!important}.ml-lg-12{margin-left:48px!important}.ml-lg-13{margin-left:52px!important}.ml-lg-14{margin-left:56px!important}.ml-lg-15{margin-left:60px!important}.ml-lg-16{margin-left:64px!important}.ml-lg-auto{margin-left:auto!important}.ms-lg-0{margin-inline-start:0px!important}.ms-lg-1{margin-inline-start:4px!important}.ms-lg-2{margin-inline-start:8px!important}.ms-lg-3{margin-inline-start:12px!important}.ms-lg-4{margin-inline-start:16px!important}.ms-lg-5{margin-inline-start:20px!important}.ms-lg-6{margin-inline-start:24px!important}.ms-lg-7{margin-inline-start:28px!important}.ms-lg-8{margin-inline-start:32px!important}.ms-lg-9{margin-inline-start:36px!important}.ms-lg-10{margin-inline-start:40px!important}.ms-lg-11{margin-inline-start:44px!important}.ms-lg-12{margin-inline-start:48px!important}.ms-lg-13{margin-inline-start:52px!important}.ms-lg-14{margin-inline-start:56px!important}.ms-lg-15{margin-inline-start:60px!important}.ms-lg-16{margin-inline-start:64px!important}.ms-lg-auto{margin-inline-start:auto!important}.me-lg-0{margin-inline-end:0px!important}.me-lg-1{margin-inline-end:4px!important}.me-lg-2{margin-inline-end:8px!important}.me-lg-3{margin-inline-end:12px!important}.me-lg-4{margin-inline-end:16px!important}.me-lg-5{margin-inline-end:20px!important}.me-lg-6{margin-inline-end:24px!important}.me-lg-7{margin-inline-end:28px!important}.me-lg-8{margin-inline-end:32px!important}.me-lg-9{margin-inline-end:36px!important}.me-lg-10{margin-inline-end:40px!important}.me-lg-11{margin-inline-end:44px!important}.me-lg-12{margin-inline-end:48px!important}.me-lg-13{margin-inline-end:52px!important}.me-lg-14{margin-inline-end:56px!important}.me-lg-15{margin-inline-end:60px!important}.me-lg-16{margin-inline-end:64px!important}.me-lg-auto{margin-inline-end:auto!important}.ma-lg-n1{margin:-4px!important}.ma-lg-n2{margin:-8px!important}.ma-lg-n3{margin:-12px!important}.ma-lg-n4{margin:-16px!important}.ma-lg-n5{margin:-20px!important}.ma-lg-n6{margin:-24px!important}.ma-lg-n7{margin:-28px!important}.ma-lg-n8{margin:-32px!important}.ma-lg-n9{margin:-36px!important}.ma-lg-n10{margin:-40px!important}.ma-lg-n11{margin:-44px!important}.ma-lg-n12{margin:-48px!important}.ma-lg-n13{margin:-52px!important}.ma-lg-n14{margin:-56px!important}.ma-lg-n15{margin:-60px!important}.ma-lg-n16{margin:-64px!important}.mx-lg-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-lg-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-lg-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-lg-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-lg-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-lg-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-lg-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-lg-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-lg-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-lg-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-lg-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-lg-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-lg-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-lg-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-lg-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-lg-n16{margin-right:-64px!important;margin-left:-64px!important}.my-lg-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-lg-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-lg-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-lg-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-lg-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-lg-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-lg-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-lg-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-lg-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-lg-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-lg-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-lg-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-lg-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-lg-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-lg-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-lg-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-lg-n1{margin-top:-4px!important}.mt-lg-n2{margin-top:-8px!important}.mt-lg-n3{margin-top:-12px!important}.mt-lg-n4{margin-top:-16px!important}.mt-lg-n5{margin-top:-20px!important}.mt-lg-n6{margin-top:-24px!important}.mt-lg-n7{margin-top:-28px!important}.mt-lg-n8{margin-top:-32px!important}.mt-lg-n9{margin-top:-36px!important}.mt-lg-n10{margin-top:-40px!important}.mt-lg-n11{margin-top:-44px!important}.mt-lg-n12{margin-top:-48px!important}.mt-lg-n13{margin-top:-52px!important}.mt-lg-n14{margin-top:-56px!important}.mt-lg-n15{margin-top:-60px!important}.mt-lg-n16{margin-top:-64px!important}.mr-lg-n1{margin-right:-4px!important}.mr-lg-n2{margin-right:-8px!important}.mr-lg-n3{margin-right:-12px!important}.mr-lg-n4{margin-right:-16px!important}.mr-lg-n5{margin-right:-20px!important}.mr-lg-n6{margin-right:-24px!important}.mr-lg-n7{margin-right:-28px!important}.mr-lg-n8{margin-right:-32px!important}.mr-lg-n9{margin-right:-36px!important}.mr-lg-n10{margin-right:-40px!important}.mr-lg-n11{margin-right:-44px!important}.mr-lg-n12{margin-right:-48px!important}.mr-lg-n13{margin-right:-52px!important}.mr-lg-n14{margin-right:-56px!important}.mr-lg-n15{margin-right:-60px!important}.mr-lg-n16{margin-right:-64px!important}.mb-lg-n1{margin-bottom:-4px!important}.mb-lg-n2{margin-bottom:-8px!important}.mb-lg-n3{margin-bottom:-12px!important}.mb-lg-n4{margin-bottom:-16px!important}.mb-lg-n5{margin-bottom:-20px!important}.mb-lg-n6{margin-bottom:-24px!important}.mb-lg-n7{margin-bottom:-28px!important}.mb-lg-n8{margin-bottom:-32px!important}.mb-lg-n9{margin-bottom:-36px!important}.mb-lg-n10{margin-bottom:-40px!important}.mb-lg-n11{margin-bottom:-44px!important}.mb-lg-n12{margin-bottom:-48px!important}.mb-lg-n13{margin-bottom:-52px!important}.mb-lg-n14{margin-bottom:-56px!important}.mb-lg-n15{margin-bottom:-60px!important}.mb-lg-n16{margin-bottom:-64px!important}.ml-lg-n1{margin-left:-4px!important}.ml-lg-n2{margin-left:-8px!important}.ml-lg-n3{margin-left:-12px!important}.ml-lg-n4{margin-left:-16px!important}.ml-lg-n5{margin-left:-20px!important}.ml-lg-n6{margin-left:-24px!important}.ml-lg-n7{margin-left:-28px!important}.ml-lg-n8{margin-left:-32px!important}.ml-lg-n9{margin-left:-36px!important}.ml-lg-n10{margin-left:-40px!important}.ml-lg-n11{margin-left:-44px!important}.ml-lg-n12{margin-left:-48px!important}.ml-lg-n13{margin-left:-52px!important}.ml-lg-n14{margin-left:-56px!important}.ml-lg-n15{margin-left:-60px!important}.ml-lg-n16{margin-left:-64px!important}.ms-lg-n1{margin-inline-start:-4px!important}.ms-lg-n2{margin-inline-start:-8px!important}.ms-lg-n3{margin-inline-start:-12px!important}.ms-lg-n4{margin-inline-start:-16px!important}.ms-lg-n5{margin-inline-start:-20px!important}.ms-lg-n6{margin-inline-start:-24px!important}.ms-lg-n7{margin-inline-start:-28px!important}.ms-lg-n8{margin-inline-start:-32px!important}.ms-lg-n9{margin-inline-start:-36px!important}.ms-lg-n10{margin-inline-start:-40px!important}.ms-lg-n11{margin-inline-start:-44px!important}.ms-lg-n12{margin-inline-start:-48px!important}.ms-lg-n13{margin-inline-start:-52px!important}.ms-lg-n14{margin-inline-start:-56px!important}.ms-lg-n15{margin-inline-start:-60px!important}.ms-lg-n16{margin-inline-start:-64px!important}.me-lg-n1{margin-inline-end:-4px!important}.me-lg-n2{margin-inline-end:-8px!important}.me-lg-n3{margin-inline-end:-12px!important}.me-lg-n4{margin-inline-end:-16px!important}.me-lg-n5{margin-inline-end:-20px!important}.me-lg-n6{margin-inline-end:-24px!important}.me-lg-n7{margin-inline-end:-28px!important}.me-lg-n8{margin-inline-end:-32px!important}.me-lg-n9{margin-inline-end:-36px!important}.me-lg-n10{margin-inline-end:-40px!important}.me-lg-n11{margin-inline-end:-44px!important}.me-lg-n12{margin-inline-end:-48px!important}.me-lg-n13{margin-inline-end:-52px!important}.me-lg-n14{margin-inline-end:-56px!important}.me-lg-n15{margin-inline-end:-60px!important}.me-lg-n16{margin-inline-end:-64px!important}.pa-lg-0{padding:0!important}.pa-lg-1{padding:4px!important}.pa-lg-2{padding:8px!important}.pa-lg-3{padding:12px!important}.pa-lg-4{padding:16px!important}.pa-lg-5{padding:20px!important}.pa-lg-6{padding:24px!important}.pa-lg-7{padding:28px!important}.pa-lg-8{padding:32px!important}.pa-lg-9{padding:36px!important}.pa-lg-10{padding:40px!important}.pa-lg-11{padding:44px!important}.pa-lg-12{padding:48px!important}.pa-lg-13{padding:52px!important}.pa-lg-14{padding:56px!important}.pa-lg-15{padding:60px!important}.pa-lg-16{padding:64px!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:4px!important;padding-left:4px!important}.px-lg-2{padding-right:8px!important;padding-left:8px!important}.px-lg-3{padding-right:12px!important;padding-left:12px!important}.px-lg-4{padding-right:16px!important;padding-left:16px!important}.px-lg-5{padding-right:20px!important;padding-left:20px!important}.px-lg-6{padding-right:24px!important;padding-left:24px!important}.px-lg-7{padding-right:28px!important;padding-left:28px!important}.px-lg-8{padding-right:32px!important;padding-left:32px!important}.px-lg-9{padding-right:36px!important;padding-left:36px!important}.px-lg-10{padding-right:40px!important;padding-left:40px!important}.px-lg-11{padding-right:44px!important;padding-left:44px!important}.px-lg-12{padding-right:48px!important;padding-left:48px!important}.px-lg-13{padding-right:52px!important;padding-left:52px!important}.px-lg-14{padding-right:56px!important;padding-left:56px!important}.px-lg-15{padding-right:60px!important;padding-left:60px!important}.px-lg-16{padding-right:64px!important;padding-left:64px!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:4px!important;padding-bottom:4px!important}.py-lg-2{padding-top:8px!important;padding-bottom:8px!important}.py-lg-3{padding-top:12px!important;padding-bottom:12px!important}.py-lg-4{padding-top:16px!important;padding-bottom:16px!important}.py-lg-5{padding-top:20px!important;padding-bottom:20px!important}.py-lg-6{padding-top:24px!important;padding-bottom:24px!important}.py-lg-7{padding-top:28px!important;padding-bottom:28px!important}.py-lg-8{padding-top:32px!important;padding-bottom:32px!important}.py-lg-9{padding-top:36px!important;padding-bottom:36px!important}.py-lg-10{padding-top:40px!important;padding-bottom:40px!important}.py-lg-11{padding-top:44px!important;padding-bottom:44px!important}.py-lg-12{padding-top:48px!important;padding-bottom:48px!important}.py-lg-13{padding-top:52px!important;padding-bottom:52px!important}.py-lg-14{padding-top:56px!important;padding-bottom:56px!important}.py-lg-15{padding-top:60px!important;padding-bottom:60px!important}.py-lg-16{padding-top:64px!important;padding-bottom:64px!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:4px!important}.pt-lg-2{padding-top:8px!important}.pt-lg-3{padding-top:12px!important}.pt-lg-4{padding-top:16px!important}.pt-lg-5{padding-top:20px!important}.pt-lg-6{padding-top:24px!important}.pt-lg-7{padding-top:28px!important}.pt-lg-8{padding-top:32px!important}.pt-lg-9{padding-top:36px!important}.pt-lg-10{padding-top:40px!important}.pt-lg-11{padding-top:44px!important}.pt-lg-12{padding-top:48px!important}.pt-lg-13{padding-top:52px!important}.pt-lg-14{padding-top:56px!important}.pt-lg-15{padding-top:60px!important}.pt-lg-16{padding-top:64px!important}.pr-lg-0{padding-right:0!important}.pr-lg-1{padding-right:4px!important}.pr-lg-2{padding-right:8px!important}.pr-lg-3{padding-right:12px!important}.pr-lg-4{padding-right:16px!important}.pr-lg-5{padding-right:20px!important}.pr-lg-6{padding-right:24px!important}.pr-lg-7{padding-right:28px!important}.pr-lg-8{padding-right:32px!important}.pr-lg-9{padding-right:36px!important}.pr-lg-10{padding-right:40px!important}.pr-lg-11{padding-right:44px!important}.pr-lg-12{padding-right:48px!important}.pr-lg-13{padding-right:52px!important}.pr-lg-14{padding-right:56px!important}.pr-lg-15{padding-right:60px!important}.pr-lg-16{padding-right:64px!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:4px!important}.pb-lg-2{padding-bottom:8px!important}.pb-lg-3{padding-bottom:12px!important}.pb-lg-4{padding-bottom:16px!important}.pb-lg-5{padding-bottom:20px!important}.pb-lg-6{padding-bottom:24px!important}.pb-lg-7{padding-bottom:28px!important}.pb-lg-8{padding-bottom:32px!important}.pb-lg-9{padding-bottom:36px!important}.pb-lg-10{padding-bottom:40px!important}.pb-lg-11{padding-bottom:44px!important}.pb-lg-12{padding-bottom:48px!important}.pb-lg-13{padding-bottom:52px!important}.pb-lg-14{padding-bottom:56px!important}.pb-lg-15{padding-bottom:60px!important}.pb-lg-16{padding-bottom:64px!important}.pl-lg-0{padding-left:0!important}.pl-lg-1{padding-left:4px!important}.pl-lg-2{padding-left:8px!important}.pl-lg-3{padding-left:12px!important}.pl-lg-4{padding-left:16px!important}.pl-lg-5{padding-left:20px!important}.pl-lg-6{padding-left:24px!important}.pl-lg-7{padding-left:28px!important}.pl-lg-8{padding-left:32px!important}.pl-lg-9{padding-left:36px!important}.pl-lg-10{padding-left:40px!important}.pl-lg-11{padding-left:44px!important}.pl-lg-12{padding-left:48px!important}.pl-lg-13{padding-left:52px!important}.pl-lg-14{padding-left:56px!important}.pl-lg-15{padding-left:60px!important}.pl-lg-16{padding-left:64px!important}.ps-lg-0{padding-inline-start:0px!important}.ps-lg-1{padding-inline-start:4px!important}.ps-lg-2{padding-inline-start:8px!important}.ps-lg-3{padding-inline-start:12px!important}.ps-lg-4{padding-inline-start:16px!important}.ps-lg-5{padding-inline-start:20px!important}.ps-lg-6{padding-inline-start:24px!important}.ps-lg-7{padding-inline-start:28px!important}.ps-lg-8{padding-inline-start:32px!important}.ps-lg-9{padding-inline-start:36px!important}.ps-lg-10{padding-inline-start:40px!important}.ps-lg-11{padding-inline-start:44px!important}.ps-lg-12{padding-inline-start:48px!important}.ps-lg-13{padding-inline-start:52px!important}.ps-lg-14{padding-inline-start:56px!important}.ps-lg-15{padding-inline-start:60px!important}.ps-lg-16{padding-inline-start:64px!important}.pe-lg-0{padding-inline-end:0px!important}.pe-lg-1{padding-inline-end:4px!important}.pe-lg-2{padding-inline-end:8px!important}.pe-lg-3{padding-inline-end:12px!important}.pe-lg-4{padding-inline-end:16px!important}.pe-lg-5{padding-inline-end:20px!important}.pe-lg-6{padding-inline-end:24px!important}.pe-lg-7{padding-inline-end:28px!important}.pe-lg-8{padding-inline-end:32px!important}.pe-lg-9{padding-inline-end:36px!important}.pe-lg-10{padding-inline-end:40px!important}.pe-lg-11{padding-inline-end:44px!important}.pe-lg-12{padding-inline-end:48px!important}.pe-lg-13{padding-inline-end:52px!important}.pe-lg-14{padding-inline-end:56px!important}.pe-lg-15{padding-inline-end:60px!important}.pe-lg-16{padding-inline-end:64px!important}.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}.text-lg-justify{text-align:justify!important}.text-lg-start{text-align:start!important}.text-lg-end{text-align:end!important}.text-lg-h1{font-size:6rem!important;font-weight:300;line-height:6rem;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-h2{font-size:3.75rem!important;font-weight:300;line-height:3.75rem;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-h3{font-size:3rem!important;font-weight:400;line-height:3.125rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-h4{font-size:2.125rem!important;font-weight:400;line-height:2.5rem;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-h5{font-size:1.5rem!important;font-weight:400;line-height:2rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-h6{font-size:1.25rem!important;font-weight:500;line-height:2rem;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-body-1{font-size:1rem!important;font-weight:400;line-height:1.5rem;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-body-2{font-size:.875rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-lg-caption{font-size:.75rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-lg-overline{font-size:.75rem!important;font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}}@media (min-width: 1920px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.float-xl-none{float:none!important}.float-xl-left{float:left!important}.float-xl-right{float:right!important}.v-locale--is-rtl .float-xl-end{float:left!important}.v-locale--is-rtl .float-xl-start,.v-locale--is-ltr .float-xl-end{float:right!important}.v-locale--is-ltr .float-xl-start{float:left!important}.flex-xl-fill,.flex-xl-1-1{flex:1 1 auto!important}.flex-xl-1-0{flex:1 0 auto!important}.flex-xl-0-1{flex:0 1 auto!important}.flex-xl-0-0{flex:0 0 auto!important}.flex-xl-1-1-100{flex:1 1 100%!important}.flex-xl-1-0-100{flex:1 0 100%!important}.flex-xl-0-1-100{flex:0 1 100%!important}.flex-xl-0-0-100{flex:0 0 100%!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-xl-start{justify-content:flex-start!important}.justify-xl-end{justify-content:flex-end!important}.justify-xl-center{justify-content:center!important}.justify-xl-space-between{justify-content:space-between!important}.justify-xl-space-around{justify-content:space-around!important}.justify-xl-space-evenly{justify-content:space-evenly!important}.align-xl-start{align-items:flex-start!important}.align-xl-end{align-items:flex-end!important}.align-xl-center{align-items:center!important}.align-xl-baseline{align-items:baseline!important}.align-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-space-between{align-content:space-between!important}.align-content-xl-space-around{align-content:space-around!important}.align-content-xl-space-evenly{align-content:space-evenly!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-6{order:6!important}.order-xl-7{order:7!important}.order-xl-8{order:8!important}.order-xl-9{order:9!important}.order-xl-10{order:10!important}.order-xl-11{order:11!important}.order-xl-12{order:12!important}.order-xl-last{order:13!important}.ga-xl-0{gap:0px!important}.ga-xl-1{gap:4px!important}.ga-xl-2{gap:8px!important}.ga-xl-3{gap:12px!important}.ga-xl-4{gap:16px!important}.ga-xl-5{gap:20px!important}.ga-xl-6{gap:24px!important}.ga-xl-7{gap:28px!important}.ga-xl-8{gap:32px!important}.ga-xl-9{gap:36px!important}.ga-xl-10{gap:40px!important}.ga-xl-11{gap:44px!important}.ga-xl-12{gap:48px!important}.ga-xl-13{gap:52px!important}.ga-xl-14{gap:56px!important}.ga-xl-15{gap:60px!important}.ga-xl-16{gap:64px!important}.ga-xl-auto{gap:auto!important}.gr-xl-0{row-gap:0px!important}.gr-xl-1{row-gap:4px!important}.gr-xl-2{row-gap:8px!important}.gr-xl-3{row-gap:12px!important}.gr-xl-4{row-gap:16px!important}.gr-xl-5{row-gap:20px!important}.gr-xl-6{row-gap:24px!important}.gr-xl-7{row-gap:28px!important}.gr-xl-8{row-gap:32px!important}.gr-xl-9{row-gap:36px!important}.gr-xl-10{row-gap:40px!important}.gr-xl-11{row-gap:44px!important}.gr-xl-12{row-gap:48px!important}.gr-xl-13{row-gap:52px!important}.gr-xl-14{row-gap:56px!important}.gr-xl-15{row-gap:60px!important}.gr-xl-16{row-gap:64px!important}.gr-xl-auto{row-gap:auto!important}.gc-xl-0{column-gap:0px!important}.gc-xl-1{column-gap:4px!important}.gc-xl-2{column-gap:8px!important}.gc-xl-3{column-gap:12px!important}.gc-xl-4{column-gap:16px!important}.gc-xl-5{column-gap:20px!important}.gc-xl-6{column-gap:24px!important}.gc-xl-7{column-gap:28px!important}.gc-xl-8{column-gap:32px!important}.gc-xl-9{column-gap:36px!important}.gc-xl-10{column-gap:40px!important}.gc-xl-11{column-gap:44px!important}.gc-xl-12{column-gap:48px!important}.gc-xl-13{column-gap:52px!important}.gc-xl-14{column-gap:56px!important}.gc-xl-15{column-gap:60px!important}.gc-xl-16{column-gap:64px!important}.gc-xl-auto{column-gap:auto!important}.ma-xl-0{margin:0!important}.ma-xl-1{margin:4px!important}.ma-xl-2{margin:8px!important}.ma-xl-3{margin:12px!important}.ma-xl-4{margin:16px!important}.ma-xl-5{margin:20px!important}.ma-xl-6{margin:24px!important}.ma-xl-7{margin:28px!important}.ma-xl-8{margin:32px!important}.ma-xl-9{margin:36px!important}.ma-xl-10{margin:40px!important}.ma-xl-11{margin:44px!important}.ma-xl-12{margin:48px!important}.ma-xl-13{margin:52px!important}.ma-xl-14{margin:56px!important}.ma-xl-15{margin:60px!important}.ma-xl-16{margin:64px!important}.ma-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:4px!important;margin-left:4px!important}.mx-xl-2{margin-right:8px!important;margin-left:8px!important}.mx-xl-3{margin-right:12px!important;margin-left:12px!important}.mx-xl-4{margin-right:16px!important;margin-left:16px!important}.mx-xl-5{margin-right:20px!important;margin-left:20px!important}.mx-xl-6{margin-right:24px!important;margin-left:24px!important}.mx-xl-7{margin-right:28px!important;margin-left:28px!important}.mx-xl-8{margin-right:32px!important;margin-left:32px!important}.mx-xl-9{margin-right:36px!important;margin-left:36px!important}.mx-xl-10{margin-right:40px!important;margin-left:40px!important}.mx-xl-11{margin-right:44px!important;margin-left:44px!important}.mx-xl-12{margin-right:48px!important;margin-left:48px!important}.mx-xl-13{margin-right:52px!important;margin-left:52px!important}.mx-xl-14{margin-right:56px!important;margin-left:56px!important}.mx-xl-15{margin-right:60px!important;margin-left:60px!important}.mx-xl-16{margin-right:64px!important;margin-left:64px!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:4px!important;margin-bottom:4px!important}.my-xl-2{margin-top:8px!important;margin-bottom:8px!important}.my-xl-3{margin-top:12px!important;margin-bottom:12px!important}.my-xl-4{margin-top:16px!important;margin-bottom:16px!important}.my-xl-5{margin-top:20px!important;margin-bottom:20px!important}.my-xl-6{margin-top:24px!important;margin-bottom:24px!important}.my-xl-7{margin-top:28px!important;margin-bottom:28px!important}.my-xl-8{margin-top:32px!important;margin-bottom:32px!important}.my-xl-9{margin-top:36px!important;margin-bottom:36px!important}.my-xl-10{margin-top:40px!important;margin-bottom:40px!important}.my-xl-11{margin-top:44px!important;margin-bottom:44px!important}.my-xl-12{margin-top:48px!important;margin-bottom:48px!important}.my-xl-13{margin-top:52px!important;margin-bottom:52px!important}.my-xl-14{margin-top:56px!important;margin-bottom:56px!important}.my-xl-15{margin-top:60px!important;margin-bottom:60px!important}.my-xl-16{margin-top:64px!important;margin-bottom:64px!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:4px!important}.mt-xl-2{margin-top:8px!important}.mt-xl-3{margin-top:12px!important}.mt-xl-4{margin-top:16px!important}.mt-xl-5{margin-top:20px!important}.mt-xl-6{margin-top:24px!important}.mt-xl-7{margin-top:28px!important}.mt-xl-8{margin-top:32px!important}.mt-xl-9{margin-top:36px!important}.mt-xl-10{margin-top:40px!important}.mt-xl-11{margin-top:44px!important}.mt-xl-12{margin-top:48px!important}.mt-xl-13{margin-top:52px!important}.mt-xl-14{margin-top:56px!important}.mt-xl-15{margin-top:60px!important}.mt-xl-16{margin-top:64px!important}.mt-xl-auto{margin-top:auto!important}.mr-xl-0{margin-right:0!important}.mr-xl-1{margin-right:4px!important}.mr-xl-2{margin-right:8px!important}.mr-xl-3{margin-right:12px!important}.mr-xl-4{margin-right:16px!important}.mr-xl-5{margin-right:20px!important}.mr-xl-6{margin-right:24px!important}.mr-xl-7{margin-right:28px!important}.mr-xl-8{margin-right:32px!important}.mr-xl-9{margin-right:36px!important}.mr-xl-10{margin-right:40px!important}.mr-xl-11{margin-right:44px!important}.mr-xl-12{margin-right:48px!important}.mr-xl-13{margin-right:52px!important}.mr-xl-14{margin-right:56px!important}.mr-xl-15{margin-right:60px!important}.mr-xl-16{margin-right:64px!important}.mr-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:4px!important}.mb-xl-2{margin-bottom:8px!important}.mb-xl-3{margin-bottom:12px!important}.mb-xl-4{margin-bottom:16px!important}.mb-xl-5{margin-bottom:20px!important}.mb-xl-6{margin-bottom:24px!important}.mb-xl-7{margin-bottom:28px!important}.mb-xl-8{margin-bottom:32px!important}.mb-xl-9{margin-bottom:36px!important}.mb-xl-10{margin-bottom:40px!important}.mb-xl-11{margin-bottom:44px!important}.mb-xl-12{margin-bottom:48px!important}.mb-xl-13{margin-bottom:52px!important}.mb-xl-14{margin-bottom:56px!important}.mb-xl-15{margin-bottom:60px!important}.mb-xl-16{margin-bottom:64px!important}.mb-xl-auto{margin-bottom:auto!important}.ml-xl-0{margin-left:0!important}.ml-xl-1{margin-left:4px!important}.ml-xl-2{margin-left:8px!important}.ml-xl-3{margin-left:12px!important}.ml-xl-4{margin-left:16px!important}.ml-xl-5{margin-left:20px!important}.ml-xl-6{margin-left:24px!important}.ml-xl-7{margin-left:28px!important}.ml-xl-8{margin-left:32px!important}.ml-xl-9{margin-left:36px!important}.ml-xl-10{margin-left:40px!important}.ml-xl-11{margin-left:44px!important}.ml-xl-12{margin-left:48px!important}.ml-xl-13{margin-left:52px!important}.ml-xl-14{margin-left:56px!important}.ml-xl-15{margin-left:60px!important}.ml-xl-16{margin-left:64px!important}.ml-xl-auto{margin-left:auto!important}.ms-xl-0{margin-inline-start:0px!important}.ms-xl-1{margin-inline-start:4px!important}.ms-xl-2{margin-inline-start:8px!important}.ms-xl-3{margin-inline-start:12px!important}.ms-xl-4{margin-inline-start:16px!important}.ms-xl-5{margin-inline-start:20px!important}.ms-xl-6{margin-inline-start:24px!important}.ms-xl-7{margin-inline-start:28px!important}.ms-xl-8{margin-inline-start:32px!important}.ms-xl-9{margin-inline-start:36px!important}.ms-xl-10{margin-inline-start:40px!important}.ms-xl-11{margin-inline-start:44px!important}.ms-xl-12{margin-inline-start:48px!important}.ms-xl-13{margin-inline-start:52px!important}.ms-xl-14{margin-inline-start:56px!important}.ms-xl-15{margin-inline-start:60px!important}.ms-xl-16{margin-inline-start:64px!important}.ms-xl-auto{margin-inline-start:auto!important}.me-xl-0{margin-inline-end:0px!important}.me-xl-1{margin-inline-end:4px!important}.me-xl-2{margin-inline-end:8px!important}.me-xl-3{margin-inline-end:12px!important}.me-xl-4{margin-inline-end:16px!important}.me-xl-5{margin-inline-end:20px!important}.me-xl-6{margin-inline-end:24px!important}.me-xl-7{margin-inline-end:28px!important}.me-xl-8{margin-inline-end:32px!important}.me-xl-9{margin-inline-end:36px!important}.me-xl-10{margin-inline-end:40px!important}.me-xl-11{margin-inline-end:44px!important}.me-xl-12{margin-inline-end:48px!important}.me-xl-13{margin-inline-end:52px!important}.me-xl-14{margin-inline-end:56px!important}.me-xl-15{margin-inline-end:60px!important}.me-xl-16{margin-inline-end:64px!important}.me-xl-auto{margin-inline-end:auto!important}.ma-xl-n1{margin:-4px!important}.ma-xl-n2{margin:-8px!important}.ma-xl-n3{margin:-12px!important}.ma-xl-n4{margin:-16px!important}.ma-xl-n5{margin:-20px!important}.ma-xl-n6{margin:-24px!important}.ma-xl-n7{margin:-28px!important}.ma-xl-n8{margin:-32px!important}.ma-xl-n9{margin:-36px!important}.ma-xl-n10{margin:-40px!important}.ma-xl-n11{margin:-44px!important}.ma-xl-n12{margin:-48px!important}.ma-xl-n13{margin:-52px!important}.ma-xl-n14{margin:-56px!important}.ma-xl-n15{margin:-60px!important}.ma-xl-n16{margin:-64px!important}.mx-xl-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-xl-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-xl-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-xl-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-xl-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-xl-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-xl-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-xl-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-xl-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-xl-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-xl-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-xl-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-xl-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-xl-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-xl-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-xl-n16{margin-right:-64px!important;margin-left:-64px!important}.my-xl-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-xl-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-xl-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-xl-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-xl-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-xl-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-xl-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-xl-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-xl-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-xl-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-xl-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-xl-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-xl-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-xl-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-xl-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-xl-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-xl-n1{margin-top:-4px!important}.mt-xl-n2{margin-top:-8px!important}.mt-xl-n3{margin-top:-12px!important}.mt-xl-n4{margin-top:-16px!important}.mt-xl-n5{margin-top:-20px!important}.mt-xl-n6{margin-top:-24px!important}.mt-xl-n7{margin-top:-28px!important}.mt-xl-n8{margin-top:-32px!important}.mt-xl-n9{margin-top:-36px!important}.mt-xl-n10{margin-top:-40px!important}.mt-xl-n11{margin-top:-44px!important}.mt-xl-n12{margin-top:-48px!important}.mt-xl-n13{margin-top:-52px!important}.mt-xl-n14{margin-top:-56px!important}.mt-xl-n15{margin-top:-60px!important}.mt-xl-n16{margin-top:-64px!important}.mr-xl-n1{margin-right:-4px!important}.mr-xl-n2{margin-right:-8px!important}.mr-xl-n3{margin-right:-12px!important}.mr-xl-n4{margin-right:-16px!important}.mr-xl-n5{margin-right:-20px!important}.mr-xl-n6{margin-right:-24px!important}.mr-xl-n7{margin-right:-28px!important}.mr-xl-n8{margin-right:-32px!important}.mr-xl-n9{margin-right:-36px!important}.mr-xl-n10{margin-right:-40px!important}.mr-xl-n11{margin-right:-44px!important}.mr-xl-n12{margin-right:-48px!important}.mr-xl-n13{margin-right:-52px!important}.mr-xl-n14{margin-right:-56px!important}.mr-xl-n15{margin-right:-60px!important}.mr-xl-n16{margin-right:-64px!important}.mb-xl-n1{margin-bottom:-4px!important}.mb-xl-n2{margin-bottom:-8px!important}.mb-xl-n3{margin-bottom:-12px!important}.mb-xl-n4{margin-bottom:-16px!important}.mb-xl-n5{margin-bottom:-20px!important}.mb-xl-n6{margin-bottom:-24px!important}.mb-xl-n7{margin-bottom:-28px!important}.mb-xl-n8{margin-bottom:-32px!important}.mb-xl-n9{margin-bottom:-36px!important}.mb-xl-n10{margin-bottom:-40px!important}.mb-xl-n11{margin-bottom:-44px!important}.mb-xl-n12{margin-bottom:-48px!important}.mb-xl-n13{margin-bottom:-52px!important}.mb-xl-n14{margin-bottom:-56px!important}.mb-xl-n15{margin-bottom:-60px!important}.mb-xl-n16{margin-bottom:-64px!important}.ml-xl-n1{margin-left:-4px!important}.ml-xl-n2{margin-left:-8px!important}.ml-xl-n3{margin-left:-12px!important}.ml-xl-n4{margin-left:-16px!important}.ml-xl-n5{margin-left:-20px!important}.ml-xl-n6{margin-left:-24px!important}.ml-xl-n7{margin-left:-28px!important}.ml-xl-n8{margin-left:-32px!important}.ml-xl-n9{margin-left:-36px!important}.ml-xl-n10{margin-left:-40px!important}.ml-xl-n11{margin-left:-44px!important}.ml-xl-n12{margin-left:-48px!important}.ml-xl-n13{margin-left:-52px!important}.ml-xl-n14{margin-left:-56px!important}.ml-xl-n15{margin-left:-60px!important}.ml-xl-n16{margin-left:-64px!important}.ms-xl-n1{margin-inline-start:-4px!important}.ms-xl-n2{margin-inline-start:-8px!important}.ms-xl-n3{margin-inline-start:-12px!important}.ms-xl-n4{margin-inline-start:-16px!important}.ms-xl-n5{margin-inline-start:-20px!important}.ms-xl-n6{margin-inline-start:-24px!important}.ms-xl-n7{margin-inline-start:-28px!important}.ms-xl-n8{margin-inline-start:-32px!important}.ms-xl-n9{margin-inline-start:-36px!important}.ms-xl-n10{margin-inline-start:-40px!important}.ms-xl-n11{margin-inline-start:-44px!important}.ms-xl-n12{margin-inline-start:-48px!important}.ms-xl-n13{margin-inline-start:-52px!important}.ms-xl-n14{margin-inline-start:-56px!important}.ms-xl-n15{margin-inline-start:-60px!important}.ms-xl-n16{margin-inline-start:-64px!important}.me-xl-n1{margin-inline-end:-4px!important}.me-xl-n2{margin-inline-end:-8px!important}.me-xl-n3{margin-inline-end:-12px!important}.me-xl-n4{margin-inline-end:-16px!important}.me-xl-n5{margin-inline-end:-20px!important}.me-xl-n6{margin-inline-end:-24px!important}.me-xl-n7{margin-inline-end:-28px!important}.me-xl-n8{margin-inline-end:-32px!important}.me-xl-n9{margin-inline-end:-36px!important}.me-xl-n10{margin-inline-end:-40px!important}.me-xl-n11{margin-inline-end:-44px!important}.me-xl-n12{margin-inline-end:-48px!important}.me-xl-n13{margin-inline-end:-52px!important}.me-xl-n14{margin-inline-end:-56px!important}.me-xl-n15{margin-inline-end:-60px!important}.me-xl-n16{margin-inline-end:-64px!important}.pa-xl-0{padding:0!important}.pa-xl-1{padding:4px!important}.pa-xl-2{padding:8px!important}.pa-xl-3{padding:12px!important}.pa-xl-4{padding:16px!important}.pa-xl-5{padding:20px!important}.pa-xl-6{padding:24px!important}.pa-xl-7{padding:28px!important}.pa-xl-8{padding:32px!important}.pa-xl-9{padding:36px!important}.pa-xl-10{padding:40px!important}.pa-xl-11{padding:44px!important}.pa-xl-12{padding:48px!important}.pa-xl-13{padding:52px!important}.pa-xl-14{padding:56px!important}.pa-xl-15{padding:60px!important}.pa-xl-16{padding:64px!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:4px!important;padding-left:4px!important}.px-xl-2{padding-right:8px!important;padding-left:8px!important}.px-xl-3{padding-right:12px!important;padding-left:12px!important}.px-xl-4{padding-right:16px!important;padding-left:16px!important}.px-xl-5{padding-right:20px!important;padding-left:20px!important}.px-xl-6{padding-right:24px!important;padding-left:24px!important}.px-xl-7{padding-right:28px!important;padding-left:28px!important}.px-xl-8{padding-right:32px!important;padding-left:32px!important}.px-xl-9{padding-right:36px!important;padding-left:36px!important}.px-xl-10{padding-right:40px!important;padding-left:40px!important}.px-xl-11{padding-right:44px!important;padding-left:44px!important}.px-xl-12{padding-right:48px!important;padding-left:48px!important}.px-xl-13{padding-right:52px!important;padding-left:52px!important}.px-xl-14{padding-right:56px!important;padding-left:56px!important}.px-xl-15{padding-right:60px!important;padding-left:60px!important}.px-xl-16{padding-right:64px!important;padding-left:64px!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:4px!important;padding-bottom:4px!important}.py-xl-2{padding-top:8px!important;padding-bottom:8px!important}.py-xl-3{padding-top:12px!important;padding-bottom:12px!important}.py-xl-4{padding-top:16px!important;padding-bottom:16px!important}.py-xl-5{padding-top:20px!important;padding-bottom:20px!important}.py-xl-6{padding-top:24px!important;padding-bottom:24px!important}.py-xl-7{padding-top:28px!important;padding-bottom:28px!important}.py-xl-8{padding-top:32px!important;padding-bottom:32px!important}.py-xl-9{padding-top:36px!important;padding-bottom:36px!important}.py-xl-10{padding-top:40px!important;padding-bottom:40px!important}.py-xl-11{padding-top:44px!important;padding-bottom:44px!important}.py-xl-12{padding-top:48px!important;padding-bottom:48px!important}.py-xl-13{padding-top:52px!important;padding-bottom:52px!important}.py-xl-14{padding-top:56px!important;padding-bottom:56px!important}.py-xl-15{padding-top:60px!important;padding-bottom:60px!important}.py-xl-16{padding-top:64px!important;padding-bottom:64px!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:4px!important}.pt-xl-2{padding-top:8px!important}.pt-xl-3{padding-top:12px!important}.pt-xl-4{padding-top:16px!important}.pt-xl-5{padding-top:20px!important}.pt-xl-6{padding-top:24px!important}.pt-xl-7{padding-top:28px!important}.pt-xl-8{padding-top:32px!important}.pt-xl-9{padding-top:36px!important}.pt-xl-10{padding-top:40px!important}.pt-xl-11{padding-top:44px!important}.pt-xl-12{padding-top:48px!important}.pt-xl-13{padding-top:52px!important}.pt-xl-14{padding-top:56px!important}.pt-xl-15{padding-top:60px!important}.pt-xl-16{padding-top:64px!important}.pr-xl-0{padding-right:0!important}.pr-xl-1{padding-right:4px!important}.pr-xl-2{padding-right:8px!important}.pr-xl-3{padding-right:12px!important}.pr-xl-4{padding-right:16px!important}.pr-xl-5{padding-right:20px!important}.pr-xl-6{padding-right:24px!important}.pr-xl-7{padding-right:28px!important}.pr-xl-8{padding-right:32px!important}.pr-xl-9{padding-right:36px!important}.pr-xl-10{padding-right:40px!important}.pr-xl-11{padding-right:44px!important}.pr-xl-12{padding-right:48px!important}.pr-xl-13{padding-right:52px!important}.pr-xl-14{padding-right:56px!important}.pr-xl-15{padding-right:60px!important}.pr-xl-16{padding-right:64px!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:4px!important}.pb-xl-2{padding-bottom:8px!important}.pb-xl-3{padding-bottom:12px!important}.pb-xl-4{padding-bottom:16px!important}.pb-xl-5{padding-bottom:20px!important}.pb-xl-6{padding-bottom:24px!important}.pb-xl-7{padding-bottom:28px!important}.pb-xl-8{padding-bottom:32px!important}.pb-xl-9{padding-bottom:36px!important}.pb-xl-10{padding-bottom:40px!important}.pb-xl-11{padding-bottom:44px!important}.pb-xl-12{padding-bottom:48px!important}.pb-xl-13{padding-bottom:52px!important}.pb-xl-14{padding-bottom:56px!important}.pb-xl-15{padding-bottom:60px!important}.pb-xl-16{padding-bottom:64px!important}.pl-xl-0{padding-left:0!important}.pl-xl-1{padding-left:4px!important}.pl-xl-2{padding-left:8px!important}.pl-xl-3{padding-left:12px!important}.pl-xl-4{padding-left:16px!important}.pl-xl-5{padding-left:20px!important}.pl-xl-6{padding-left:24px!important}.pl-xl-7{padding-left:28px!important}.pl-xl-8{padding-left:32px!important}.pl-xl-9{padding-left:36px!important}.pl-xl-10{padding-left:40px!important}.pl-xl-11{padding-left:44px!important}.pl-xl-12{padding-left:48px!important}.pl-xl-13{padding-left:52px!important}.pl-xl-14{padding-left:56px!important}.pl-xl-15{padding-left:60px!important}.pl-xl-16{padding-left:64px!important}.ps-xl-0{padding-inline-start:0px!important}.ps-xl-1{padding-inline-start:4px!important}.ps-xl-2{padding-inline-start:8px!important}.ps-xl-3{padding-inline-start:12px!important}.ps-xl-4{padding-inline-start:16px!important}.ps-xl-5{padding-inline-start:20px!important}.ps-xl-6{padding-inline-start:24px!important}.ps-xl-7{padding-inline-start:28px!important}.ps-xl-8{padding-inline-start:32px!important}.ps-xl-9{padding-inline-start:36px!important}.ps-xl-10{padding-inline-start:40px!important}.ps-xl-11{padding-inline-start:44px!important}.ps-xl-12{padding-inline-start:48px!important}.ps-xl-13{padding-inline-start:52px!important}.ps-xl-14{padding-inline-start:56px!important}.ps-xl-15{padding-inline-start:60px!important}.ps-xl-16{padding-inline-start:64px!important}.pe-xl-0{padding-inline-end:0px!important}.pe-xl-1{padding-inline-end:4px!important}.pe-xl-2{padding-inline-end:8px!important}.pe-xl-3{padding-inline-end:12px!important}.pe-xl-4{padding-inline-end:16px!important}.pe-xl-5{padding-inline-end:20px!important}.pe-xl-6{padding-inline-end:24px!important}.pe-xl-7{padding-inline-end:28px!important}.pe-xl-8{padding-inline-end:32px!important}.pe-xl-9{padding-inline-end:36px!important}.pe-xl-10{padding-inline-end:40px!important}.pe-xl-11{padding-inline-end:44px!important}.pe-xl-12{padding-inline-end:48px!important}.pe-xl-13{padding-inline-end:52px!important}.pe-xl-14{padding-inline-end:56px!important}.pe-xl-15{padding-inline-end:60px!important}.pe-xl-16{padding-inline-end:64px!important}.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}.text-xl-justify{text-align:justify!important}.text-xl-start{text-align:start!important}.text-xl-end{text-align:end!important}.text-xl-h1{font-size:6rem!important;font-weight:300;line-height:6rem;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-h2{font-size:3.75rem!important;font-weight:300;line-height:3.75rem;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-h3{font-size:3rem!important;font-weight:400;line-height:3.125rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-h4{font-size:2.125rem!important;font-weight:400;line-height:2.5rem;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-h5{font-size:1.5rem!important;font-weight:400;line-height:2rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-h6{font-size:1.25rem!important;font-weight:500;line-height:2rem;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-body-1{font-size:1rem!important;font-weight:400;line-height:1.5rem;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-body-2{font-size:.875rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-xl-caption{font-size:.75rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xl-overline{font-size:.75rem!important;font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}}@media (min-width: 2560px){.d-xxl-none{display:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.float-xxl-none{float:none!important}.float-xxl-left{float:left!important}.float-xxl-right{float:right!important}.v-locale--is-rtl .float-xxl-end{float:left!important}.v-locale--is-rtl .float-xxl-start,.v-locale--is-ltr .float-xxl-end{float:right!important}.v-locale--is-ltr .float-xxl-start{float:left!important}.flex-xxl-fill,.flex-xxl-1-1{flex:1 1 auto!important}.flex-xxl-1-0{flex:1 0 auto!important}.flex-xxl-0-1{flex:0 1 auto!important}.flex-xxl-0-0{flex:0 0 auto!important}.flex-xxl-1-1-100{flex:1 1 100%!important}.flex-xxl-1-0-100{flex:1 0 100%!important}.flex-xxl-0-1-100{flex:0 1 100%!important}.flex-xxl-0-0-100{flex:0 0 100%!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-xxl-start{justify-content:flex-start!important}.justify-xxl-end{justify-content:flex-end!important}.justify-xxl-center{justify-content:center!important}.justify-xxl-space-between{justify-content:space-between!important}.justify-xxl-space-around{justify-content:space-around!important}.justify-xxl-space-evenly{justify-content:space-evenly!important}.align-xxl-start{align-items:flex-start!important}.align-xxl-end{align-items:flex-end!important}.align-xxl-center{align-items:center!important}.align-xxl-baseline{align-items:baseline!important}.align-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-space-between{align-content:space-between!important}.align-content-xxl-space-around{align-content:space-around!important}.align-content-xxl-space-evenly{align-content:space-evenly!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-6{order:6!important}.order-xxl-7{order:7!important}.order-xxl-8{order:8!important}.order-xxl-9{order:9!important}.order-xxl-10{order:10!important}.order-xxl-11{order:11!important}.order-xxl-12{order:12!important}.order-xxl-last{order:13!important}.ga-xxl-0{gap:0px!important}.ga-xxl-1{gap:4px!important}.ga-xxl-2{gap:8px!important}.ga-xxl-3{gap:12px!important}.ga-xxl-4{gap:16px!important}.ga-xxl-5{gap:20px!important}.ga-xxl-6{gap:24px!important}.ga-xxl-7{gap:28px!important}.ga-xxl-8{gap:32px!important}.ga-xxl-9{gap:36px!important}.ga-xxl-10{gap:40px!important}.ga-xxl-11{gap:44px!important}.ga-xxl-12{gap:48px!important}.ga-xxl-13{gap:52px!important}.ga-xxl-14{gap:56px!important}.ga-xxl-15{gap:60px!important}.ga-xxl-16{gap:64px!important}.ga-xxl-auto{gap:auto!important}.gr-xxl-0{row-gap:0px!important}.gr-xxl-1{row-gap:4px!important}.gr-xxl-2{row-gap:8px!important}.gr-xxl-3{row-gap:12px!important}.gr-xxl-4{row-gap:16px!important}.gr-xxl-5{row-gap:20px!important}.gr-xxl-6{row-gap:24px!important}.gr-xxl-7{row-gap:28px!important}.gr-xxl-8{row-gap:32px!important}.gr-xxl-9{row-gap:36px!important}.gr-xxl-10{row-gap:40px!important}.gr-xxl-11{row-gap:44px!important}.gr-xxl-12{row-gap:48px!important}.gr-xxl-13{row-gap:52px!important}.gr-xxl-14{row-gap:56px!important}.gr-xxl-15{row-gap:60px!important}.gr-xxl-16{row-gap:64px!important}.gr-xxl-auto{row-gap:auto!important}.gc-xxl-0{column-gap:0px!important}.gc-xxl-1{column-gap:4px!important}.gc-xxl-2{column-gap:8px!important}.gc-xxl-3{column-gap:12px!important}.gc-xxl-4{column-gap:16px!important}.gc-xxl-5{column-gap:20px!important}.gc-xxl-6{column-gap:24px!important}.gc-xxl-7{column-gap:28px!important}.gc-xxl-8{column-gap:32px!important}.gc-xxl-9{column-gap:36px!important}.gc-xxl-10{column-gap:40px!important}.gc-xxl-11{column-gap:44px!important}.gc-xxl-12{column-gap:48px!important}.gc-xxl-13{column-gap:52px!important}.gc-xxl-14{column-gap:56px!important}.gc-xxl-15{column-gap:60px!important}.gc-xxl-16{column-gap:64px!important}.gc-xxl-auto{column-gap:auto!important}.ma-xxl-0{margin:0!important}.ma-xxl-1{margin:4px!important}.ma-xxl-2{margin:8px!important}.ma-xxl-3{margin:12px!important}.ma-xxl-4{margin:16px!important}.ma-xxl-5{margin:20px!important}.ma-xxl-6{margin:24px!important}.ma-xxl-7{margin:28px!important}.ma-xxl-8{margin:32px!important}.ma-xxl-9{margin:36px!important}.ma-xxl-10{margin:40px!important}.ma-xxl-11{margin:44px!important}.ma-xxl-12{margin:48px!important}.ma-xxl-13{margin:52px!important}.ma-xxl-14{margin:56px!important}.ma-xxl-15{margin:60px!important}.ma-xxl-16{margin:64px!important}.ma-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:4px!important;margin-left:4px!important}.mx-xxl-2{margin-right:8px!important;margin-left:8px!important}.mx-xxl-3{margin-right:12px!important;margin-left:12px!important}.mx-xxl-4{margin-right:16px!important;margin-left:16px!important}.mx-xxl-5{margin-right:20px!important;margin-left:20px!important}.mx-xxl-6{margin-right:24px!important;margin-left:24px!important}.mx-xxl-7{margin-right:28px!important;margin-left:28px!important}.mx-xxl-8{margin-right:32px!important;margin-left:32px!important}.mx-xxl-9{margin-right:36px!important;margin-left:36px!important}.mx-xxl-10{margin-right:40px!important;margin-left:40px!important}.mx-xxl-11{margin-right:44px!important;margin-left:44px!important}.mx-xxl-12{margin-right:48px!important;margin-left:48px!important}.mx-xxl-13{margin-right:52px!important;margin-left:52px!important}.mx-xxl-14{margin-right:56px!important;margin-left:56px!important}.mx-xxl-15{margin-right:60px!important;margin-left:60px!important}.mx-xxl-16{margin-right:64px!important;margin-left:64px!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:4px!important;margin-bottom:4px!important}.my-xxl-2{margin-top:8px!important;margin-bottom:8px!important}.my-xxl-3{margin-top:12px!important;margin-bottom:12px!important}.my-xxl-4{margin-top:16px!important;margin-bottom:16px!important}.my-xxl-5{margin-top:20px!important;margin-bottom:20px!important}.my-xxl-6{margin-top:24px!important;margin-bottom:24px!important}.my-xxl-7{margin-top:28px!important;margin-bottom:28px!important}.my-xxl-8{margin-top:32px!important;margin-bottom:32px!important}.my-xxl-9{margin-top:36px!important;margin-bottom:36px!important}.my-xxl-10{margin-top:40px!important;margin-bottom:40px!important}.my-xxl-11{margin-top:44px!important;margin-bottom:44px!important}.my-xxl-12{margin-top:48px!important;margin-bottom:48px!important}.my-xxl-13{margin-top:52px!important;margin-bottom:52px!important}.my-xxl-14{margin-top:56px!important;margin-bottom:56px!important}.my-xxl-15{margin-top:60px!important;margin-bottom:60px!important}.my-xxl-16{margin-top:64px!important;margin-bottom:64px!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:4px!important}.mt-xxl-2{margin-top:8px!important}.mt-xxl-3{margin-top:12px!important}.mt-xxl-4{margin-top:16px!important}.mt-xxl-5{margin-top:20px!important}.mt-xxl-6{margin-top:24px!important}.mt-xxl-7{margin-top:28px!important}.mt-xxl-8{margin-top:32px!important}.mt-xxl-9{margin-top:36px!important}.mt-xxl-10{margin-top:40px!important}.mt-xxl-11{margin-top:44px!important}.mt-xxl-12{margin-top:48px!important}.mt-xxl-13{margin-top:52px!important}.mt-xxl-14{margin-top:56px!important}.mt-xxl-15{margin-top:60px!important}.mt-xxl-16{margin-top:64px!important}.mt-xxl-auto{margin-top:auto!important}.mr-xxl-0{margin-right:0!important}.mr-xxl-1{margin-right:4px!important}.mr-xxl-2{margin-right:8px!important}.mr-xxl-3{margin-right:12px!important}.mr-xxl-4{margin-right:16px!important}.mr-xxl-5{margin-right:20px!important}.mr-xxl-6{margin-right:24px!important}.mr-xxl-7{margin-right:28px!important}.mr-xxl-8{margin-right:32px!important}.mr-xxl-9{margin-right:36px!important}.mr-xxl-10{margin-right:40px!important}.mr-xxl-11{margin-right:44px!important}.mr-xxl-12{margin-right:48px!important}.mr-xxl-13{margin-right:52px!important}.mr-xxl-14{margin-right:56px!important}.mr-xxl-15{margin-right:60px!important}.mr-xxl-16{margin-right:64px!important}.mr-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:4px!important}.mb-xxl-2{margin-bottom:8px!important}.mb-xxl-3{margin-bottom:12px!important}.mb-xxl-4{margin-bottom:16px!important}.mb-xxl-5{margin-bottom:20px!important}.mb-xxl-6{margin-bottom:24px!important}.mb-xxl-7{margin-bottom:28px!important}.mb-xxl-8{margin-bottom:32px!important}.mb-xxl-9{margin-bottom:36px!important}.mb-xxl-10{margin-bottom:40px!important}.mb-xxl-11{margin-bottom:44px!important}.mb-xxl-12{margin-bottom:48px!important}.mb-xxl-13{margin-bottom:52px!important}.mb-xxl-14{margin-bottom:56px!important}.mb-xxl-15{margin-bottom:60px!important}.mb-xxl-16{margin-bottom:64px!important}.mb-xxl-auto{margin-bottom:auto!important}.ml-xxl-0{margin-left:0!important}.ml-xxl-1{margin-left:4px!important}.ml-xxl-2{margin-left:8px!important}.ml-xxl-3{margin-left:12px!important}.ml-xxl-4{margin-left:16px!important}.ml-xxl-5{margin-left:20px!important}.ml-xxl-6{margin-left:24px!important}.ml-xxl-7{margin-left:28px!important}.ml-xxl-8{margin-left:32px!important}.ml-xxl-9{margin-left:36px!important}.ml-xxl-10{margin-left:40px!important}.ml-xxl-11{margin-left:44px!important}.ml-xxl-12{margin-left:48px!important}.ml-xxl-13{margin-left:52px!important}.ml-xxl-14{margin-left:56px!important}.ml-xxl-15{margin-left:60px!important}.ml-xxl-16{margin-left:64px!important}.ml-xxl-auto{margin-left:auto!important}.ms-xxl-0{margin-inline-start:0px!important}.ms-xxl-1{margin-inline-start:4px!important}.ms-xxl-2{margin-inline-start:8px!important}.ms-xxl-3{margin-inline-start:12px!important}.ms-xxl-4{margin-inline-start:16px!important}.ms-xxl-5{margin-inline-start:20px!important}.ms-xxl-6{margin-inline-start:24px!important}.ms-xxl-7{margin-inline-start:28px!important}.ms-xxl-8{margin-inline-start:32px!important}.ms-xxl-9{margin-inline-start:36px!important}.ms-xxl-10{margin-inline-start:40px!important}.ms-xxl-11{margin-inline-start:44px!important}.ms-xxl-12{margin-inline-start:48px!important}.ms-xxl-13{margin-inline-start:52px!important}.ms-xxl-14{margin-inline-start:56px!important}.ms-xxl-15{margin-inline-start:60px!important}.ms-xxl-16{margin-inline-start:64px!important}.ms-xxl-auto{margin-inline-start:auto!important}.me-xxl-0{margin-inline-end:0px!important}.me-xxl-1{margin-inline-end:4px!important}.me-xxl-2{margin-inline-end:8px!important}.me-xxl-3{margin-inline-end:12px!important}.me-xxl-4{margin-inline-end:16px!important}.me-xxl-5{margin-inline-end:20px!important}.me-xxl-6{margin-inline-end:24px!important}.me-xxl-7{margin-inline-end:28px!important}.me-xxl-8{margin-inline-end:32px!important}.me-xxl-9{margin-inline-end:36px!important}.me-xxl-10{margin-inline-end:40px!important}.me-xxl-11{margin-inline-end:44px!important}.me-xxl-12{margin-inline-end:48px!important}.me-xxl-13{margin-inline-end:52px!important}.me-xxl-14{margin-inline-end:56px!important}.me-xxl-15{margin-inline-end:60px!important}.me-xxl-16{margin-inline-end:64px!important}.me-xxl-auto{margin-inline-end:auto!important}.ma-xxl-n1{margin:-4px!important}.ma-xxl-n2{margin:-8px!important}.ma-xxl-n3{margin:-12px!important}.ma-xxl-n4{margin:-16px!important}.ma-xxl-n5{margin:-20px!important}.ma-xxl-n6{margin:-24px!important}.ma-xxl-n7{margin:-28px!important}.ma-xxl-n8{margin:-32px!important}.ma-xxl-n9{margin:-36px!important}.ma-xxl-n10{margin:-40px!important}.ma-xxl-n11{margin:-44px!important}.ma-xxl-n12{margin:-48px!important}.ma-xxl-n13{margin:-52px!important}.ma-xxl-n14{margin:-56px!important}.ma-xxl-n15{margin:-60px!important}.ma-xxl-n16{margin:-64px!important}.mx-xxl-n1{margin-right:-4px!important;margin-left:-4px!important}.mx-xxl-n2{margin-right:-8px!important;margin-left:-8px!important}.mx-xxl-n3{margin-right:-12px!important;margin-left:-12px!important}.mx-xxl-n4{margin-right:-16px!important;margin-left:-16px!important}.mx-xxl-n5{margin-right:-20px!important;margin-left:-20px!important}.mx-xxl-n6{margin-right:-24px!important;margin-left:-24px!important}.mx-xxl-n7{margin-right:-28px!important;margin-left:-28px!important}.mx-xxl-n8{margin-right:-32px!important;margin-left:-32px!important}.mx-xxl-n9{margin-right:-36px!important;margin-left:-36px!important}.mx-xxl-n10{margin-right:-40px!important;margin-left:-40px!important}.mx-xxl-n11{margin-right:-44px!important;margin-left:-44px!important}.mx-xxl-n12{margin-right:-48px!important;margin-left:-48px!important}.mx-xxl-n13{margin-right:-52px!important;margin-left:-52px!important}.mx-xxl-n14{margin-right:-56px!important;margin-left:-56px!important}.mx-xxl-n15{margin-right:-60px!important;margin-left:-60px!important}.mx-xxl-n16{margin-right:-64px!important;margin-left:-64px!important}.my-xxl-n1{margin-top:-4px!important;margin-bottom:-4px!important}.my-xxl-n2{margin-top:-8px!important;margin-bottom:-8px!important}.my-xxl-n3{margin-top:-12px!important;margin-bottom:-12px!important}.my-xxl-n4{margin-top:-16px!important;margin-bottom:-16px!important}.my-xxl-n5{margin-top:-20px!important;margin-bottom:-20px!important}.my-xxl-n6{margin-top:-24px!important;margin-bottom:-24px!important}.my-xxl-n7{margin-top:-28px!important;margin-bottom:-28px!important}.my-xxl-n8{margin-top:-32px!important;margin-bottom:-32px!important}.my-xxl-n9{margin-top:-36px!important;margin-bottom:-36px!important}.my-xxl-n10{margin-top:-40px!important;margin-bottom:-40px!important}.my-xxl-n11{margin-top:-44px!important;margin-bottom:-44px!important}.my-xxl-n12{margin-top:-48px!important;margin-bottom:-48px!important}.my-xxl-n13{margin-top:-52px!important;margin-bottom:-52px!important}.my-xxl-n14{margin-top:-56px!important;margin-bottom:-56px!important}.my-xxl-n15{margin-top:-60px!important;margin-bottom:-60px!important}.my-xxl-n16{margin-top:-64px!important;margin-bottom:-64px!important}.mt-xxl-n1{margin-top:-4px!important}.mt-xxl-n2{margin-top:-8px!important}.mt-xxl-n3{margin-top:-12px!important}.mt-xxl-n4{margin-top:-16px!important}.mt-xxl-n5{margin-top:-20px!important}.mt-xxl-n6{margin-top:-24px!important}.mt-xxl-n7{margin-top:-28px!important}.mt-xxl-n8{margin-top:-32px!important}.mt-xxl-n9{margin-top:-36px!important}.mt-xxl-n10{margin-top:-40px!important}.mt-xxl-n11{margin-top:-44px!important}.mt-xxl-n12{margin-top:-48px!important}.mt-xxl-n13{margin-top:-52px!important}.mt-xxl-n14{margin-top:-56px!important}.mt-xxl-n15{margin-top:-60px!important}.mt-xxl-n16{margin-top:-64px!important}.mr-xxl-n1{margin-right:-4px!important}.mr-xxl-n2{margin-right:-8px!important}.mr-xxl-n3{margin-right:-12px!important}.mr-xxl-n4{margin-right:-16px!important}.mr-xxl-n5{margin-right:-20px!important}.mr-xxl-n6{margin-right:-24px!important}.mr-xxl-n7{margin-right:-28px!important}.mr-xxl-n8{margin-right:-32px!important}.mr-xxl-n9{margin-right:-36px!important}.mr-xxl-n10{margin-right:-40px!important}.mr-xxl-n11{margin-right:-44px!important}.mr-xxl-n12{margin-right:-48px!important}.mr-xxl-n13{margin-right:-52px!important}.mr-xxl-n14{margin-right:-56px!important}.mr-xxl-n15{margin-right:-60px!important}.mr-xxl-n16{margin-right:-64px!important}.mb-xxl-n1{margin-bottom:-4px!important}.mb-xxl-n2{margin-bottom:-8px!important}.mb-xxl-n3{margin-bottom:-12px!important}.mb-xxl-n4{margin-bottom:-16px!important}.mb-xxl-n5{margin-bottom:-20px!important}.mb-xxl-n6{margin-bottom:-24px!important}.mb-xxl-n7{margin-bottom:-28px!important}.mb-xxl-n8{margin-bottom:-32px!important}.mb-xxl-n9{margin-bottom:-36px!important}.mb-xxl-n10{margin-bottom:-40px!important}.mb-xxl-n11{margin-bottom:-44px!important}.mb-xxl-n12{margin-bottom:-48px!important}.mb-xxl-n13{margin-bottom:-52px!important}.mb-xxl-n14{margin-bottom:-56px!important}.mb-xxl-n15{margin-bottom:-60px!important}.mb-xxl-n16{margin-bottom:-64px!important}.ml-xxl-n1{margin-left:-4px!important}.ml-xxl-n2{margin-left:-8px!important}.ml-xxl-n3{margin-left:-12px!important}.ml-xxl-n4{margin-left:-16px!important}.ml-xxl-n5{margin-left:-20px!important}.ml-xxl-n6{margin-left:-24px!important}.ml-xxl-n7{margin-left:-28px!important}.ml-xxl-n8{margin-left:-32px!important}.ml-xxl-n9{margin-left:-36px!important}.ml-xxl-n10{margin-left:-40px!important}.ml-xxl-n11{margin-left:-44px!important}.ml-xxl-n12{margin-left:-48px!important}.ml-xxl-n13{margin-left:-52px!important}.ml-xxl-n14{margin-left:-56px!important}.ml-xxl-n15{margin-left:-60px!important}.ml-xxl-n16{margin-left:-64px!important}.ms-xxl-n1{margin-inline-start:-4px!important}.ms-xxl-n2{margin-inline-start:-8px!important}.ms-xxl-n3{margin-inline-start:-12px!important}.ms-xxl-n4{margin-inline-start:-16px!important}.ms-xxl-n5{margin-inline-start:-20px!important}.ms-xxl-n6{margin-inline-start:-24px!important}.ms-xxl-n7{margin-inline-start:-28px!important}.ms-xxl-n8{margin-inline-start:-32px!important}.ms-xxl-n9{margin-inline-start:-36px!important}.ms-xxl-n10{margin-inline-start:-40px!important}.ms-xxl-n11{margin-inline-start:-44px!important}.ms-xxl-n12{margin-inline-start:-48px!important}.ms-xxl-n13{margin-inline-start:-52px!important}.ms-xxl-n14{margin-inline-start:-56px!important}.ms-xxl-n15{margin-inline-start:-60px!important}.ms-xxl-n16{margin-inline-start:-64px!important}.me-xxl-n1{margin-inline-end:-4px!important}.me-xxl-n2{margin-inline-end:-8px!important}.me-xxl-n3{margin-inline-end:-12px!important}.me-xxl-n4{margin-inline-end:-16px!important}.me-xxl-n5{margin-inline-end:-20px!important}.me-xxl-n6{margin-inline-end:-24px!important}.me-xxl-n7{margin-inline-end:-28px!important}.me-xxl-n8{margin-inline-end:-32px!important}.me-xxl-n9{margin-inline-end:-36px!important}.me-xxl-n10{margin-inline-end:-40px!important}.me-xxl-n11{margin-inline-end:-44px!important}.me-xxl-n12{margin-inline-end:-48px!important}.me-xxl-n13{margin-inline-end:-52px!important}.me-xxl-n14{margin-inline-end:-56px!important}.me-xxl-n15{margin-inline-end:-60px!important}.me-xxl-n16{margin-inline-end:-64px!important}.pa-xxl-0{padding:0!important}.pa-xxl-1{padding:4px!important}.pa-xxl-2{padding:8px!important}.pa-xxl-3{padding:12px!important}.pa-xxl-4{padding:16px!important}.pa-xxl-5{padding:20px!important}.pa-xxl-6{padding:24px!important}.pa-xxl-7{padding:28px!important}.pa-xxl-8{padding:32px!important}.pa-xxl-9{padding:36px!important}.pa-xxl-10{padding:40px!important}.pa-xxl-11{padding:44px!important}.pa-xxl-12{padding:48px!important}.pa-xxl-13{padding:52px!important}.pa-xxl-14{padding:56px!important}.pa-xxl-15{padding:60px!important}.pa-xxl-16{padding:64px!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:4px!important;padding-left:4px!important}.px-xxl-2{padding-right:8px!important;padding-left:8px!important}.px-xxl-3{padding-right:12px!important;padding-left:12px!important}.px-xxl-4{padding-right:16px!important;padding-left:16px!important}.px-xxl-5{padding-right:20px!important;padding-left:20px!important}.px-xxl-6{padding-right:24px!important;padding-left:24px!important}.px-xxl-7{padding-right:28px!important;padding-left:28px!important}.px-xxl-8{padding-right:32px!important;padding-left:32px!important}.px-xxl-9{padding-right:36px!important;padding-left:36px!important}.px-xxl-10{padding-right:40px!important;padding-left:40px!important}.px-xxl-11{padding-right:44px!important;padding-left:44px!important}.px-xxl-12{padding-right:48px!important;padding-left:48px!important}.px-xxl-13{padding-right:52px!important;padding-left:52px!important}.px-xxl-14{padding-right:56px!important;padding-left:56px!important}.px-xxl-15{padding-right:60px!important;padding-left:60px!important}.px-xxl-16{padding-right:64px!important;padding-left:64px!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:4px!important;padding-bottom:4px!important}.py-xxl-2{padding-top:8px!important;padding-bottom:8px!important}.py-xxl-3{padding-top:12px!important;padding-bottom:12px!important}.py-xxl-4{padding-top:16px!important;padding-bottom:16px!important}.py-xxl-5{padding-top:20px!important;padding-bottom:20px!important}.py-xxl-6{padding-top:24px!important;padding-bottom:24px!important}.py-xxl-7{padding-top:28px!important;padding-bottom:28px!important}.py-xxl-8{padding-top:32px!important;padding-bottom:32px!important}.py-xxl-9{padding-top:36px!important;padding-bottom:36px!important}.py-xxl-10{padding-top:40px!important;padding-bottom:40px!important}.py-xxl-11{padding-top:44px!important;padding-bottom:44px!important}.py-xxl-12{padding-top:48px!important;padding-bottom:48px!important}.py-xxl-13{padding-top:52px!important;padding-bottom:52px!important}.py-xxl-14{padding-top:56px!important;padding-bottom:56px!important}.py-xxl-15{padding-top:60px!important;padding-bottom:60px!important}.py-xxl-16{padding-top:64px!important;padding-bottom:64px!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:4px!important}.pt-xxl-2{padding-top:8px!important}.pt-xxl-3{padding-top:12px!important}.pt-xxl-4{padding-top:16px!important}.pt-xxl-5{padding-top:20px!important}.pt-xxl-6{padding-top:24px!important}.pt-xxl-7{padding-top:28px!important}.pt-xxl-8{padding-top:32px!important}.pt-xxl-9{padding-top:36px!important}.pt-xxl-10{padding-top:40px!important}.pt-xxl-11{padding-top:44px!important}.pt-xxl-12{padding-top:48px!important}.pt-xxl-13{padding-top:52px!important}.pt-xxl-14{padding-top:56px!important}.pt-xxl-15{padding-top:60px!important}.pt-xxl-16{padding-top:64px!important}.pr-xxl-0{padding-right:0!important}.pr-xxl-1{padding-right:4px!important}.pr-xxl-2{padding-right:8px!important}.pr-xxl-3{padding-right:12px!important}.pr-xxl-4{padding-right:16px!important}.pr-xxl-5{padding-right:20px!important}.pr-xxl-6{padding-right:24px!important}.pr-xxl-7{padding-right:28px!important}.pr-xxl-8{padding-right:32px!important}.pr-xxl-9{padding-right:36px!important}.pr-xxl-10{padding-right:40px!important}.pr-xxl-11{padding-right:44px!important}.pr-xxl-12{padding-right:48px!important}.pr-xxl-13{padding-right:52px!important}.pr-xxl-14{padding-right:56px!important}.pr-xxl-15{padding-right:60px!important}.pr-xxl-16{padding-right:64px!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:4px!important}.pb-xxl-2{padding-bottom:8px!important}.pb-xxl-3{padding-bottom:12px!important}.pb-xxl-4{padding-bottom:16px!important}.pb-xxl-5{padding-bottom:20px!important}.pb-xxl-6{padding-bottom:24px!important}.pb-xxl-7{padding-bottom:28px!important}.pb-xxl-8{padding-bottom:32px!important}.pb-xxl-9{padding-bottom:36px!important}.pb-xxl-10{padding-bottom:40px!important}.pb-xxl-11{padding-bottom:44px!important}.pb-xxl-12{padding-bottom:48px!important}.pb-xxl-13{padding-bottom:52px!important}.pb-xxl-14{padding-bottom:56px!important}.pb-xxl-15{padding-bottom:60px!important}.pb-xxl-16{padding-bottom:64px!important}.pl-xxl-0{padding-left:0!important}.pl-xxl-1{padding-left:4px!important}.pl-xxl-2{padding-left:8px!important}.pl-xxl-3{padding-left:12px!important}.pl-xxl-4{padding-left:16px!important}.pl-xxl-5{padding-left:20px!important}.pl-xxl-6{padding-left:24px!important}.pl-xxl-7{padding-left:28px!important}.pl-xxl-8{padding-left:32px!important}.pl-xxl-9{padding-left:36px!important}.pl-xxl-10{padding-left:40px!important}.pl-xxl-11{padding-left:44px!important}.pl-xxl-12{padding-left:48px!important}.pl-xxl-13{padding-left:52px!important}.pl-xxl-14{padding-left:56px!important}.pl-xxl-15{padding-left:60px!important}.pl-xxl-16{padding-left:64px!important}.ps-xxl-0{padding-inline-start:0px!important}.ps-xxl-1{padding-inline-start:4px!important}.ps-xxl-2{padding-inline-start:8px!important}.ps-xxl-3{padding-inline-start:12px!important}.ps-xxl-4{padding-inline-start:16px!important}.ps-xxl-5{padding-inline-start:20px!important}.ps-xxl-6{padding-inline-start:24px!important}.ps-xxl-7{padding-inline-start:28px!important}.ps-xxl-8{padding-inline-start:32px!important}.ps-xxl-9{padding-inline-start:36px!important}.ps-xxl-10{padding-inline-start:40px!important}.ps-xxl-11{padding-inline-start:44px!important}.ps-xxl-12{padding-inline-start:48px!important}.ps-xxl-13{padding-inline-start:52px!important}.ps-xxl-14{padding-inline-start:56px!important}.ps-xxl-15{padding-inline-start:60px!important}.ps-xxl-16{padding-inline-start:64px!important}.pe-xxl-0{padding-inline-end:0px!important}.pe-xxl-1{padding-inline-end:4px!important}.pe-xxl-2{padding-inline-end:8px!important}.pe-xxl-3{padding-inline-end:12px!important}.pe-xxl-4{padding-inline-end:16px!important}.pe-xxl-5{padding-inline-end:20px!important}.pe-xxl-6{padding-inline-end:24px!important}.pe-xxl-7{padding-inline-end:28px!important}.pe-xxl-8{padding-inline-end:32px!important}.pe-xxl-9{padding-inline-end:36px!important}.pe-xxl-10{padding-inline-end:40px!important}.pe-xxl-11{padding-inline-end:44px!important}.pe-xxl-12{padding-inline-end:48px!important}.pe-xxl-13{padding-inline-end:52px!important}.pe-xxl-14{padding-inline-end:56px!important}.pe-xxl-15{padding-inline-end:60px!important}.pe-xxl-16{padding-inline-end:64px!important}.text-xxl-left{text-align:left!important}.text-xxl-right{text-align:right!important}.text-xxl-center{text-align:center!important}.text-xxl-justify{text-align:justify!important}.text-xxl-start{text-align:start!important}.text-xxl-end{text-align:end!important}.text-xxl-h1{font-size:6rem!important;font-weight:300;line-height:6rem;letter-spacing:-.015625em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-h2{font-size:3.75rem!important;font-weight:300;line-height:3.75rem;letter-spacing:-.0083333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-h3{font-size:3rem!important;font-weight:400;line-height:3.125rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-h4{font-size:2.125rem!important;font-weight:400;line-height:2.5rem;letter-spacing:.0073529412em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-h5{font-size:1.5rem!important;font-weight:400;line-height:2rem;letter-spacing:normal!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-h6{font-size:1.25rem!important;font-weight:500;line-height:2rem;letter-spacing:.0125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-subtitle-1{font-size:1rem!important;font-weight:400;line-height:1.75rem;letter-spacing:.009375em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-subtitle-2{font-size:.875rem!important;font-weight:500;line-height:1.375rem;letter-spacing:.0071428571em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-body-1{font-size:1rem!important;font-weight:400;line-height:1.5rem;letter-spacing:.03125em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-body-2{font-size:.875rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0178571429em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-button{font-size:.875rem!important;font-weight:500;line-height:2.25rem;letter-spacing:.0892857143em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}.text-xxl-caption{font-size:.75rem!important;font-weight:400;line-height:1.25rem;letter-spacing:.0333333333em!important;font-family:Roboto,sans-serif;text-transform:none!important}.text-xxl-overline{font-size:.75rem!important;font-weight:500;line-height:2rem;letter-spacing:.1666666667em!important;font-family:Roboto,sans-serif;text-transform:uppercase!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.float-print-none{float:none!important}.float-print-left{float:left!important}.float-print-right{float:right!important}.v-locale--is-rtl .float-print-end{float:left!important}.v-locale--is-rtl .float-print-start,.v-locale--is-ltr .float-print-end{float:right!important}.v-locale--is-ltr .float-print-start{float:left!important}}.v-chip{align-items:center;display:inline-flex;font-weight:400;max-width:100%;min-width:0;overflow:hidden;position:relative;text-decoration:none;white-space:nowrap;vertical-align:middle;border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0;border-radius:9999px}.v-chip.v-chip--size-x-small{--v-chip-size: .625rem;--v-chip-height: 20px;font-size:.625rem;padding:0 8px}.v-chip.v-chip--size-x-small .v-avatar{--v-avatar-height: 14px}.v-chip--pill.v-chip.v-chip--size-x-small .v-avatar{--v-avatar-height: 20px}.v-chip.v-chip--size-x-small .v-avatar--start{margin-inline-start:-5.6px;margin-inline-end:4px}.v-chip--pill.v-chip.v-chip--size-x-small .v-avatar--start{margin-inline-start:-8px}.v-chip.v-chip--size-x-small .v-avatar--end{margin-inline-start:4px;margin-inline-end:-5.6px}.v-chip--pill.v-chip.v-chip--size-x-small .v-avatar--end{margin-inline-end:-8px}.v-chip--pill.v-chip.v-chip--size-x-small .v-avatar--end+.v-chip__close{margin-inline-start:12px}.v-chip.v-chip--size-x-small .v-icon--start,.v-chip.v-chip--size-x-small .v-chip__filter{margin-inline-start:-4px;margin-inline-end:4px}.v-chip.v-chip--size-x-small .v-icon--end,.v-chip.v-chip--size-x-small .v-chip__close{margin-inline-start:4px;margin-inline-end:-4px}.v-chip.v-chip--size-x-small .v-icon--end+.v-chip__close,.v-chip.v-chip--size-x-small .v-avatar--end+.v-chip__close,.v-chip.v-chip--size-x-small .v-chip__append+.v-chip__close{margin-inline-start:8px}.v-chip.v-chip--size-small{--v-chip-size: .75rem;--v-chip-height: 26px;font-size:.75rem;padding:0 10px}.v-chip.v-chip--size-small .v-avatar{--v-avatar-height: 20px}.v-chip--pill.v-chip.v-chip--size-small .v-avatar{--v-avatar-height: 26px}.v-chip.v-chip--size-small .v-avatar--start{margin-inline-start:-7px;margin-inline-end:5px}.v-chip--pill.v-chip.v-chip--size-small .v-avatar--start{margin-inline-start:-10px}.v-chip.v-chip--size-small .v-avatar--end{margin-inline-start:5px;margin-inline-end:-7px}.v-chip--pill.v-chip.v-chip--size-small .v-avatar--end{margin-inline-end:-10px}.v-chip--pill.v-chip.v-chip--size-small .v-avatar--end+.v-chip__close{margin-inline-start:15px}.v-chip.v-chip--size-small .v-icon--start,.v-chip.v-chip--size-small .v-chip__filter{margin-inline-start:-5px;margin-inline-end:5px}.v-chip.v-chip--size-small .v-icon--end,.v-chip.v-chip--size-small .v-chip__close{margin-inline-start:5px;margin-inline-end:-5px}.v-chip.v-chip--size-small .v-icon--end+.v-chip__close,.v-chip.v-chip--size-small .v-avatar--end+.v-chip__close,.v-chip.v-chip--size-small .v-chip__append+.v-chip__close{margin-inline-start:10px}.v-chip.v-chip--size-default{--v-chip-size: .875rem;--v-chip-height: 32px;font-size:.875rem;padding:0 12px}.v-chip.v-chip--size-default .v-avatar{--v-avatar-height: 26px}.v-chip--pill.v-chip.v-chip--size-default .v-avatar{--v-avatar-height: 32px}.v-chip.v-chip--size-default .v-avatar--start{margin-inline-start:-8.4px;margin-inline-end:6px}.v-chip--pill.v-chip.v-chip--size-default .v-avatar--start{margin-inline-start:-12px}.v-chip.v-chip--size-default .v-avatar--end{margin-inline-start:6px;margin-inline-end:-8.4px}.v-chip--pill.v-chip.v-chip--size-default .v-avatar--end{margin-inline-end:-12px}.v-chip--pill.v-chip.v-chip--size-default .v-avatar--end+.v-chip__close{margin-inline-start:18px}.v-chip.v-chip--size-default .v-icon--start,.v-chip.v-chip--size-default .v-chip__filter{margin-inline-start:-6px;margin-inline-end:6px}.v-chip.v-chip--size-default .v-icon--end,.v-chip.v-chip--size-default .v-chip__close{margin-inline-start:6px;margin-inline-end:-6px}.v-chip.v-chip--size-default .v-icon--end+.v-chip__close,.v-chip.v-chip--size-default .v-avatar--end+.v-chip__close,.v-chip.v-chip--size-default .v-chip__append+.v-chip__close{margin-inline-start:12px}.v-chip.v-chip--size-large{--v-chip-size: 1rem;--v-chip-height: 38px;font-size:1rem;padding:0 14px}.v-chip.v-chip--size-large .v-avatar{--v-avatar-height: 32px}.v-chip--pill.v-chip.v-chip--size-large .v-avatar{--v-avatar-height: 38px}.v-chip.v-chip--size-large .v-avatar--start{margin-inline-start:-9.8px;margin-inline-end:7px}.v-chip--pill.v-chip.v-chip--size-large .v-avatar--start{margin-inline-start:-14px}.v-chip.v-chip--size-large .v-avatar--end{margin-inline-start:7px;margin-inline-end:-9.8px}.v-chip--pill.v-chip.v-chip--size-large .v-avatar--end{margin-inline-end:-14px}.v-chip--pill.v-chip.v-chip--size-large .v-avatar--end+.v-chip__close{margin-inline-start:21px}.v-chip.v-chip--size-large .v-icon--start,.v-chip.v-chip--size-large .v-chip__filter{margin-inline-start:-7px;margin-inline-end:7px}.v-chip.v-chip--size-large .v-icon--end,.v-chip.v-chip--size-large .v-chip__close{margin-inline-start:7px;margin-inline-end:-7px}.v-chip.v-chip--size-large .v-icon--end+.v-chip__close,.v-chip.v-chip--size-large .v-avatar--end+.v-chip__close,.v-chip.v-chip--size-large .v-chip__append+.v-chip__close{margin-inline-start:14px}.v-chip.v-chip--size-x-large{--v-chip-size: 1.125rem;--v-chip-height: 44px;font-size:1.125rem;padding:0 17px}.v-chip.v-chip--size-x-large .v-avatar{--v-avatar-height: 38px}.v-chip--pill.v-chip.v-chip--size-x-large .v-avatar{--v-avatar-height: 44px}.v-chip.v-chip--size-x-large .v-avatar--start{margin-inline-start:-11.9px;margin-inline-end:8.5px}.v-chip--pill.v-chip.v-chip--size-x-large .v-avatar--start{margin-inline-start:-17px}.v-chip.v-chip--size-x-large .v-avatar--end{margin-inline-start:8.5px;margin-inline-end:-11.9px}.v-chip--pill.v-chip.v-chip--size-x-large .v-avatar--end{margin-inline-end:-17px}.v-chip--pill.v-chip.v-chip--size-x-large .v-avatar--end+.v-chip__close{margin-inline-start:25.5px}.v-chip.v-chip--size-x-large .v-icon--start,.v-chip.v-chip--size-x-large .v-chip__filter{margin-inline-start:-8.5px;margin-inline-end:8.5px}.v-chip.v-chip--size-x-large .v-icon--end,.v-chip.v-chip--size-x-large .v-chip__close{margin-inline-start:8.5px;margin-inline-end:-8.5px}.v-chip.v-chip--size-x-large .v-icon--end+.v-chip__close,.v-chip.v-chip--size-x-large .v-avatar--end+.v-chip__close,.v-chip.v-chip--size-x-large .v-chip__append+.v-chip__close{margin-inline-start:17px}.v-chip.v-chip--density-default{height:calc(var(--v-chip-height) + 0px)}.v-chip.v-chip--density-comfortable{height:calc(var(--v-chip-height) + -8px)}.v-chip.v-chip--density-compact{height:calc(var(--v-chip-height) + -12px)}.v-chip:hover>.v-chip__overlay{opacity:calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier))}.v-chip:focus-visible>.v-chip__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-chip:focus>.v-chip__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}}.v-chip--active>.v-chip__overlay,.v-chip[aria-haspopup=menu][aria-expanded=true]>.v-chip__overlay{opacity:calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier))}.v-chip--active:hover>.v-chip__overlay,.v-chip[aria-haspopup=menu][aria-expanded=true]:hover>.v-chip__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}.v-chip--active:focus-visible>.v-chip__overlay,.v-chip[aria-haspopup=menu][aria-expanded=true]:focus-visible>.v-chip__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-chip--active:focus>.v-chip__overlay,.v-chip[aria-haspopup=menu][aria-expanded=true]:focus>.v-chip__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}}.v-chip--variant-plain,.v-chip--variant-outlined,.v-chip--variant-text,.v-chip--variant-tonal{background:transparent;color:inherit}.v-chip--variant-plain{opacity:.26}.v-chip--variant-plain:focus,.v-chip--variant-plain:hover{opacity:1}.v-chip--variant-plain .v-chip__overlay{display:none}.v-chip--variant-elevated,.v-chip--variant-flat{background:rgb(var(--v-theme-surface-variant));color:rgb(var(--v-theme-on-surface-variant))}.v-chip--variant-elevated{box-shadow:0 2px 1px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 1px 1px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 3px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-chip--variant-flat{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-chip--variant-outlined{border:thin solid currentColor}.v-chip--variant-text .v-chip__overlay{background:currentColor}.v-chip--variant-tonal .v-chip__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.v-chip--border{border-width:thin}.v-chip--link{cursor:pointer}.v-chip--filter{-webkit-user-select:none;user-select:none}.v-chip__content{align-items:center;display:inline-flex}.v-autocomplete__selection .v-chip__content,.v-combobox__selection .v-chip__content,.v-select__selection .v-chip__content{overflow:hidden}.v-chip__filter,.v-chip__prepend,.v-chip__append,.v-chip__close{align-items:center;display:inline-flex}.v-chip__close{cursor:pointer;flex:0 1 auto;font-size:18px;max-height:18px;max-width:18px;-webkit-user-select:none;user-select:none}.v-chip__close .v-icon{font-size:inherit}.v-chip__filter{transition:.15s cubic-bezier(.4,0,.2,1)}.v-chip__overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:currentColor;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.v-chip--disabled{opacity:.3;pointer-events:none;-webkit-user-select:none;user-select:none}.v-chip--label{border-radius:4px}.v-chip-group{display:flex;max-width:100%;min-width:0;overflow-x:auto;padding:4px 0}.v-chip-group .v-chip{margin:4px 8px 4px 0}.v-chip-group .v-chip.v-chip--selected:not(.v-chip--disabled) .v-chip__overlay{opacity:var(--v-activated-opacity)}.v-chip-group--column .v-slide-group__content{white-space:normal;flex-wrap:wrap;max-width:100%}.v-slide-group{display:flex;overflow:hidden}.v-slide-group__next,.v-slide-group__prev{align-items:center;display:flex;flex:0 1 52px;justify-content:center;min-width:52px;cursor:pointer}.v-slide-group__next--disabled,.v-slide-group__prev--disabled{pointer-events:none;opacity:var(--v-disabled-opacity)}.v-slide-group__content{display:flex;flex:1 0 auto;position:relative;transition:.2s all cubic-bezier(.4,0,.2,1);white-space:nowrap}.v-slide-group__content>*{white-space:initial}.v-slide-group__container{contain:content;display:flex;flex:1 1 auto;overflow:hidden}.v-slide-group--vertical,.v-slide-group--vertical .v-slide-group__container,.v-slide-group--vertical .v-slide-group__content{flex-direction:column}.v-rating{max-width:100%;display:inline-flex;white-space:nowrap}.v-rating--readonly{pointer-events:none}.v-rating__wrapper{align-items:center;display:inline-flex;flex-direction:column}.v-rating__wrapper--bottom{flex-direction:column-reverse}.v-rating__item{display:inline-flex;position:relative}.v-rating__item label{cursor:pointer}.v-rating__item .v-btn--variant-plain{opacity:1}.v-rating__item .v-btn{transition-property:transform}.v-rating__item .v-btn .v-icon{transition:inherit;transition-timing-function:cubic-bezier(0,0,.2,1)}.v-rating--hover .v-rating__item:hover:not(.v-rating__item--focused) .v-btn{transform:scale(1.25)}.v-rating__item--half{overflow:hidden;position:absolute;clip-path:polygon(0 0,50% 0,50% 100%,0 100%);z-index:1}.v-rating__item--half .v-btn__overlay,.v-rating__item--half:hover .v-btn__overlay{opacity:0}.v-rating__hidden{height:0;opacity:0;position:absolute;width:0}.v-tooltip>.v-overlay__content{background:rgb(var(--v-theme-surface-variant));color:rgb(var(--v-theme-on-surface-variant));border-radius:4px;font-size:.875rem;line-height:1.6;display:inline-block;padding:5px 16px;text-transform:initial;width:auto;opacity:1;pointer-events:none;transition-property:opacity,transform}.v-tooltip>.v-overlay__content[class*=enter-active]{transition-timing-function:cubic-bezier(0,0,.2,1);transition-duration:.15s}.v-tooltip>.v-overlay__content[class*=leave-active]{transition-timing-function:cubic-bezier(.4,0,1,1);transition-duration:75ms}.v-table{background:rgb(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity));font-size:.875rem;transition-duration:.28s;transition-property:box-shadow,opacity,background,height;transition-timing-function:cubic-bezier(.4,0,.2,1)}.v-table .v-table-divider{border-right:thin solid rgba(var(--v-border-color),var(--v-border-opacity))}.v-table .v-table__wrapper>table>thead>tr>th{border-bottom:thin solid rgba(var(--v-border-color),var(--v-border-opacity))}.v-table .v-table__wrapper>table>tbody>tr:not(:last-child)>td,.v-table .v-table__wrapper>table>tbody>tr:not(:last-child)>th{border-bottom:thin solid rgba(var(--v-border-color),var(--v-border-opacity))}.v-table .v-table__wrapper>table>tfoot>tr>td,.v-table .v-table__wrapper>table>tfoot>tr>th{border-top:thin solid rgba(var(--v-border-color),var(--v-border-opacity))}.v-table.v-table--hover>.v-table__wrapper>table>tbody>tr>td{position:relative}.v-table.v-table--hover>.v-table__wrapper>table>tbody>tr:hover>td:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(var(--v-border-color),var(--v-hover-opacity));pointer-events:none}.v-table.v-table--fixed-header>.v-table__wrapper>table>thead>tr>th{background:rgb(var(--v-theme-surface));box-shadow:inset 0 -1px rgba(var(--v-border-color),var(--v-border-opacity));z-index:1}.v-table.v-table--fixed-footer>tfoot>tr>th,.v-table.v-table--fixed-footer>tfoot>tr>td{background:rgb(var(--v-theme-surface));box-shadow:inset 0 1px rgba(var(--v-border-color),var(--v-border-opacity))}.v-table{border-radius:inherit;line-height:1.5;max-width:100%;display:flex;flex-direction:column}.v-table>.v-table__wrapper>table{width:100%;border-spacing:0}.v-table>.v-table__wrapper>table>tbody>tr>td,.v-table>.v-table__wrapper>table>tbody>tr>th,.v-table>.v-table__wrapper>table>thead>tr>td,.v-table>.v-table__wrapper>table>thead>tr>th,.v-table>.v-table__wrapper>table>tfoot>tr>td,.v-table>.v-table__wrapper>table>tfoot>tr>th{padding:0 16px;transition-duration:.28s;transition-property:box-shadow,opacity,background,height;transition-timing-function:cubic-bezier(.4,0,.2,1)}.v-table>.v-table__wrapper>table>tbody>tr>td,.v-table>.v-table__wrapper>table>thead>tr>td,.v-table>.v-table__wrapper>table>tfoot>tr>td{height:var(--v-table-row-height)}.v-table>.v-table__wrapper>table>tbody>tr>th,.v-table>.v-table__wrapper>table>thead>tr>th,.v-table>.v-table__wrapper>table>tfoot>tr>th{height:var(--v-table-header-height);font-weight:500;-webkit-user-select:none;user-select:none;text-align:start}.v-table--density-default{--v-table-header-height: 56px;--v-table-row-height: 52px}.v-table--density-comfortable{--v-table-header-height: 48px;--v-table-row-height: 44px}.v-table--density-compact{--v-table-header-height: 40px;--v-table-row-height: 36px}.v-table__wrapper{border-radius:inherit;overflow:auto;flex:1 1 auto}.v-table--has-top>.v-table__wrapper>table>tbody>tr:first-child:hover>td:first-child{border-top-left-radius:0}.v-table--has-top>.v-table__wrapper>table>tbody>tr:first-child:hover>td:last-child{border-top-right-radius:0}.v-table--has-bottom>.v-table__wrapper>table>tbody>tr:last-child:hover>td:first-child{border-bottom-left-radius:0}.v-table--has-bottom>.v-table__wrapper>table>tbody>tr:last-child:hover>td:last-child{border-bottom-right-radius:0}.v-table--fixed-height>.v-table__wrapper{overflow-y:auto}.v-table--fixed-header>.v-table__wrapper>table>thead{position:sticky;top:0;z-index:2}.v-table--fixed-header>.v-table__wrapper>table>thead>tr>th{border-bottom:0px!important}.v-table--fixed-footer>.v-table__wrapper>table>tfoot>tr{position:sticky;bottom:0;z-index:1}.v-table--fixed-footer>.v-table__wrapper>table>tfoot>tr>td,.v-table--fixed-footer>.v-table__wrapper>table>tfoot>tr>th{border-top:0px!important}.v-expansion-panel{background-color:rgb(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-expansion-panel:not(:first-child):after{border-color:rgba(var(--v-border-color),var(--v-border-opacity))}.v-expansion-panel--disabled .v-expansion-panel-title{color:rgba(var(--v-theme-on-surface),.26)}.v-expansion-panel--disabled .v-expansion-panel-title .v-expansion-panel-title__overlay{opacity:.4615384615}.v-expansion-panels{display:flex;flex-wrap:wrap;justify-content:center;list-style-type:none;padding:0;width:100%;position:relative;z-index:1}.v-expansion-panels:not(.v-expansion-panels--variant-accordion)>:not(:first-child):not(:last-child):not(.v-expansion-panel--active):not(.v-expansion-panel--before-active){border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.v-expansion-panels:not(.v-expansion-panels--variant-accordion)>:not(:first-child):not(:last-child):not(.v-expansion-panel--active):not(.v-expansion-panel--after-active){border-top-left-radius:0!important;border-top-right-radius:0!important}.v-expansion-panels:not(.v-expansion-panels--variant-accordion)>:first-child:not(:last-child):not(.v-expansion-panel--active):not(.v-expansion-panel--before-active){border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.v-expansion-panels:not(.v-expansion-panels--variant-accordion)>:last-child:not(:first-child):not(.v-expansion-panel--active):not(.v-expansion-panel--after-active){border-top-left-radius:0!important;border-top-right-radius:0!important}.v-expansion-panels--variant-accordion>:first-child{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.v-expansion-panels--variant-accordion>:last-child{border-top-left-radius:0!important;border-top-right-radius:0!important}.v-expansion-panels--variant-accordion>:last-child .v-expansion-panel-title--active{border-bottom-left-radius:initial;border-bottom-right-radius:initial}.v-expansion-panels--variant-accordion>:not(:first-child):not(:last-child){border-radius:0!important}.v-expansion-panels--variant-accordion .v-expansion-panel-title__overlay{transition:.3s border-radius cubic-bezier(.4,0,.2,1)}.v-expansion-panel{flex:1 0 100%;max-width:100%;position:relative;transition:.3s all cubic-bezier(.4,0,.2,1);transition-property:margin-top,border-radius,border,max-width;border-radius:4px}.v-expansion-panel:not(:first-child):after{border-top-style:solid;border-top-width:thin;content:"";left:0;position:absolute;right:0;top:0;transition:.3s opacity cubic-bezier(.4,0,.2,1)}.v-expansion-panel--disabled .v-expansion-panel-title{pointer-events:none}.v-expansion-panel--active:not(:first-child),.v-expansion-panel--active+.v-expansion-panel{margin-top:16px}.v-expansion-panel--active:not(:first-child):after,.v-expansion-panel--active+.v-expansion-panel:after{opacity:0}.v-expansion-panel--active>.v-expansion-panel-title{border-bottom-left-radius:0;border-bottom-right-radius:0}.v-expansion-panel--active>.v-expansion-panel-title:not(.v-expansion-panel-title--static){min-height:64px}.v-expansion-panel__shadow{position:absolute;top:0;left:0;width:100%;height:100%;box-shadow:0 3px 1px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 2px 2px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 5px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12));border-radius:inherit;z-index:-1}.v-expansion-panel-title{align-items:center;text-align:start;border-radius:inherit;display:flex;font-size:.9375rem;line-height:1;min-height:48px;outline:none;padding:16px 24px;position:relative;transition:.3s min-height cubic-bezier(.4,0,.2,1);width:100%;justify-content:space-between}.v-expansion-panel-title:hover>.v-expansion-panel-title__overlay{opacity:calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier))}.v-expansion-panel-title:focus-visible>.v-expansion-panel-title__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-expansion-panel-title:focus>.v-expansion-panel-title__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}}.v-expansion-panel-title--active>.v-expansion-panel-title__overlay,.v-expansion-panel-title[aria-haspopup=menu][aria-expanded=true]>.v-expansion-panel-title__overlay{opacity:calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier))}.v-expansion-panel-title--active:hover>.v-expansion-panel-title__overlay,.v-expansion-panel-title[aria-haspopup=menu][aria-expanded=true]:hover>.v-expansion-panel-title__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}.v-expansion-panel-title--active:focus-visible>.v-expansion-panel-title__overlay,.v-expansion-panel-title[aria-haspopup=menu][aria-expanded=true]:focus-visible>.v-expansion-panel-title__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-expansion-panel-title--active:focus>.v-expansion-panel-title__overlay,.v-expansion-panel-title[aria-haspopup=menu][aria-expanded=true]:focus>.v-expansion-panel-title__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}}.v-expansion-panel-title--active:before{opacity:.12}.v-expansion-panel-title__overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:currentColor;border-radius:inherit;opacity:0}.v-expansion-panel-title__icon{display:inline-flex;margin-bottom:-4px;margin-top:-4px;-webkit-user-select:none;user-select:none;margin-inline-start:auto}.v-expansion-panel-text{display:flex}.v-expansion-panel-text__wrapper{padding:8px 24px 16px;flex:1 1 auto;max-width:100%}.v-expansion-panels--variant-accordion>.v-expansion-panel{margin-top:0}.v-expansion-panels--variant-accordion>.v-expansion-panel:after{opacity:1}.v-expansion-panels--variant-popout>.v-expansion-panel{max-width:calc(100% - 32px)}.v-expansion-panels--variant-popout>.v-expansion-panel--active{max-width:calc(100% + 16px)}.v-expansion-panels--variant-inset>.v-expansion-panel{max-width:100%}.v-expansion-panels--variant-inset>.v-expansion-panel--active{max-width:calc(100% - 32px)}.v-timeline .v-timeline-divider__dot{background:rgb(var(--v-theme-surface-light))}.v-timeline .v-timeline-divider__inner-dot{background:rgb(var(--v-theme-on-surface))}.v-timeline{display:grid;grid-auto-flow:dense;position:relative}.v-timeline--horizontal.v-timeline{grid-column-gap:24px;width:100%}.v-timeline--horizontal.v-timeline .v-timeline-item:nth-child(2n) .v-timeline-item__body{grid-row:3;padding-block-start:24px}.v-timeline--horizontal.v-timeline .v-timeline-item:nth-child(2n) .v-timeline-item__opposite{grid-row:1;padding-block-end:24px;align-self:flex-end}.v-timeline--horizontal.v-timeline .v-timeline-item:nth-child(odd) .v-timeline-item__body{grid-row:1;padding-block-end:24px;align-self:flex-end}.v-timeline--horizontal.v-timeline .v-timeline-item:nth-child(odd) .v-timeline-item__opposite{grid-row:3;padding-block-start:24px}.v-timeline--vertical.v-timeline{row-gap:24px;height:100%}.v-timeline--vertical.v-timeline .v-timeline-item:first-child .v-timeline-divider,.v-timeline--vertical.v-timeline .v-timeline-item:first-child .v-timeline-item__body,.v-timeline--vertical.v-timeline .v-timeline-item:first-child .v-timeline-item__opposite{padding-block-start:24px}.v-timeline--vertical.v-timeline .v-timeline-item:last-child .v-timeline-divider,.v-timeline--vertical.v-timeline .v-timeline-item:last-child .v-timeline-item__body,.v-timeline--vertical.v-timeline .v-timeline-item:last-child .v-timeline-item__opposite{padding-block-end:24px}.v-timeline--vertical.v-timeline .v-timeline-item:nth-child(2n) .v-timeline-item__body{grid-column:1;padding-inline-end:24px}.v-timeline--vertical.v-timeline .v-timeline-item:nth-child(2n) .v-timeline-item__opposite{grid-column:3;padding-inline-start:24px}.v-timeline--vertical.v-timeline .v-timeline-item:nth-child(odd) .v-timeline-item__body{grid-column:3;padding-inline-start:24px}.v-timeline--vertical.v-timeline .v-timeline-item:nth-child(odd) .v-timeline-item__opposite{grid-column:1;justify-self:flex-end;padding-inline-end:24px}.v-timeline-item{display:contents}.v-timeline-divider{position:relative;display:flex;align-items:center}.v-timeline--horizontal .v-timeline-divider{flex-direction:row;grid-row:2;width:100%}.v-timeline--vertical .v-timeline-divider{height:100%;flex-direction:column;grid-column:2}.v-timeline-divider__before{background:rgba(var(--v-border-color),var(--v-border-opacity));position:absolute}.v-timeline--horizontal .v-timeline-divider__before{height:var(--v-timeline-line-thickness);width:calc(var(--v-timeline-line-size-base) + 12px - var(--v-timeline-line-inset));inset-inline-start:-12px;inset-inline-end:initial}.v-timeline--vertical .v-timeline-divider__before{height:calc(var(--v-timeline-line-size-base) + 12px - var(--v-timeline-line-inset));width:var(--v-timeline-line-thickness);top:-12px}.v-timeline-divider__after{background:rgba(var(--v-border-color),var(--v-border-opacity));position:absolute}.v-timeline--horizontal .v-timeline-divider__after{height:var(--v-timeline-line-thickness);width:calc(var(--v-timeline-line-size-base) + 12px - var(--v-timeline-line-inset));inset-inline-end:-12px;inset-inline-start:initial}.v-timeline--vertical .v-timeline-divider__after{height:calc(var(--v-timeline-line-size-base) + 12px - var(--v-timeline-line-inset));width:var(--v-timeline-line-thickness);bottom:-12px}.v-timeline--vertical .v-timeline-item:first-child .v-timeline-divider__before{height:calc(var(--v-timeline-line-size-base) + 12px - var(--v-timeline-line-inset));top:0}.v-timeline--horizontal .v-timeline-item:first-child .v-timeline-divider__before{width:calc(var(--v-timeline-line-size-base) + 12px - var(--v-timeline-line-inset));inset-inline-start:0;inset-inline-end:initial}.v-timeline--vertical .v-timeline-item:first-child .v-timeline-divider__after{height:calc(var(--v-timeline-line-size-base) - var(--v-timeline-line-inset) + var(--v-timeline-line-size-offset))}.v-timeline--horizontal .v-timeline-item:first-child .v-timeline-divider__after{width:calc(var(--v-timeline-line-size-base) - var(--v-timeline-line-inset) + var(--v-timeline-line-size-offset));inset-inline-end:-12px;inset-inline-start:initial}.v-timeline--vertical .v-timeline-item:last-child .v-timeline-divider__before{height:calc(var(--v-timeline-line-size-base) - var(--v-timeline-line-inset) + var(--v-timeline-line-size-offset))}.v-timeline--horizontal .v-timeline-item:last-child .v-timeline-divider__before{width:calc(var(--v-timeline-line-size-base) - var(--v-timeline-line-inset) + var(--v-timeline-line-size-offset))}.v-timeline--vertical .v-timeline-item:last-child .v-timeline-divider__after{height:calc(var(--v-timeline-line-size-base) + 12px - var(--v-timeline-line-inset));bottom:0}.v-timeline--horizontal .v-timeline-item:last-child .v-timeline-divider__after{width:calc(var(--v-timeline-line-size-base) + 12px - var(--v-timeline-line-inset));inset-inline-end:0;inset-inline-start:initial}.v-timeline--vertical .v-timeline-item:only-child .v-timeline-divider__after{height:calc(var(--v-timeline-line-size-base) - var(--v-timeline-line-inset))}.v-timeline-divider__dot{z-index:1;flex-shrink:0;border-radius:50%;display:flex;justify-content:center;align-items:center;box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-timeline-divider__dot--size-x-small{height:22px;width:22px}.v-timeline-divider__dot--size-x-small .v-timeline-divider__inner-dot{height:calc(100% - 6px);width:calc(100% - 6px)}.v-timeline-divider__dot--size-small{height:30px;width:30px}.v-timeline-divider__dot--size-small .v-timeline-divider__inner-dot{height:calc(100% - 8px);width:calc(100% - 8px)}.v-timeline-divider__dot--size-default{height:38px;width:38px}.v-timeline-divider__dot--size-default .v-timeline-divider__inner-dot{height:calc(100% - 8px);width:calc(100% - 8px)}.v-timeline-divider__dot--size-large{height:46px;width:46px}.v-timeline-divider__dot--size-large .v-timeline-divider__inner-dot{height:calc(100% - 8px);width:calc(100% - 8px)}.v-timeline-divider__dot--size-x-large{height:54px;width:54px}.v-timeline-divider__dot--size-x-large .v-timeline-divider__inner-dot{height:calc(100% - 10px);width:calc(100% - 10px)}.v-timeline-divider__inner-dot{align-items:center;border-radius:50%;display:flex;justify-content:center}.v-timeline--horizontal.v-timeline--justify-center{grid-template-rows:minmax(auto,50%) min-content minmax(auto,50%)}.v-timeline--vertical.v-timeline--justify-center{grid-template-columns:minmax(auto,50%) min-content minmax(auto,50%)}.v-timeline--horizontal.v-timeline--justify-auto{grid-template-rows:auto min-content auto}.v-timeline--vertical.v-timeline--justify-auto{grid-template-columns:auto min-content auto}.v-timeline--horizontal.v-timeline--density-comfortable{height:100%}.v-timeline--horizontal.v-timeline--density-comfortable.v-timeline--side-end{grid-template-rows:min-content min-content auto}.v-timeline--horizontal.v-timeline--density-comfortable.v-timeline--side-start{grid-template-rows:auto min-content min-content}.v-timeline--vertical.v-timeline--density-comfortable{width:100%}.v-timeline--vertical.v-timeline--density-comfortable.v-timeline--side-end{grid-template-columns:min-content min-content auto}.v-timeline--vertical.v-timeline--density-comfortable.v-timeline--side-start{grid-template-columns:auto min-content min-content}.v-timeline--horizontal.v-timeline--density-compact.v-timeline--side-end{grid-template-rows:0 min-content auto}.v-timeline--horizontal.v-timeline--density-compact.v-timeline--side-start{grid-template-rows:auto min-content 0}.v-timeline--horizontal.v-timeline--density-compact .v-timeline-item__body{grid-row:1}.v-timeline--vertical.v-timeline--density-compact.v-timeline--side-end{grid-template-columns:0 min-content auto}.v-timeline--vertical.v-timeline--density-compact.v-timeline--side-start{grid-template-columns:auto min-content 0}.v-timeline--vertical.v-timeline--density-compact .v-timeline-item__body{grid-column:3}.v-timeline--horizontal.v-timeline.v-timeline--side-end .v-timeline-item .v-timeline-item__body{grid-row:3;padding-block-end:initial;padding-block-start:24px}.v-timeline--horizontal.v-timeline.v-timeline--side-end .v-timeline-item .v-timeline-item__opposite{grid-row:1;padding-block-end:24px;padding-block-start:initial}.v-timeline--vertical.v-timeline.v-timeline--side-end .v-timeline-item .v-timeline-item__body{grid-column:3;padding-inline-start:24px;padding-inline-end:initial;justify-self:flex-start}.v-timeline--vertical.v-timeline.v-timeline--side-end .v-timeline-item .v-timeline-item__opposite{grid-column:1;justify-self:flex-end;padding-inline-end:24px;padding-inline-start:initial}.v-timeline--horizontal.v-timeline.v-timeline--side-start .v-timeline-item .v-timeline-item__body{grid-row:1;padding-block-end:24px;padding-block-start:initial}.v-timeline--horizontal.v-timeline.v-timeline--side-start .v-timeline-item .v-timeline-item__opposite{grid-row:3;padding-block-end:initial;padding-block-start:24px}.v-timeline--vertical.v-timeline.v-timeline--side-start .v-timeline-item .v-timeline-item__body{grid-column:1;justify-self:flex-end;padding-inline-end:24px}.v-timeline--vertical.v-timeline.v-timeline--side-start .v-timeline-item .v-timeline-item__opposite{grid-column:3;padding-inline-start:24px;justify-self:flex-start}.v-timeline-divider--fill-dot .v-timeline-divider__inner-dot{height:inherit;width:inherit}.v-timeline--align-center{--v-timeline-line-size-base: 50%;--v-timeline-line-size-offset: 0px}.v-timeline--horizontal.v-timeline--align-center{justify-items:center}.v-timeline--horizontal.v-timeline--align-center .v-timeline-item__body,.v-timeline--horizontal.v-timeline--align-center .v-timeline-item__opposite{padding-inline:12px}.v-timeline--horizontal.v-timeline--align-center .v-timeline-divider{justify-content:center}.v-timeline--vertical.v-timeline--align-center{align-items:center}.v-timeline--vertical.v-timeline--align-center .v-timeline-divider{justify-content:center}.v-timeline--align-start{--v-timeline-line-size-base: 100%;--v-timeline-line-size-offset: 12px}.v-timeline--align-start .v-timeline-item:first-child .v-timeline-divider__before{--v-timeline-line-size-offset: 24px}.v-timeline--align-start .v-timeline-item:first-child .v-timeline-divider__after{--v-timeline-line-size-offset: -12px}.v-timeline--align-start .v-timeline-item:last-child .v-timeline-divider__after{--v-timeline-line-size-offset: 0px}.v-timeline--horizontal.v-timeline--align-start{justify-items:flex-start}.v-timeline--horizontal.v-timeline--align-start .v-timeline-divider{justify-content:flex-start}.v-timeline--horizontal.v-timeline--align-start .v-timeline-divider .v-timeline-divider__before{width:calc(var(--v-timeline-line-size-offset) + var(--v-timeline-dot-size) / 2 - var(--v-timeline-line-inset))}.v-timeline--horizontal.v-timeline--align-start .v-timeline-divider .v-timeline-divider__after{width:calc(var(--v-timeline-line-size-base) - var(--v-timeline-dot-size) / 2 + var(--v-timeline-line-size-offset) - var(--v-timeline-line-inset))}.v-timeline--vertical.v-timeline--align-start{align-items:flex-start}.v-timeline--vertical.v-timeline--align-start .v-timeline-divider{justify-content:flex-start}.v-timeline--vertical.v-timeline--align-start .v-timeline-divider .v-timeline-divider__before{height:calc(var(--v-timeline-line-size-offset) + var(--v-timeline-dot-size) / 2 - var(--v-timeline-line-inset))}.v-timeline--vertical.v-timeline--align-start .v-timeline-divider .v-timeline-divider__after{height:calc(var(--v-timeline-line-size-base) - var(--v-timeline-dot-size) / 2 + var(--v-timeline-line-size-offset) - var(--v-timeline-line-inset))}.v-timeline--truncate-line-start .v-timeline-item:first-child .v-timeline-divider__before{display:none}.v-timeline--truncate-line-start .v-timeline-item:first-child .v-timeline-divider__after{--v-timeline-line-size-offset: 12px}.v-timeline--vertical.v-timeline--truncate-line-start .v-timeline-item:first-child .v-timeline-divider,.v-timeline--vertical.v-timeline--truncate-line-start .v-timeline-item:first-child .v-timeline-item__body,.v-timeline--vertical.v-timeline--truncate-line-start .v-timeline-item:first-child .v-timeline-item__opposite{padding-block-start:0}.v-timeline--horizontal.v-timeline--truncate-line-start .v-timeline-item:first-child .v-timeline-divider,.v-timeline--horizontal.v-timeline--truncate-line-start .v-timeline-item:first-child .v-timeline-item__body,.v-timeline--horizontal.v-timeline--truncate-line-start .v-timeline-item:first-child .v-timeline-item__opposite{padding-inline-start:0}.v-timeline--truncate-line-end .v-timeline-item:last-child .v-timeline-divider__after{display:none}.v-timeline--truncate-line-end .v-timeline-item:last-child .v-timeline-divider__before{--v-timeline-line-size-offset: 12px}.v-timeline--vertical.v-timeline--truncate-line-end .v-timeline-item:last-child .v-timeline-divider,.v-timeline--vertical.v-timeline--truncate-line-end .v-timeline-item:last-child .v-timeline-item__body,.v-timeline--vertical.v-timeline--truncate-line-end .v-timeline-item:last-child .v-timeline-item__opposite{padding-block-end:0}.v-timeline--horizontal.v-timeline--truncate-line-end .v-timeline-item:last-child .v-timeline-divider,.v-timeline--horizontal.v-timeline--truncate-line-end .v-timeline-item:last-child .v-timeline-item__body,.v-timeline--horizontal.v-timeline--truncate-line-end .v-timeline-item:last-child .v-timeline-item__opposite{padding-inline-end:0} diff --git a/cookbook/static/vue3/assets/main-Dn7LZ1Sm.js b/cookbook/static/vue3/assets/main-Dn7LZ1Sm.js new file mode 100644 index 000000000..4c1b8f89e --- /dev/null +++ b/cookbook/static/vue3/assets/main-Dn7LZ1Sm.js @@ -0,0 +1,29 @@ +var ov=Object.defineProperty;var av=(e,t,n)=>t in e?ov(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var ai=(e,t,n)=>(av(e,typeof t!="symbol"?t+"":t,n),n);/** +* @vue/shared v3.4.19 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Bl(e,t){const n=new Set(e.split(","));return t?i=>n.has(i.toLowerCase()):i=>n.has(i)}const We={},Xi=[],Ht=()=>{},sv=()=>!1,Ya=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),$l=e=>e.startsWith("onUpdate:"),ot=Object.assign,Ml=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},lv=Object.prototype.hasOwnProperty,xe=(e,t)=>lv.call(e,t),ce=Array.isArray,Qi=e=>Xa(e)==="[object Map]",tp=e=>Xa(e)==="[object Set]",ye=e=>typeof e=="function",et=e=>typeof e=="string",dr=e=>typeof e=="symbol",ze=e=>e!==null&&typeof e=="object",np=e=>(ze(e)||ye(e))&&ye(e.then)&&ye(e.catch),ip=Object.prototype.toString,Xa=e=>ip.call(e),uv=e=>Xa(e).slice(8,-1),rp=e=>Xa(e)==="[object Object]",Vl=e=>et(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Zr=Bl(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Qa=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},cv=/-(\w)/g,Yt=Qa(e=>e.replace(cv,(t,n)=>n?n.toUpperCase():"")),dv=/\B([A-Z])/g,fr=Qa(e=>e.replace(dv,"-$1").toLowerCase()),Fn=Qa(e=>e.charAt(0).toUpperCase()+e.slice(1)),Rs=Qa(e=>e?`on${Fn(e)}`:""),ii=(e,t)=>!Object.is(e,t),_s=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},fv=e=>{const t=parseFloat(e);return isNaN(t)?e:t},pv=e=>{const t=et(e)?Number(e):NaN;return isNaN(t)?e:t};let nc;const op=()=>nc||(nc=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ql(e){if(ce(e)){const t={};for(let n=0;n{if(n){const i=n.split(mv);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function zl(e){let t="";if(et(e))t=e;else if(ce(e))for(let n=0;net(e)?e:e==null?"":ce(e)||ze(e)&&(e.toString===ip||!ye(e.toString))?JSON.stringify(e,sp,2):String(e),sp=(e,t)=>t&&t.__v_isRef?sp(e,t.value):Qi(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[i,r],o)=>(n[ks(i,o)+" =>"]=r,n),{})}:tp(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>ks(n))}:dr(t)?ks(t):ze(t)&&!ce(t)&&!rp(t)?String(t):t,ks=(e,t="")=>{var n;return dr(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.19 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Ot;class lp{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Ot,!t&&Ot&&(this.index=(Ot.scopes||(Ot.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=Ot;try{return Ot=this,t()}finally{Ot=n}}}on(){Ot=this}off(){Ot=this.parent}stop(t){if(this._active){let n,i;for(n=0,i=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),xi()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=ti,n=bi;try{return ti=!0,bi=this,this._runnings++,ic(this),this.fn()}finally{rc(this),this._runnings--,bi=n,ti=t}}stop(){var t;this.active&&(ic(this),rc(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function Cv(e){return e.value}function ic(e){e._trackId++,e._depsLength=0}function rc(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},ya=new WeakMap,Si=Symbol(""),ol=Symbol("");function Tt(e,t,n){if(ti&&bi){let i=ya.get(e);i||ya.set(e,i=new Map);let r=i.get(n);r||i.set(n,r=pp(()=>i.delete(n))),dp(bi,r)}}function In(e,t,n,i,r,o){const a=ya.get(e);if(!a)return;let s=[];if(t==="clear")s=[...a.values()];else if(n==="length"&&ce(e)){const l=Number(i);a.forEach((u,c)=>{(c==="length"||!dr(c)&&c>=l)&&s.push(u)})}else switch(n!==void 0&&s.push(a.get(n)),t){case"add":ce(e)?Vl(n)&&s.push(a.get("length")):(s.push(a.get(Si)),Qi(e)&&s.push(a.get(ol)));break;case"delete":ce(e)||(s.push(a.get(Si)),Qi(e)&&s.push(a.get(ol)));break;case"set":Qi(e)&&s.push(a.get(Si));break}Wl();for(const l of s)l&&fp(l,4);Jl()}function Rv(e,t){var n;return(n=ya.get(e))==null?void 0:n.get(t)}const _v=Bl("__proto__,__v_isRef,__isVue"),hp=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(dr)),oc=kv();function kv(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const i=Te(this);for(let o=0,a=this.length;o{e[t]=function(...n){Ii(),Wl();const i=Te(this)[t].apply(this,n);return Jl(),xi(),i}}),e}function Tv(e){const t=Te(this);return Tt(t,"has",e),t.hasOwnProperty(e)}class mp{constructor(t=!1,n=!1){this._isReadonly=t,this._shallow=n}get(t,n,i){const r=this._isReadonly,o=this._shallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return o;if(n==="__v_raw")return i===(r?o?$v:wp:o?yp:vp).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(i)?t:void 0;const a=ce(t);if(!r){if(a&&xe(oc,n))return Reflect.get(oc,n,i);if(n==="hasOwnProperty")return Tv}const s=Reflect.get(t,n,i);return(dr(n)?hp.has(n):_v(n))||(r||Tt(t,"get",n),o)?s:nt(s)?a&&Vl(n)?s:s.value:ze(s)?r?ko(s):ht(s):s}}class gp extends mp{constructor(t=!1){super(!1,t)}set(t,n,i,r){let o=t[n];if(!this._shallow){const l=ir(o);if(!wa(i)&&!ir(i)&&(o=Te(o),i=Te(i)),!ce(t)&&nt(o)&&!nt(i))return l?!1:(o.value=i,!0)}const a=ce(t)&&Vl(n)?Number(n)e,es=e=>Reflect.getPrototypeOf(e);function Vo(e,t,n=!1,i=!1){e=e.__v_raw;const r=Te(e),o=Te(t);n||(ii(t,o)&&Tt(r,"get",t),Tt(r,"get",o));const{has:a}=es(r),s=i?Gl:n?Xl:ao;if(a.call(r,t))return s(e.get(t));if(a.call(r,o))return s(e.get(o));e!==r&&e.get(t)}function qo(e,t=!1){const n=this.__v_raw,i=Te(n),r=Te(e);return t||(ii(e,r)&&Tt(i,"has",e),Tt(i,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function zo(e,t=!1){return e=e.__v_raw,!t&&Tt(Te(e),"iterate",Si),Reflect.get(e,"size",e)}function ac(e){e=Te(e);const t=Te(this);return es(t).has.call(t,e)||(t.add(e),In(t,"add",e,e)),this}function sc(e,t){t=Te(t);const n=Te(this),{has:i,get:r}=es(n);let o=i.call(n,e);o||(e=Te(e),o=i.call(n,e));const a=r.call(n,e);return n.set(e,t),o?ii(t,a)&&In(n,"set",e,t):In(n,"add",e,t),this}function lc(e){const t=Te(this),{has:n,get:i}=es(t);let r=n.call(t,e);r||(e=Te(e),r=n.call(t,e)),i&&i.call(t,e);const o=t.delete(e);return r&&In(t,"delete",e,void 0),o}function uc(){const e=Te(this),t=e.size!==0,n=e.clear();return t&&In(e,"clear",void 0,void 0),n}function Ho(e,t){return function(i,r){const o=this,a=o.__v_raw,s=Te(a),l=t?Gl:e?Xl:ao;return!e&&Tt(s,"iterate",Si),a.forEach((u,c)=>i.call(r,l(u),l(c),o))}}function Wo(e,t,n){return function(...i){const r=this.__v_raw,o=Te(r),a=Qi(o),s=e==="entries"||e===Symbol.iterator&&a,l=e==="keys"&&a,u=r[e](...i),c=n?Gl:t?Xl:ao;return!t&&Tt(o,"iterate",l?ol:Si),{next(){const{value:d,done:f}=u.next();return f?{value:d,done:f}:{value:s?[c(d[0]),c(d[1])]:c(d),done:f}},[Symbol.iterator](){return this}}}}function Vn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Ov(){const e={get(o){return Vo(this,o)},get size(){return zo(this)},has:qo,add:ac,set:sc,delete:lc,clear:uc,forEach:Ho(!1,!1)},t={get(o){return Vo(this,o,!1,!0)},get size(){return zo(this)},has:qo,add:ac,set:sc,delete:lc,clear:uc,forEach:Ho(!1,!0)},n={get(o){return Vo(this,o,!0)},get size(){return zo(this,!0)},has(o){return qo.call(this,o,!0)},add:Vn("add"),set:Vn("set"),delete:Vn("delete"),clear:Vn("clear"),forEach:Ho(!0,!1)},i={get(o){return Vo(this,o,!0,!0)},get size(){return zo(this,!0)},has(o){return qo.call(this,o,!0)},add:Vn("add"),set:Vn("set"),delete:Vn("delete"),clear:Vn("clear"),forEach:Ho(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=Wo(o,!1,!1),n[o]=Wo(o,!0,!1),t[o]=Wo(o,!1,!0),i[o]=Wo(o,!0,!0)}),[e,n,t,i]}const[Lv,Pv,Uv,Fv]=Ov();function Kl(e,t){const n=t?e?Fv:Uv:e?Pv:Lv;return(i,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?i:Reflect.get(xe(n,r)&&r in i?n:i,r,o)}const Dv={get:Kl(!1,!1)},Nv={get:Kl(!1,!0)},Bv={get:Kl(!0,!1)},vp=new WeakMap,yp=new WeakMap,wp=new WeakMap,$v=new WeakMap;function Mv(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Vv(e){return e.__v_skip||!Object.isExtensible(e)?0:Mv(uv(e))}function ht(e){return ir(e)?e:Zl(e,!1,Iv,Dv,vp)}function bp(e){return Zl(e,!1,Av,Nv,yp)}function ko(e){return Zl(e,!0,xv,Bv,wp)}function Zl(e,t,n,i,r){if(!ze(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=r.get(e);if(o)return o;const a=Vv(e);if(a===0)return e;const s=new Proxy(e,a===2?i:n);return r.set(e,s),s}function ji(e){return ir(e)?ji(e.__v_raw):!!(e&&e.__v_isReactive)}function ir(e){return!!(e&&e.__v_isReadonly)}function wa(e){return!!(e&&e.__v_isShallow)}function Sp(e){return ji(e)||ir(e)}function Te(e){const t=e&&e.__v_raw;return t?Te(t):e}function Yl(e){return Object.isExtensible(e)&&va(e,"__v_skip",!0),e}const ao=e=>ze(e)?ht(e):e,Xl=e=>ze(e)?ko(e):e;class Cp{constructor(t,n,i,r){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Hl(()=>t(this._value),()=>ua(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=i}get value(){const t=Te(this);return(!t._cacheable||t.effect.dirty)&&ii(t._value,t._value=t.effect.run())&&ua(t,4),Rp(t),t.effect._dirtyLevel>=2&&ua(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function qv(e,t,n=!1){let i,r;const o=ye(e);return o?(i=e,r=Ht):(i=e.get,r=e.set),new Cp(i,r,o||!r,n)}function Rp(e){var t;ti&&bi&&(e=Te(e),dp(bi,(t=e.dep)!=null?t:e.dep=pp(()=>e.dep=void 0,e instanceof Cp?e:void 0)))}function ua(e,t=4,n){e=Te(e);const i=e.dep;i&&fp(i,t)}function nt(e){return!!(e&&e.__v_isRef===!0)}function Se(e){return _p(e,!1)}function be(e){return _p(e,!0)}function _p(e,t){return nt(e)?e:new zv(e,t)}class zv{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:Te(t),this._value=n?t:ao(t)}get value(){return Rp(this),this._value}set value(t){const n=this.__v_isShallow||wa(t)||ir(t);t=n?t:Te(t),ii(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:ao(t),ua(this,4))}}function bt(e){return nt(e)?e.value:e}const Hv={get:(e,t,n)=>bt(Reflect.get(e,t,n)),set:(e,t,n,i)=>{const r=e[t];return nt(r)&&!nt(n)?(r.value=n,!0):Reflect.set(e,t,n,i)}};function kp(e){return ji(e)?e:new Proxy(e,Hv)}function Ql(e){const t=ce(e)?new Array(e.length):{};for(const n in e)t[n]=Tp(e,n);return t}class Wv{constructor(t,n,i){this._object=t,this._key=n,this._defaultValue=i,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Rv(Te(this._object),this._key)}}class Jv{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function ve(e,t,n){return nt(e)?e:ye(e)?new Jv(e):ze(e)&&arguments.length>1?Tp(e,t,n):Se(e)}function Tp(e,t,n){const i=e[t];return nt(i)?i:new Wv(e,t,n)}/** +* @vue/runtime-core v3.4.19 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function ni(e,t,n,i){try{return i?e(...i):e()}catch(r){ts(r,t,n)}}function Gt(e,t,n,i){if(ye(e)){const o=ni(e,t,n,i);return o&&np(o)&&o.catch(a=>{ts(a,t,n)}),o}const r=[];for(let o=0;o>>1,r=mt[i],o=lo(r);ogn&&mt.splice(t,1)}function Yv(e){ce(e)?er.push(...e):(!Gn||!Gn.includes(e,e.allowRecurse?pi+1:pi))&&er.push(e),Ip()}function cc(e,t,n=so?gn+1:0){for(;nlo(n)-lo(i));if(er.length=0,Gn){Gn.push(...t);return}for(Gn=t,pi=0;pie.id==null?1/0:e.id,Xv=(e,t)=>{const n=lo(e)-lo(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Ap(e){al=!1,so=!0,mt.sort(Xv);try{for(gn=0;gnet(h)?h.trim():h)),d&&(r=n.map(fv))}let s,l=i[s=Rs(t)]||i[s=Rs(Yt(t))];!l&&o&&(l=i[s=Rs(fr(t))]),l&&Gt(l,e,6,r);const u=i[s+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[s])return;e.emitted[s]=!0,Gt(u,e,6,r)}}function Op(e,t,n=!1){const i=t.emitsCache,r=i.get(e);if(r!==void 0)return r;const o=e.emits;let a={},s=!1;if(!ye(e)){const l=u=>{const c=Op(u,t,!0);c&&(s=!0,ot(a,c))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!o&&!s?(ze(e)&&i.set(e,null),null):(ce(o)?o.forEach(l=>a[l]=null):ot(a,o),ze(e)&&i.set(e,a),a)}function ns(e,t){return!e||!Ya(t)?!1:(t=t.slice(2).replace(/Once$/,""),xe(e,t[0].toLowerCase()+t.slice(1))||xe(e,fr(t))||xe(e,t))}let st=null,Lp=null;function ba(e){const t=st;return st=e,Lp=e&&e.type.__scopeId||null,t}function q(e,t=st,n){if(!t||e._n)return e;const i=(...r)=>{i._d&&_c(-1);const o=ba(t);let a;try{a=e(...r)}finally{ba(o),i._d&&_c(1)}return a};return i._n=!0,i._c=!0,i._d=!0,i}function Ts(e){const{type:t,vnode:n,proxy:i,withProxy:r,props:o,propsOptions:[a],slots:s,attrs:l,emit:u,render:c,renderCache:d,data:f,setupState:h,ctx:m,inheritAttrs:g}=e;let S,R;const k=ba(e);try{if(n.shapeFlag&4){const P=r||i,L=P;S=mn(c.call(L,P,d,o,h,f,m)),R=l}else{const P=t;S=mn(P.length>1?P(o,{attrs:l,slots:s,emit:u}):P(o,null)),R=t.props?l:jv(l)}}catch(P){eo.length=0,ts(P,e,1),S=p(Kt)}let I=S;if(R&&g!==!1){const P=Object.keys(R),{shapeFlag:L}=I;P.length&&L&7&&(a&&P.some($l)&&(R=ey(R,a)),I=On(I,R))}return n.dirs&&(I=On(I),I.dirs=I.dirs?I.dirs.concat(n.dirs):n.dirs),n.transition&&(I.transition=n.transition),S=I,ba(k),S}const jv=e=>{let t;for(const n in e)(n==="class"||n==="style"||Ya(n))&&((t||(t={}))[n]=e[n]);return t},ey=(e,t)=>{const n={};for(const i in e)(!$l(i)||!(i.slice(9)in t))&&(n[i]=e[i]);return n};function ty(e,t,n){const{props:i,children:r,component:o}=e,{props:a,children:s,patchFlag:l}=t,u=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return i?dc(i,a,u):!!a;if(l&8){const c=t.dynamicProps;for(let d=0;de.__isSuspense;function ay(e,t){t&&t.pendingBranch?ce(e)?t.effects.push(...e):t.effects.push(e):Yv(e)}const sy=Symbol.for("v-scx"),ly=()=>Je(sy);function Dn(e,t){return iu(e,null,t)}const Jo={};function we(e,t,n){return iu(e,t,n)}function iu(e,t,{immediate:n,deep:i,flush:r,once:o,onTrack:a,onTrigger:s}=We){if(t&&o){const T=t;t=(...E)=>{T(...E),L()}}const l=ft,u=T=>i===!0?T:gi(T,i===!1?1:void 0);let c,d=!1,f=!1;if(nt(e)?(c=()=>e.value,d=wa(e)):ji(e)?(c=()=>u(e),d=!0):ce(e)?(f=!0,d=e.some(T=>ji(T)||wa(T)),c=()=>e.map(T=>{if(nt(T))return T.value;if(ji(T))return u(T);if(ye(T))return ni(T,l,2)})):ye(e)?t?c=()=>ni(e,l,2):c=()=>(h&&h(),Gt(e,l,3,[m])):c=Ht,t&&i){const T=c;c=()=>gi(T())}let h,m=T=>{h=I.onStop=()=>{ni(T,l,4),h=I.onStop=void 0}},g;if(as)if(m=Ht,t?n&&Gt(t,l,3,[c(),f?[]:void 0,m]):c(),r==="sync"){const T=ly();g=T.__watcherHandles||(T.__watcherHandles=[])}else return Ht;let S=f?new Array(e.length).fill(Jo):Jo;const R=()=>{if(!(!I.active||!I.dirty))if(t){const T=I.run();(i||d||(f?T.some((E,x)=>ii(E,S[x])):ii(T,S)))&&(h&&h(),Gt(t,l,3,[T,S===Jo?void 0:f&&S[0]===Jo?[]:S,m]),S=T)}else I.run()};R.allowRecurse=!!t;let k;r==="sync"?k=R:r==="post"?k=()=>Rt(R,l&&l.suspense):(R.pre=!0,l&&(R.id=l.uid),k=()=>eu(R));const I=new Hl(c,Ht,k),P=Sv(),L=()=>{I.stop(),P&&Ml(P.effects,I)};return t?n?R():S=I.run():r==="post"?Rt(I.run.bind(I),l&&l.suspense):I.run(),g&&g.push(L),L}function uy(e,t,n){const i=this.proxy,r=et(e)?e.includes(".")?Up(i,e):()=>i[e]:e.bind(i,i);let o;ye(t)?o=t:(o=t.handler,n=t);const a=Eo(this),s=iu(r,o.bind(i),n);return a(),s}function Up(e,t){const n=t.split(".");return()=>{let i=e;for(let r=0;r0){if(n>=t)return e;n++}if(i=i||new Set,i.has(e))return e;if(i.add(e),nt(e))gi(e.value,t,n,i);else if(ce(e))for(let r=0;r{gi(r,t,n,i)});else if(rp(e))for(const r in e)gi(e[r],t,n,i);return e}function Xt(e,t){if(st===null)return e;const n=ss(st)||st.proxy,i=e.dirs||(e.dirs=[]);for(let r=0;r{e.isMounted=!0}),dn(()=>{e.isUnmounting=!0}),e}const Vt=[Function,Array],Dp={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Vt,onEnter:Vt,onAfterEnter:Vt,onEnterCancelled:Vt,onBeforeLeave:Vt,onLeave:Vt,onAfterLeave:Vt,onLeaveCancelled:Vt,onBeforeAppear:Vt,onAppear:Vt,onAfterAppear:Vt,onAppearCancelled:Vt},cy={name:"BaseTransition",props:Dp,setup(e,{slots:t}){const n=cu(),i=Fp();let r;return()=>{const o=t.default&&ru(t.default(),!0);if(!o||!o.length)return;let a=o[0];if(o.length>1){for(const g of o)if(g.type!==Kt){a=g;break}}const s=Te(e),{mode:l}=s;if(i.isLeaving)return Es(a);const u=pc(a);if(!u)return Es(a);const c=uo(u,s,i,n);co(u,c);const d=n.subTree,f=d&&pc(d);let h=!1;const{getTransitionKey:m}=u.type;if(m){const g=m();r===void 0?r=g:g!==r&&(r=g,h=!0)}if(f&&f.type!==Kt&&(!hi(u,f)||h)){const g=uo(f,s,i,n);if(co(f,g),l==="out-in")return i.isLeaving=!0,g.afterLeave=()=>{i.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},Es(a);l==="in-out"&&u.type!==Kt&&(g.delayLeave=(S,R,k)=>{const I=Np(i,f);I[String(f.key)]=f,S[Kn]=()=>{R(),S[Kn]=void 0,delete c.delayedLeave},c.delayedLeave=k})}return a}}},dy=cy;function Np(e,t){const{leavingVNodes:n}=e;let i=n.get(t.type);return i||(i=Object.create(null),n.set(t.type,i)),i}function uo(e,t,n,i){const{appear:r,mode:o,persisted:a=!1,onBeforeEnter:s,onEnter:l,onAfterEnter:u,onEnterCancelled:c,onBeforeLeave:d,onLeave:f,onAfterLeave:h,onLeaveCancelled:m,onBeforeAppear:g,onAppear:S,onAfterAppear:R,onAppearCancelled:k}=t,I=String(e.key),P=Np(n,e),L=(x,N)=>{x&&Gt(x,i,9,N)},T=(x,N)=>{const $=N[1];L(x,N),ce(x)?x.every(W=>W.length<=1)&&$():x.length<=1&&$()},E={mode:o,persisted:a,beforeEnter(x){let N=s;if(!n.isMounted)if(r)N=g||s;else return;x[Kn]&&x[Kn](!0);const $=P[I];$&&hi(e,$)&&$.el[Kn]&&$.el[Kn](),L(N,[x])},enter(x){let N=l,$=u,W=c;if(!n.isMounted)if(r)N=S||l,$=R||u,W=k||c;else return;let O=!1;const F=x[Go]=V=>{O||(O=!0,V?L(W,[x]):L($,[x]),E.delayedLeave&&E.delayedLeave(),x[Go]=void 0)};N?T(N,[x,F]):F()},leave(x,N){const $=String(e.key);if(x[Go]&&x[Go](!0),n.isUnmounting)return N();L(d,[x]);let W=!1;const O=x[Kn]=F=>{W||(W=!0,N(),F?L(m,[x]):L(h,[x]),x[Kn]=void 0,P[$]===e&&delete P[$])};P[$]=e,f?T(f,[x,O]):O()},clone(x){return uo(x,t,n,i)}};return E}function Es(e){if(is(e))return e=On(e),e.children=null,e}function pc(e){return is(e)?e.children?e.children[0]:void 0:e}function co(e,t){e.shapeFlag&6&&e.component?co(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ru(e,t=!1,n){let i=[],r=0;for(let o=0;o1)for(let o=0;o!!e.type.__asyncLoader,is=e=>e.type.__isKeepAlive;function Bp(e,t){Mp(e,"a",t)}function $p(e,t){Mp(e,"da",t)}function Mp(e,t,n=ft){const i=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(rs(t,i,n),n){let r=n.parent;for(;r&&r.parent;)is(r.parent.vnode)&&fy(i,t,n,r),r=r.parent}}function fy(e,t,n,i){const r=rs(t,e,i,!0);qp(()=>{Ml(i[t],r)},n)}function rs(e,t,n=ft,i=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...a)=>{if(n.isUnmounted)return;Ii();const s=Eo(n),l=Gt(t,n,e,a);return s(),xi(),l});return i?r.unshift(o):r.push(o),o}}const Nn=e=>(t,n=ft)=>(!as||e==="sp")&&rs(e,(...i)=>t(...i),n),ou=Nn("bm"),Bn=Nn("m"),py=Nn("bu"),Vp=Nn("u"),dn=Nn("bum"),qp=Nn("um"),hy=Nn("sp"),my=Nn("rtg"),gy=Nn("rtc");function vy(e,t=ft){rs("ec",e,t)}function Oi(e,t,n,i){let r;const o=n&&n[i];if(ce(e)||et(e)){r=new Array(e.length);for(let a=0,s=e.length;at(a,s,void 0,o&&o[s]));else{const a=Object.keys(e);r=new Array(a.length);for(let s=0,l=a.length;sCa(t)?!(t.type===Kt||t.type===_e&&!Hp(t.children)):!0)?e:null}const sl=e=>e?nh(e)?ss(e)||e.proxy:sl(e.parent):null,Xr=ot(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>sl(e.parent),$root:e=>sl(e.root),$emit:e=>e.emit,$options:e=>au(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,eu(e.update)}),$nextTick:e=>e.n||(e.n=vt.bind(e.proxy)),$watch:e=>uy.bind(e)}),Is=(e,t)=>e!==We&&!e.__isScriptSetup&&xe(e,t),yy={get({_:e},t){const{ctx:n,setupState:i,data:r,props:o,accessCache:a,type:s,appContext:l}=e;let u;if(t[0]!=="$"){const h=a[t];if(h!==void 0)switch(h){case 1:return i[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(Is(i,t))return a[t]=1,i[t];if(r!==We&&xe(r,t))return a[t]=2,r[t];if((u=e.propsOptions[0])&&xe(u,t))return a[t]=3,o[t];if(n!==We&&xe(n,t))return a[t]=4,n[t];ll&&(a[t]=0)}}const c=Xr[t];let d,f;if(c)return t==="$attrs"&&Tt(e,"get",t),c(e);if((d=s.__cssModules)&&(d=d[t]))return d;if(n!==We&&xe(n,t))return a[t]=4,n[t];if(f=l.config.globalProperties,xe(f,t))return f[t]},set({_:e},t,n){const{data:i,setupState:r,ctx:o}=e;return Is(r,t)?(r[t]=n,!0):i!==We&&xe(i,t)?(i[t]=n,!0):xe(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:i,appContext:r,propsOptions:o}},a){let s;return!!n[a]||e!==We&&xe(e,a)||Is(t,a)||(s=o[0])&&xe(s,a)||xe(i,a)||xe(Xr,a)||xe(r.config.globalProperties,a)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:xe(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function hc(e){return ce(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let ll=!0;function wy(e){const t=au(e),n=e.proxy,i=e.ctx;ll=!1,t.beforeCreate&&mc(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:a,watch:s,provide:l,inject:u,created:c,beforeMount:d,mounted:f,beforeUpdate:h,updated:m,activated:g,deactivated:S,beforeDestroy:R,beforeUnmount:k,destroyed:I,unmounted:P,render:L,renderTracked:T,renderTriggered:E,errorCaptured:x,serverPrefetch:N,expose:$,inheritAttrs:W,components:O,directives:F,filters:V}=t;if(u&&by(u,i,null),a)for(const ne in a){const ee=a[ne];ye(ee)&&(i[ne]=ee.bind(n))}if(r){const ne=r.call(n,n);ze(ne)&&(e.data=ht(ne))}if(ll=!0,o)for(const ne in o){const ee=o[ne],Ae=ye(ee)?ee.bind(n,n):ye(ee.get)?ee.get.bind(n,n):Ht,Ne=!ye(ee)&&ye(ee.set)?ee.set.bind(n):Ht,X=C({get:Ae,set:Ne});Object.defineProperty(i,ne,{enumerable:!0,configurable:!0,get:()=>X.value,set:ie=>X.value=ie})}if(s)for(const ne in s)Wp(s[ne],i,n,ne);if(l){const ne=ye(l)?l.call(n):l;Reflect.ownKeys(ne).forEach(ee=>{Ft(ee,ne[ee])})}c&&mc(c,e,"c");function se(ne,ee){ce(ee)?ee.forEach(Ae=>ne(Ae.bind(n))):ee&&ne(ee.bind(n))}if(se(ou,d),se(Bn,f),se(py,h),se(Vp,m),se(Bp,g),se($p,S),se(vy,x),se(gy,T),se(my,E),se(dn,k),se(qp,P),se(hy,N),ce($))if($.length){const ne=e.exposed||(e.exposed={});$.forEach(ee=>{Object.defineProperty(ne,ee,{get:()=>n[ee],set:Ae=>n[ee]=Ae})})}else e.exposed||(e.exposed={});L&&e.render===Ht&&(e.render=L),W!=null&&(e.inheritAttrs=W),O&&(e.components=O),F&&(e.directives=F)}function by(e,t,n=Ht){ce(e)&&(e=ul(e));for(const i in e){const r=e[i];let o;ze(r)?"default"in r?o=Je(r.from||i,r.default,!0):o=Je(r.from||i):o=Je(r),nt(o)?Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>o.value,set:a=>o.value=a}):t[i]=o}}function mc(e,t,n){Gt(ce(e)?e.map(i=>i.bind(t.proxy)):e.bind(t.proxy),t,n)}function Wp(e,t,n,i){const r=i.includes(".")?Up(n,i):()=>n[i];if(et(e)){const o=t[e];ye(o)&&we(r,o)}else if(ye(e))we(r,e.bind(n));else if(ze(e))if(ce(e))e.forEach(o=>Wp(o,t,n,i));else{const o=ye(e.handler)?e.handler.bind(n):t[e.handler];ye(o)&&we(r,o,e)}}function au(e){const t=e.type,{mixins:n,extends:i}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:a}}=e.appContext,s=o.get(t);let l;return s?l=s:!r.length&&!n&&!i?l=t:(l={},r.length&&r.forEach(u=>Sa(l,u,a,!0)),Sa(l,t,a)),ze(t)&&o.set(t,l),l}function Sa(e,t,n,i=!1){const{mixins:r,extends:o}=t;o&&Sa(e,o,n,!0),r&&r.forEach(a=>Sa(e,a,n,!0));for(const a in t)if(!(i&&a==="expose")){const s=Sy[a]||n&&n[a];e[a]=s?s(e[a],t[a]):t[a]}return e}const Sy={data:gc,props:vc,emits:vc,methods:qr,computed:qr,beforeCreate:wt,created:wt,beforeMount:wt,mounted:wt,beforeUpdate:wt,updated:wt,beforeDestroy:wt,beforeUnmount:wt,destroyed:wt,unmounted:wt,activated:wt,deactivated:wt,errorCaptured:wt,serverPrefetch:wt,components:qr,directives:qr,watch:Ry,provide:gc,inject:Cy};function gc(e,t){return t?e?function(){return ot(ye(e)?e.call(this,this):e,ye(t)?t.call(this,this):t)}:t:e}function Cy(e,t){return qr(ul(e),ul(t))}function ul(e){if(ce(e)){const t={};for(let n=0;n1)return n&&ye(t)?t.call(i&&i.proxy):t}}function Ty(e,t,n,i=!1){const r={},o={};va(o,os,1),e.propsDefaults=Object.create(null),Gp(e,t,r,o);for(const a in e.propsOptions[0])a in r||(r[a]=void 0);n?e.props=i?r:bp(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function Ey(e,t,n,i){const{props:r,attrs:o,vnode:{patchFlag:a}}=e,s=Te(r),[l]=e.propsOptions;let u=!1;if((i||a>0)&&!(a&16)){if(a&8){const c=e.vnode.dynamicProps;for(let d=0;d{l=!0;const[f,h]=Kp(d,t,!0);ot(a,f),h&&s.push(...h)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!o&&!l)return ze(e)&&i.set(e,Xi),Xi;if(ce(o))for(let c=0;c-1,h[1]=g<0||m-1||xe(h,"default"))&&s.push(d)}}}const u=[a,s];return ze(e)&&i.set(e,u),u}function yc(e){return e[0]!=="$"&&!Zr(e)}function wc(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function bc(e,t){return wc(e)===wc(t)}function Sc(e,t){return ce(t)?t.findIndex(n=>bc(n,e)):ye(t)&&bc(t,e)?0:-1}const Zp=e=>e[0]==="_"||e==="$stable",su=e=>ce(e)?e.map(mn):[mn(e)],Iy=(e,t,n)=>{if(t._n)return t;const i=q((...r)=>su(t(...r)),n);return i._c=!1,i},Yp=(e,t,n)=>{const i=e._ctx;for(const r in e){if(Zp(r))continue;const o=e[r];if(ye(o))t[r]=Iy(r,o,i);else if(o!=null){const a=su(o);t[r]=()=>a}}},Xp=(e,t)=>{const n=su(t);e.slots.default=()=>n},xy=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=Te(t),va(t,"_",n)):Yp(t,e.slots={})}else e.slots={},t&&Xp(e,t);va(e.slots,os,1)},Ay=(e,t,n)=>{const{vnode:i,slots:r}=e;let o=!0,a=We;if(i.shapeFlag&32){const s=t._;s?n&&s===1?o=!1:(ot(r,t),!n&&s===1&&delete r._):(o=!t.$stable,Yp(t,r)),a=t}else t&&(Xp(e,t),a={default:1});if(o)for(const s in r)!Zp(s)&&a[s]==null&&delete r[s]};function dl(e,t,n,i,r=!1){if(ce(e)){e.forEach((f,h)=>dl(f,t&&(ce(t)?t[h]:t),n,i,r));return}if(Yr(i)&&!r)return;const o=i.shapeFlag&4?ss(i.component)||i.component.proxy:i.el,a=r?null:o,{i:s,r:l}=e,u=t&&t.r,c=s.refs===We?s.refs={}:s.refs,d=s.setupState;if(u!=null&&u!==l&&(et(u)?(c[u]=null,xe(d,u)&&(d[u]=null)):nt(u)&&(u.value=null)),ye(l))ni(l,s,12,[a,c]);else{const f=et(l),h=nt(l);if(f||h){const m=()=>{if(e.f){const g=f?xe(d,l)?d[l]:c[l]:l.value;r?ce(g)&&Ml(g,o):ce(g)?g.includes(o)||g.push(o):f?(c[l]=[o],xe(d,l)&&(d[l]=c[l])):(l.value=[o],e.k&&(c[e.k]=l.value))}else f?(c[l]=a,xe(d,l)&&(d[l]=a)):h&&(l.value=a,e.k&&(c[e.k]=a))};a?(m.id=-1,Rt(m,n)):m()}}}const Rt=ay;function Oy(e){return Ly(e)}function Ly(e,t){const n=op();n.__VUE__=!0;const{insert:i,remove:r,patchProp:o,createElement:a,createText:s,createComment:l,setText:u,setElementText:c,parentNode:d,nextSibling:f,setScopeId:h=Ht,insertStaticContent:m}=e,g=(v,b,A,B=null,D=null,H=null,Y=void 0,z=null,G=!!b.dynamicChildren)=>{if(v===b)return;v&&!hi(v,b)&&(B=U(v),ie(v,D,H,!0),v=null),b.patchFlag===-2&&(G=!1,b.dynamicChildren=null);const{type:M,ref:j,shapeFlag:ue}=b;switch(M){case To:S(v,b,A,B);break;case Kt:R(v,b,A,B);break;case As:v==null&&k(b,A,B,Y);break;case _e:O(v,b,A,B,D,H,Y,z,G);break;default:ue&1?L(v,b,A,B,D,H,Y,z,G):ue&6?F(v,b,A,B,D,H,Y,z,G):(ue&64||ue&128)&&M.process(v,b,A,B,D,H,Y,z,G,te)}j!=null&&D&&dl(j,v&&v.ref,H,b||v,!b)},S=(v,b,A,B)=>{if(v==null)i(b.el=s(b.children),A,B);else{const D=b.el=v.el;b.children!==v.children&&u(D,b.children)}},R=(v,b,A,B)=>{v==null?i(b.el=l(b.children||""),A,B):b.el=v.el},k=(v,b,A,B)=>{[v.el,v.anchor]=m(v.children,b,A,B,v.el,v.anchor)},I=({el:v,anchor:b},A,B)=>{let D;for(;v&&v!==b;)D=f(v),i(v,A,B),v=D;i(b,A,B)},P=({el:v,anchor:b})=>{let A;for(;v&&v!==b;)A=f(v),r(v),v=A;r(b)},L=(v,b,A,B,D,H,Y,z,G)=>{b.type==="svg"?Y="svg":b.type==="math"&&(Y="mathml"),v==null?T(b,A,B,D,H,Y,z,G):N(v,b,D,H,Y,z,G)},T=(v,b,A,B,D,H,Y,z)=>{let G,M;const{props:j,shapeFlag:ue,transition:re,dirs:me}=v;if(G=v.el=a(v.type,H,j&&j.is,j),ue&8?c(G,v.children):ue&16&&x(v.children,G,null,B,D,xs(v,H),Y,z),me&&si(v,null,B,"created"),E(G,v,v.scopeId,Y,B),j){for(const Be in j)Be!=="value"&&!Zr(Be)&&o(G,Be,null,j[Be],H,v.children,B,D,Oe);"value"in j&&o(G,"value",null,j.value,H),(M=j.onVnodeBeforeMount)&&hn(M,B,v)}me&&si(v,null,B,"beforeMount");const ke=Py(D,re);ke&&re.beforeEnter(G),i(G,b,A),((M=j&&j.onVnodeMounted)||ke||me)&&Rt(()=>{M&&hn(M,B,v),ke&&re.enter(G),me&&si(v,null,B,"mounted")},D)},E=(v,b,A,B,D)=>{if(A&&h(v,A),B)for(let H=0;H{for(let M=G;M{const z=b.el=v.el;let{patchFlag:G,dynamicChildren:M,dirs:j}=b;G|=v.patchFlag&16;const ue=v.props||We,re=b.props||We;let me;if(A&&li(A,!1),(me=re.onVnodeBeforeUpdate)&&hn(me,A,b,v),j&&si(b,v,A,"beforeUpdate"),A&&li(A,!0),M?$(v.dynamicChildren,M,z,A,B,xs(b,D),H):Y||ee(v,b,z,null,A,B,xs(b,D),H,!1),G>0){if(G&16)W(z,b,ue,re,A,B,D);else if(G&2&&ue.class!==re.class&&o(z,"class",null,re.class,D),G&4&&o(z,"style",ue.style,re.style,D),G&8){const ke=b.dynamicProps;for(let Be=0;Be{me&&hn(me,A,b,v),j&&si(b,v,A,"updated")},B)},$=(v,b,A,B,D,H,Y)=>{for(let z=0;z{if(A!==B){if(A!==We)for(const z in A)!Zr(z)&&!(z in B)&&o(v,z,A[z],null,Y,b.children,D,H,Oe);for(const z in B){if(Zr(z))continue;const G=B[z],M=A[z];G!==M&&z!=="value"&&o(v,z,M,G,Y,b.children,D,H,Oe)}"value"in B&&o(v,"value",A.value,B.value,Y)}},O=(v,b,A,B,D,H,Y,z,G)=>{const M=b.el=v?v.el:s(""),j=b.anchor=v?v.anchor:s("");let{patchFlag:ue,dynamicChildren:re,slotScopeIds:me}=b;me&&(z=z?z.concat(me):me),v==null?(i(M,A,B),i(j,A,B),x(b.children||[],A,j,D,H,Y,z,G)):ue>0&&ue&64&&re&&v.dynamicChildren?($(v.dynamicChildren,re,A,D,H,Y,z),(b.key!=null||D&&b===D.subTree)&&lu(v,b,!0)):ee(v,b,A,j,D,H,Y,z,G)},F=(v,b,A,B,D,H,Y,z,G)=>{b.slotScopeIds=z,v==null?b.shapeFlag&512?D.ctx.activate(b,A,B,Y,G):V(b,A,B,D,H,Y,G):ae(v,b,G)},V=(v,b,A,B,D,H,Y)=>{const z=v.component=Hy(v,B,D);if(is(v)&&(z.ctx.renderer=te),Wy(z),z.asyncDep){if(D&&D.registerDep(z,se),!v.el){const G=z.subTree=p(Kt);R(null,G,b,A)}}else se(z,v,b,A,D,H,Y)},ae=(v,b,A)=>{const B=b.component=v.component;if(ty(v,b,A))if(B.asyncDep&&!B.asyncResolved){ne(B,b,A);return}else B.next=b,Zv(B.update),B.effect.dirty=!0,B.update();else b.el=v.el,B.vnode=b},se=(v,b,A,B,D,H,Y)=>{const z=()=>{if(v.isMounted){let{next:j,bu:ue,u:re,parent:me,vnode:ke}=v;{const Di=Qp(v);if(Di){j&&(j.el=ke.el,ne(v,j,Y)),Di.asyncDep.then(()=>{v.isUnmounted||z()});return}}let Be=j,Ke;li(v,!1),j?(j.el=ke.el,ne(v,j,Y)):j=ke,ue&&_s(ue),(Ke=j.props&&j.props.onVnodeBeforeUpdate)&&hn(Ke,me,j,ke),li(v,!0);const ut=Ts(v),jt=v.subTree;v.subTree=ut,g(jt,ut,d(jt.el),U(jt),v,D,H),j.el=ut.el,Be===null&&ny(v,ut.el),re&&Rt(re,D),(Ke=j.props&&j.props.onVnodeUpdated)&&Rt(()=>hn(Ke,me,j,ke),D)}else{let j;const{el:ue,props:re}=b,{bm:me,m:ke,parent:Be}=v,Ke=Yr(b);if(li(v,!1),me&&_s(me),!Ke&&(j=re&&re.onVnodeBeforeMount)&&hn(j,Be,b),li(v,!0),ue&&Ge){const ut=()=>{v.subTree=Ts(v),Ge(ue,v.subTree,v,D,null)};Ke?b.type.__asyncLoader().then(()=>!v.isUnmounted&&ut()):ut()}else{const ut=v.subTree=Ts(v);g(null,ut,A,B,v,D,H),b.el=ut.el}if(ke&&Rt(ke,D),!Ke&&(j=re&&re.onVnodeMounted)){const ut=b;Rt(()=>hn(j,Be,ut),D)}(b.shapeFlag&256||Be&&Yr(Be.vnode)&&Be.vnode.shapeFlag&256)&&v.a&&Rt(v.a,D),v.isMounted=!0,b=A=B=null}},G=v.effect=new Hl(z,Ht,()=>eu(M),v.scope),M=v.update=()=>{G.dirty&&G.run()};M.id=v.uid,li(v,!0),M()},ne=(v,b,A)=>{b.component=v;const B=v.vnode.props;v.vnode=b,v.next=null,Ey(v,b.props,B,A),Ay(v,b.children,A),Ii(),cc(v),xi()},ee=(v,b,A,B,D,H,Y,z,G=!1)=>{const M=v&&v.children,j=v?v.shapeFlag:0,ue=b.children,{patchFlag:re,shapeFlag:me}=b;if(re>0){if(re&128){Ne(M,ue,A,B,D,H,Y,z,G);return}else if(re&256){Ae(M,ue,A,B,D,H,Y,z,G);return}}me&8?(j&16&&Oe(M,D,H),ue!==M&&c(A,ue)):j&16?me&16?Ne(M,ue,A,B,D,H,Y,z,G):Oe(M,D,H,!0):(j&8&&c(A,""),me&16&&x(ue,A,B,D,H,Y,z,G))},Ae=(v,b,A,B,D,H,Y,z,G)=>{v=v||Xi,b=b||Xi;const M=v.length,j=b.length,ue=Math.min(M,j);let re;for(re=0;rej?Oe(v,D,H,!0,!1,ue):x(b,A,B,D,H,Y,z,G,ue)},Ne=(v,b,A,B,D,H,Y,z,G)=>{let M=0;const j=b.length;let ue=v.length-1,re=j-1;for(;M<=ue&&M<=re;){const me=v[M],ke=b[M]=G?Zn(b[M]):mn(b[M]);if(hi(me,ke))g(me,ke,A,null,D,H,Y,z,G);else break;M++}for(;M<=ue&&M<=re;){const me=v[ue],ke=b[re]=G?Zn(b[re]):mn(b[re]);if(hi(me,ke))g(me,ke,A,null,D,H,Y,z,G);else break;ue--,re--}if(M>ue){if(M<=re){const me=re+1,ke=mere)for(;M<=ue;)ie(v[M],D,H,!0),M++;else{const me=M,ke=M,Be=new Map;for(M=ke;M<=re;M++){const xt=b[M]=G?Zn(b[M]):mn(b[M]);xt.key!=null&&Be.set(xt.key,M)}let Ke,ut=0;const jt=re-ke+1;let Di=!1,ju=0;const Rr=new Array(jt);for(M=0;M=jt){ie(xt,D,H,!0);continue}let pn;if(xt.key!=null)pn=Be.get(xt.key);else for(Ke=ke;Ke<=re;Ke++)if(Rr[Ke-ke]===0&&hi(xt,b[Ke])){pn=Ke;break}pn===void 0?ie(xt,D,H,!0):(Rr[pn-ke]=M+1,pn>=ju?ju=pn:Di=!0,g(xt,b[pn],A,null,D,H,Y,z,G),ut++)}const ec=Di?Uy(Rr):Xi;for(Ke=ec.length-1,M=jt-1;M>=0;M--){const xt=ke+M,pn=b[xt],tc=xt+1{const{el:H,type:Y,transition:z,children:G,shapeFlag:M}=v;if(M&6){X(v.component.subTree,b,A,B);return}if(M&128){v.suspense.move(b,A,B);return}if(M&64){Y.move(v,b,A,te);return}if(Y===_e){i(H,b,A);for(let ue=0;uez.enter(H),D);else{const{leave:ue,delayLeave:re,afterLeave:me}=z,ke=()=>i(H,b,A),Be=()=>{ue(H,()=>{ke(),me&&me()})};re?re(H,ke,Be):Be()}else i(H,b,A)},ie=(v,b,A,B=!1,D=!1)=>{const{type:H,props:Y,ref:z,children:G,dynamicChildren:M,shapeFlag:j,patchFlag:ue,dirs:re}=v;if(z!=null&&dl(z,null,A,v,!0),j&256){b.ctx.deactivate(v);return}const me=j&1&&re,ke=!Yr(v);let Be;if(ke&&(Be=Y&&Y.onVnodeBeforeUnmount)&&hn(Be,b,v),j&6)yt(v.component,A,B);else{if(j&128){v.suspense.unmount(A,B);return}me&&si(v,null,b,"beforeUnmount"),j&64?v.type.remove(v,b,A,D,te,B):M&&(H!==_e||ue>0&&ue&64)?Oe(M,b,A,!1,!0):(H===_e&&ue&384||!D&&j&16)&&Oe(G,b,A),B&&he(v)}(ke&&(Be=Y&&Y.onVnodeUnmounted)||me)&&Rt(()=>{Be&&hn(Be,b,v),me&&si(v,null,b,"unmounted")},A)},he=v=>{const{type:b,el:A,anchor:B,transition:D}=v;if(b===_e){Xe(A,B);return}if(b===As){P(v);return}const H=()=>{r(A),D&&!D.persisted&&D.afterLeave&&D.afterLeave()};if(v.shapeFlag&1&&D&&!D.persisted){const{leave:Y,delayLeave:z}=D,G=()=>Y(A,H);z?z(v.el,H,G):G()}else H()},Xe=(v,b)=>{let A;for(;v!==b;)A=f(v),r(v),v=A;r(b)},yt=(v,b,A)=>{const{bum:B,scope:D,update:H,subTree:Y,um:z}=v;B&&_s(B),D.stop(),H&&(H.active=!1,ie(Y,v,b,A)),z&&Rt(z,b),Rt(()=>{v.isUnmounted=!0},b),b&&b.pendingBranch&&!b.isUnmounted&&v.asyncDep&&!v.asyncResolved&&v.suspenseId===b.pendingId&&(b.deps--,b.deps===0&&b.resolve())},Oe=(v,b,A,B=!1,D=!1,H=0)=>{for(let Y=H;Yv.shapeFlag&6?U(v.component.subTree):v.shapeFlag&128?v.suspense.next():f(v.anchor||v.el);let Q=!1;const Z=(v,b,A)=>{v==null?b._vnode&&ie(b._vnode,null,null,!0):g(b._vnode||null,v,b,null,null,null,A),Q||(Q=!0,cc(),xp(),Q=!1),b._vnode=v},te={p:g,um:ie,m:X,r:he,mt:V,mc:x,pc:ee,pbc:$,n:U,o:e};let Ue,Ge;return t&&([Ue,Ge]=t(te)),{render:Z,hydrate:Ue,createApp:ky(Z,Ue)}}function xs({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function li({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Py(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function lu(e,t,n=!1){const i=e.children,r=t.children;if(ce(i)&&ce(r))for(let o=0;o>1,e[n[s]]0&&(t[i]=n[o-1]),n[o]=i)}}for(o=n.length,a=n[o-1];o-- >0;)n[o]=a,a=t[a];return n}function Qp(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Qp(t)}const Fy=e=>e.__isTeleport,jr=e=>e&&(e.disabled||e.disabled===""),Cc=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Rc=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,fl=(e,t)=>{const n=e&&e.to;return et(n)?t?t(n):null:n},Dy={name:"Teleport",__isTeleport:!0,process(e,t,n,i,r,o,a,s,l,u){const{mc:c,pc:d,pbc:f,o:{insert:h,querySelector:m,createText:g,createComment:S}}=u,R=jr(t.props);let{shapeFlag:k,children:I,dynamicChildren:P}=t;if(e==null){const L=t.el=g(""),T=t.anchor=g("");h(L,n,i),h(T,n,i);const E=t.target=fl(t.props,m),x=t.targetAnchor=g("");E&&(h(x,E),a==="svg"||Cc(E)?a="svg":(a==="mathml"||Rc(E))&&(a="mathml"));const N=($,W)=>{k&16&&c(I,$,W,r,o,a,s,l)};R?N(n,T):E&&N(E,x)}else{t.el=e.el;const L=t.anchor=e.anchor,T=t.target=e.target,E=t.targetAnchor=e.targetAnchor,x=jr(e.props),N=x?n:T,$=x?L:E;if(a==="svg"||Cc(T)?a="svg":(a==="mathml"||Rc(T))&&(a="mathml"),P?(f(e.dynamicChildren,P,N,r,o,a,s),lu(e,t,!0)):l||d(e,t,N,$,r,o,a,s,!1),R)x?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Ko(t,n,L,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const W=t.target=fl(t.props,m);W&&Ko(t,W,null,u,0)}else x&&Ko(t,T,E,u,1)}jp(t)},remove(e,t,n,i,{um:r,o:{remove:o}},a){const{shapeFlag:s,children:l,anchor:u,targetAnchor:c,target:d,props:f}=e;if(d&&o(c),a&&o(u),s&16){const h=a||!jr(f);for(let m=0;m0?an||Xi:null,$y(),fo>0&&an&&an.push(e),e}function at(e,t,n,i,r,o){return eh(Ee(e,t,n,i,r,o,!0))}function Me(e,t,n,i,r){return eh(p(e,t,n,i,r,!0))}function Ca(e){return e?e.__v_isVNode===!0:!1}function hi(e,t){return e.type===t.type&&e.key===t.key}const os="__vInternal",th=({key:e})=>e??null,ca=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?et(e)||nt(e)||ye(e)?{i:st,r:e,k:t,f:!!n}:e:null);function Ee(e,t=null,n=null,i=0,r=null,o=e===_e?0:1,a=!1,s=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&th(t),ref:t&&ca(t),scopeId:Lp,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:i,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:st};return s?(uu(l,n),o&128&&e.normalize(l)):n&&(l.shapeFlag|=et(n)?8:16),fo>0&&!a&&an&&(l.patchFlag>0||o&6)&&l.patchFlag!==32&&an.push(l),l}const p=My;function My(e,t=null,n=null,i=0,r=null,o=!1){if((!e||e===Pp)&&(e=Kt),Ca(e)){const s=On(e,t,!0);return n&&uu(s,n),fo>0&&!o&&an&&(s.shapeFlag&6?an[an.indexOf(e)]=s:an.push(s)),s.patchFlag|=-2,s}if(Yy(e)&&(e=e.__vccOpts),t){t=Vy(t);let{class:s,style:l}=t;s&&!et(s)&&(t.class=zl(s)),ze(l)&&(Sp(l)&&!ce(l)&&(l=ot({},l)),t.style=ql(l))}const a=et(e)?1:oy(e)?128:Fy(e)?64:ze(e)?4:ye(e)?2:0;return Ee(e,t,n,i,r,a,o,!0)}function Vy(e){return e?Sp(e)||os in e?ot({},e):e:null}function On(e,t,n=!1){const{props:i,ref:r,patchFlag:o,children:a}=e,s=t?Pe(i||{},t):i;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:s,key:s&&th(s),ref:t&&t.ref?n&&r?ce(r)?r.concat(ca(t)):[r,ca(t)]:ca(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==_e?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&On(e.ssContent),ssFallback:e.ssFallback&&On(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Ve(e=" ",t=0){return p(To,null,e,t)}function kt(e="",t=!1){return t?(de(),Me(Kt,null,e)):p(Kt,null,e)}function mn(e){return e==null||typeof e=="boolean"?p(Kt):ce(e)?p(_e,null,e.slice()):typeof e=="object"?Zn(e):p(To,null,String(e))}function Zn(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:On(e)}function uu(e,t){let n=0;const{shapeFlag:i}=e;if(t==null)t=null;else if(ce(t))n=16;else if(typeof t=="object")if(i&65){const r=t.default;r&&(r._c&&(r._d=!1),uu(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(os in t)?t._ctx=st:r===3&&st&&(st.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ye(t)?(t={default:t,_ctx:st},n=32):(t=String(t),i&64?(n=16,t=[Ve(t)]):n=8);e.children=t,e.shapeFlag|=n}function Pe(...e){const t={};for(let n=0;nft||st;let Ra,pl;{const e=op(),t=(n,i)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(i),o=>{r.length>1?r.forEach(a=>a(o)):r[0](o)}};Ra=t("__VUE_INSTANCE_SETTERS__",n=>ft=n),pl=t("__VUE_SSR_SETTERS__",n=>as=n)}const Eo=e=>{const t=ft;return Ra(e),e.scope.on(),()=>{e.scope.off(),Ra(t)}},kc=()=>{ft&&ft.scope.off(),Ra(null)};function nh(e){return e.vnode.shapeFlag&4}let as=!1;function Wy(e,t=!1){t&&pl(t);const{props:n,children:i}=e.vnode,r=nh(e);Ty(e,n,r,t),xy(e,i);const o=r?Jy(e,t):void 0;return t&&pl(!1),o}function Jy(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Yl(new Proxy(e.ctx,yy));const{setup:i}=n;if(i){const r=e.setupContext=i.length>1?Ky(e):null,o=Eo(e);Ii();const a=ni(i,e,0,[e.props,r]);if(xi(),o(),np(a)){if(a.then(kc,kc),t)return a.then(s=>{Tc(e,s,t)}).catch(s=>{ts(s,e,0)});e.asyncDep=a}else Tc(e,a,t)}else ih(e,t)}function Tc(e,t,n){ye(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ze(t)&&(e.setupState=kp(t)),ih(e,n)}let Ec;function ih(e,t,n){const i=e.type;if(!e.render){if(!t&&Ec&&!i.render){const r=i.template||au(e).template;if(r){const{isCustomElement:o,compilerOptions:a}=e.appContext.config,{delimiters:s,compilerOptions:l}=i,u=ot(ot({isCustomElement:o,delimiters:s},a),l);i.render=Ec(r,u)}}e.render=i.render||Ht}{const r=Eo(e);Ii();try{wy(e)}finally{xi(),r()}}}function Gy(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return Tt(e,"get","$attrs"),t[n]}}))}function Ky(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return Gy(e)},slots:e.slots,emit:e.emit,expose:t}}function ss(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(kp(Yl(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Xr)return Xr[n](e)},has(t,n){return n in t||n in Xr}}))}function Zy(e,t=!0){return ye(e)?e.displayName||e.name:e.name||t&&e.__name}function Yy(e){return ye(e)&&"__vccOpts"in e}const C=(e,t)=>qv(e,t,as);function bn(e,t,n){const i=arguments.length;return i===2?ze(t)&&!ce(t)?Ca(t)?p(e,null,[t]):p(e,t):p(e,null,t):(i>3?n=Array.prototype.slice.call(arguments,2):i===3&&Ca(n)&&(n=[n]),p(e,t,n))}const Xy="3.4.19";/** +* @vue/runtime-dom v3.4.19 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const Qy="http://www.w3.org/2000/svg",jy="http://www.w3.org/1998/Math/MathML",Yn=typeof document<"u"?document:null,Ic=Yn&&Yn.createElement("template"),ew={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,i)=>{const r=t==="svg"?Yn.createElementNS(Qy,e):t==="mathml"?Yn.createElementNS(jy,e):Yn.createElement(e,n?{is:n}:void 0);return e==="select"&&i&&i.multiple!=null&&r.setAttribute("multiple",i.multiple),r},createText:e=>Yn.createTextNode(e),createComment:e=>Yn.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Yn.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,i,r,o){const a=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{Ic.innerHTML=i==="svg"?`${e}`:i==="mathml"?`${e}`:e;const s=Ic.content;if(i==="svg"||i==="mathml"){const l=s.firstChild;for(;l.firstChild;)s.appendChild(l.firstChild);s.removeChild(l)}t.insertBefore(s,n)}return[a?a.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},qn="transition",_r="animation",rr=Symbol("_vtc"),Ln=(e,{slots:t})=>bn(dy,oh(e),t);Ln.displayName="Transition";const rh={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},tw=Ln.props=ot({},Dp,rh),ui=(e,t=[])=>{ce(e)?e.forEach(n=>n(...t)):e&&e(...t)},xc=e=>e?ce(e)?e.some(t=>t.length>1):e.length>1:!1;function oh(e){const t={};for(const O in e)O in rh||(t[O]=e[O]);if(e.css===!1)return t;const{name:n="v",type:i,duration:r,enterFromClass:o=`${n}-enter-from`,enterActiveClass:a=`${n}-enter-active`,enterToClass:s=`${n}-enter-to`,appearFromClass:l=o,appearActiveClass:u=a,appearToClass:c=s,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:f=`${n}-leave-active`,leaveToClass:h=`${n}-leave-to`}=e,m=nw(r),g=m&&m[0],S=m&&m[1],{onBeforeEnter:R,onEnter:k,onEnterCancelled:I,onLeave:P,onLeaveCancelled:L,onBeforeAppear:T=R,onAppear:E=k,onAppearCancelled:x=I}=t,N=(O,F,V)=>{Jn(O,F?c:s),Jn(O,F?u:a),V&&V()},$=(O,F)=>{O._isLeaving=!1,Jn(O,d),Jn(O,h),Jn(O,f),F&&F()},W=O=>(F,V)=>{const ae=O?E:k,se=()=>N(F,O,V);ui(ae,[F,se]),Ac(()=>{Jn(F,O?l:o),Tn(F,O?c:s),xc(ae)||Oc(F,i,g,se)})};return ot(t,{onBeforeEnter(O){ui(R,[O]),Tn(O,o),Tn(O,a)},onBeforeAppear(O){ui(T,[O]),Tn(O,l),Tn(O,u)},onEnter:W(!1),onAppear:W(!0),onLeave(O,F){O._isLeaving=!0;const V=()=>$(O,F);Tn(O,d),sh(),Tn(O,f),Ac(()=>{O._isLeaving&&(Jn(O,d),Tn(O,h),xc(P)||Oc(O,i,S,V))}),ui(P,[O,V])},onEnterCancelled(O){N(O,!1),ui(I,[O])},onAppearCancelled(O){N(O,!0),ui(x,[O])},onLeaveCancelled(O){$(O),ui(L,[O])}})}function nw(e){if(e==null)return null;if(ze(e))return[Os(e.enter),Os(e.leave)];{const t=Os(e);return[t,t]}}function Os(e){return pv(e)}function Tn(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[rr]||(e[rr]=new Set)).add(t)}function Jn(e,t){t.split(/\s+/).forEach(i=>i&&e.classList.remove(i));const n=e[rr];n&&(n.delete(t),n.size||(e[rr]=void 0))}function Ac(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let iw=0;function Oc(e,t,n,i){const r=e._endId=++iw,o=()=>{r===e._endId&&i()};if(n)return setTimeout(o,n);const{type:a,timeout:s,propCount:l}=ah(e,t);if(!a)return i();const u=a+"end";let c=0;const d=()=>{e.removeEventListener(u,f),o()},f=h=>{h.target===e&&++c>=l&&d()};setTimeout(()=>{c(n[m]||"").split(", "),r=i(`${qn}Delay`),o=i(`${qn}Duration`),a=Lc(r,o),s=i(`${_r}Delay`),l=i(`${_r}Duration`),u=Lc(s,l);let c=null,d=0,f=0;t===qn?a>0&&(c=qn,d=a,f=o.length):t===_r?u>0&&(c=_r,d=u,f=l.length):(d=Math.max(a,u),c=d>0?a>u?qn:_r:null,f=c?c===qn?o.length:l.length:0);const h=c===qn&&/\b(transform|all)(,|$)/.test(i(`${qn}Property`).toString());return{type:c,timeout:d,propCount:f,hasTransform:h}}function Lc(e,t){for(;e.lengthPc(n)+Pc(e[i])))}function Pc(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function sh(){return document.body.offsetHeight}function rw(e,t,n){const i=e[rr];i&&(t=(t?[t,...i]:[...i]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const po=Symbol("_vod"),pr={beforeMount(e,{value:t},{transition:n}){e[po]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):kr(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:i}){!t==!n&&(e.style.display===e[po]||!t)||(i?t?(i.beforeEnter(e),kr(e,!0),i.enter(e)):i.leave(e,()=>{kr(e,!1)}):kr(e,t))},beforeUnmount(e,{value:t}){kr(e,t)}};function kr(e,t){e.style.display=t?e[po]:"none"}const ow=Symbol(""),aw=/(^|;)\s*display\s*:/;function sw(e,t,n){const i=e.style,r=et(n),o=i.display;let a=!1;if(n&&!r){if(t&&!et(t))for(const s in t)n[s]==null&&hl(i,s,"");for(const s in n)s==="display"&&(a=!0),hl(i,s,n[s])}else if(r){if(t!==n){const s=i[ow];s&&(n+=";"+s),i.cssText=n,a=aw.test(n)}}else t&&e.removeAttribute("style");po in e&&(e[po]=a?i.display:"",i.display=o)}const Uc=/\s*!important$/;function hl(e,t,n){if(ce(n))n.forEach(i=>hl(e,t,i));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const i=lw(e,t);Uc.test(n)?e.setProperty(fr(i),n.replace(Uc,""),"important"):e[i]=n}}const Fc=["Webkit","Moz","ms"],Ls={};function lw(e,t){const n=Ls[t];if(n)return n;let i=Yt(t);if(i!=="filter"&&i in e)return Ls[t]=i;i=Fn(i);for(let r=0;rPs||(mw.then(()=>Ps=0),Ps=Date.now());function vw(e,t){const n=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=n.attached)return;Gt(yw(i,n.value),t,5,[i])};return n.value=e,n.attached=gw(),n}function yw(e,t){if(ce(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(i=>r=>!r._stopped&&i&&i(r))}else return t}const $c=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,ww=(e,t,n,i,r,o,a,s,l)=>{const u=r==="svg";t==="class"?rw(e,i,u):t==="style"?sw(e,n,i):Ya(t)?$l(t)||pw(e,t,n,i,a):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):bw(e,t,i,u))?cw(e,t,i,o,a,s,l):(t==="true-value"?e._trueValue=i:t==="false-value"&&(e._falseValue=i),uw(e,t,i,u))};function bw(e,t,n,i){if(i)return!!(t==="innerHTML"||t==="textContent"||t in e&&$c(t)&&ye(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return $c(t)&&et(n)?!1:t in e}const lh=new WeakMap,uh=new WeakMap,_a=Symbol("_moveCb"),Mc=Symbol("_enterCb"),ch={name:"TransitionGroup",props:ot({},tw,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=cu(),i=Fp();let r,o;return Vp(()=>{if(!r.length)return;const a=e.moveClass||`${e.name||"v"}-move`;if(!Tw(r[0].el,n.vnode.el,a))return;r.forEach(Rw),r.forEach(_w);const s=r.filter(kw);sh(),s.forEach(l=>{const u=l.el,c=u.style;Tn(u,a),c.transform=c.webkitTransform=c.transitionDuration="";const d=u[_a]=f=>{f&&f.target!==u||(!f||/transform$/.test(f.propertyName))&&(u.removeEventListener("transitionend",d),u[_a]=null,Jn(u,a))};u.addEventListener("transitionend",d)})}),()=>{const a=Te(e),s=oh(a);let l=a.tag||_e;r=o,o=t.default?ru(t.default()):[];for(let u=0;udelete e.mode;ch.props;const Cw=ch;function Rw(e){const t=e.el;t[_a]&&t[_a](),t[Mc]&&t[Mc]()}function _w(e){uh.set(e,e.el.getBoundingClientRect())}function kw(e){const t=lh.get(e),n=uh.get(e),i=t.left-n.left,r=t.top-n.top;if(i||r){const o=e.el.style;return o.transform=o.webkitTransform=`translate(${i}px,${r}px)`,o.transitionDuration="0s",e}}function Tw(e,t,n){const i=e.cloneNode(),r=e[rr];r&&r.forEach(s=>{s.split(/\s+/).forEach(l=>l&&i.classList.remove(l))}),n.split(/\s+/).forEach(s=>s&&i.classList.add(s)),i.style.display="none";const o=t.nodeType===1?t:t.parentNode;o.appendChild(i);const{hasTransform:a}=ah(i);return o.removeChild(i),a}const Ew=ot({patchProp:ww},ew);let Vc;function Iw(){return Vc||(Vc=Oy(Ew))}const xw=(...e)=>{const t=Iw().createApp(...e),{mount:n}=t;return t.mount=i=>{const r=Ow(i);if(!r)return;const o=t._component;!ye(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.innerHTML="";const a=n(r,!1,Aw(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),a},t};function Aw(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Ow(e){return et(e)?document.querySelector(e):e}/*! + * vue-router v4.2.5 + * (c) 2023 Eduardo San Martin Morote + * @license MIT + */const Vi=typeof window<"u";function Lw(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const De=Object.assign;function Us(e,t){const n={};for(const i in t){const r=t[i];n[i]=ln(r)?r.map(e):e(r)}return n}const to=()=>{},ln=Array.isArray,Pw=/\/$/,Uw=e=>e.replace(Pw,"");function Fs(e,t,n="/"){let i,r={},o="",a="";const s=t.indexOf("#");let l=t.indexOf("?");return s=0&&(l=-1),l>-1&&(i=t.slice(0,l),o=t.slice(l+1,s>-1?s:t.length),r=e(o)),s>-1&&(i=i||t.slice(0,s),a=t.slice(s,t.length)),i=Bw(i??t,n),{fullPath:i+(o&&"?")+o+a,path:i,query:r,hash:a}}function Fw(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function qc(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Dw(e,t,n){const i=t.matched.length-1,r=n.matched.length-1;return i>-1&&i===r&&or(t.matched[i],n.matched[r])&&dh(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function or(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function dh(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Nw(e[n],t[n]))return!1;return!0}function Nw(e,t){return ln(e)?zc(e,t):ln(t)?zc(t,e):e===t}function zc(e,t){return ln(t)?e.length===t.length&&e.every((n,i)=>n===t[i]):e.length===1&&e[0]===t}function Bw(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),i=e.split("/"),r=i[i.length-1];(r===".."||r===".")&&i.push("");let o=n.length-1,a,s;for(a=0;a1&&o--;else break;return n.slice(0,o).join("/")+"/"+i.slice(a-(a===i.length?1:0)).join("/")}var ho;(function(e){e.pop="pop",e.push="push"})(ho||(ho={}));var no;(function(e){e.back="back",e.forward="forward",e.unknown=""})(no||(no={}));function $w(e){if(!e)if(Vi){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Uw(e)}const Mw=/^[^#]+#/;function Vw(e,t){return e.replace(Mw,"#")+t}function qw(e,t){const n=document.documentElement.getBoundingClientRect(),i=e.getBoundingClientRect();return{behavior:t.behavior,left:i.left-n.left-(t.left||0),top:i.top-n.top-(t.top||0)}}const ls=()=>({left:window.pageXOffset,top:window.pageYOffset});function zw(e){let t;if("el"in e){const n=e.el,i=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?i?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=qw(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function Hc(e,t){return(history.state?history.state.position-t:-1)+e}const ml=new Map;function Hw(e,t){ml.set(e,t)}function Ww(e){const t=ml.get(e);return ml.delete(e),t}let Jw=()=>location.protocol+"//"+location.host;function fh(e,t){const{pathname:n,search:i,hash:r}=t,o=e.indexOf("#");if(o>-1){let s=r.includes(e.slice(o))?e.slice(o).length:1,l=r.slice(s);return l[0]!=="/"&&(l="/"+l),qc(l,"")}return qc(n,e)+i+r}function Gw(e,t,n,i){let r=[],o=[],a=null;const s=({state:f})=>{const h=fh(e,location),m=n.value,g=t.value;let S=0;if(f){if(n.value=h,t.value=f,a&&a===m){a=null;return}S=g?f.position-g.position:0}else i(h);r.forEach(R=>{R(n.value,m,{delta:S,type:ho.pop,direction:S?S>0?no.forward:no.back:no.unknown})})};function l(){a=n.value}function u(f){r.push(f);const h=()=>{const m=r.indexOf(f);m>-1&&r.splice(m,1)};return o.push(h),h}function c(){const{history:f}=window;f.state&&f.replaceState(De({},f.state,{scroll:ls()}),"")}function d(){for(const f of o)f();o=[],window.removeEventListener("popstate",s),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",s),window.addEventListener("beforeunload",c,{passive:!0}),{pauseListeners:l,listen:u,destroy:d}}function Wc(e,t,n,i=!1,r=!1){return{back:e,current:t,forward:n,replaced:i,position:window.history.length,scroll:r?ls():null}}function Kw(e){const{history:t,location:n}=window,i={value:fh(e,n)},r={value:t.state};r.value||o(i.value,{back:null,current:i.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(l,u,c){const d=e.indexOf("#"),f=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+l:Jw()+e+l;try{t[c?"replaceState":"pushState"](u,"",f),r.value=u}catch(h){console.error(h),n[c?"replace":"assign"](f)}}function a(l,u){const c=De({},t.state,Wc(r.value.back,l,r.value.forward,!0),u,{position:r.value.position});o(l,c,!0),i.value=l}function s(l,u){const c=De({},r.value,t.state,{forward:l,scroll:ls()});o(c.current,c,!0);const d=De({},Wc(i.value,l,null),{position:c.position+1},u);o(l,d,!1),i.value=l}return{location:i,state:r,push:s,replace:a}}function Zw(e){e=$w(e);const t=Kw(e),n=Gw(e,t.state,t.location,t.replace);function i(o,a=!0){a||n.pauseListeners(),history.go(o)}const r=De({location:"",base:e,go:i,createHref:Vw.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function Yw(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),Zw(e)}function Xw(e){return typeof e=="string"||e&&typeof e=="object"}function ph(e){return typeof e=="string"||typeof e=="symbol"}const zn={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},hh=Symbol("");var Jc;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Jc||(Jc={}));function ar(e,t){return De(new Error,{type:e,[hh]:!0},t)}function kn(e,t){return e instanceof Error&&hh in e&&(t==null||!!(e.type&t))}const Gc="[^/]+?",Qw={sensitive:!1,strict:!1,start:!0,end:!0},jw=/[.+*?^${}()[\]/\\]/g;function e0(e,t){const n=De({},Qw,t),i=[];let r=n.start?"^":"";const o=[];for(const u of e){const c=u.length?[]:[90];n.strict&&!u.length&&(r+="/");for(let d=0;dt.length?t.length===1&&t[0]===80?1:-1:0}function n0(e,t){let n=0;const i=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const i0={type:0,value:""},r0=/[a-zA-Z0-9_]/;function o0(e){if(!e)return[[]];if(e==="/")return[[i0]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(h){throw new Error(`ERR (${n})/"${u}": ${h}`)}let n=0,i=n;const r=[];let o;function a(){o&&r.push(o),o=[]}let s=0,l,u="",c="";function d(){u&&(n===0?o.push({type:0,value:u}):n===1||n===2||n===3?(o.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:u,regexp:c,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function f(){u+=l}for(;s{a(k)}:to}function a(c){if(ph(c)){const d=i.get(c);d&&(i.delete(c),n.splice(n.indexOf(d),1),d.children.forEach(a),d.alias.forEach(a))}else{const d=n.indexOf(c);d>-1&&(n.splice(d,1),c.record.name&&i.delete(c.record.name),c.children.forEach(a),c.alias.forEach(a))}}function s(){return n}function l(c){let d=0;for(;d=0&&(c.record.path!==n[d].record.path||!mh(c,n[d]));)d++;n.splice(d,0,c),c.record.name&&!Yc(c)&&i.set(c.record.name,c)}function u(c,d){let f,h={},m,g;if("name"in c&&c.name){if(f=i.get(c.name),!f)throw ar(1,{location:c});g=f.record.name,h=De(Zc(d.params,f.keys.filter(k=>!k.optional).map(k=>k.name)),c.params&&Zc(c.params,f.keys.map(k=>k.name))),m=f.stringify(h)}else if("path"in c)m=c.path,f=n.find(k=>k.re.test(m)),f&&(h=f.parse(m),g=f.record.name);else{if(f=d.name?i.get(d.name):n.find(k=>k.re.test(d.path)),!f)throw ar(1,{location:c,currentLocation:d});g=f.record.name,h=De({},d.params,c.params),m=f.stringify(h)}const S=[];let R=f;for(;R;)S.unshift(R.record),R=R.parent;return{name:g,path:m,params:h,matched:S,meta:c0(S)}}return e.forEach(c=>o(c)),{addRoute:o,resolve:u,removeRoute:a,getRoutes:s,getRecordMatcher:r}}function Zc(e,t){const n={};for(const i of t)i in e&&(n[i]=e[i]);return n}function l0(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:u0(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function u0(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const i in e.components)t[i]=typeof n=="object"?n[i]:n;return t}function Yc(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function c0(e){return e.reduce((t,n)=>De(t,n.meta),{})}function Xc(e,t){const n={};for(const i in e)n[i]=i in t?t[i]:e[i];return n}function mh(e,t){return t.children.some(n=>n===e||mh(e,n))}const gh=/#/g,d0=/&/g,f0=/\//g,p0=/=/g,h0=/\?/g,vh=/\+/g,m0=/%5B/g,g0=/%5D/g,yh=/%5E/g,v0=/%60/g,wh=/%7B/g,y0=/%7C/g,bh=/%7D/g,w0=/%20/g;function du(e){return encodeURI(""+e).replace(y0,"|").replace(m0,"[").replace(g0,"]")}function b0(e){return du(e).replace(wh,"{").replace(bh,"}").replace(yh,"^")}function gl(e){return du(e).replace(vh,"%2B").replace(w0,"+").replace(gh,"%23").replace(d0,"%26").replace(v0,"`").replace(wh,"{").replace(bh,"}").replace(yh,"^")}function S0(e){return gl(e).replace(p0,"%3D")}function C0(e){return du(e).replace(gh,"%23").replace(h0,"%3F")}function R0(e){return e==null?"":C0(e).replace(f0,"%2F")}function ka(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function _0(e){const t={};if(e===""||e==="?")return t;const i=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;ro&&gl(o)):[i&&gl(i)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function k0(e){const t={};for(const n in e){const i=e[n];i!==void 0&&(t[n]=ln(i)?i.map(r=>r==null?null:""+r):i==null?i:""+i)}return t}const T0=Symbol(""),jc=Symbol(""),fu=Symbol(""),Sh=Symbol(""),vl=Symbol("");function Tr(){let e=[];function t(i){return e.push(i),()=>{const r=e.indexOf(i);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Xn(e,t,n,i,r){const o=i&&(i.enterCallbacks[r]=i.enterCallbacks[r]||[]);return()=>new Promise((a,s)=>{const l=d=>{d===!1?s(ar(4,{from:n,to:t})):d instanceof Error?s(d):Xw(d)?s(ar(2,{from:t,to:d})):(o&&i.enterCallbacks[r]===o&&typeof d=="function"&&o.push(d),a())},u=e.call(i&&i.instances[r],t,n,l);let c=Promise.resolve(u);e.length<3&&(c=c.then(l)),c.catch(d=>s(d))})}function Ds(e,t,n,i){const r=[];for(const o of e)for(const a in o.components){let s=o.components[a];if(!(t!=="beforeRouteEnter"&&!o.instances[a]))if(E0(s)){const u=(s.__vccOpts||s)[t];u&&r.push(Xn(u,n,i,o,a))}else{let l=s();r.push(()=>l.then(u=>{if(!u)return Promise.reject(new Error(`Couldn't resolve component "${a}" at "${o.path}"`));const c=Lw(u)?u.default:u;o.components[a]=c;const f=(c.__vccOpts||c)[t];return f&&Xn(f,n,i,o,a)()}))}}return r}function E0(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function ed(e){const t=Je(fu),n=Je(Sh),i=C(()=>t.resolve(bt(e.to))),r=C(()=>{const{matched:l}=i.value,{length:u}=l,c=l[u-1],d=n.matched;if(!c||!d.length)return-1;const f=d.findIndex(or.bind(null,c));if(f>-1)return f;const h=td(l[u-2]);return u>1&&td(c)===h&&d[d.length-1].path!==h?d.findIndex(or.bind(null,l[u-2])):f}),o=C(()=>r.value>-1&&O0(n.params,i.value.params)),a=C(()=>r.value>-1&&r.value===n.matched.length-1&&dh(n.params,i.value.params));function s(l={}){return A0(l)?t[bt(e.replace)?"replace":"push"](bt(e.to)).catch(to):Promise.resolve()}return{route:i,href:C(()=>i.value.href),isActive:o,isExactActive:a,navigate:s}}const I0=pt({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:ed,setup(e,{slots:t}){const n=ht(ed(e)),{options:i}=Je(fu),r=C(()=>({[nd(e.activeClass,i.linkActiveClass,"router-link-active")]:n.isActive,[nd(e.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&t.default(n);return e.custom?o:bn("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),x0=I0;function A0(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function O0(e,t){for(const n in t){const i=t[n],r=e[n];if(typeof i=="string"){if(i!==r)return!1}else if(!ln(r)||r.length!==i.length||i.some((o,a)=>o!==r[a]))return!1}return!0}function td(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const nd=(e,t,n)=>e??t??n,L0=pt({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const i=Je(vl),r=C(()=>e.route||i.value),o=Je(jc,0),a=C(()=>{let u=bt(o);const{matched:c}=r.value;let d;for(;(d=c[u])&&!d.components;)u++;return u}),s=C(()=>r.value.matched[a.value]);Ft(jc,C(()=>a.value+1)),Ft(T0,s),Ft(vl,r);const l=Se();return we(()=>[l.value,s.value,e.name],([u,c,d],[f,h,m])=>{c&&(c.instances[d]=u,h&&h!==c&&u&&u===f&&(c.leaveGuards.size||(c.leaveGuards=h.leaveGuards),c.updateGuards.size||(c.updateGuards=h.updateGuards))),u&&c&&(!h||!or(c,h)||!f)&&(c.enterCallbacks[d]||[]).forEach(g=>g(u))},{flush:"post"}),()=>{const u=r.value,c=e.name,d=s.value,f=d&&d.components[c];if(!f)return id(n.default,{Component:f,route:u});const h=d.props[c],m=h?h===!0?u.params:typeof h=="function"?h(u):h:null,S=bn(f,De({},m,t,{onVnodeUnmounted:R=>{R.component.isUnmounted&&(d.instances[c]=null)},ref:l}));return id(n.default,{Component:S,route:u})||S}}});function id(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const P0=L0;function U0(e){const t=s0(e.routes,e),n=e.parseQuery||_0,i=e.stringifyQuery||Qc,r=e.history,o=Tr(),a=Tr(),s=Tr(),l=be(zn);let u=zn;Vi&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=Us.bind(null,U=>""+U),d=Us.bind(null,R0),f=Us.bind(null,ka);function h(U,Q){let Z,te;return ph(U)?(Z=t.getRecordMatcher(U),te=Q):te=U,t.addRoute(te,Z)}function m(U){const Q=t.getRecordMatcher(U);Q&&t.removeRoute(Q)}function g(){return t.getRoutes().map(U=>U.record)}function S(U){return!!t.getRecordMatcher(U)}function R(U,Q){if(Q=De({},Q||l.value),typeof U=="string"){const b=Fs(n,U,Q.path),A=t.resolve({path:b.path},Q),B=r.createHref(b.fullPath);return De(b,A,{params:f(A.params),hash:ka(b.hash),redirectedFrom:void 0,href:B})}let Z;if("path"in U)Z=De({},U,{path:Fs(n,U.path,Q.path).path});else{const b=De({},U.params);for(const A in b)b[A]==null&&delete b[A];Z=De({},U,{params:d(b)}),Q.params=d(Q.params)}const te=t.resolve(Z,Q),Ue=U.hash||"";te.params=c(f(te.params));const Ge=Fw(i,De({},U,{hash:b0(Ue),path:te.path})),v=r.createHref(Ge);return De({fullPath:Ge,hash:Ue,query:i===Qc?k0(U.query):U.query||{}},te,{redirectedFrom:void 0,href:v})}function k(U){return typeof U=="string"?Fs(n,U,l.value.path):De({},U)}function I(U,Q){if(u!==U)return ar(8,{from:Q,to:U})}function P(U){return E(U)}function L(U){return P(De(k(U),{replace:!0}))}function T(U){const Q=U.matched[U.matched.length-1];if(Q&&Q.redirect){const{redirect:Z}=Q;let te=typeof Z=="function"?Z(U):Z;return typeof te=="string"&&(te=te.includes("?")||te.includes("#")?te=k(te):{path:te},te.params={}),De({query:U.query,hash:U.hash,params:"path"in te?{}:U.params},te)}}function E(U,Q){const Z=u=R(U),te=l.value,Ue=U.state,Ge=U.force,v=U.replace===!0,b=T(Z);if(b)return E(De(k(b),{state:typeof b=="object"?De({},Ue,b.state):Ue,force:Ge,replace:v}),Q||Z);const A=Z;A.redirectedFrom=Q;let B;return!Ge&&Dw(i,te,Z)&&(B=ar(16,{to:A,from:te}),X(te,te,!0,!1)),(B?Promise.resolve(B):$(A,te)).catch(D=>kn(D)?kn(D,2)?D:Ne(D):ee(D,A,te)).then(D=>{if(D){if(kn(D,2))return E(De({replace:v},k(D.to),{state:typeof D.to=="object"?De({},Ue,D.to.state):Ue,force:Ge}),Q||A)}else D=O(A,te,!0,v,Ue);return W(A,te,D),D})}function x(U,Q){const Z=I(U,Q);return Z?Promise.reject(Z):Promise.resolve()}function N(U){const Q=Xe.values().next().value;return Q&&typeof Q.runWithContext=="function"?Q.runWithContext(U):U()}function $(U,Q){let Z;const[te,Ue,Ge]=F0(U,Q);Z=Ds(te.reverse(),"beforeRouteLeave",U,Q);for(const b of te)b.leaveGuards.forEach(A=>{Z.push(Xn(A,U,Q))});const v=x.bind(null,U,Q);return Z.push(v),Oe(Z).then(()=>{Z=[];for(const b of o.list())Z.push(Xn(b,U,Q));return Z.push(v),Oe(Z)}).then(()=>{Z=Ds(Ue,"beforeRouteUpdate",U,Q);for(const b of Ue)b.updateGuards.forEach(A=>{Z.push(Xn(A,U,Q))});return Z.push(v),Oe(Z)}).then(()=>{Z=[];for(const b of Ge)if(b.beforeEnter)if(ln(b.beforeEnter))for(const A of b.beforeEnter)Z.push(Xn(A,U,Q));else Z.push(Xn(b.beforeEnter,U,Q));return Z.push(v),Oe(Z)}).then(()=>(U.matched.forEach(b=>b.enterCallbacks={}),Z=Ds(Ge,"beforeRouteEnter",U,Q),Z.push(v),Oe(Z))).then(()=>{Z=[];for(const b of a.list())Z.push(Xn(b,U,Q));return Z.push(v),Oe(Z)}).catch(b=>kn(b,8)?b:Promise.reject(b))}function W(U,Q,Z){s.list().forEach(te=>N(()=>te(U,Q,Z)))}function O(U,Q,Z,te,Ue){const Ge=I(U,Q);if(Ge)return Ge;const v=Q===zn,b=Vi?history.state:{};Z&&(te||v?r.replace(U.fullPath,De({scroll:v&&b&&b.scroll},Ue)):r.push(U.fullPath,Ue)),l.value=U,X(U,Q,Z,v),Ne()}let F;function V(){F||(F=r.listen((U,Q,Z)=>{if(!yt.listening)return;const te=R(U),Ue=T(te);if(Ue){E(De(Ue,{replace:!0}),te).catch(to);return}u=te;const Ge=l.value;Vi&&Hw(Hc(Ge.fullPath,Z.delta),ls()),$(te,Ge).catch(v=>kn(v,12)?v:kn(v,2)?(E(v.to,te).then(b=>{kn(b,20)&&!Z.delta&&Z.type===ho.pop&&r.go(-1,!1)}).catch(to),Promise.reject()):(Z.delta&&r.go(-Z.delta,!1),ee(v,te,Ge))).then(v=>{v=v||O(te,Ge,!1),v&&(Z.delta&&!kn(v,8)?r.go(-Z.delta,!1):Z.type===ho.pop&&kn(v,20)&&r.go(-1,!1)),W(te,Ge,v)}).catch(to)}))}let ae=Tr(),se=Tr(),ne;function ee(U,Q,Z){Ne(U);const te=se.list();return te.length?te.forEach(Ue=>Ue(U,Q,Z)):console.error(U),Promise.reject(U)}function Ae(){return ne&&l.value!==zn?Promise.resolve():new Promise((U,Q)=>{ae.add([U,Q])})}function Ne(U){return ne||(ne=!U,V(),ae.list().forEach(([Q,Z])=>U?Z(U):Q()),ae.reset()),U}function X(U,Q,Z,te){const{scrollBehavior:Ue}=e;if(!Vi||!Ue)return Promise.resolve();const Ge=!Z&&Ww(Hc(U.fullPath,0))||(te||!Z)&&history.state&&history.state.scroll||null;return vt().then(()=>Ue(U,Q,Ge)).then(v=>v&&zw(v)).catch(v=>ee(v,U,Q))}const ie=U=>r.go(U);let he;const Xe=new Set,yt={currentRoute:l,listening:!0,addRoute:h,removeRoute:m,hasRoute:S,getRoutes:g,resolve:R,options:e,push:P,replace:L,go:ie,back:()=>ie(-1),forward:()=>ie(1),beforeEach:o.add,beforeResolve:a.add,afterEach:s.add,onError:se.add,isReady:Ae,install(U){const Q=this;U.component("RouterLink",x0),U.component("RouterView",P0),U.config.globalProperties.$router=Q,Object.defineProperty(U.config.globalProperties,"$route",{enumerable:!0,get:()=>bt(l)}),Vi&&!he&&l.value===zn&&(he=!0,P(r.location).catch(Ue=>{}));const Z={};for(const Ue in zn)Object.defineProperty(Z,Ue,{get:()=>l.value[Ue],enumerable:!0});U.provide(fu,Q),U.provide(Sh,bp(Z)),U.provide(vl,l);const te=U.unmount;Xe.add(U),U.unmount=function(){Xe.delete(U),Xe.size<1&&(u=zn,F&&F(),F=null,l.value=zn,he=!1,ne=!1),te()}}};function Oe(U){return U.reduce((Q,Z)=>Q.then(()=>N(Z)),Promise.resolve())}return yt}function F0(e,t){const n=[],i=[],r=[],o=Math.max(t.matched.length,e.matched.length);for(let a=0;aor(u,s))?i.push(s):n.push(s));const l=e.matched[a];l&&(t.matched.find(u=>or(u,l))||r.push(l))}return[n,i,r]}var D0=!1;/*! + * pinia v2.1.7 + * (c) 2023 Eduardo San Martin Morote + * @license MIT + */const N0=Symbol();var rd;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(rd||(rd={}));function B0(){const e=ja(!0),t=e.run(()=>Se({}));let n=[],i=[];const r=Yl({install(o){r._a=o,o.provide(N0,r),o.config.globalProperties.$pinia=r,i.forEach(a=>n.push(a)),i=[]},use(o){return!this._a&&!D0?i.push(o):n.push(o),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}let $0=typeof window<"u"?localStorage.getItem("BASE_PATH")||"":location.protocol+"//"+location.host;class M0{constructor(t={}){this.configuration=t}set config(t){this.configuration=t}get basePath(){return this.configuration.basePath!=null?this.configuration.basePath:$0}get fetchApi(){return this.configuration.fetchApi}get middleware(){return this.configuration.middleware||[]}get queryParamsStringify(){return this.configuration.queryParamsStringify||Ch}get username(){return this.configuration.username}get password(){return this.configuration.password}get apiKey(){const t=this.configuration.apiKey;if(t)return typeof t=="function"?t:()=>t}get accessToken(){const t=this.configuration.accessToken;if(t)return typeof t=="function"?t:async()=>t}get headers(){return this.configuration.headers}get credentials(){return this.configuration.credentials}}const V0=new M0,Za=class Za{constructor(t=V0){ai(this,"middleware");ai(this,"fetchApi",async(t,n)=>{let i={url:t,init:n};for(const o of this.middleware)o.pre&&(i=await o.pre({fetch:this.fetchApi,...i})||i);let r;try{r=await(this.configuration.fetchApi||fetch)(i.url,i.init)}catch(o){for(const a of this.middleware)a.onError&&(r=await a.onError({fetch:this.fetchApi,url:i.url,init:i.init,error:o,response:r?r.clone():void 0})||r);if(r===void 0)throw o instanceof Error?new W0(o,"The request failed and the interceptors did not return an alternative response"):o}for(const o of this.middleware)o.post&&(r=await o.post({fetch:this.fetchApi,url:i.url,init:i.init,response:r.clone()})||r);return r});this.configuration=t,this.middleware=t.middleware}withMiddleware(...t){const n=this.clone();return n.middleware=n.middleware.concat(...t),n}withPreMiddleware(...t){const n=t.map(i=>({pre:i}));return this.withMiddleware(...n)}withPostMiddleware(...t){const n=t.map(i=>({post:i}));return this.withMiddleware(...n)}isJsonMime(t){return t?Za.jsonRegex.test(t):!1}async request(t,n){const{url:i,init:r}=await this.createFetchParams(t,n),o=await this.fetchApi(i,r);if(o&&o.status>=200&&o.status<300)return o;throw new H0(o,"Response returned an error code")}getCookie(t){let n=null;if(document.cookie&&document.cookie!==""){const i=document.cookie.split(";");for(let r=0;rr[c]===void 0?delete r[c]:{});const o=typeof n=="function"?n:async()=>n,a={method:t.method,headers:r,body:t.body,credentials:this.configuration.credentials},s={...a,...await o({init:a,context:t})};let l;z0(s.body)||s.body instanceof URLSearchParams||q0(s.body)?l=s.body:this.isJsonMime(r["Content-Type"])?l=JSON.stringify(s.body):l=s.body;const u={...s,body:l};return{url:i,init:u}}clone(){const t=this.constructor,n=new t(this.configuration);return n.middleware=this.middleware.slice(),n}};ai(Za,"jsonRegex",new RegExp("^(:?application/json|[^;/ ]+/[^;/ ]+[+]json)[ ]*(:?;.*)?$","i"));let yl=Za;function q0(e){return typeof Blob<"u"&&e instanceof Blob}function z0(e){return typeof FormData<"u"&&e instanceof FormData}class H0 extends Error{constructor(n,i){super(i);ai(this,"name","ResponseError");this.response=n}}class W0 extends Error{constructor(n,i){super(i);ai(this,"name","FetchError");this.cause=n}}class w extends Error{constructor(n,i){super(i);ai(this,"name","RequiredError");this.field=n}}function y(e,t){const n=e[t];return n!=null}function Ch(e,t=""){return Object.keys(e).map(n=>Rh(n,e[n],t)).filter(n=>n.length>0).join("&")}function Rh(e,t,n=""){const i=n+(n.length?`[${e}]`:e);if(t instanceof Array){const r=t.map(o=>encodeURIComponent(String(o))).join(`&${encodeURIComponent(i)}=`);return`${encodeURIComponent(i)}=${r}`}if(t instanceof Set){const r=Array.from(t);return Rh(e,r,n)}return t instanceof Date?`${encodeURIComponent(i)}=${encodeURIComponent(t.toISOString())}`:t instanceof Object?Ch(t,i):`${encodeURIComponent(i)}=${encodeURIComponent(String(t))}`}function Zo(e){for(const t of e)if(t.contentType==="multipart/form-data")return!0;return!1}class _{constructor(t,n=i=>i){this.raw=t,this.transformer=n}async value(){return this.transformer(await this.raw.json())}}class Re{constructor(t){this.raw=t}async value(){}}function Er(e){return J0(e)}function J0(e,t){return e==null?e:{id:e.id,token:e.token,expires:new Date(e.expires),scope:y(e,"scope")?e.scope:void 0,created:new Date(e.created),updated:new Date(e.updated)}}function od(e){if(e!==void 0)return e===null?null:{expires:e.expires.toISOString(),scope:e.scope}}function G0(e){return K0(e)}function K0(e,t){return e}function zr(e){return Z0(e)}function Z0(e,t){return e==null?e:{id:e.id,type:G0(e.type),name:y(e,"name")?e.name:void 0,description:y(e,"description")?e.description:void 0,param1:y(e,"param_1")?e.param_1:void 0,param2:y(e,"param_2")?e.param_2:void 0,param3:y(e,"param_3")?e.param_3:void 0,order:y(e,"order")?e.order:void 0,disabled:y(e,"disabled")?e.disabled:void 0,createdBy:e.created_by}}function ad(e){if(e!==void 0)return e===null?null:{type:e.type,name:e.name,description:e.description,param_1:e.param1,param_2:e.param2,param_3:e.param3,order:e.order,disabled:e.disabled}}function Yo(e){return Y0(e)}function Y0(e,t){return e==null?e:{id:e.id,url:y(e,"url")?e.url:void 0,html:e.html,createdBy:e.created_by,createdAt:new Date(e.created_at)}}function sd(e){if(e!==void 0)return e===null?null:{url:e.url,html:e.html}}function X0(e){return Q0(e)}function Q0(e,t){return e==null?e:{id:e.id,url:y(e,"url")?e.url:void 0,createdBy:e.created_by,createdAt:new Date(e.created_at)}}function Ir(e){return j0(e)}function j0(e,t){return e==null?e:{id:e.id,name:e.name,url:y(e,"url")?e.url:void 0,token:y(e,"token")?e.token:void 0,todoEntity:y(e,"todo_entity")?e.todo_entity:void 0,enabled:y(e,"enabled")?e.enabled:void 0,onShoppingListEntryCreatedEnabled:y(e,"on_shopping_list_entry_created_enabled")?e.on_shopping_list_entry_created_enabled:void 0,onShoppingListEntryUpdatedEnabled:y(e,"on_shopping_list_entry_updated_enabled")?e.on_shopping_list_entry_updated_enabled:void 0,onShoppingListEntryDeletedEnabled:y(e,"on_shopping_list_entry_deleted_enabled")?e.on_shopping_list_entry_deleted_enabled:void 0,createdBy:e.created_by}}function ld(e){if(e!==void 0)return e===null?null:{name:e.name,url:e.url,token:e.token,todo_entity:e.todoEntity,enabled:e.enabled,on_shopping_list_entry_created_enabled:e.onShoppingListEntryCreatedEnabled,on_shopping_list_entry_updated_enabled:e.onShoppingListEntryUpdatedEnabled,on_shopping_list_entry_deleted_enabled:e.onShoppingListEntryDeletedEnabled}}function Zt(e){return eb(e)}function eb(e,t){return e==null?e:{id:e.id,username:e.username,firstName:y(e,"first_name")?e.first_name:void 0,lastName:y(e,"last_name")?e.last_name:void 0,displayName:e.display_name}}function wn(e){if(e!==void 0)return e===null?null:{first_name:e.firstName,last_name:e.lastName}}function Hr(e){return tb(e)}function tb(e,t){return e==null?e:{id:e.id,recipe:e.recipe,servings:y(e,"servings")?e.servings:void 0,rating:y(e,"rating")?e.rating:void 0,comment:y(e,"comment")?e.comment:void 0,createdBy:Zt(e.created_by),createdAt:y(e,"created_at")?new Date(e.created_at):void 0,updatedAt:new Date(e.updated_at)}}function ud(e){if(e!==void 0)return e===null?null:{recipe:e.recipe,servings:e.servings,rating:e.rating,comment:e.comment,created_at:e.createdAt===void 0?void 0:e.createdAt.toISOString()}}function Wi(e){return nb(e)}function nb(e,t){return e==null?e:{id:e.id,name:e.name,search:e.search,shared:y(e,"shared")?e.shared.map(Zt):void 0,createdBy:e.created_by}}function Ta(e){if(e!==void 0)return e===null?null:{name:e.name,search:e.search,shared:e.shared===void 0?void 0:e.shared.map(wn)}}function ib(e){return rb(e)}function rb(e,t){return e}function Wr(e){return ob(e)}function ob(e,t){return e==null?e:{id:e.id,type:e.type,msg:y(e,"msg")?e.msg:void 0,running:y(e,"running")?e.running:void 0,totalRecipes:y(e,"total_recipes")?e.total_recipes:void 0,exportedRecipes:y(e,"exported_recipes")?e.exported_recipes:void 0,cacheDuration:y(e,"cache_duration")?e.cache_duration:void 0,possiblyNotExpired:y(e,"possibly_not_expired")?e.possibly_not_expired:void 0,createdBy:e.created_by,createdAt:new Date(e.created_at)}}function cd(e){if(e!==void 0)return e===null?null:{type:e.type,msg:e.msg,running:e.running,total_recipes:e.totalRecipes,exported_recipes:e.exportedRecipes,cache_duration:e.cacheDuration,possibly_not_expired:e.possiblyNotExpired}}function mo(e){return ab(e)}function ab(e,t){return e==null?e:{id:e.id,name:y(e,"name")?e.name:void 0,field:y(e,"field")?e.field:void 0}}function go(e){if(e!==void 0)return e===null?null:{name:e.name,field:e.field}}function sb(e){return lb(e)}function lb(e,t){return e==null?e:{id:e.id,name:e.name,pluralName:y(e,"plural_name")?e.plural_name:void 0}}function _h(e){if(e!==void 0)return e===null?null:{name:e.name,plural_name:e.pluralName}}function qi(e){return ub(e)}function ub(e,t){return e==null?e:{id:y(e,"id")?e.id:void 0,name:e.name,unit:y(e,"unit")?e.unit:void 0,description:y(e,"description")?e.description:void 0,order:y(e,"order")?e.order:void 0,openDataSlug:y(e,"open_data_slug")?e.open_data_slug:void 0,fdcId:y(e,"fdc_id")?e.fdc_id:void 0}}function Ea(e){if(e!==void 0)return e===null?null:{id:e.id,name:e.name,unit:e.unit,description:e.description,order:e.order,open_data_slug:e.openDataSlug,fdc_id:e.fdcId}}function mi(e){return cb(e)}function cb(e,t){return e==null?e:{id:e.id,propertyAmount:e.property_amount,propertyType:qi(e.property_type)}}function sr(e){if(e!==void 0)return e===null?null:{property_amount:e.propertyAmount,property_type:Ea(e.propertyType)}}function kh(e){return db(e)}function db(e,t){return e==null?e:{id:e.id,name:e.name,url:e.url}}function Th(e){if(e!==void 0)return e===null?null:{name:e.name}}function Qn(e){return fb(e)}function fb(e,t){return e==null?e:{id:e.id,name:e.name,description:y(e,"description")?e.description:void 0}}function Ci(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description}}function rn(e){return pb(e)}function pb(e,t){return e==null?e:{id:e.id,name:e.name,pluralName:y(e,"plural_name")?e.plural_name:void 0,description:y(e,"description")?e.description:void 0,baseUnit:y(e,"base_unit")?e.base_unit:void 0,openDataSlug:y(e,"open_data_slug")?e.open_data_slug:void 0}}function Dt(e){if(e!==void 0)return e===null?null:{name:e.name,plural_name:e.pluralName,description:e.description,base_unit:e.baseUnit,open_data_slug:e.openDataSlug}}function nn(e){return hb(e)}function hb(e,t){return e==null?e:{id:e.id,name:e.name,pluralName:y(e,"plural_name")?e.plural_name:void 0,description:y(e,"description")?e.description:void 0,shopping:e.shopping,recipe:y(e,"recipe")?kh(e.recipe):void 0,url:y(e,"url")?e.url:void 0,properties:y(e,"properties")?e.properties===null?null:e.properties.map(mi):void 0,propertiesFoodAmount:y(e,"properties_food_amount")?e.properties_food_amount:void 0,propertiesFoodUnit:y(e,"properties_food_unit")?rn(e.properties_food_unit):void 0,fdcId:y(e,"fdc_id")?e.fdc_id:void 0,foodOnhand:y(e,"food_onhand")?e.food_onhand:void 0,supermarketCategory:y(e,"supermarket_category")?Qn(e.supermarket_category):void 0,parent:e.parent,numchild:e.numchild,inheritFields:y(e,"inherit_fields")?e.inherit_fields===null?null:e.inherit_fields.map(mo):void 0,fullName:e.full_name,ignoreShopping:y(e,"ignore_shopping")?e.ignore_shopping:void 0,substitute:y(e,"substitute")?e.substitute===null?null:e.substitute.map(sb):void 0,substituteSiblings:y(e,"substitute_siblings")?e.substitute_siblings:void 0,substituteChildren:y(e,"substitute_children")?e.substitute_children:void 0,substituteOnhand:e.substitute_onhand,childInheritFields:y(e,"child_inherit_fields")?e.child_inherit_fields===null?null:e.child_inherit_fields.map(mo):void 0,openDataSlug:y(e,"open_data_slug")?e.open_data_slug:void 0}}function on(e){if(e!==void 0)return e===null?null:{name:e.name,plural_name:e.pluralName,description:e.description,recipe:Th(e.recipe),url:e.url,properties:e.properties===void 0?void 0:e.properties===null?null:e.properties.map(sr),properties_food_amount:e.propertiesFoodAmount,properties_food_unit:Dt(e.propertiesFoodUnit),fdc_id:e.fdcId,food_onhand:e.foodOnhand,supermarket_category:Ci(e.supermarketCategory),inherit_fields:e.inheritFields===void 0?void 0:e.inheritFields===null?null:e.inheritFields.map(go),ignore_shopping:e.ignoreShopping,substitute:e.substitute===void 0?void 0:e.substitute===null?null:e.substitute.map(_h),substitute_siblings:e.substituteSiblings,substitute_children:e.substituteChildren,child_inherit_fields:e.childInheritFields===void 0?void 0:e.childInheritFields===null?null:e.childInheritFields.map(go),open_data_slug:e.openDataSlug}}function Ia(e){return mb(e)}function mb(e,t){return e==null?e:{id:e.id,name:e.name}}function pu(e){if(e!==void 0)return e===null?null:{name:e.name}}function En(e){return gb(e)}function gb(e,t){return e==null?e:{id:e.id,name:e.name,label:e.label,description:y(e,"description")?e.description:void 0,parent:e.parent,numchild:e.numchild,createdAt:new Date(e.created_at),updatedAt:new Date(e.updated_at),fullName:e.full_name}}function Ji(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description}}function Jr(e){return vb(e)}function vb(e,t){return e==null?e:{id:e.id,type:e.type,msg:y(e,"msg")?e.msg:void 0,running:y(e,"running")?e.running:void 0,keyword:En(e.keyword),totalRecipes:y(e,"total_recipes")?e.total_recipes:void 0,importedRecipes:y(e,"imported_recipes")?e.imported_recipes:void 0,createdBy:e.created_by,createdAt:new Date(e.created_at)}}function dd(e){if(e!==void 0)return e===null?null:{type:e.type,msg:e.msg,running:e.running,total_recipes:e.totalRecipes,imported_recipes:e.importedRecipes}}function Gi(e){return yb(e)}function yb(e,t){return e==null?e:{id:e.id,food:nn(e.food),unit:rn(e.unit),amount:e.amount,conversions:e.conversions,note:y(e,"note")?e.note:void 0,order:y(e,"order")?e.order:void 0,isHeader:y(e,"is_header")?e.is_header:void 0,noAmount:y(e,"no_amount")?e.no_amount:void 0,originalText:y(e,"original_text")?e.original_text:void 0,usedInRecipes:e.used_in_recipes,alwaysUsePluralUnit:y(e,"always_use_plural_unit")?e.always_use_plural_unit:void 0,alwaysUsePluralFood:y(e,"always_use_plural_food")?e.always_use_plural_food:void 0}}function xa(e){if(e!==void 0)return e===null?null:{food:on(e.food),unit:Dt(e.unit),amount:e.amount,note:e.note,order:e.order,is_header:e.isHeader,no_amount:e.noAmount,original_text:e.originalText,always_use_plural_unit:e.alwaysUsePluralUnit,always_use_plural_food:e.alwaysUsePluralFood}}function xr(e){return wb(e)}function wb(e,t){return e==null?e:{id:e.id,uuid:e.uuid,email:y(e,"email")?e.email:void 0,group:Ia(e.group),validUntil:y(e,"valid_until")?new Date(e.valid_until):void 0,usedBy:y(e,"used_by")?e.used_by:void 0,reusable:y(e,"reusable")?e.reusable:void 0,internalNote:y(e,"internal_note")?e.internal_note:void 0,createdBy:e.created_by,createdAt:new Date(e.created_at)}}function fd(e){if(e!==void 0)return e===null?null:{email:e.email,group:pu(e.group),valid_until:e.validUntil===void 0?void 0:e.validUntil.toISOString().substring(0,10),used_by:e.usedBy,reusable:e.reusable,internal_note:e.internalNote}}function bb(e){return Sb(e)}function Sb(e,t){return e==null?e:{id:e.id,label:e.label}}function Cb(e){if(e!==void 0)return e===null?null:{}}function zi(e){return Rb(e)}function Rb(e,t){return e==null?e:{id:e.id,name:e.name,order:y(e,"order")?e.order:void 0,color:y(e,"color")?e.color:void 0,_default:y(e,"default")?e.default:void 0,createdBy:e.created_by}}function Aa(e){if(e!==void 0)return e===null?null:{name:e.name,order:e.order,color:e.color,default:e._default}}function Eh(e){return _b(e)}function _b(e,t){return e==null?e:{id:e.id,name:e.name,description:y(e,"description")?e.description:void 0,image:e.image,keywords:e.keywords.map(bb),workingTime:y(e,"working_time")?e.working_time:void 0,waitingTime:y(e,"waiting_time")?e.waiting_time:void 0,createdBy:e.created_by,createdAt:new Date(e.created_at),updatedAt:new Date(e.updated_at),internal:y(e,"internal")?e.internal:void 0,servings:y(e,"servings")?e.servings:void 0,servingsText:y(e,"servings_text")?e.servings_text:void 0,rating:y(e,"rating")?e.rating:void 0,lastCooked:y(e,"last_cooked")?e.last_cooked===null?null:new Date(e.last_cooked):void 0,_new:e.new,recent:e.recent}}function Ih(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description,keywords:e.keywords.map(Cb),working_time:e.workingTime,waiting_time:e.waitingTime,internal:e.internal,servings:e.servings,servings_text:e.servingsText,rating:e.rating,last_cooked:e.lastCooked===void 0?void 0:e.lastCooked===null?null:e.lastCooked.toISOString()}}function Ar(e){return kb(e)}function kb(e,t){return e==null?e:{id:e.id,title:y(e,"title")?e.title:void 0,recipe:y(e,"recipe")?Eh(e.recipe):void 0,servings:e.servings,note:y(e,"note")?e.note:void 0,noteMarkdown:e.note_markdown,fromDate:new Date(e.from_date),toDate:y(e,"to_date")?new Date(e.to_date):void 0,mealType:zi(e.meal_type),createdBy:e.created_by,shared:y(e,"shared")?e.shared===null?null:e.shared.map(Zt):void 0,recipeName:e.recipe_name,mealTypeName:e.meal_type_name,shopping:e.shopping}}function pd(e){if(e!==void 0)return e===null?null:{title:e.title,recipe:Ih(e.recipe),servings:e.servings,note:e.note,from_date:e.fromDate.toISOString().substring(0,10),to_date:e.toDate===void 0?void 0:e.toDate.toISOString().substring(0,10),meal_type:Aa(e.mealType),shared:e.shared===void 0?void 0:e.shared===null?null:e.shared.map(wn)}}function Tb(e){return Eb(e)}function Eb(e,t){return e}function Ib(e){return xb(e)}function xb(e,t){return e==null?e:{id:e.id,carbohydrates:e.carbohydrates,fats:e.fats,proteins:e.proteins,calories:e.calories,source:y(e,"source")?e.source:void 0}}function xh(e){if(e!==void 0)return e===null?null:{carbohydrates:e.carbohydrates,fats:e.fats,proteins:e.proteins,calories:e.calories,source:e.source}}function Ab(e){return Ob(e)}function Ob(e,t){return e==null?e:{count:y(e,"count")?e.count:void 0,next:y(e,"next")?e.next:void 0,previous:y(e,"previous")?e.previous:void 0,results:y(e,"results")?e.results.map(zr):void 0}}function Lb(e){return Pb(e)}function Pb(e,t){return e==null?e:{count:y(e,"count")?e.count:void 0,next:y(e,"next")?e.next:void 0,previous:y(e,"previous")?e.previous:void 0,results:y(e,"results")?e.results.map(Hr):void 0}}function Ub(e){return Fb(e)}function Fb(e,t){return e==null?e:{count:y(e,"count")?e.count:void 0,next:y(e,"next")?e.next:void 0,previous:y(e,"previous")?e.previous:void 0,results:y(e,"results")?e.results.map(Wi):void 0}}function Db(e){return Nb(e)}function Nb(e,t){return e==null?e:{count:y(e,"count")?e.count:void 0,next:y(e,"next")?e.next:void 0,previous:y(e,"previous")?e.previous:void 0,results:y(e,"results")?e.results.map(Wr):void 0}}function Bb(e){return $b(e)}function $b(e,t){return e==null?e:{count:y(e,"count")?e.count:void 0,next:y(e,"next")?e.next:void 0,previous:y(e,"previous")?e.previous:void 0,results:y(e,"results")?e.results.map(nn):void 0}}function Mb(e){return Vb(e)}function Vb(e,t){return e==null?e:{count:y(e,"count")?e.count:void 0,next:y(e,"next")?e.next:void 0,previous:y(e,"previous")?e.previous:void 0,results:y(e,"results")?e.results.map(Jr):void 0}}function qb(e){return zb(e)}function zb(e,t){return e==null?e:{count:y(e,"count")?e.count:void 0,next:y(e,"next")?e.next:void 0,previous:y(e,"previous")?e.previous:void 0,results:y(e,"results")?e.results.map(Gi):void 0}}function Hb(e){return Wb(e)}function Wb(e,t){return e==null?e:{count:y(e,"count")?e.count:void 0,next:y(e,"next")?e.next:void 0,previous:y(e,"previous")?e.previous:void 0,results:y(e,"results")?e.results.map(En):void 0}}function Jb(e){return Gb(e)}function Gb(e,t){return e==null?e:{count:y(e,"count")?e.count:void 0,next:y(e,"next")?e.next:void 0,previous:y(e,"previous")?e.previous:void 0,results:y(e,"results")?e.results.map(Eh):void 0}}function zt(e){return Kb(e)}function Kb(e,t){return e==null?e:{id:e.id,name:e.name,fileDownload:e.file_download,preview:e.preview}}function At(e){if(e!==void 0)return e===null?null:{name:e.name}}function Ki(e){return Zb(e)}function Zb(e,t){return e==null?e:{id:e.id,name:y(e,"name")?e.name:void 0,instruction:y(e,"instruction")?e.instruction:void 0,ingredients:e.ingredients.map(Gi),instructionsMarkdown:e.instructions_markdown,time:y(e,"time")?e.time:void 0,order:y(e,"order")?e.order:void 0,showAsHeader:y(e,"show_as_header")?e.show_as_header:void 0,file:y(e,"file")?zt(e.file):void 0,stepRecipe:y(e,"step_recipe")?e.step_recipe:void 0,stepRecipeData:e.step_recipe_data,numrecipe:e.numrecipe,showIngredientsTable:y(e,"show_ingredients_table")?e.show_ingredients_table:void 0}}function Oa(e){if(e!==void 0)return e===null?null:{name:e.name,instruction:e.instruction,ingredients:e.ingredients.map(xa),time:e.time,order:e.order,show_as_header:e.showAsHeader,file:At(e.file),step_recipe:e.stepRecipe,show_ingredients_table:e.showIngredientsTable}}function Yb(e){return Xb(e)}function Xb(e,t){return e==null?e:{count:y(e,"count")?e.count:void 0,next:y(e,"next")?e.next:void 0,previous:y(e,"previous")?e.previous:void 0,results:y(e,"results")?e.results.map(Ki):void 0}}function Zi(e){return Qb(e)}function Qb(e,t){return e==null?e:{id:e.id,category:Qn(e.category),supermarket:e.supermarket,order:y(e,"order")?e.order:void 0}}function hd(e){if(e!==void 0)return e===null?null:{category:Ci(e.category),supermarket:e.supermarket,order:e.order}}function jb(e){return eS(e)}function eS(e,t){return e==null?e:{count:y(e,"count")?e.count:void 0,next:y(e,"next")?e.next:void 0,previous:y(e,"previous")?e.previous:void 0,results:y(e,"results")?e.results.map(Zi):void 0}}function Ah(e){return tS(e)}function tS(e,t){return e==null?e:{id:e.id,sync:e.sync,status:e.status,msg:y(e,"msg")?e.msg:void 0,createdAt:new Date(e.created_at)}}function nS(e){return iS(e)}function iS(e,t){return e==null?e:{count:y(e,"count")?e.count:void 0,next:y(e,"next")?e.next:void 0,previous:y(e,"previous")?e.previous:void 0,results:y(e,"results")?e.results.map(Ah):void 0}}function rS(e){return oS(e)}function oS(e,t){return e==null?e:{count:y(e,"count")?e.count:void 0,next:y(e,"next")?e.next:void 0,previous:y(e,"previous")?e.previous:void 0,results:y(e,"results")?e.results.map(rn):void 0}}function wl(e){return aS(e)}function aS(e,t){return e==null?e:{id:e.id,user:Zt(e.user),space:e.space,groups:e.groups.map(Ia),active:y(e,"active")?e.active:void 0,internalNote:y(e,"internal_note")?e.internal_note:void 0,inviteLink:e.invite_link,createdAt:new Date(e.created_at),updatedAt:new Date(e.updated_at)}}function sS(e){return lS(e)}function lS(e,t){return e==null?e:{count:y(e,"count")?e.count:void 0,next:y(e,"next")?e.next:void 0,previous:y(e,"previous")?e.previous:void 0,results:y(e,"results")?e.results.map(wl):void 0}}function Gr(e){return uS(e)}function uS(e,t){return e==null?e:{id:e.id,recipe:e.recipe,createdBy:e.created_by,createdAt:new Date(e.created_at)}}function md(e){if(e!==void 0)return e===null?null:{recipe:e.recipe}}function cS(e){return dS(e)}function dS(e,t){return e==null?e:{count:y(e,"count")?e.count:void 0,next:y(e,"next")?e.next:void 0,previous:y(e,"previous")?e.previous:void 0,results:y(e,"results")?e.results.map(Gr):void 0}}function fS(e){if(e!==void 0)return e===null?null:{expires:e.expires===void 0?void 0:e.expires.toISOString(),scope:e.scope}}function pS(e){if(e!==void 0)return e===null?null:{type:e.type,name:e.name,description:e.description,param_1:e.param1,param_2:e.param2,param_3:e.param3,order:e.order,disabled:e.disabled}}function hS(e){if(e!==void 0)return e===null?null:{url:e.url,html:e.html}}function mS(e){if(e!==void 0)return e===null?null:{name:e.name,url:e.url,token:e.token,todo_entity:e.todoEntity,enabled:e.enabled,on_shopping_list_entry_created_enabled:e.onShoppingListEntryCreatedEnabled,on_shopping_list_entry_updated_enabled:e.onShoppingListEntryUpdatedEnabled,on_shopping_list_entry_deleted_enabled:e.onShoppingListEntryDeletedEnabled}}function gS(e){if(e!==void 0)return e===null?null:{recipe:e.recipe,servings:e.servings,rating:e.rating,comment:e.comment,created_at:e.createdAt===void 0?void 0:e.createdAt.toISOString()}}function vS(e){if(e!==void 0)return e===null?null:{name:e.name,search:e.search,shared:e.shared===void 0?void 0:e.shared.map(wn)}}function yS(e){if(e!==void 0)return e===null?null:{type:e.type,msg:e.msg,running:e.running,total_recipes:e.totalRecipes,exported_recipes:e.exportedRecipes,cache_duration:e.cacheDuration,possibly_not_expired:e.possiblyNotExpired}}function wS(e){if(e!==void 0)return e===null?null:{name:e.name,plural_name:e.pluralName,description:e.description,recipe:Th(e.recipe),url:e.url,properties:e.properties===void 0?void 0:e.properties===null?null:e.properties.map(sr),properties_food_amount:e.propertiesFoodAmount,properties_food_unit:Dt(e.propertiesFoodUnit),fdc_id:e.fdcId,food_onhand:e.foodOnhand,supermarket_category:Ci(e.supermarketCategory),inherit_fields:e.inheritFields===void 0?void 0:e.inheritFields===null?null:e.inheritFields.map(go),ignore_shopping:e.ignoreShopping,substitute:e.substitute===void 0?void 0:e.substitute===null?null:e.substitute.map(_h),substitute_siblings:e.substituteSiblings,substitute_children:e.substituteChildren,child_inherit_fields:e.childInheritFields===void 0?void 0:e.childInheritFields===null?null:e.childInheritFields.map(go),open_data_slug:e.openDataSlug}}function bS(e){if(e!==void 0)return e===null?null:{type:e.type,msg:e.msg,running:e.running,total_recipes:e.totalRecipes,imported_recipes:e.importedRecipes}}function SS(e){if(e!==void 0)return e===null?null:{food:on(e.food),unit:Dt(e.unit),amount:e.amount,note:e.note,order:e.order,is_header:e.isHeader,no_amount:e.noAmount,original_text:e.originalText,always_use_plural_unit:e.alwaysUsePluralUnit,always_use_plural_food:e.alwaysUsePluralFood}}function CS(e){if(e!==void 0)return e===null?null:{email:e.email,group:pu(e.group),valid_until:e.validUntil===void 0?void 0:e.validUntil.toISOString().substring(0,10),used_by:e.usedBy,reusable:e.reusable,internal_note:e.internalNote}}function RS(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description}}function _S(e){if(e!==void 0)return e===null?null:{title:e.title,recipe:Ih(e.recipe),servings:e.servings,note:e.note,from_date:e.fromDate===void 0?void 0:e.fromDate.toISOString().substring(0,10),to_date:e.toDate===void 0?void 0:e.toDate.toISOString().substring(0,10),meal_type:Aa(e.mealType),shared:e.shared===void 0?void 0:e.shared===null?null:e.shared.map(wn)}}function kS(e){if(e!==void 0)return e===null?null:{name:e.name,order:e.order,color:e.color,default:e._default}}function TS(e){if(e!==void 0)return e===null?null:{property_amount:e.propertyAmount,property_type:Ea(e.propertyType)}}function ES(e){if(e!==void 0)return e===null?null:{id:e.id,name:e.name,unit:e.unit,description:e.description,order:e.order,open_data_slug:e.openDataSlug,fdc_id:e.fdcId}}function IS(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description,keywords:e.keywords===void 0?void 0:e.keywords.map(Ji),steps:e.steps===void 0?void 0:e.steps.map(Oa),working_time:e.workingTime,waiting_time:e.waitingTime,source_url:e.sourceUrl,internal:e.internal,show_ingredient_overview:e.showIngredientOverview,nutrition:xh(e.nutrition),properties:e.properties===void 0?void 0:e.properties.map(sr),servings:e.servings,file_path:e.filePath,servings_text:e.servingsText,private:e._private,shared:e.shared===void 0?void 0:e.shared.map(wn)}}function xS(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description,shared:e.shared===void 0?void 0:e.shared.map(wn),filter:Ta(e.filter),order:e.order}}function AS(e){if(e!==void 0)return e===null?null:{book:e.book,recipe:e.recipe}}function Hi(e){return OS(e)}function OS(e,t){return e==null?e:{id:e.id,recipeName:e.recipe_name,name:e.name,recipe:y(e,"recipe")?e.recipe:void 0,mealplan:y(e,"mealplan")?e.mealplan:void 0,servings:e.servings,mealplanNote:e.mealplan_note,mealplanFromDate:new Date(e.mealplan_from_date),mealplanType:e.mealplan_type}}function gd(e){if(e!==void 0)return e===null?null:{recipe:e.recipe,mealplan:e.mealplan,servings:e.servings}}function LS(e){if(e!==void 0)return e===null?null:{list_recipe:e.listRecipe,food:on(e.food),unit:Dt(e.unit),amount:e.amount,order:e.order,checked:e.checked,completed_at:e.completedAt===void 0?void 0:e.completedAt===null?null:e.completedAt.toISOString(),delay_until:e.delayUntil===void 0?void 0:e.delayUntil===null?null:e.delayUntil.toISOString()}}function PS(e){if(e!==void 0)return e===null?null:{recipe:e.recipe,mealplan:e.mealplan,servings:e.servings}}function US(e){return FS(e)}function FS(e,t){return e}function DS(e){return NS(e)}function NS(e,t){return e}function BS(e){if(e!==void 0)return e===null?null:{name:e.name,message:e.message,food_inherit:e.foodInherit===void 0?void 0:e.foodInherit.map(go),image:At(e.image),nav_logo:At(e.navLogo),space_theme:e.spaceTheme,custom_space_theme:At(e.customSpaceTheme),nav_bg_color:e.navBgColor,nav_text_color:e.navTextColor,logo_color_32:At(e.logoColor32),logo_color_128:At(e.logoColor128),logo_color_144:At(e.logoColor144),logo_color_180:At(e.logoColor180),logo_color_192:At(e.logoColor192),logo_color_512:At(e.logoColor512),logo_color_svg:At(e.logoColorSvg)}}function $S(e){if(e!==void 0)return e===null?null:{name:e.name,instruction:e.instruction,ingredients:e.ingredients===void 0?void 0:e.ingredients.map(xa),time:e.time,order:e.order,show_as_header:e.showAsHeader,file:At(e.file),step_recipe:e.stepRecipe,show_ingredients_table:e.showIngredientsTable}}function MS(e){if(e!==void 0)return e===null?null:{name:e.name,method:e.method,username:e.username,password:e.password,token:e.token}}function VS(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description,open_data_slug:e.openDataSlug}}function qS(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description}}function zS(e){if(e!==void 0)return e===null?null:{category:Ci(e.category),supermarket:e.supermarket,order:e.order}}function HS(e){if(e!==void 0)return e===null?null:{storage:e.storage,path:e.path,active:e.active,last_checked:e.lastChecked===void 0?void 0:e.lastChecked===null?null:e.lastChecked.toISOString()}}function WS(e){if(e!==void 0)return e===null?null:{name:e.name,plural_name:e.pluralName,description:e.description,base_unit:e.baseUnit,open_data_slug:e.openDataSlug}}function JS(e){if(e!==void 0)return e===null?null:{base_amount:e.baseAmount,base_unit:Dt(e.baseUnit),converted_amount:e.convertedAmount,converted_unit:Dt(e.convertedUnit),food:on(e.food),open_data_slug:e.openDataSlug}}function GS(e){if(e!==void 0)return e===null?null:{first_name:e.firstName,last_name:e.lastName}}function KS(e){return ZS(e)}function ZS(e,t){return e}function YS(e){return XS(e)}function XS(e,t){return e}function QS(e){if(e!==void 0)return e===null?null:{user:e.user,image:At(e.image),theme:e.theme,nav_bg_color:e.navBgColor,nav_text_color:e.navTextColor,nav_show_logo:e.navShowLogo,default_unit:e.defaultUnit,default_page:e.defaultPage,use_fractions:e.useFractions,use_kj:e.useKj,plan_share:e.planShare===void 0?void 0:e.planShare===null?null:e.planShare.map(wn),nav_sticky:e.navSticky,ingredient_decimals:e.ingredientDecimals,comments:e.comments,shopping_auto_sync:e.shoppingAutoSync,mealplan_autoadd_shopping:e.mealplanAutoaddShopping,default_delay:e.defaultDelay,mealplan_autoinclude_related:e.mealplanAutoincludeRelated,mealplan_autoexclude_onhand:e.mealplanAutoexcludeOnhand,shopping_share:e.shoppingShare===void 0?void 0:e.shoppingShare===null?null:e.shoppingShare.map(wn),shopping_recent_days:e.shoppingRecentDays,csv_delim:e.csvDelim,csv_prefix:e.csvPrefix,filter_to_supermarket:e.filterToSupermarket,shopping_add_onhand:e.shoppingAddOnhand,left_handed:e.leftHanded,show_step_ingredients:e.showStepIngredients}}function jS(e){if(e!==void 0)return e===null?null:{groups:e.groups===void 0?void 0:e.groups.map(pu),active:e.active,internal_note:e.internalNote}}function eC(e){if(e!==void 0)return e===null?null:{recipe:e.recipe}}function Xo(e){return tC(e)}function tC(e,t){return e==null?e:{id:e.id,name:e.name,description:y(e,"description")?e.description:void 0,image:e.image,keywords:y(e,"keywords")?e.keywords.map(En):void 0,steps:e.steps.map(Ki),workingTime:y(e,"working_time")?e.working_time:void 0,waitingTime:y(e,"waiting_time")?e.waiting_time:void 0,createdBy:e.created_by,createdAt:new Date(e.created_at),updatedAt:new Date(e.updated_at),sourceUrl:y(e,"source_url")?e.source_url:void 0,internal:y(e,"internal")?e.internal:void 0,showIngredientOverview:y(e,"show_ingredient_overview")?e.show_ingredient_overview:void 0,nutrition:y(e,"nutrition")?Ib(e.nutrition):void 0,properties:y(e,"properties")?e.properties.map(mi):void 0,foodProperties:e.food_properties,servings:y(e,"servings")?e.servings:void 0,filePath:y(e,"file_path")?e.file_path:void 0,servingsText:y(e,"servings_text")?e.servings_text:void 0,rating:e.rating,lastCooked:e.last_cooked===null?null:new Date(e.last_cooked),_private:y(e,"private")?e.private:void 0,shared:y(e,"shared")?e.shared.map(Zt):void 0}}function vd(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description,keywords:e.keywords===void 0?void 0:e.keywords.map(Ji),steps:e.steps.map(Oa),working_time:e.workingTime,waiting_time:e.waitingTime,source_url:e.sourceUrl,internal:e.internal,show_ingredient_overview:e.showIngredientOverview,nutrition:xh(e.nutrition),properties:e.properties===void 0?void 0:e.properties.map(sr),servings:e.servings,file_path:e.filePath,servings_text:e.servingsText,private:e._private,shared:e.shared===void 0?void 0:e.shared.map(wn)}}function Or(e){return nC(e)}function nC(e,t){return e==null?e:{id:e.id,name:e.name,description:y(e,"description")?e.description:void 0,shared:e.shared.map(Zt),createdBy:e.created_by,filter:y(e,"filter")?Wi(e.filter):void 0,order:y(e,"order")?e.order:void 0}}function yd(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description,shared:e.shared.map(wn),filter:Ta(e.filter),order:e.order}}function Lr(e){return iC(e)}function iC(e,t){return e==null?e:{id:e.id,book:e.book,bookContent:e.book_content,recipe:e.recipe,recipeContent:e.recipe_content}}function wd(e){if(e!==void 0)return e===null?null:{book:e.book,recipe:e.recipe}}function rC(e){return oC(e)}function oC(e,t){return e==null?e:{id:e.id,name:e.name,image:y(e,"image")?e.image:void 0}}function aC(e){return sC(e)}function sC(e,t){return e==null?e:{image:y(e,"image")?e.image:void 0,imageUrl:y(e,"image_url")?e.image_url:void 0}}function lC(e){return uC(e)}function uC(e,t){return e==null?e:{id:e.id,listRecipe:y(e,"list_recipe")?e.list_recipe:void 0,ingredients:y(e,"ingredients")?e.ingredients:void 0,servings:y(e,"servings")?e.servings:void 0}}function cC(e){if(e!==void 0)return e===null?null:{list_recipe:e.listRecipe,ingredients:e.ingredients,servings:e.servings}}function Pr(e){return dC(e)}function dC(e,t){return e==null?e:{id:e.id,listRecipe:y(e,"list_recipe")?e.list_recipe:void 0,food:nn(e.food),unit:y(e,"unit")?rn(e.unit):void 0,amount:e.amount,order:y(e,"order")?e.order:void 0,checked:y(e,"checked")?e.checked:void 0,recipeMealplan:Hi(e.recipe_mealplan),createdBy:Zt(e.created_by),createdAt:new Date(e.created_at),updatedAt:new Date(e.updated_at),completedAt:y(e,"completed_at")?e.completed_at===null?null:new Date(e.completed_at):void 0,delayUntil:y(e,"delay_until")?e.delay_until===null?null:new Date(e.delay_until):void 0}}function bd(e){if(e!==void 0)return e===null?null:{list_recipe:e.listRecipe,food:on(e.food),unit:Dt(e.unit),amount:e.amount,order:e.order,checked:e.checked,completed_at:e.completedAt===void 0?void 0:e.completedAt===null?null:e.completedAt.toISOString(),delay_until:e.delayUntil===void 0?void 0:e.delayUntil===null?null:e.delayUntil.toISOString()}}function fC(e){return pC(e)}function pC(e,t){return e==null?e:{ids:e.ids,checked:e.checked}}function hC(e){if(e!==void 0)return e===null?null:{ids:e.ids,checked:e.checked}}function Ns(e){return mC(e)}function mC(e,t){return e==null?e:{id:e.id,name:y(e,"name")?e.name:void 0,createdBy:e.created_by,createdAt:new Date(e.created_at),message:y(e,"message")?e.message:void 0,maxRecipes:e.max_recipes,maxFileStorageMb:e.max_file_storage_mb,maxUsers:e.max_users,allowSharing:e.allow_sharing,demo:e.demo,foodInherit:e.food_inherit.map(mo),userCount:e.user_count,recipeCount:e.recipe_count,fileSizeMb:e.file_size_mb,image:y(e,"image")?zt(e.image):void 0,navLogo:y(e,"nav_logo")?zt(e.nav_logo):void 0,spaceTheme:y(e,"space_theme")?DS(e.space_theme):void 0,customSpaceTheme:y(e,"custom_space_theme")?zt(e.custom_space_theme):void 0,navBgColor:y(e,"nav_bg_color")?e.nav_bg_color:void 0,navTextColor:y(e,"nav_text_color")?US(e.nav_text_color):void 0,logoColor32:y(e,"logo_color_32")?zt(e.logo_color_32):void 0,logoColor128:y(e,"logo_color_128")?zt(e.logo_color_128):void 0,logoColor144:y(e,"logo_color_144")?zt(e.logo_color_144):void 0,logoColor180:y(e,"logo_color_180")?zt(e.logo_color_180):void 0,logoColor192:y(e,"logo_color_192")?zt(e.logo_color_192):void 0,logoColor512:y(e,"logo_color_512")?zt(e.logo_color_512):void 0,logoColorSvg:y(e,"logo_color_svg")?zt(e.logo_color_svg):void 0}}function Ur(e){return gC(e)}function gC(e,t){return e==null?e:{id:e.id,name:e.name,method:y(e,"method")?Tb(e.method):void 0,username:y(e,"username")?e.username:void 0,password:y(e,"password")?e.password:void 0,token:y(e,"token")?e.token:void 0,createdBy:e.created_by}}function Sd(e){if(e!==void 0)return e===null?null:{name:e.name,method:e.method,username:e.username,password:e.password,token:e.token}}function Fr(e){return vC(e)}function vC(e,t){return e==null?e:{id:e.id,name:e.name,description:y(e,"description")?e.description:void 0,categoryToSupermarket:e.category_to_supermarket.map(Zi),openDataSlug:y(e,"open_data_slug")?e.open_data_slug:void 0}}function Cd(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description,open_data_slug:e.openDataSlug}}function Dr(e){return yC(e)}function yC(e,t){return e==null?e:{id:e.id,storage:e.storage,path:y(e,"path")?e.path:void 0,active:y(e,"active")?e.active:void 0,lastChecked:y(e,"last_checked")?e.last_checked===null?null:new Date(e.last_checked):void 0,createdAt:new Date(e.created_at),updatedAt:new Date(e.updated_at)}}function Rd(e){if(e!==void 0)return e===null?null:{storage:e.storage,path:e.path,active:e.active,last_checked:e.lastChecked===void 0?void 0:e.lastChecked===null?null:e.lastChecked.toISOString()}}function Nr(e){return wC(e)}function wC(e,t){return e==null?e:{id:e.id,name:e.name,baseAmount:e.base_amount,baseUnit:rn(e.base_unit),convertedAmount:e.converted_amount,convertedUnit:rn(e.converted_unit),food:y(e,"food")?nn(e.food):void 0,openDataSlug:y(e,"open_data_slug")?e.open_data_slug:void 0}}function _d(e){if(e!==void 0)return e===null?null:{base_amount:e.baseAmount,base_unit:Dt(e.baseUnit),converted_amount:e.convertedAmount,converted_unit:Dt(e.convertedUnit),food:on(e.food),open_data_slug:e.openDataSlug}}function Br(e){return bC(e)}function bC(e,t){return e==null?e:{id:e.id,name:e.name,file:e.file,fileDownload:e.file_download,preview:e.preview,fileSizeKb:e.file_size_kb}}function Bs(e){return SC(e)}function SC(e,t){return e==null?e:{user:e.user,image:y(e,"image")?zt(e.image):void 0,theme:y(e,"theme")?KS(e.theme):void 0,navBgColor:y(e,"nav_bg_color")?e.nav_bg_color:void 0,navTextColor:y(e,"nav_text_color")?YS(e.nav_text_color):void 0,navShowLogo:y(e,"nav_show_logo")?e.nav_show_logo:void 0,defaultUnit:y(e,"default_unit")?e.default_unit:void 0,defaultPage:y(e,"default_page")?ib(e.default_page):void 0,useFractions:y(e,"use_fractions")?e.use_fractions:void 0,useKj:y(e,"use_kj")?e.use_kj:void 0,planShare:y(e,"plan_share")?e.plan_share===null?null:e.plan_share.map(Zt):void 0,navSticky:y(e,"nav_sticky")?e.nav_sticky:void 0,ingredientDecimals:y(e,"ingredient_decimals")?e.ingredient_decimals:void 0,comments:y(e,"comments")?e.comments:void 0,shoppingAutoSync:y(e,"shopping_auto_sync")?e.shopping_auto_sync:void 0,mealplanAutoaddShopping:y(e,"mealplan_autoadd_shopping")?e.mealplan_autoadd_shopping:void 0,foodInheritDefault:e.food_inherit_default,defaultDelay:y(e,"default_delay")?e.default_delay:void 0,mealplanAutoincludeRelated:y(e,"mealplan_autoinclude_related")?e.mealplan_autoinclude_related:void 0,mealplanAutoexcludeOnhand:y(e,"mealplan_autoexclude_onhand")?e.mealplan_autoexclude_onhand:void 0,shoppingShare:y(e,"shopping_share")?e.shopping_share===null?null:e.shopping_share.map(Zt):void 0,shoppingRecentDays:y(e,"shopping_recent_days")?e.shopping_recent_days:void 0,csvDelim:y(e,"csv_delim")?e.csv_delim:void 0,csvPrefix:y(e,"csv_prefix")?e.csv_prefix:void 0,filterToSupermarket:y(e,"filter_to_supermarket")?e.filter_to_supermarket:void 0,shoppingAddOnhand:y(e,"shopping_add_onhand")?e.shopping_add_onhand:void 0,leftHanded:y(e,"left_handed")?e.left_handed:void 0,showStepIngredients:y(e,"show_step_ingredients")?e.show_step_ingredients:void 0,foodChildrenExist:e.food_children_exist}}class us extends yl{async apiAccessTokenCreateRaw(t,n){if(t.accessToken===null||t.accessToken===void 0)throw new w("accessToken","Required parameter requestParameters.accessToken was null or undefined when calling apiAccessTokenCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/access-token/",method:"POST",headers:r,query:i,body:od(t.accessToken)},n);return new _(o,a=>Er(a))}async apiAccessTokenCreate(t,n){return await(await this.apiAccessTokenCreateRaw(t,n)).value()}async apiAccessTokenDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiAccessTokenDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/access-token/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiAccessTokenDestroy(t,n){await this.apiAccessTokenDestroyRaw(t,n)}async apiAccessTokenListRaw(t){const n={},i={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(i.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const r=await this.request({path:"/api/access-token/",method:"GET",headers:i,query:n},t);return new _(r,o=>o.map(Er))}async apiAccessTokenList(t){return await(await this.apiAccessTokenListRaw(t)).value()}async apiAccessTokenPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiAccessTokenPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/access-token/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:fS(t.patchedAccessToken)},n);return new _(o,a=>Er(a))}async apiAccessTokenPartialUpdate(t,n){return await(await this.apiAccessTokenPartialUpdateRaw(t,n)).value()}async apiAccessTokenRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiAccessTokenRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/access-token/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Er(a))}async apiAccessTokenRetrieve(t,n){return await(await this.apiAccessTokenRetrieveRaw(t,n)).value()}async apiAccessTokenUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiAccessTokenUpdate.");if(t.accessToken===null||t.accessToken===void 0)throw new w("accessToken","Required parameter requestParameters.accessToken was null or undefined when calling apiAccessTokenUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/access-token/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:od(t.accessToken)},n);return new _(o,a=>Er(a))}async apiAccessTokenUpdate(t,n){return await(await this.apiAccessTokenUpdateRaw(t,n)).value()}async apiAutoPlanCreateRaw(t){const n={},i={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(i.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const r=await this.request({path:"/api/auto-plan/",method:"POST",headers:i,query:n},t);return new Re(r)}async apiAutoPlanCreate(t){await this.apiAutoPlanCreateRaw(t)}async apiAutomationCreateRaw(t,n){if(t.automation===null||t.automation===void 0)throw new w("automation","Required parameter requestParameters.automation was null or undefined when calling apiAutomationCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/automation/",method:"POST",headers:r,query:i,body:ad(t.automation)},n);return new _(o,a=>zr(a))}async apiAutomationCreate(t,n){return await(await this.apiAutomationCreateRaw(t,n)).value()}async apiAutomationDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiAutomationDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/automation/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiAutomationDestroy(t,n){await this.apiAutomationDestroyRaw(t,n)}async apiAutomationListRaw(t,n){const i={};t.automationType!==void 0&&(i.automation_type=t.automationType),t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/automation/",method:"GET",headers:r,query:i},n);return new _(o,a=>Ab(a))}async apiAutomationList(t={},n){return await(await this.apiAutomationListRaw(t,n)).value()}async apiAutomationPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiAutomationPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/automation/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:pS(t.patchedAutomation)},n);return new _(o,a=>zr(a))}async apiAutomationPartialUpdate(t,n){return await(await this.apiAutomationPartialUpdateRaw(t,n)).value()}async apiAutomationRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiAutomationRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/automation/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>zr(a))}async apiAutomationRetrieve(t,n){return await(await this.apiAutomationRetrieveRaw(t,n)).value()}async apiAutomationUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiAutomationUpdate.");if(t.automation===null||t.automation===void 0)throw new w("automation","Required parameter requestParameters.automation was null or undefined when calling apiAutomationUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/automation/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:ad(t.automation)},n);return new _(o,a=>zr(a))}async apiAutomationUpdate(t,n){return await(await this.apiAutomationUpdateRaw(t,n)).value()}async apiBookmarkletImportCreateRaw(t,n){if(t.bookmarkletImport===null||t.bookmarkletImport===void 0)throw new w("bookmarkletImport","Required parameter requestParameters.bookmarkletImport was null or undefined when calling apiBookmarkletImportCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/bookmarklet-import/",method:"POST",headers:r,query:i,body:sd(t.bookmarkletImport)},n);return new _(o,a=>Yo(a))}async apiBookmarkletImportCreate(t,n){return await(await this.apiBookmarkletImportCreateRaw(t,n)).value()}async apiBookmarkletImportDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiBookmarkletImportDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/bookmarklet-import/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiBookmarkletImportDestroy(t,n){await this.apiBookmarkletImportDestroyRaw(t,n)}async apiBookmarkletImportListRaw(t){const n={},i={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(i.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const r=await this.request({path:"/api/bookmarklet-import/",method:"GET",headers:i,query:n},t);return new _(r,o=>o.map(X0))}async apiBookmarkletImportList(t){return await(await this.apiBookmarkletImportListRaw(t)).value()}async apiBookmarkletImportPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiBookmarkletImportPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/bookmarklet-import/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:hS(t.patchedBookmarkletImport)},n);return new _(o,a=>Yo(a))}async apiBookmarkletImportPartialUpdate(t,n){return await(await this.apiBookmarkletImportPartialUpdateRaw(t,n)).value()}async apiBookmarkletImportRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiBookmarkletImportRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/bookmarklet-import/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Yo(a))}async apiBookmarkletImportRetrieve(t,n){return await(await this.apiBookmarkletImportRetrieveRaw(t,n)).value()}async apiBookmarkletImportUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiBookmarkletImportUpdate.");if(t.bookmarkletImport===null||t.bookmarkletImport===void 0)throw new w("bookmarkletImport","Required parameter requestParameters.bookmarkletImport was null or undefined when calling apiBookmarkletImportUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/bookmarklet-import/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:sd(t.bookmarkletImport)},n);return new _(o,a=>Yo(a))}async apiBookmarkletImportUpdate(t,n){return await(await this.apiBookmarkletImportUpdateRaw(t,n)).value()}async apiConnectorConfigCreateRaw(t,n){if(t.connectorConfigConfig===null||t.connectorConfigConfig===void 0)throw new w("connectorConfigConfig","Required parameter requestParameters.connectorConfigConfig was null or undefined when calling apiConnectorConfigCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/connector-config/",method:"POST",headers:r,query:i,body:ld(t.connectorConfigConfig)},n);return new _(o,a=>Ir(a))}async apiConnectorConfigCreate(t,n){return await(await this.apiConnectorConfigCreateRaw(t,n)).value()}async apiConnectorConfigDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiConnectorConfigDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/connector-config/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiConnectorConfigDestroy(t,n){await this.apiConnectorConfigDestroyRaw(t,n)}async apiConnectorConfigListRaw(t){const n={},i={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(i.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const r=await this.request({path:"/api/connector-config/",method:"GET",headers:i,query:n},t);return new _(r,o=>o.map(Ir))}async apiConnectorConfigList(t){return await(await this.apiConnectorConfigListRaw(t)).value()}async apiConnectorConfigPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiConnectorConfigPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/connector-config/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:mS(t.patchedConnectorConfigConfig)},n);return new _(o,a=>Ir(a))}async apiConnectorConfigPartialUpdate(t,n){return await(await this.apiConnectorConfigPartialUpdateRaw(t,n)).value()}async apiConnectorConfigRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiConnectorConfigRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/connector-config/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Ir(a))}async apiConnectorConfigRetrieve(t,n){return await(await this.apiConnectorConfigRetrieveRaw(t,n)).value()}async apiConnectorConfigUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiConnectorConfigUpdate.");if(t.connectorConfigConfig===null||t.connectorConfigConfig===void 0)throw new w("connectorConfigConfig","Required parameter requestParameters.connectorConfigConfig was null or undefined when calling apiConnectorConfigUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/connector-config/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:ld(t.connectorConfigConfig)},n);return new _(o,a=>Ir(a))}async apiConnectorConfigUpdate(t,n){return await(await this.apiConnectorConfigUpdateRaw(t,n)).value()}async apiCookLogCreateRaw(t,n){if(t.cookLog===null||t.cookLog===void 0)throw new w("cookLog","Required parameter requestParameters.cookLog was null or undefined when calling apiCookLogCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/cook-log/",method:"POST",headers:r,query:i,body:ud(t.cookLog)},n);return new _(o,a=>Hr(a))}async apiCookLogCreate(t,n){return await(await this.apiCookLogCreateRaw(t,n)).value()}async apiCookLogDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiCookLogDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/cook-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiCookLogDestroy(t,n){await this.apiCookLogDestroyRaw(t,n)}async apiCookLogListRaw(t,n){const i={};t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/cook-log/",method:"GET",headers:r,query:i},n);return new _(o,a=>Lb(a))}async apiCookLogList(t={},n){return await(await this.apiCookLogListRaw(t,n)).value()}async apiCookLogPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiCookLogPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/cook-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:gS(t.patchedCookLog)},n);return new _(o,a=>Hr(a))}async apiCookLogPartialUpdate(t,n){return await(await this.apiCookLogPartialUpdateRaw(t,n)).value()}async apiCookLogRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiCookLogRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/cook-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Hr(a))}async apiCookLogRetrieve(t,n){return await(await this.apiCookLogRetrieveRaw(t,n)).value()}async apiCookLogUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiCookLogUpdate.");if(t.cookLog===null||t.cookLog===void 0)throw new w("cookLog","Required parameter requestParameters.cookLog was null or undefined when calling apiCookLogUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/cook-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:ud(t.cookLog)},n);return new _(o,a=>Hr(a))}async apiCookLogUpdate(t,n){return await(await this.apiCookLogUpdateRaw(t,n)).value()}async apiCustomFilterCreateRaw(t,n){if(t.customFilter===null||t.customFilter===void 0)throw new w("customFilter","Required parameter requestParameters.customFilter was null or undefined when calling apiCustomFilterCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/custom-filter/",method:"POST",headers:r,query:i,body:Ta(t.customFilter)},n);return new _(o,a=>Wi(a))}async apiCustomFilterCreate(t,n){return await(await this.apiCustomFilterCreateRaw(t,n)).value()}async apiCustomFilterDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiCustomFilterDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/custom-filter/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiCustomFilterDestroy(t,n){await this.apiCustomFilterDestroyRaw(t,n)}async apiCustomFilterListRaw(t,n){const i={};t.limit!==void 0&&(i.limit=t.limit),t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize),t.query!==void 0&&(i.query=t.query),t.random!==void 0&&(i.random=t.random),t.updatedAt!==void 0&&(i.updated_at=t.updatedAt);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/custom-filter/",method:"GET",headers:r,query:i},n);return new _(o,a=>Ub(a))}async apiCustomFilterList(t={},n){return await(await this.apiCustomFilterListRaw(t,n)).value()}async apiCustomFilterPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiCustomFilterPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/custom-filter/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:vS(t.patchedCustomFilter)},n);return new _(o,a=>Wi(a))}async apiCustomFilterPartialUpdate(t,n){return await(await this.apiCustomFilterPartialUpdateRaw(t,n)).value()}async apiCustomFilterRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiCustomFilterRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/custom-filter/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Wi(a))}async apiCustomFilterRetrieve(t,n){return await(await this.apiCustomFilterRetrieveRaw(t,n)).value()}async apiCustomFilterUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiCustomFilterUpdate.");if(t.customFilter===null||t.customFilter===void 0)throw new w("customFilter","Required parameter requestParameters.customFilter was null or undefined when calling apiCustomFilterUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/custom-filter/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Ta(t.customFilter)},n);return new _(o,a=>Wi(a))}async apiCustomFilterUpdate(t,n){return await(await this.apiCustomFilterUpdateRaw(t,n)).value()}async apiDownloadFileRetrieveRaw(t,n){if(t.fileId===null||t.fileId===void 0)throw new w("fileId","Required parameter requestParameters.fileId was null or undefined when calling apiDownloadFileRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/download-file/{file_id}/".replace("{file_id}",encodeURIComponent(String(t.fileId))),method:"GET",headers:r,query:i},n);return new Re(o)}async apiDownloadFileRetrieve(t,n){await this.apiDownloadFileRetrieveRaw(t,n)}async apiExportLogCreateRaw(t,n){if(t.exportLog===null||t.exportLog===void 0)throw new w("exportLog","Required parameter requestParameters.exportLog was null or undefined when calling apiExportLogCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/export-log/",method:"POST",headers:r,query:i,body:cd(t.exportLog)},n);return new _(o,a=>Wr(a))}async apiExportLogCreate(t,n){return await(await this.apiExportLogCreateRaw(t,n)).value()}async apiExportLogDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiExportLogDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/export-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiExportLogDestroy(t,n){await this.apiExportLogDestroyRaw(t,n)}async apiExportLogListRaw(t,n){const i={};t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/export-log/",method:"GET",headers:r,query:i},n);return new _(o,a=>Db(a))}async apiExportLogList(t={},n){return await(await this.apiExportLogListRaw(t,n)).value()}async apiExportLogPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiExportLogPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/export-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:yS(t.patchedExportLog)},n);return new _(o,a=>Wr(a))}async apiExportLogPartialUpdate(t,n){return await(await this.apiExportLogPartialUpdateRaw(t,n)).value()}async apiExportLogRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiExportLogRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/export-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Wr(a))}async apiExportLogRetrieve(t,n){return await(await this.apiExportLogRetrieveRaw(t,n)).value()}async apiExportLogUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiExportLogUpdate.");if(t.exportLog===null||t.exportLog===void 0)throw new w("exportLog","Required parameter requestParameters.exportLog was null or undefined when calling apiExportLogUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/export-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:cd(t.exportLog)},n);return new _(o,a=>Wr(a))}async apiExportLogUpdate(t,n){return await(await this.apiExportLogUpdateRaw(t,n)).value()}async apiFoodCreateRaw(t,n){if(t.food===null||t.food===void 0)throw new w("food","Required parameter requestParameters.food was null or undefined when calling apiFoodCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/food/",method:"POST",headers:r,query:i,body:on(t.food)},n);return new _(o,a=>nn(a))}async apiFoodCreate(t,n){return await(await this.apiFoodCreateRaw(t,n)).value()}async apiFoodDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiFoodDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/food/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiFoodDestroy(t,n){await this.apiFoodDestroyRaw(t,n)}async apiFoodFdcCreateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiFoodFdcCreate.");if(t.food===null||t.food===void 0)throw new w("food","Required parameter requestParameters.food was null or undefined when calling apiFoodFdcCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/food/{id}/fdc/".replace("{id}",encodeURIComponent(String(t.id))),method:"POST",headers:r,query:i,body:on(t.food)},n);return new _(o,a=>nn(a))}async apiFoodFdcCreate(t,n){return await(await this.apiFoodFdcCreateRaw(t,n)).value()}async apiFoodInheritFieldListRaw(t){const n={},i={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(i.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const r=await this.request({path:"/api/food-inherit-field/",method:"GET",headers:i,query:n},t);return new _(r,o=>o.map(mo))}async apiFoodInheritFieldList(t){return await(await this.apiFoodInheritFieldListRaw(t)).value()}async apiFoodInheritFieldRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiFoodInheritFieldRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/food-inherit-field/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>mo(a))}async apiFoodInheritFieldRetrieve(t,n){return await(await this.apiFoodInheritFieldRetrieveRaw(t,n)).value()}async apiFoodListRaw(t,n){const i={};t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/food/",method:"GET",headers:r,query:i},n);return new _(o,a=>Bb(a))}async apiFoodList(t={},n){return await(await this.apiFoodListRaw(t,n)).value()}async apiFoodMergeUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiFoodMergeUpdate.");if(t.target===null||t.target===void 0)throw new w("target","Required parameter requestParameters.target was null or undefined when calling apiFoodMergeUpdate.");if(t.food===null||t.food===void 0)throw new w("food","Required parameter requestParameters.food was null or undefined when calling apiFoodMergeUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/food/{id}/merge/{target}/".replace("{id}",encodeURIComponent(String(t.id))).replace("{target}",encodeURIComponent(String(t.target))),method:"PUT",headers:r,query:i,body:on(t.food)},n);return new _(o,a=>nn(a))}async apiFoodMergeUpdate(t,n){return await(await this.apiFoodMergeUpdateRaw(t,n)).value()}async apiFoodMoveUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiFoodMoveUpdate.");if(t.parent===null||t.parent===void 0)throw new w("parent","Required parameter requestParameters.parent was null or undefined when calling apiFoodMoveUpdate.");if(t.food===null||t.food===void 0)throw new w("food","Required parameter requestParameters.food was null or undefined when calling apiFoodMoveUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/food/{id}/move/{parent}/".replace("{id}",encodeURIComponent(String(t.id))).replace("{parent}",encodeURIComponent(String(t.parent))),method:"PUT",headers:r,query:i,body:on(t.food)},n);return new _(o,a=>nn(a))}async apiFoodMoveUpdate(t,n){return await(await this.apiFoodMoveUpdateRaw(t,n)).value()}async apiFoodPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiFoodPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/food/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:wS(t.patchedFood)},n);return new _(o,a=>nn(a))}async apiFoodPartialUpdate(t,n){return await(await this.apiFoodPartialUpdateRaw(t,n)).value()}async apiFoodPropertyCreateRaw(t,n){if(t.property===null||t.property===void 0)throw new w("property","Required parameter requestParameters.property was null or undefined when calling apiFoodPropertyCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/food-property/",method:"POST",headers:r,query:i,body:sr(t.property)},n);return new _(o,a=>mi(a))}async apiFoodPropertyCreate(t,n){return await(await this.apiFoodPropertyCreateRaw(t,n)).value()}async apiFoodPropertyDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiFoodPropertyDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/food-property/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiFoodPropertyDestroy(t,n){await this.apiFoodPropertyDestroyRaw(t,n)}async apiFoodPropertyListRaw(t){const n={},i={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(i.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const r=await this.request({path:"/api/food-property/",method:"GET",headers:i,query:n},t);return new _(r,o=>o.map(mi))}async apiFoodPropertyList(t){return await(await this.apiFoodPropertyListRaw(t)).value()}async apiFoodPropertyPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiFoodPropertyPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/food-property/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:TS(t.patchedProperty)},n);return new _(o,a=>mi(a))}async apiFoodPropertyPartialUpdate(t,n){return await(await this.apiFoodPropertyPartialUpdateRaw(t,n)).value()}async apiFoodPropertyRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiFoodPropertyRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/food-property/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>mi(a))}async apiFoodPropertyRetrieve(t,n){return await(await this.apiFoodPropertyRetrieveRaw(t,n)).value()}async apiFoodPropertyTypeCreateRaw(t,n){if(t.propertyType===null||t.propertyType===void 0)throw new w("propertyType","Required parameter requestParameters.propertyType was null or undefined when calling apiFoodPropertyTypeCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/food-property-type/",method:"POST",headers:r,query:i,body:Ea(t.propertyType)},n);return new _(o,a=>qi(a))}async apiFoodPropertyTypeCreate(t,n){return await(await this.apiFoodPropertyTypeCreateRaw(t,n)).value()}async apiFoodPropertyTypeDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiFoodPropertyTypeDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/food-property-type/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiFoodPropertyTypeDestroy(t,n){await this.apiFoodPropertyTypeDestroyRaw(t,n)}async apiFoodPropertyTypeListRaw(t){const n={},i={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(i.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const r=await this.request({path:"/api/food-property-type/",method:"GET",headers:i,query:n},t);return new _(r,o=>o.map(qi))}async apiFoodPropertyTypeList(t){return await(await this.apiFoodPropertyTypeListRaw(t)).value()}async apiFoodPropertyTypePartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiFoodPropertyTypePartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/food-property-type/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:ES(t.patchedPropertyType)},n);return new _(o,a=>qi(a))}async apiFoodPropertyTypePartialUpdate(t,n){return await(await this.apiFoodPropertyTypePartialUpdateRaw(t,n)).value()}async apiFoodPropertyTypeRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiFoodPropertyTypeRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/food-property-type/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>qi(a))}async apiFoodPropertyTypeRetrieve(t,n){return await(await this.apiFoodPropertyTypeRetrieveRaw(t,n)).value()}async apiFoodPropertyTypeUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiFoodPropertyTypeUpdate.");if(t.propertyType===null||t.propertyType===void 0)throw new w("propertyType","Required parameter requestParameters.propertyType was null or undefined when calling apiFoodPropertyTypeUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/food-property-type/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Ea(t.propertyType)},n);return new _(o,a=>qi(a))}async apiFoodPropertyTypeUpdate(t,n){return await(await this.apiFoodPropertyTypeUpdateRaw(t,n)).value()}async apiFoodPropertyUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiFoodPropertyUpdate.");if(t.property===null||t.property===void 0)throw new w("property","Required parameter requestParameters.property was null or undefined when calling apiFoodPropertyUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/food-property/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:sr(t.property)},n);return new _(o,a=>mi(a))}async apiFoodPropertyUpdate(t,n){return await(await this.apiFoodPropertyUpdateRaw(t,n)).value()}async apiFoodRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiFoodRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/food/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>nn(a))}async apiFoodRetrieve(t,n){return await(await this.apiFoodRetrieveRaw(t,n)).value()}async apiFoodUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiFoodUpdate.");if(t.food===null||t.food===void 0)throw new w("food","Required parameter requestParameters.food was null or undefined when calling apiFoodUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/food/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:on(t.food)},n);return new _(o,a=>nn(a))}async apiFoodUpdate(t,n){return await(await this.apiFoodUpdateRaw(t,n)).value()}async apiGroupListRaw(t){const n={},i={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(i.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const r=await this.request({path:"/api/group/",method:"GET",headers:i,query:n},t);return new _(r,o=>o.map(Ia))}async apiGroupList(t){return await(await this.apiGroupListRaw(t)).value()}async apiGroupRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiGroupRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/group/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Ia(a))}async apiGroupRetrieve(t,n){return await(await this.apiGroupRetrieveRaw(t,n)).value()}async apiImportCreateRaw(t){const n={},i={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(i.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const r=await this.request({path:"/api/import/",method:"POST",headers:i,query:n},t);return new Re(r)}async apiImportCreate(t){await this.apiImportCreateRaw(t)}async apiImportLogCreateRaw(t,n){if(t.importLog===null||t.importLog===void 0)throw new w("importLog","Required parameter requestParameters.importLog was null or undefined when calling apiImportLogCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/import-log/",method:"POST",headers:r,query:i,body:dd(t.importLog)},n);return new _(o,a=>Jr(a))}async apiImportLogCreate(t,n){return await(await this.apiImportLogCreateRaw(t,n)).value()}async apiImportLogDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiImportLogDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/import-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiImportLogDestroy(t,n){await this.apiImportLogDestroyRaw(t,n)}async apiImportLogListRaw(t,n){const i={};t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/import-log/",method:"GET",headers:r,query:i},n);return new _(o,a=>Mb(a))}async apiImportLogList(t={},n){return await(await this.apiImportLogListRaw(t,n)).value()}async apiImportLogPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiImportLogPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/import-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:bS(t.patchedImportLog)},n);return new _(o,a=>Jr(a))}async apiImportLogPartialUpdate(t,n){return await(await this.apiImportLogPartialUpdateRaw(t,n)).value()}async apiImportLogRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiImportLogRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/import-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Jr(a))}async apiImportLogRetrieve(t,n){return await(await this.apiImportLogRetrieveRaw(t,n)).value()}async apiImportLogUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiImportLogUpdate.");if(t.importLog===null||t.importLog===void 0)throw new w("importLog","Required parameter requestParameters.importLog was null or undefined when calling apiImportLogUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/import-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:dd(t.importLog)},n);return new _(o,a=>Jr(a))}async apiImportLogUpdate(t,n){return await(await this.apiImportLogUpdateRaw(t,n)).value()}async apiIngredientCreateRaw(t,n){if(t.ingredient===null||t.ingredient===void 0)throw new w("ingredient","Required parameter requestParameters.ingredient was null or undefined when calling apiIngredientCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/ingredient/",method:"POST",headers:r,query:i,body:xa(t.ingredient)},n);return new _(o,a=>Gi(a))}async apiIngredientCreate(t,n){return await(await this.apiIngredientCreateRaw(t,n)).value()}async apiIngredientDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiIngredientDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/ingredient/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiIngredientDestroy(t,n){await this.apiIngredientDestroyRaw(t,n)}async apiIngredientListRaw(t,n){const i={};t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/ingredient/",method:"GET",headers:r,query:i},n);return new _(o,a=>qb(a))}async apiIngredientList(t={},n){return await(await this.apiIngredientListRaw(t,n)).value()}async apiIngredientPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiIngredientPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/ingredient/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:SS(t.patchedIngredient)},n);return new _(o,a=>Gi(a))}async apiIngredientPartialUpdate(t,n){return await(await this.apiIngredientPartialUpdateRaw(t,n)).value()}async apiIngredientRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiIngredientRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/ingredient/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Gi(a))}async apiIngredientRetrieve(t,n){return await(await this.apiIngredientRetrieveRaw(t,n)).value()}async apiIngredientUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiIngredientUpdate.");if(t.ingredient===null||t.ingredient===void 0)throw new w("ingredient","Required parameter requestParameters.ingredient was null or undefined when calling apiIngredientUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/ingredient/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:xa(t.ingredient)},n);return new _(o,a=>Gi(a))}async apiIngredientUpdate(t,n){return await(await this.apiIngredientUpdateRaw(t,n)).value()}async apiInviteLinkCreateRaw(t,n){if(t.inviteLink===null||t.inviteLink===void 0)throw new w("inviteLink","Required parameter requestParameters.inviteLink was null or undefined when calling apiInviteLinkCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/invite-link/",method:"POST",headers:r,query:i,body:fd(t.inviteLink)},n);return new _(o,a=>xr(a))}async apiInviteLinkCreate(t,n){return await(await this.apiInviteLinkCreateRaw(t,n)).value()}async apiInviteLinkDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiInviteLinkDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/invite-link/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiInviteLinkDestroy(t,n){await this.apiInviteLinkDestroyRaw(t,n)}async apiInviteLinkListRaw(t,n){const i={};t.limit!==void 0&&(i.limit=t.limit),t.query!==void 0&&(i.query=t.query),t.random!==void 0&&(i.random=t.random),t.updatedAt!==void 0&&(i.updated_at=t.updatedAt);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/invite-link/",method:"GET",headers:r,query:i},n);return new _(o,a=>a.map(xr))}async apiInviteLinkList(t={},n){return await(await this.apiInviteLinkListRaw(t,n)).value()}async apiInviteLinkPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiInviteLinkPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/invite-link/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:CS(t.patchedInviteLink)},n);return new _(o,a=>xr(a))}async apiInviteLinkPartialUpdate(t,n){return await(await this.apiInviteLinkPartialUpdateRaw(t,n)).value()}async apiInviteLinkRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiInviteLinkRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/invite-link/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>xr(a))}async apiInviteLinkRetrieve(t,n){return await(await this.apiInviteLinkRetrieveRaw(t,n)).value()}async apiInviteLinkUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiInviteLinkUpdate.");if(t.inviteLink===null||t.inviteLink===void 0)throw new w("inviteLink","Required parameter requestParameters.inviteLink was null or undefined when calling apiInviteLinkUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/invite-link/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:fd(t.inviteLink)},n);return new _(o,a=>xr(a))}async apiInviteLinkUpdate(t,n){return await(await this.apiInviteLinkUpdateRaw(t,n)).value()}async apiKeywordCreateRaw(t,n){if(t.keyword===null||t.keyword===void 0)throw new w("keyword","Required parameter requestParameters.keyword was null or undefined when calling apiKeywordCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/keyword/",method:"POST",headers:r,query:i,body:Ji(t.keyword)},n);return new _(o,a=>En(a))}async apiKeywordCreate(t,n){return await(await this.apiKeywordCreateRaw(t,n)).value()}async apiKeywordDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiKeywordDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/keyword/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiKeywordDestroy(t,n){await this.apiKeywordDestroyRaw(t,n)}async apiKeywordListRaw(t,n){const i={};t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/keyword/",method:"GET",headers:r,query:i},n);return new _(o,a=>Hb(a))}async apiKeywordList(t={},n){return await(await this.apiKeywordListRaw(t,n)).value()}async apiKeywordMergeUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiKeywordMergeUpdate.");if(t.target===null||t.target===void 0)throw new w("target","Required parameter requestParameters.target was null or undefined when calling apiKeywordMergeUpdate.");if(t.keyword===null||t.keyword===void 0)throw new w("keyword","Required parameter requestParameters.keyword was null or undefined when calling apiKeywordMergeUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/keyword/{id}/merge/{target}/".replace("{id}",encodeURIComponent(String(t.id))).replace("{target}",encodeURIComponent(String(t.target))),method:"PUT",headers:r,query:i,body:Ji(t.keyword)},n);return new _(o,a=>En(a))}async apiKeywordMergeUpdate(t,n){return await(await this.apiKeywordMergeUpdateRaw(t,n)).value()}async apiKeywordMoveUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiKeywordMoveUpdate.");if(t.parent===null||t.parent===void 0)throw new w("parent","Required parameter requestParameters.parent was null or undefined when calling apiKeywordMoveUpdate.");if(t.keyword===null||t.keyword===void 0)throw new w("keyword","Required parameter requestParameters.keyword was null or undefined when calling apiKeywordMoveUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/keyword/{id}/move/{parent}/".replace("{id}",encodeURIComponent(String(t.id))).replace("{parent}",encodeURIComponent(String(t.parent))),method:"PUT",headers:r,query:i,body:Ji(t.keyword)},n);return new _(o,a=>En(a))}async apiKeywordMoveUpdate(t,n){return await(await this.apiKeywordMoveUpdateRaw(t,n)).value()}async apiKeywordPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiKeywordPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/keyword/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:RS(t.patchedKeyword)},n);return new _(o,a=>En(a))}async apiKeywordPartialUpdate(t,n){return await(await this.apiKeywordPartialUpdateRaw(t,n)).value()}async apiKeywordRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiKeywordRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/keyword/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>En(a))}async apiKeywordRetrieve(t,n){return await(await this.apiKeywordRetrieveRaw(t,n)).value()}async apiKeywordUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiKeywordUpdate.");if(t.keyword===null||t.keyword===void 0)throw new w("keyword","Required parameter requestParameters.keyword was null or undefined when calling apiKeywordUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/keyword/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Ji(t.keyword)},n);return new _(o,a=>En(a))}async apiKeywordUpdate(t,n){return await(await this.apiKeywordUpdateRaw(t,n)).value()}async apiMealPlanCreateRaw(t,n){if(t.mealPlan===null||t.mealPlan===void 0)throw new w("mealPlan","Required parameter requestParameters.mealPlan was null or undefined when calling apiMealPlanCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/meal-plan/",method:"POST",headers:r,query:i,body:pd(t.mealPlan)},n);return new _(o,a=>Ar(a))}async apiMealPlanCreate(t,n){return await(await this.apiMealPlanCreateRaw(t,n)).value()}async apiMealPlanDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiMealPlanDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/meal-plan/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiMealPlanDestroy(t,n){await this.apiMealPlanDestroyRaw(t,n)}async apiMealPlanListRaw(t,n){const i={};t.fromDate!==void 0&&(i.from_date=t.fromDate),t.mealType!==void 0&&(i.meal_type=t.mealType),t.toDate!==void 0&&(i.to_date=t.toDate);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/meal-plan/",method:"GET",headers:r,query:i},n);return new _(o,a=>a.map(Ar))}async apiMealPlanList(t={},n){return await(await this.apiMealPlanListRaw(t,n)).value()}async apiMealPlanPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiMealPlanPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/meal-plan/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:_S(t.patchedMealPlan)},n);return new _(o,a=>Ar(a))}async apiMealPlanPartialUpdate(t,n){return await(await this.apiMealPlanPartialUpdateRaw(t,n)).value()}async apiMealPlanRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiMealPlanRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/meal-plan/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Ar(a))}async apiMealPlanRetrieve(t,n){return await(await this.apiMealPlanRetrieveRaw(t,n)).value()}async apiMealPlanUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiMealPlanUpdate.");if(t.mealPlan===null||t.mealPlan===void 0)throw new w("mealPlan","Required parameter requestParameters.mealPlan was null or undefined when calling apiMealPlanUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/meal-plan/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:pd(t.mealPlan)},n);return new _(o,a=>Ar(a))}async apiMealPlanUpdate(t,n){return await(await this.apiMealPlanUpdateRaw(t,n)).value()}async apiMealTypeCreateRaw(t,n){if(t.mealType===null||t.mealType===void 0)throw new w("mealType","Required parameter requestParameters.mealType was null or undefined when calling apiMealTypeCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/meal-type/",method:"POST",headers:r,query:i,body:Aa(t.mealType)},n);return new _(o,a=>zi(a))}async apiMealTypeCreate(t,n){return await(await this.apiMealTypeCreateRaw(t,n)).value()}async apiMealTypeDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiMealTypeDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/meal-type/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiMealTypeDestroy(t,n){await this.apiMealTypeDestroyRaw(t,n)}async apiMealTypeListRaw(t){const n={},i={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(i.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const r=await this.request({path:"/api/meal-type/",method:"GET",headers:i,query:n},t);return new _(r,o=>o.map(zi))}async apiMealTypeList(t){return await(await this.apiMealTypeListRaw(t)).value()}async apiMealTypePartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiMealTypePartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/meal-type/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:kS(t.patchedMealType)},n);return new _(o,a=>zi(a))}async apiMealTypePartialUpdate(t,n){return await(await this.apiMealTypePartialUpdateRaw(t,n)).value()}async apiMealTypeRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiMealTypeRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/meal-type/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>zi(a))}async apiMealTypeRetrieve(t,n){return await(await this.apiMealTypeRetrieveRaw(t,n)).value()}async apiMealTypeUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiMealTypeUpdate.");if(t.mealType===null||t.mealType===void 0)throw new w("mealType","Required parameter requestParameters.mealType was null or undefined when calling apiMealTypeUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/meal-type/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Aa(t.mealType)},n);return new _(o,a=>zi(a))}async apiMealTypeUpdate(t,n){return await(await this.apiMealTypeUpdateRaw(t,n)).value()}async apiRecipeBookCreateRaw(t,n){if(t.recipeBook===null||t.recipeBook===void 0)throw new w("recipeBook","Required parameter requestParameters.recipeBook was null or undefined when calling apiRecipeBookCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/recipe-book/",method:"POST",headers:r,query:i,body:yd(t.recipeBook)},n);return new _(o,a=>Or(a))}async apiRecipeBookCreate(t,n){return await(await this.apiRecipeBookCreateRaw(t,n)).value()}async apiRecipeBookDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiRecipeBookDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/recipe-book/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiRecipeBookDestroy(t,n){await this.apiRecipeBookDestroyRaw(t,n)}async apiRecipeBookEntryCreateRaw(t,n){if(t.recipeBookEntry===null||t.recipeBookEntry===void 0)throw new w("recipeBookEntry","Required parameter requestParameters.recipeBookEntry was null or undefined when calling apiRecipeBookEntryCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/recipe-book-entry/",method:"POST",headers:r,query:i,body:wd(t.recipeBookEntry)},n);return new _(o,a=>Lr(a))}async apiRecipeBookEntryCreate(t,n){return await(await this.apiRecipeBookEntryCreateRaw(t,n)).value()}async apiRecipeBookEntryDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiRecipeBookEntryDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/recipe-book-entry/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiRecipeBookEntryDestroy(t,n){await this.apiRecipeBookEntryDestroyRaw(t,n)}async apiRecipeBookEntryListRaw(t){const n={},i={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(i.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const r=await this.request({path:"/api/recipe-book-entry/",method:"GET",headers:i,query:n},t);return new _(r,o=>o.map(Lr))}async apiRecipeBookEntryList(t){return await(await this.apiRecipeBookEntryListRaw(t)).value()}async apiRecipeBookEntryPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiRecipeBookEntryPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/recipe-book-entry/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:AS(t.patchedRecipeBookEntry)},n);return new _(o,a=>Lr(a))}async apiRecipeBookEntryPartialUpdate(t,n){return await(await this.apiRecipeBookEntryPartialUpdateRaw(t,n)).value()}async apiRecipeBookEntryRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiRecipeBookEntryRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/recipe-book-entry/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Lr(a))}async apiRecipeBookEntryRetrieve(t,n){return await(await this.apiRecipeBookEntryRetrieveRaw(t,n)).value()}async apiRecipeBookEntryUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiRecipeBookEntryUpdate.");if(t.recipeBookEntry===null||t.recipeBookEntry===void 0)throw new w("recipeBookEntry","Required parameter requestParameters.recipeBookEntry was null or undefined when calling apiRecipeBookEntryUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/recipe-book-entry/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:wd(t.recipeBookEntry)},n);return new _(o,a=>Lr(a))}async apiRecipeBookEntryUpdate(t,n){return await(await this.apiRecipeBookEntryUpdateRaw(t,n)).value()}async apiRecipeBookListRaw(t,n){const i={};t.limit!==void 0&&(i.limit=t.limit),t.query!==void 0&&(i.query=t.query),t.random!==void 0&&(i.random=t.random),t.updatedAt!==void 0&&(i.updated_at=t.updatedAt);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/recipe-book/",method:"GET",headers:r,query:i},n);return new _(o,a=>a.map(Or))}async apiRecipeBookList(t={},n){return await(await this.apiRecipeBookListRaw(t,n)).value()}async apiRecipeBookPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiRecipeBookPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/recipe-book/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:xS(t.patchedRecipeBook)},n);return new _(o,a=>Or(a))}async apiRecipeBookPartialUpdate(t,n){return await(await this.apiRecipeBookPartialUpdateRaw(t,n)).value()}async apiRecipeBookRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiRecipeBookRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/recipe-book/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Or(a))}async apiRecipeBookRetrieve(t,n){return await(await this.apiRecipeBookRetrieveRaw(t,n)).value()}async apiRecipeBookUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiRecipeBookUpdate.");if(t.recipeBook===null||t.recipeBook===void 0)throw new w("recipeBook","Required parameter requestParameters.recipeBook was null or undefined when calling apiRecipeBookUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/recipe-book/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:yd(t.recipeBook)},n);return new _(o,a=>Or(a))}async apiRecipeBookUpdate(t,n){return await(await this.apiRecipeBookUpdateRaw(t,n)).value()}async apiRecipeCreateRaw(t,n){if(t.recipe===null||t.recipe===void 0)throw new w("recipe","Required parameter requestParameters.recipe was null or undefined when calling apiRecipeCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/recipe/",method:"POST",headers:r,query:i,body:vd(t.recipe)},n);return new _(o,a=>Xo(a))}async apiRecipeCreate(t,n){return await(await this.apiRecipeCreateRaw(t,n)).value()}async apiRecipeDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiRecipeDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/recipe/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiRecipeDestroy(t,n){await this.apiRecipeDestroyRaw(t,n)}async apiRecipeFlatListRaw(t){const n={},i={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(i.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const r=await this.request({path:"/api/recipe/flat/",method:"GET",headers:i,query:n},t);return new _(r,o=>o.map(rC))}async apiRecipeFlatList(t){return await(await this.apiRecipeFlatListRaw(t)).value()}async apiRecipeFromSourceCreateRaw(t){const n={},i={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(i.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const r=await this.request({path:"/api/recipe-from-source/",method:"POST",headers:i,query:n},t);return new Re(r)}async apiRecipeFromSourceCreate(t){await this.apiRecipeFromSourceCreateRaw(t)}async apiRecipeImageUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiRecipeImageUpdate.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password)),Zo([{contentType:"multipart/form-data"}]);let a;a=new URLSearchParams,t.image!==void 0&&a.append("image",t.image),t.imageUrl!==void 0&&a.append("image_url",t.imageUrl);const s=await this.request({path:"/api/recipe/{id}/image/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:a},n);return new _(s,l=>aC(l))}async apiRecipeImageUpdate(t,n){return await(await this.apiRecipeImageUpdateRaw(t,n)).value()}async apiRecipeListRaw(t,n){const i={};t.books!==void 0&&(i.books=t.books),t.booksAnd!==void 0&&(i.books_and=t.booksAnd),t.booksAndNot!==void 0&&(i.books_and_not=t.booksAndNot),t.booksOr!==void 0&&(i.books_or=t.booksOr),t.booksOrNot!==void 0&&(i.books_or_not=t.booksOrNot),t.cookedon!==void 0&&(i.cookedon=t.cookedon),t.createdon!==void 0&&(i.createdon=t.createdon),t.foods!==void 0&&(i.foods=t.foods),t.foodsAnd!==void 0&&(i.foods_and=t.foodsAnd),t.foodsAndNot!==void 0&&(i.foods_and_not=t.foodsAndNot),t.foodsOr!==void 0&&(i.foods_or=t.foodsOr),t.foodsOrNot!==void 0&&(i.foods_or_not=t.foodsOrNot),t.internal!==void 0&&(i.internal=t.internal),t.keywords!==void 0&&(i.keywords=t.keywords),t.keywordsAnd!==void 0&&(i.keywords_and=t.keywordsAnd),t.keywordsAndNot!==void 0&&(i.keywords_and_not=t.keywordsAndNot),t.keywordsOr!==void 0&&(i.keywords_or=t.keywordsOr),t.keywordsOrNot!==void 0&&(i.keywords_or_not=t.keywordsOrNot),t.makenow!==void 0&&(i.makenow=t.makenow),t._new!==void 0&&(i.new=t._new),t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize),t.query!==void 0&&(i.query=t.query),t.random!==void 0&&(i.random=t.random),t.rating!==void 0&&(i.rating=t.rating),t.timescooked!==void 0&&(i.timescooked=t.timescooked),t.units!==void 0&&(i.units=t.units),t.updatedon!==void 0&&(i.updatedon=t.updatedon),t.viewedon!==void 0&&(i.viewedon=t.viewedon);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/recipe/",method:"GET",headers:r,query:i},n);return new _(o,a=>Jb(a))}async apiRecipeList(t={},n){return await(await this.apiRecipeListRaw(t,n)).value()}async apiRecipePartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiRecipePartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/recipe/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:IS(t.patchedRecipe)},n);return new _(o,a=>Xo(a))}async apiRecipePartialUpdate(t,n){return await(await this.apiRecipePartialUpdateRaw(t,n)).value()}async apiRecipeRelatedRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiRecipeRelatedRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/recipe/{id}/related/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>kh(a))}async apiRecipeRelatedRetrieve(t,n){return await(await this.apiRecipeRelatedRetrieveRaw(t,n)).value()}async apiRecipeRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiRecipeRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/recipe/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Xo(a))}async apiRecipeRetrieve(t,n){return await(await this.apiRecipeRetrieveRaw(t,n)).value()}async apiRecipeShoppingUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiRecipeShoppingUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/recipe/{id}/shopping/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:cC(t.recipeShoppingUpdate)},n);return new _(o,a=>lC(a))}async apiRecipeShoppingUpdate(t,n){return await(await this.apiRecipeShoppingUpdateRaw(t,n)).value()}async apiRecipeUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiRecipeUpdate.");if(t.recipe===null||t.recipe===void 0)throw new w("recipe","Required parameter requestParameters.recipe was null or undefined when calling apiRecipeUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/recipe/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:vd(t.recipe)},n);return new _(o,a=>Xo(a))}async apiRecipeUpdate(t,n){return await(await this.apiRecipeUpdateRaw(t,n)).value()}async apiResetFoodInheritanceRetrieveRaw(t){const n={},i={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(i.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const r=await this.request({path:"/api/reset-food-inheritance/",method:"GET",headers:i,query:n},t);return new Re(r)}async apiResetFoodInheritanceRetrieve(t){await this.apiResetFoodInheritanceRetrieveRaw(t)}async apiShareLinkRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiShareLinkRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/share-link/{id}".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new Re(o)}async apiShareLinkRetrieve(t,n){await this.apiShareLinkRetrieveRaw(t,n)}async apiShoppingListEntryBulkCreateRaw(t,n){if(t.shoppingListEntryBulk===null||t.shoppingListEntryBulk===void 0)throw new w("shoppingListEntryBulk","Required parameter requestParameters.shoppingListEntryBulk was null or undefined when calling apiShoppingListEntryBulkCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/shopping-list-entry/bulk/",method:"POST",headers:r,query:i,body:hC(t.shoppingListEntryBulk)},n);return new _(o,a=>fC(a))}async apiShoppingListEntryBulkCreate(t,n){return await(await this.apiShoppingListEntryBulkCreateRaw(t,n)).value()}async apiShoppingListEntryCreateRaw(t,n){if(t.shoppingListEntry===null||t.shoppingListEntry===void 0)throw new w("shoppingListEntry","Required parameter requestParameters.shoppingListEntry was null or undefined when calling apiShoppingListEntryCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/shopping-list-entry/",method:"POST",headers:r,query:i,body:bd(t.shoppingListEntry)},n);return new _(o,a=>Pr(a))}async apiShoppingListEntryCreate(t,n){return await(await this.apiShoppingListEntryCreateRaw(t,n)).value()}async apiShoppingListEntryDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiShoppingListEntryDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/shopping-list-entry/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiShoppingListEntryDestroy(t,n){await this.apiShoppingListEntryDestroyRaw(t,n)}async apiShoppingListEntryListRaw(t,n){const i={};t.checked!==void 0&&(i.checked=t.checked),t.id!==void 0&&(i.id=t.id),t.supermarket!==void 0&&(i.supermarket=t.supermarket);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/shopping-list-entry/",method:"GET",headers:r,query:i},n);return new _(o,a=>a.map(Pr))}async apiShoppingListEntryList(t={},n){return await(await this.apiShoppingListEntryListRaw(t,n)).value()}async apiShoppingListEntryPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiShoppingListEntryPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/shopping-list-entry/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:LS(t.patchedShoppingListEntry)},n);return new _(o,a=>Pr(a))}async apiShoppingListEntryPartialUpdate(t,n){return await(await this.apiShoppingListEntryPartialUpdateRaw(t,n)).value()}async apiShoppingListEntryRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiShoppingListEntryRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/shopping-list-entry/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Pr(a))}async apiShoppingListEntryRetrieve(t,n){return await(await this.apiShoppingListEntryRetrieveRaw(t,n)).value()}async apiShoppingListEntryUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiShoppingListEntryUpdate.");if(t.shoppingListEntry===null||t.shoppingListEntry===void 0)throw new w("shoppingListEntry","Required parameter requestParameters.shoppingListEntry was null or undefined when calling apiShoppingListEntryUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/shopping-list-entry/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:bd(t.shoppingListEntry)},n);return new _(o,a=>Pr(a))}async apiShoppingListEntryUpdate(t,n){return await(await this.apiShoppingListEntryUpdateRaw(t,n)).value()}async apiShoppingListRecipeCreateRaw(t,n){if(t.shoppingListRecipe===null||t.shoppingListRecipe===void 0)throw new w("shoppingListRecipe","Required parameter requestParameters.shoppingListRecipe was null or undefined when calling apiShoppingListRecipeCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/shopping-list-recipe/",method:"POST",headers:r,query:i,body:gd(t.shoppingListRecipe)},n);return new _(o,a=>Hi(a))}async apiShoppingListRecipeCreate(t,n){return await(await this.apiShoppingListRecipeCreateRaw(t,n)).value()}async apiShoppingListRecipeDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiShoppingListRecipeDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/shopping-list-recipe/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiShoppingListRecipeDestroy(t,n){await this.apiShoppingListRecipeDestroyRaw(t,n)}async apiShoppingListRecipeListRaw(t){const n={},i={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(i.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const r=await this.request({path:"/api/shopping-list-recipe/",method:"GET",headers:i,query:n},t);return new _(r,o=>o.map(Hi))}async apiShoppingListRecipeList(t){return await(await this.apiShoppingListRecipeListRaw(t)).value()}async apiShoppingListRecipePartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiShoppingListRecipePartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/shopping-list-recipe/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:PS(t.patchedShoppingListRecipe)},n);return new _(o,a=>Hi(a))}async apiShoppingListRecipePartialUpdate(t,n){return await(await this.apiShoppingListRecipePartialUpdateRaw(t,n)).value()}async apiShoppingListRecipeRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiShoppingListRecipeRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/shopping-list-recipe/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Hi(a))}async apiShoppingListRecipeRetrieve(t,n){return await(await this.apiShoppingListRecipeRetrieveRaw(t,n)).value()}async apiShoppingListRecipeUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiShoppingListRecipeUpdate.");if(t.shoppingListRecipe===null||t.shoppingListRecipe===void 0)throw new w("shoppingListRecipe","Required parameter requestParameters.shoppingListRecipe was null or undefined when calling apiShoppingListRecipeUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/shopping-list-recipe/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:gd(t.shoppingListRecipe)},n);return new _(o,a=>Hi(a))}async apiShoppingListRecipeUpdate(t,n){return await(await this.apiShoppingListRecipeUpdateRaw(t,n)).value()}async apiSpaceListRaw(t){const n={},i={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(i.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const r=await this.request({path:"/api/space/",method:"GET",headers:i,query:n},t);return new _(r,o=>o.map(Ns))}async apiSpaceList(t){return await(await this.apiSpaceListRaw(t)).value()}async apiSpacePartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiSpacePartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/space/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:BS(t.patchedSpace)},n);return new _(o,a=>Ns(a))}async apiSpacePartialUpdate(t,n){return await(await this.apiSpacePartialUpdateRaw(t,n)).value()}async apiSpaceRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiSpaceRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/space/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Ns(a))}async apiSpaceRetrieve(t,n){return await(await this.apiSpaceRetrieveRaw(t,n)).value()}async apiStepCreateRaw(t,n){if(t.step===null||t.step===void 0)throw new w("step","Required parameter requestParameters.step was null or undefined when calling apiStepCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/step/",method:"POST",headers:r,query:i,body:Oa(t.step)},n);return new _(o,a=>Ki(a))}async apiStepCreate(t,n){return await(await this.apiStepCreateRaw(t,n)).value()}async apiStepDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiStepDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/step/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiStepDestroy(t,n){await this.apiStepDestroyRaw(t,n)}async apiStepListRaw(t,n){const i={};t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize),t.query!==void 0&&(i.query=t.query),t.recipe!==void 0&&(i.recipe=t.recipe);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/step/",method:"GET",headers:r,query:i},n);return new _(o,a=>Yb(a))}async apiStepList(t={},n){return await(await this.apiStepListRaw(t,n)).value()}async apiStepPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiStepPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/step/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:$S(t.patchedStep)},n);return new _(o,a=>Ki(a))}async apiStepPartialUpdate(t,n){return await(await this.apiStepPartialUpdateRaw(t,n)).value()}async apiStepRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiStepRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/step/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Ki(a))}async apiStepRetrieve(t,n){return await(await this.apiStepRetrieveRaw(t,n)).value()}async apiStepUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiStepUpdate.");if(t.step===null||t.step===void 0)throw new w("step","Required parameter requestParameters.step was null or undefined when calling apiStepUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/step/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Oa(t.step)},n);return new _(o,a=>Ki(a))}async apiStepUpdate(t,n){return await(await this.apiStepUpdateRaw(t,n)).value()}async apiStorageCreateRaw(t,n){if(t.storage===null||t.storage===void 0)throw new w("storage","Required parameter requestParameters.storage was null or undefined when calling apiStorageCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/storage/",method:"POST",headers:r,query:i,body:Sd(t.storage)},n);return new _(o,a=>Ur(a))}async apiStorageCreate(t,n){return await(await this.apiStorageCreateRaw(t,n)).value()}async apiStorageDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiStorageDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/storage/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiStorageDestroy(t,n){await this.apiStorageDestroyRaw(t,n)}async apiStorageListRaw(t){const n={},i={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(i.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const r=await this.request({path:"/api/storage/",method:"GET",headers:i,query:n},t);return new _(r,o=>o.map(Ur))}async apiStorageList(t){return await(await this.apiStorageListRaw(t)).value()}async apiStoragePartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiStoragePartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/storage/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:MS(t.patchedStorage)},n);return new _(o,a=>Ur(a))}async apiStoragePartialUpdate(t,n){return await(await this.apiStoragePartialUpdateRaw(t,n)).value()}async apiStorageRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiStorageRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/storage/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Ur(a))}async apiStorageRetrieve(t,n){return await(await this.apiStorageRetrieveRaw(t,n)).value()}async apiStorageUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiStorageUpdate.");if(t.storage===null||t.storage===void 0)throw new w("storage","Required parameter requestParameters.storage was null or undefined when calling apiStorageUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/storage/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Sd(t.storage)},n);return new _(o,a=>Ur(a))}async apiStorageUpdate(t,n){return await(await this.apiStorageUpdateRaw(t,n)).value()}async apiSupermarketCategoryCreateRaw(t,n){if(t.supermarketCategory===null||t.supermarketCategory===void 0)throw new w("supermarketCategory","Required parameter requestParameters.supermarketCategory was null or undefined when calling apiSupermarketCategoryCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/supermarket-category/",method:"POST",headers:r,query:i,body:Ci(t.supermarketCategory)},n);return new _(o,a=>Qn(a))}async apiSupermarketCategoryCreate(t,n){return await(await this.apiSupermarketCategoryCreateRaw(t,n)).value()}async apiSupermarketCategoryDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiSupermarketCategoryDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/supermarket-category/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiSupermarketCategoryDestroy(t,n){await this.apiSupermarketCategoryDestroyRaw(t,n)}async apiSupermarketCategoryListRaw(t){const n={},i={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(i.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const r=await this.request({path:"/api/supermarket-category/",method:"GET",headers:i,query:n},t);return new _(r,o=>o.map(Qn))}async apiSupermarketCategoryList(t){return await(await this.apiSupermarketCategoryListRaw(t)).value()}async apiSupermarketCategoryMergeUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiSupermarketCategoryMergeUpdate.");if(t.target===null||t.target===void 0)throw new w("target","Required parameter requestParameters.target was null or undefined when calling apiSupermarketCategoryMergeUpdate.");if(t.supermarketCategory===null||t.supermarketCategory===void 0)throw new w("supermarketCategory","Required parameter requestParameters.supermarketCategory was null or undefined when calling apiSupermarketCategoryMergeUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/supermarket-category/{id}/merge/{target}/".replace("{id}",encodeURIComponent(String(t.id))).replace("{target}",encodeURIComponent(String(t.target))),method:"PUT",headers:r,query:i,body:Ci(t.supermarketCategory)},n);return new _(o,a=>Qn(a))}async apiSupermarketCategoryMergeUpdate(t,n){return await(await this.apiSupermarketCategoryMergeUpdateRaw(t,n)).value()}async apiSupermarketCategoryPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiSupermarketCategoryPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/supermarket-category/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:qS(t.patchedSupermarketCategory)},n);return new _(o,a=>Qn(a))}async apiSupermarketCategoryPartialUpdate(t,n){return await(await this.apiSupermarketCategoryPartialUpdateRaw(t,n)).value()}async apiSupermarketCategoryRelationCreateRaw(t,n){if(t.supermarketCategoryRelation===null||t.supermarketCategoryRelation===void 0)throw new w("supermarketCategoryRelation","Required parameter requestParameters.supermarketCategoryRelation was null or undefined when calling apiSupermarketCategoryRelationCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/supermarket-category-relation/",method:"POST",headers:r,query:i,body:hd(t.supermarketCategoryRelation)},n);return new _(o,a=>Zi(a))}async apiSupermarketCategoryRelationCreate(t,n){return await(await this.apiSupermarketCategoryRelationCreateRaw(t,n)).value()}async apiSupermarketCategoryRelationDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiSupermarketCategoryRelationDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/supermarket-category-relation/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiSupermarketCategoryRelationDestroy(t,n){await this.apiSupermarketCategoryRelationDestroyRaw(t,n)}async apiSupermarketCategoryRelationListRaw(t,n){const i={};t.limit!==void 0&&(i.limit=t.limit),t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize),t.query!==void 0&&(i.query=t.query),t.random!==void 0&&(i.random=t.random),t.updatedAt!==void 0&&(i.updated_at=t.updatedAt);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/supermarket-category-relation/",method:"GET",headers:r,query:i},n);return new _(o,a=>jb(a))}async apiSupermarketCategoryRelationList(t={},n){return await(await this.apiSupermarketCategoryRelationListRaw(t,n)).value()}async apiSupermarketCategoryRelationPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiSupermarketCategoryRelationPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/supermarket-category-relation/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:zS(t.patchedSupermarketCategoryRelation)},n);return new _(o,a=>Zi(a))}async apiSupermarketCategoryRelationPartialUpdate(t,n){return await(await this.apiSupermarketCategoryRelationPartialUpdateRaw(t,n)).value()}async apiSupermarketCategoryRelationRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiSupermarketCategoryRelationRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/supermarket-category-relation/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Zi(a))}async apiSupermarketCategoryRelationRetrieve(t,n){return await(await this.apiSupermarketCategoryRelationRetrieveRaw(t,n)).value()}async apiSupermarketCategoryRelationUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiSupermarketCategoryRelationUpdate.");if(t.supermarketCategoryRelation===null||t.supermarketCategoryRelation===void 0)throw new w("supermarketCategoryRelation","Required parameter requestParameters.supermarketCategoryRelation was null or undefined when calling apiSupermarketCategoryRelationUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/supermarket-category-relation/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:hd(t.supermarketCategoryRelation)},n);return new _(o,a=>Zi(a))}async apiSupermarketCategoryRelationUpdate(t,n){return await(await this.apiSupermarketCategoryRelationUpdateRaw(t,n)).value()}async apiSupermarketCategoryRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiSupermarketCategoryRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/supermarket-category/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Qn(a))}async apiSupermarketCategoryRetrieve(t,n){return await(await this.apiSupermarketCategoryRetrieveRaw(t,n)).value()}async apiSupermarketCategoryUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiSupermarketCategoryUpdate.");if(t.supermarketCategory===null||t.supermarketCategory===void 0)throw new w("supermarketCategory","Required parameter requestParameters.supermarketCategory was null or undefined when calling apiSupermarketCategoryUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/supermarket-category/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Ci(t.supermarketCategory)},n);return new _(o,a=>Qn(a))}async apiSupermarketCategoryUpdate(t,n){return await(await this.apiSupermarketCategoryUpdateRaw(t,n)).value()}async apiSupermarketCreateRaw(t,n){if(t.supermarket===null||t.supermarket===void 0)throw new w("supermarket","Required parameter requestParameters.supermarket was null or undefined when calling apiSupermarketCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/supermarket/",method:"POST",headers:r,query:i,body:Cd(t.supermarket)},n);return new _(o,a=>Fr(a))}async apiSupermarketCreate(t,n){return await(await this.apiSupermarketCreateRaw(t,n)).value()}async apiSupermarketDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiSupermarketDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/supermarket/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiSupermarketDestroy(t,n){await this.apiSupermarketDestroyRaw(t,n)}async apiSupermarketListRaw(t,n){const i={};t.limit!==void 0&&(i.limit=t.limit),t.query!==void 0&&(i.query=t.query),t.random!==void 0&&(i.random=t.random),t.updatedAt!==void 0&&(i.updated_at=t.updatedAt);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/supermarket/",method:"GET",headers:r,query:i},n);return new _(o,a=>a.map(Fr))}async apiSupermarketList(t={},n){return await(await this.apiSupermarketListRaw(t,n)).value()}async apiSupermarketPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiSupermarketPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/supermarket/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:VS(t.patchedSupermarket)},n);return new _(o,a=>Fr(a))}async apiSupermarketPartialUpdate(t,n){return await(await this.apiSupermarketPartialUpdateRaw(t,n)).value()}async apiSupermarketRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiSupermarketRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/supermarket/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Fr(a))}async apiSupermarketRetrieve(t,n){return await(await this.apiSupermarketRetrieveRaw(t,n)).value()}async apiSupermarketUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiSupermarketUpdate.");if(t.supermarket===null||t.supermarket===void 0)throw new w("supermarket","Required parameter requestParameters.supermarket was null or undefined when calling apiSupermarketUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/supermarket/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Cd(t.supermarket)},n);return new _(o,a=>Fr(a))}async apiSupermarketUpdate(t,n){return await(await this.apiSupermarketUpdateRaw(t,n)).value()}async apiSwitchActiveSpaceRetrieveRaw(t,n){if(t.spaceId===null||t.spaceId===void 0)throw new w("spaceId","Required parameter requestParameters.spaceId was null or undefined when calling apiSwitchActiveSpaceRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/switch-active-space/{space_id}/".replace("{space_id}",encodeURIComponent(String(t.spaceId))),method:"GET",headers:r,query:i},n);return new Re(o)}async apiSwitchActiveSpaceRetrieve(t,n){await this.apiSwitchActiveSpaceRetrieveRaw(t,n)}async apiSyncCreateRaw(t,n){if(t.sync===null||t.sync===void 0)throw new w("sync","Required parameter requestParameters.sync was null or undefined when calling apiSyncCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/sync/",method:"POST",headers:r,query:i,body:Rd(t.sync)},n);return new _(o,a=>Dr(a))}async apiSyncCreate(t,n){return await(await this.apiSyncCreateRaw(t,n)).value()}async apiSyncDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiSyncDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/sync/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiSyncDestroy(t,n){await this.apiSyncDestroyRaw(t,n)}async apiSyncListRaw(t){const n={},i={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(i.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const r=await this.request({path:"/api/sync/",method:"GET",headers:i,query:n},t);return new _(r,o=>o.map(Dr))}async apiSyncList(t){return await(await this.apiSyncListRaw(t)).value()}async apiSyncLogListRaw(t,n){const i={};t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/sync-log/",method:"GET",headers:r,query:i},n);return new _(o,a=>nS(a))}async apiSyncLogList(t={},n){return await(await this.apiSyncLogListRaw(t,n)).value()}async apiSyncLogRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiSyncLogRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/sync-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Ah(a))}async apiSyncLogRetrieve(t,n){return await(await this.apiSyncLogRetrieveRaw(t,n)).value()}async apiSyncPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiSyncPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/sync/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:HS(t.patchedSync)},n);return new _(o,a=>Dr(a))}async apiSyncPartialUpdate(t,n){return await(await this.apiSyncPartialUpdateRaw(t,n)).value()}async apiSyncRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiSyncRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/sync/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Dr(a))}async apiSyncRetrieve(t,n){return await(await this.apiSyncRetrieveRaw(t,n)).value()}async apiSyncUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiSyncUpdate.");if(t.sync===null||t.sync===void 0)throw new w("sync","Required parameter requestParameters.sync was null or undefined when calling apiSyncUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/sync/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Rd(t.sync)},n);return new _(o,a=>Dr(a))}async apiSyncUpdate(t,n){return await(await this.apiSyncUpdateRaw(t,n)).value()}async apiUnitConversionCreateRaw(t,n){if(t.unitConversion===null||t.unitConversion===void 0)throw new w("unitConversion","Required parameter requestParameters.unitConversion was null or undefined when calling apiUnitConversionCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/unit-conversion/",method:"POST",headers:r,query:i,body:_d(t.unitConversion)},n);return new _(o,a=>Nr(a))}async apiUnitConversionCreate(t,n){return await(await this.apiUnitConversionCreateRaw(t,n)).value()}async apiUnitConversionDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiUnitConversionDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/unit-conversion/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiUnitConversionDestroy(t,n){await this.apiUnitConversionDestroyRaw(t,n)}async apiUnitConversionListRaw(t,n){const i={};t.foodId!==void 0&&(i.food_id=t.foodId);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/unit-conversion/",method:"GET",headers:r,query:i},n);return new _(o,a=>a.map(Nr))}async apiUnitConversionList(t={},n){return await(await this.apiUnitConversionListRaw(t,n)).value()}async apiUnitConversionPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiUnitConversionPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/unit-conversion/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:JS(t.patchedUnitConversion)},n);return new _(o,a=>Nr(a))}async apiUnitConversionPartialUpdate(t,n){return await(await this.apiUnitConversionPartialUpdateRaw(t,n)).value()}async apiUnitConversionRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiUnitConversionRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/unit-conversion/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Nr(a))}async apiUnitConversionRetrieve(t,n){return await(await this.apiUnitConversionRetrieveRaw(t,n)).value()}async apiUnitConversionUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiUnitConversionUpdate.");if(t.unitConversion===null||t.unitConversion===void 0)throw new w("unitConversion","Required parameter requestParameters.unitConversion was null or undefined when calling apiUnitConversionUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/unit-conversion/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:_d(t.unitConversion)},n);return new _(o,a=>Nr(a))}async apiUnitConversionUpdate(t,n){return await(await this.apiUnitConversionUpdateRaw(t,n)).value()}async apiUnitCreateRaw(t,n){if(t.unit===null||t.unit===void 0)throw new w("unit","Required parameter requestParameters.unit was null or undefined when calling apiUnitCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/unit/",method:"POST",headers:r,query:i,body:Dt(t.unit)},n);return new _(o,a=>rn(a))}async apiUnitCreate(t,n){return await(await this.apiUnitCreateRaw(t,n)).value()}async apiUnitDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiUnitDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/unit/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiUnitDestroy(t,n){await this.apiUnitDestroyRaw(t,n)}async apiUnitListRaw(t,n){const i={};t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/unit/",method:"GET",headers:r,query:i},n);return new _(o,a=>rS(a))}async apiUnitList(t={},n){return await(await this.apiUnitListRaw(t,n)).value()}async apiUnitMergeUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiUnitMergeUpdate.");if(t.target===null||t.target===void 0)throw new w("target","Required parameter requestParameters.target was null or undefined when calling apiUnitMergeUpdate.");if(t.unit===null||t.unit===void 0)throw new w("unit","Required parameter requestParameters.unit was null or undefined when calling apiUnitMergeUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/unit/{id}/merge/{target}/".replace("{id}",encodeURIComponent(String(t.id))).replace("{target}",encodeURIComponent(String(t.target))),method:"PUT",headers:r,query:i,body:Dt(t.unit)},n);return new _(o,a=>rn(a))}async apiUnitMergeUpdate(t,n){return await(await this.apiUnitMergeUpdateRaw(t,n)).value()}async apiUnitPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiUnitPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/unit/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:WS(t.patchedUnit)},n);return new _(o,a=>rn(a))}async apiUnitPartialUpdate(t,n){return await(await this.apiUnitPartialUpdateRaw(t,n)).value()}async apiUnitRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiUnitRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/unit/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>rn(a))}async apiUnitRetrieve(t,n){return await(await this.apiUnitRetrieveRaw(t,n)).value()}async apiUnitUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiUnitUpdate.");if(t.unit===null||t.unit===void 0)throw new w("unit","Required parameter requestParameters.unit was null or undefined when calling apiUnitUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/unit/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Dt(t.unit)},n);return new _(o,a=>rn(a))}async apiUnitUpdate(t,n){return await(await this.apiUnitUpdateRaw(t,n)).value()}async apiUserFileCreateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiUserFileCreate.");if(t.name===null||t.name===void 0)throw new w("name","Required parameter requestParameters.name was null or undefined when calling apiUserFileCreate.");if(t.file===null||t.file===void 0)throw new w("file","Required parameter requestParameters.file was null or undefined when calling apiUserFileCreate.");if(t.fileDownload===null||t.fileDownload===void 0)throw new w("fileDownload","Required parameter requestParameters.fileDownload was null or undefined when calling apiUserFileCreate.");if(t.preview===null||t.preview===void 0)throw new w("preview","Required parameter requestParameters.preview was null or undefined when calling apiUserFileCreate.");if(t.fileSizeKb===null||t.fileSizeKb===void 0)throw new w("fileSizeKb","Required parameter requestParameters.fileSizeKb was null or undefined when calling apiUserFileCreate.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password)),Zo([{contentType:"multipart/form-data"}]);let a;a=new URLSearchParams,t.id!==void 0&&a.append("id",t.id),t.name!==void 0&&a.append("name",t.name),t.file!==void 0&&a.append("file",t.file),t.fileDownload!==void 0&&a.append("file_download",t.fileDownload),t.preview!==void 0&&a.append("preview",t.preview),t.fileSizeKb!==void 0&&a.append("file_size_kb",t.fileSizeKb);const s=await this.request({path:"/api/user-file/",method:"POST",headers:r,query:i,body:a},n);return new _(s,l=>Br(l))}async apiUserFileCreate(t,n){return await(await this.apiUserFileCreateRaw(t,n)).value()}async apiUserFileDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiUserFileDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/user-file/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiUserFileDestroy(t,n){await this.apiUserFileDestroyRaw(t,n)}async apiUserFileListRaw(t,n){const i={};t.limit!==void 0&&(i.limit=t.limit),t.query!==void 0&&(i.query=t.query),t.random!==void 0&&(i.random=t.random),t.updatedAt!==void 0&&(i.updated_at=t.updatedAt);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/user-file/",method:"GET",headers:r,query:i},n);return new _(o,a=>a.map(Br))}async apiUserFileList(t={},n){return await(await this.apiUserFileListRaw(t,n)).value()}async apiUserFilePartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiUserFilePartialUpdate.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password)),Zo([{contentType:"multipart/form-data"}]);let a;a=new URLSearchParams,t.id2!==void 0&&a.append("id",t.id2),t.name!==void 0&&a.append("name",t.name),t.file!==void 0&&a.append("file",t.file),t.fileDownload!==void 0&&a.append("file_download",t.fileDownload),t.preview!==void 0&&a.append("preview",t.preview),t.fileSizeKb!==void 0&&a.append("file_size_kb",t.fileSizeKb);const s=await this.request({path:"/api/user-file/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:a},n);return new _(s,l=>Br(l))}async apiUserFilePartialUpdate(t,n){return await(await this.apiUserFilePartialUpdateRaw(t,n)).value()}async apiUserFileRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiUserFileRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/user-file/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Br(a))}async apiUserFileRetrieve(t,n){return await(await this.apiUserFileRetrieveRaw(t,n)).value()}async apiUserFileUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiUserFileUpdate.");if(t.id2===null||t.id2===void 0)throw new w("id2","Required parameter requestParameters.id2 was null or undefined when calling apiUserFileUpdate.");if(t.name===null||t.name===void 0)throw new w("name","Required parameter requestParameters.name was null or undefined when calling apiUserFileUpdate.");if(t.file===null||t.file===void 0)throw new w("file","Required parameter requestParameters.file was null or undefined when calling apiUserFileUpdate.");if(t.fileDownload===null||t.fileDownload===void 0)throw new w("fileDownload","Required parameter requestParameters.fileDownload was null or undefined when calling apiUserFileUpdate.");if(t.preview===null||t.preview===void 0)throw new w("preview","Required parameter requestParameters.preview was null or undefined when calling apiUserFileUpdate.");if(t.fileSizeKb===null||t.fileSizeKb===void 0)throw new w("fileSizeKb","Required parameter requestParameters.fileSizeKb was null or undefined when calling apiUserFileUpdate.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password)),Zo([{contentType:"multipart/form-data"}]);let a;a=new URLSearchParams,t.id2!==void 0&&a.append("id",t.id2),t.name!==void 0&&a.append("name",t.name),t.file!==void 0&&a.append("file",t.file),t.fileDownload!==void 0&&a.append("file_download",t.fileDownload),t.preview!==void 0&&a.append("preview",t.preview),t.fileSizeKb!==void 0&&a.append("file_size_kb",t.fileSizeKb);const s=await this.request({path:"/api/user-file/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:a},n);return new _(s,l=>Br(l))}async apiUserFileUpdate(t,n){return await(await this.apiUserFileUpdateRaw(t,n)).value()}async apiUserListRaw(t){const n={},i={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(i.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const r=await this.request({path:"/api/user/",method:"GET",headers:i,query:n},t);return new _(r,o=>o.map(Zt))}async apiUserList(t){return await(await this.apiUserListRaw(t)).value()}async apiUserPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiUserPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/user/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:GS(t.patchedUser)},n);return new _(o,a=>Zt(a))}async apiUserPartialUpdate(t,n){return await(await this.apiUserPartialUpdateRaw(t,n)).value()}async apiUserPreferenceListRaw(t){const n={},i={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(i.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const r=await this.request({path:"/api/user-preference/",method:"GET",headers:i,query:n},t);return new _(r,o=>o.map(Bs))}async apiUserPreferenceList(t){return await(await this.apiUserPreferenceListRaw(t)).value()}async apiUserPreferencePartialUpdateRaw(t,n){if(t.user===null||t.user===void 0)throw new w("user","Required parameter requestParameters.user was null or undefined when calling apiUserPreferencePartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/user-preference/{user}/".replace("{user}",encodeURIComponent(String(t.user))),method:"PATCH",headers:r,query:i,body:QS(t.patchedUserPreference)},n);return new _(o,a=>Bs(a))}async apiUserPreferencePartialUpdate(t,n){return await(await this.apiUserPreferencePartialUpdateRaw(t,n)).value()}async apiUserPreferenceRetrieveRaw(t,n){if(t.user===null||t.user===void 0)throw new w("user","Required parameter requestParameters.user was null or undefined when calling apiUserPreferenceRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/user-preference/{user}/".replace("{user}",encodeURIComponent(String(t.user))),method:"GET",headers:r,query:i},n);return new _(o,a=>Bs(a))}async apiUserPreferenceRetrieve(t,n){return await(await this.apiUserPreferenceRetrieveRaw(t,n)).value()}async apiUserRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiUserRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/user/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Zt(a))}async apiUserRetrieve(t,n){return await(await this.apiUserRetrieveRaw(t,n)).value()}async apiUserSpaceDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiUserSpaceDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/user-space/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiUserSpaceDestroy(t,n){await this.apiUserSpaceDestroyRaw(t,n)}async apiUserSpaceListRaw(t,n){const i={};t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/user-space/",method:"GET",headers:r,query:i},n);return new _(o,a=>sS(a))}async apiUserSpaceList(t={},n){return await(await this.apiUserSpaceListRaw(t,n)).value()}async apiUserSpacePartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiUserSpacePartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/user-space/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:jS(t.patchedUserSpace)},n);return new _(o,a=>wl(a))}async apiUserSpacePartialUpdate(t,n){return await(await this.apiUserSpacePartialUpdateRaw(t,n)).value()}async apiUserSpaceRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiUserSpaceRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/user-space/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>wl(a))}async apiUserSpaceRetrieve(t,n){return await(await this.apiUserSpaceRetrieveRaw(t,n)).value()}async apiViewLogCreateRaw(t,n){if(t.viewLog===null||t.viewLog===void 0)throw new w("viewLog","Required parameter requestParameters.viewLog was null or undefined when calling apiViewLogCreate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/view-log/",method:"POST",headers:r,query:i,body:md(t.viewLog)},n);return new _(o,a=>Gr(a))}async apiViewLogCreate(t,n){return await(await this.apiViewLogCreateRaw(t,n)).value()}async apiViewLogDestroyRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiViewLogDestroy.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/view-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new Re(o)}async apiViewLogDestroy(t,n){await this.apiViewLogDestroyRaw(t,n)}async apiViewLogListRaw(t,n){const i={};t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/view-log/",method:"GET",headers:r,query:i},n);return new _(o,a=>cS(a))}async apiViewLogList(t={},n){return await(await this.apiViewLogListRaw(t,n)).value()}async apiViewLogPartialUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiViewLogPartialUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/view-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:eC(t.patchedViewLog)},n);return new _(o,a=>Gr(a))}async apiViewLogPartialUpdate(t,n){return await(await this.apiViewLogPartialUpdateRaw(t,n)).value()}async apiViewLogRetrieveRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiViewLogRetrieve.");const i={},r={};this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/view-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new _(o,a=>Gr(a))}async apiViewLogRetrieve(t,n){return await(await this.apiViewLogRetrieveRaw(t,n)).value()}async apiViewLogUpdateRaw(t,n){if(t.id===null||t.id===void 0)throw new w("id","Required parameter requestParameters.id was null or undefined when calling apiViewLogUpdate.");if(t.viewLog===null||t.viewLog===void 0)throw new w("viewLog","Required parameter requestParameters.viewLog was null or undefined when calling apiViewLogUpdate.");const i={},r={};r["Content-Type"]="application/json",this.configuration&&(this.configuration.username!==void 0||this.configuration.password!==void 0)&&(r.Authorization="Basic "+btoa(this.configuration.username+":"+this.configuration.password));const o=await this.request({path:"/api/view-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:md(t.viewLog)},n);return new _(o,a=>Gr(a))}async apiViewLogUpdate(t,n){return await(await this.apiViewLogUpdateRaw(t,n)).value()}}const CC=pt({name:"GlobalSearchDialog",props:{},watch:{dialog:function(e){setTimeout(()=>{if(e){let t=document.getElementById("id_global_search_input");t!=null&&t.focus()}},20)},search_query:function(e){this.selected_result>=this.search_results.length&&(this.selected_result=this.search_results.length-1)}},data(){return{dialog:!1,recipes:[],flat_recipes:[],search_query:null,selected_result:0}},computed:{search_results:function(){let e=[];return this.search_query!=""&&this.search_query!=null?(e.push({name:this.search_query,icon:"fas fa-search",suffix:"Advanced Search"}),this.flat_recipes.filter(t=>t.name.toLowerCase().includes(this.search_query.toLowerCase())).slice(0,10).forEach(t=>{e.push({name:t.name,image:t.image,recipe_id:t.id})})):this.flat_recipes.slice(0,5).forEach(t=>{e.push({name:t.name,image:t.image,recipe_id:t.id})}),e}},mounted(){window.addEventListener("keydown",t=>{t.key=="ArrowUp"&&(this.selected_result=Math.max(0,this.selected_result-1)),t.key=="ArrowDown"&&(this.selected_result=Math.min(this.search_results.length,this.selected_result+1)),t.key=="Enter"&&this.goToSelectedRecipe()}),new us().apiRecipeFlatList().then(t=>{this.flat_recipes=t})},methods:{cardVariant(e){return this.selected_result==e?"tonal":"elevated"},goToSelectedRecipe(){this.dialog=!1;let e=this.search_results[this.selected_result];e.recipe_id!=null&&this.$router.push({name:"view_recipe",params:{id:e.recipe_id}})}}}),Ct=(e,t)=>{const n=e.__vccOpts||e;for(const[i,r]of t)n[i]=r;return n},Ye=typeof window<"u",hu=Ye&&"IntersectionObserver"in window,RC=Ye&&("ontouchstart"in window||window.navigator.maxTouchPoints>0);function _C(e,t,n){const i=t.length-1;if(i<0)return e===void 0?n:e;for(let r=0;rcs(e[i],t[i]))}function kd(e,t,n){return e==null||!t||typeof t!="string"?n:e[t]!==void 0?e[t]:(t=t.replace(/\[(\w+)\]/g,".$1"),t=t.replace(/^\./,""),_C(e,t.split("."),n))}function mu(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Array.from({length:e},(n,i)=>t+i)}function le(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"px";if(!(e==null||e===""))return isNaN(+e)?String(e):isFinite(+e)?`${Number(e)}${t}`:void 0}function La(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Pa(e){if(e&&"$el"in e){const t=e.$el;return(t==null?void 0:t.nodeType)===Node.TEXT_NODE?t.nextElementSibling:t}return e}const Td=Object.freeze({enter:13,tab:9,delete:46,esc:27,space:32,up:38,down:40,left:37,right:39,end:35,home:36,del:46,backspace:8,insert:45,pageup:33,pagedown:34,shift:16});function $s(e,t){return t.every(n=>e.hasOwnProperty(n))}function Oh(e,t){const n={},i=new Set(Object.keys(e));for(const r of t)i.has(r)&&(n[r]=e[r]);return n}function Ed(e,t,n){const i=Object.create(null),r=Object.create(null);for(const o in e)t.some(a=>a instanceof RegExp?a.test(o):a===o)&&!(n!=null&&n.some(a=>a===o))?i[o]=e[o]:r[o]=e[o];return[i,r]}function gu(e,t){const n={...e};return t.forEach(i=>delete n[i]),n}const Lh=/^on[^a-z]/,vu=e=>Lh.test(e),kC=["onAfterscriptexecute","onAnimationcancel","onAnimationend","onAnimationiteration","onAnimationstart","onAuxclick","onBeforeinput","onBeforescriptexecute","onChange","onClick","onCompositionend","onCompositionstart","onCompositionupdate","onContextmenu","onCopy","onCut","onDblclick","onFocusin","onFocusout","onFullscreenchange","onFullscreenerror","onGesturechange","onGestureend","onGesturestart","onGotpointercapture","onInput","onKeydown","onKeypress","onKeyup","onLostpointercapture","onMousedown","onMousemove","onMouseout","onMouseover","onMouseup","onMousewheel","onPaste","onPointercancel","onPointerdown","onPointerenter","onPointerleave","onPointermove","onPointerout","onPointerover","onPointerup","onReset","onSelect","onSubmit","onTouchcancel","onTouchend","onTouchmove","onTouchstart","onTransitioncancel","onTransitionend","onTransitionrun","onTransitionstart","onWheel"];function TC(e){const[t,n]=Ed(e,[Lh]),i=gu(t,kC),[r,o]=Ed(n,["class","style","id",/^data-/]);return Object.assign(r,t),Object.assign(o,i),[r,o]}function io(e){return e==null?[]:Array.isArray(e)?e:[e]}function lr(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;return Math.max(t,Math.min(n,e))}function Id(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"0";return e+n.repeat(Math.max(0,t-e.length))}function xd(e,t){return(arguments.length>2&&arguments[2]!==void 0?arguments[2]:"0").repeat(Math.max(0,t-e.length))+e}function EC(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;const n=[];let i=0;for(;i0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;const i={};for(const r in e)i[r]=e[r];for(const r in t){const o=e[r],a=t[r];if(La(o)&&La(a)){i[r]=Ut(o,a,n);continue}if(Array.isArray(o)&&Array.isArray(a)&&n){i[r]=n(o,a);continue}i[r]=a}return i}function Ph(e){return e.map(t=>t.type===_e?Ph(t.children):t).flat()}function Ri(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";if(Ri.cache.has(e))return Ri.cache.get(e);const t=e.replace(/[^a-z]/gi,"-").replace(/\B([A-Z])/g,"-$1").toLowerCase();return Ri.cache.set(e,t),t}Ri.cache=new Map;function ro(e,t){if(!t||typeof t!="object")return[];if(Array.isArray(t))return t.map(n=>ro(e,n)).flat(1);if(Array.isArray(t.children))return t.children.map(n=>ro(e,n)).flat(1);if(t.component){if(Object.getOwnPropertySymbols(t.component.provides).includes(e))return[t.component];if(t.component.subTree)return ro(e,t.component.subTree).flat(1)}return[]}function yu(e){const t=ht({}),n=C(e);return Dn(()=>{for(const i in n.value)t[i]=n.value[i]},{flush:"sync"}),Ql(t)}function Ua(e,t){return e.includes(t)}function Uh(e){return e[2].toLowerCase()+e.slice(3)}const xn=()=>[Function,Array];function Ad(e,t){return t="on"+Fn(t),!!(e[t]||e[`${t}Once`]||e[`${t}Capture`]||e[`${t}OnceCapture`]||e[`${t}CaptureOnce`])}function IC(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i1&&arguments[1]!==void 0?arguments[1]:!0;const n=["button","[href]",'input:not([type="hidden"])',"select","textarea","[tabindex]"].map(i=>`${i}${t?':not([tabindex="-1"])':""}:not([disabled])`).join(", ");return[...e.querySelectorAll(n)]}function xC(e,t){if(!(Ye&&typeof CSS<"u"&&typeof CSS.supports<"u"&&CSS.supports(`selector(${t})`)))return null;try{return!!e&&e.matches(t)}catch{return null}}function AC(e,t){if(!Ye||e===0)return t(),()=>{};const n=window.setTimeout(t,e);return()=>window.clearTimeout(n)}const Dh=["top","bottom"],OC=["start","end","left","right"];function bl(e,t){let[n,i]=e.split(" ");return i||(i=Ua(Dh,n)?"start":Ua(OC,n)?"top":"center"),{side:Od(n,t),align:Od(i,t)}}function Od(e,t){return e==="start"?t?"right":"left":e==="end"?t?"left":"right":e}function Ms(e){return{side:{center:"center",top:"bottom",bottom:"top",left:"right",right:"left"}[e.side],align:e.align}}function Vs(e){return{side:e.side,align:{center:"center",top:"bottom",bottom:"top",left:"right",right:"left"}[e.align]}}function Ld(e){return{side:e.align,align:e.side}}function Pd(e){return Ua(Dh,e.side)?"y":"x"}class _i{constructor(t){let{x:n,y:i,width:r,height:o}=t;this.x=n,this.y=i,this.width=r,this.height=o}get top(){return this.y}get bottom(){return this.y+this.height}get left(){return this.x}get right(){return this.x+this.width}}function Ud(e,t){return{x:{before:Math.max(0,t.left-e.left),after:Math.max(0,e.right-t.right)},y:{before:Math.max(0,t.top-e.top),after:Math.max(0,e.bottom-t.bottom)}}}function Nh(e){return Array.isArray(e)?new _i({x:e[0],y:e[1],width:0,height:0}):e.getBoundingClientRect()}function wu(e){const t=e.getBoundingClientRect(),n=getComputedStyle(e),i=n.transform;if(i){let r,o,a,s,l;if(i.startsWith("matrix3d("))r=i.slice(9,-1).split(/, /),o=+r[0],a=+r[5],s=+r[12],l=+r[13];else if(i.startsWith("matrix("))r=i.slice(7,-1).split(/, /),o=+r[0],a=+r[3],s=+r[4],l=+r[5];else return new _i(t);const u=n.transformOrigin,c=t.x-s-(1-o)*parseFloat(u),d=t.y-l-(1-a)*parseFloat(u.slice(u.indexOf(" ")+1)),f=o?t.width/o:e.offsetWidth+1,h=a?t.height/a:e.offsetHeight+1;return new _i({x:c,y:d,width:f,height:h})}else return new _i(t)}function vi(e,t,n){if(typeof e.animate>"u")return{finished:Promise.resolve()};let i;try{i=e.animate(t,n)}catch{return{finished:Promise.resolve()}}return typeof i.finished>"u"&&(i.finished=new Promise(r=>{i.onfinish=()=>{r(i)}})),i}const da=new WeakMap;function LC(e,t){Object.keys(t).forEach(n=>{if(vu(n)){const i=Uh(n),r=da.get(e);if(t[n]==null)r==null||r.forEach(o=>{const[a,s]=o;a===i&&(e.removeEventListener(i,s),r.delete(o))});else if(!r||![...r].some(o=>o[0]===i&&o[1]===t[n])){e.addEventListener(i,t[n]);const o=r||new Set;o.add([i,t[n]]),da.has(e)||da.set(e,o)}}else t[n]==null?e.removeAttribute(n):e.setAttribute(n,t[n])})}function PC(e,t){Object.keys(t).forEach(n=>{if(vu(n)){const i=Uh(n),r=da.get(e);r==null||r.forEach(o=>{const[a,s]=o;a===i&&(e.removeEventListener(i,s),r.delete(o))})}else e.removeAttribute(n)})}const Ni=2.4,Fd=.2126729,Dd=.7151522,Nd=.072175,UC=.55,FC=.58,DC=.57,NC=.62,Qo=.03,Bd=1.45,BC=5e-4,$C=1.25,MC=1.25,$d=.078,Md=12.82051282051282,jo=.06,Vd=.001;function qd(e,t){const n=(e.r/255)**Ni,i=(e.g/255)**Ni,r=(e.b/255)**Ni,o=(t.r/255)**Ni,a=(t.g/255)**Ni,s=(t.b/255)**Ni;let l=n*Fd+i*Dd+r*Nd,u=o*Fd+a*Dd+s*Nd;if(l<=Qo&&(l+=(Qo-l)**Bd),u<=Qo&&(u+=(Qo-u)**Bd),Math.abs(u-l)l){const d=(u**UC-l**FC)*$C;c=d-Vd?0:d>-$d?d-d*Md*jo:d+jo}return c*100}const Fa=.20689655172413793,VC=e=>e>Fa**3?Math.cbrt(e):e/(3*Fa**2)+4/29,qC=e=>e>Fa?e**3:3*Fa**2*(e-4/29);function Bh(e){const t=VC,n=t(e[1]);return[116*n-16,500*(t(e[0]/.95047)-n),200*(n-t(e[2]/1.08883))]}function $h(e){const t=qC,n=(e[0]+16)/116;return[t(n+e[1]/500)*.95047,t(n),t(n-e[2]/200)*1.08883]}const zC=[[3.2406,-1.5372,-.4986],[-.9689,1.8758,.0415],[.0557,-.204,1.057]],HC=e=>e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055,WC=[[.4124,.3576,.1805],[.2126,.7152,.0722],[.0193,.1192,.9505]],JC=e=>e<=.04045?e/12.92:((e+.055)/1.055)**2.4;function Mh(e){const t=Array(3),n=HC,i=zC;for(let r=0;r<3;++r)t[r]=Math.round(lr(n(i[r][0]*e[0]+i[r][1]*e[1]+i[r][2]*e[2]))*255);return{r:t[0],g:t[1],b:t[2]}}function bu(e){let{r:t,g:n,b:i}=e;const r=[0,0,0],o=JC,a=WC;t=o(t/255),n=o(n/255),i=o(i/255);for(let s=0;s<3;++s)r[s]=a[s][0]*t+a[s][1]*n+a[s][2]*i;return r}function Sl(e){return!!e&&/^(#|var\(--|(rgb|hsl)a?\()/.test(e)}function GC(e){return Sl(e)&&!/^((rgb|hsl)a?\()?var\(--/.test(e)}const zd=/^(?(?:rgb|hsl)a?)\((?.+)\)/,KC={rgb:(e,t,n,i)=>({r:e,g:t,b:n,a:i}),rgba:(e,t,n,i)=>({r:e,g:t,b:n,a:i}),hsl:(e,t,n,i)=>Hd({h:e,s:t,l:n,a:i}),hsla:(e,t,n,i)=>Hd({h:e,s:t,l:n,a:i}),hsv:(e,t,n,i)=>vo({h:e,s:t,v:n,a:i}),hsva:(e,t,n,i)=>vo({h:e,s:t,v:n,a:i})};function vn(e){if(typeof e=="number")return{r:(e&16711680)>>16,g:(e&65280)>>8,b:e&255};if(typeof e=="string"&&zd.test(e)){const{groups:t}=e.match(zd),{fn:n,values:i}=t,r=i.split(/,\s*/).map(o=>o.endsWith("%")&&["hsl","hsla","hsv","hsva"].includes(n)?parseFloat(o)/100:parseFloat(o));return KC[n](...r)}else if(typeof e=="string"){let t=e.startsWith("#")?e.slice(1):e;return[3,4].includes(t.length)?t=t.split("").map(n=>n+n).join(""):[6,8].includes(t.length),YC(t)}else if(typeof e=="object"){if($s(e,["r","g","b"]))return e;if($s(e,["h","s","l"]))return vo(Vh(e));if($s(e,["h","s","v"]))return vo(e)}throw new TypeError(`Invalid color: ${e==null?e:String(e)||e.constructor.name} +Expected #hex, #hexa, rgb(), rgba(), hsl(), hsla(), object or number`)}function vo(e){const{h:t,s:n,v:i,a:r}=e,o=s=>{const l=(s+t/60)%6;return i-i*n*Math.max(Math.min(l,4-l,1),0)},a=[o(5),o(3),o(1)].map(s=>Math.round(s*255));return{r:a[0],g:a[1],b:a[2],a:r}}function Hd(e){return vo(Vh(e))}function Vh(e){const{h:t,s:n,l:i,a:r}=e,o=i+n*Math.min(i,1-i),a=o===0?0:2-2*i/o;return{h:t,s:a,v:o,a:r}}function ea(e){const t=Math.round(e).toString(16);return("00".substr(0,2-t.length)+t).toUpperCase()}function ZC(e){let{r:t,g:n,b:i,a:r}=e;return`#${[ea(t),ea(n),ea(i),r!==void 0?ea(Math.round(r*255)):""].join("")}`}function YC(e){e=XC(e);let[t,n,i,r]=EC(e,2).map(o=>parseInt(o,16));return r=r===void 0?r:r/255,{r:t,g:n,b:i,a:r}}function XC(e){return e.startsWith("#")&&(e=e.slice(1)),e=e.replace(/([^0-9a-f])/gi,"F"),(e.length===3||e.length===4)&&(e=e.split("").map(t=>t+t).join("")),e.length!==6&&(e=Id(Id(e,6),8,"F")),e}function QC(e,t){const n=Bh(bu(e));return n[0]=n[0]+t*10,Mh($h(n))}function jC(e,t){const n=Bh(bu(e));return n[0]=n[0]-t*10,Mh($h(n))}function eR(e){const t=vn(e);return bu(t)[1]}function qh(e){const t=Math.abs(qd(vn(0),vn(e)));return Math.abs(qd(vn(16777215),vn(e)))>Math.min(t,50)?"#fff":"#000"}function J(e,t){return n=>Object.keys(e).reduce((i,r)=>{const a=typeof e[r]=="object"&&e[r]!=null&&!Array.isArray(e[r])?e[r]:{type:e[r]};return n&&r in n?i[r]={...a,default:n[r]}:i[r]=a,t&&!i[r].source&&(i[r].source=t),i},{})}const Ce=J({class:[String,Array],style:{type:[String,Array,Object],default:null}},"component");function hr(e){if(e._setup=e._setup??e.setup,!e.name)return e;if(e._setup){e.props=J(e.props??{},e.name)();const t=Object.keys(e.props).filter(n=>n!=="class"&&n!=="style");e.filterProps=function(i){return Oh(i,t)},e.props._as=String,e.setup=function(i,r){const o=Cu();if(!o.value)return e._setup(i,r);const{props:a,provideSubDefaults:s}=uR(i,i._as??e.name,o),l=e._setup(a,r);return s(),l}}return e}function oe(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return t=>(e?hr:pt)(t)}function Io(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"div",n=arguments.length>2?arguments[2]:void 0;return oe()({name:n??Fn(Yt(e.replace(/__/g,"-"))),props:{tag:{type:String,default:t},...Ce()},setup(i,r){let{slots:o}=r;return()=>{var a;return bn(i.tag,{class:[e,i.class],style:i.style},(a=o.default)==null?void 0:a.call(o))}}})}function zh(e){if(typeof e.getRootNode!="function"){for(;e.parentNode;)e=e.parentNode;return e!==document?null:document}const t=e.getRootNode();return t!==document&&t.getRootNode({composed:!0})!==document?null:t}const yo="cubic-bezier(0.4, 0, 0.2, 1)",tR="cubic-bezier(0.0, 0, 0.2, 1)",nR="cubic-bezier(0.4, 0, 1, 1)";function dt(e,t){const n=cu();if(!n)throw new Error(`[Vuetify] ${e} ${t||"must be called from inside a setup function"}`);return n}function Sn(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"composables";const t=dt(e).type;return Ri((t==null?void 0:t.aliasName)||(t==null?void 0:t.name))}let Hh=0,fa=new WeakMap;function $n(){const e=dt("getUid");if(fa.has(e))return fa.get(e);{const t=Hh++;return fa.set(e,t),t}}$n.reset=()=>{Hh=0,fa=new WeakMap};function iR(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;for(;e;){if(t?rR(e):Su(e))return e;e=e.parentElement}return document.scrollingElement}function Da(e,t){const n=[];if(t&&e&&!t.contains(e))return n;for(;e&&(Su(e)&&n.push(e),e!==t);)e=e.parentElement;return n}function Su(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;const t=window.getComputedStyle(e);return t.overflowY==="scroll"||t.overflowY==="auto"&&e.scrollHeight>e.clientHeight}function rR(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;const t=window.getComputedStyle(e);return["scroll","auto"].includes(t.overflowY)}function oR(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:dt("injectSelf");const{provides:n}=t;if(n&&e in n)return n[e]}function aR(e){for(;e;){if(window.getComputedStyle(e).position==="fixed")return!0;e=e.offsetParent}return!1}function pe(e){const t=dt("useRender");t.render=e}const ur=Symbol.for("vuetify:defaults");function sR(e){return Se(e)}function Cu(){const e=Je(ur);if(!e)throw new Error("[Vuetify] Could not find defaults instance");return e}function Cn(e,t){const n=Cu(),i=Se(e),r=C(()=>{if(bt(t==null?void 0:t.disabled))return n.value;const a=bt(t==null?void 0:t.scoped),s=bt(t==null?void 0:t.reset),l=bt(t==null?void 0:t.root);if(i.value==null&&!(a||s||l))return n.value;let u=Ut(i.value,{prev:n.value});if(a)return u;if(s||l){const c=Number(s||1/0);for(let d=0;d<=c&&!(!u||!("prev"in u));d++)u=u.prev;return u&&typeof l=="string"&&l in u&&(u=Ut(Ut(u,{prev:u}),u[l])),u}return u.prev?Ut(u.prev,u):u});return Ft(ur,r),r}function lR(e,t){var n,i;return typeof((n=e.props)==null?void 0:n[t])<"u"||typeof((i=e.props)==null?void 0:i[Ri(t)])<"u"}function uR(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Cu();const i=dt("useDefaults");if(t=t??i.type.name??i.type.__name,!t)throw new Error("[Vuetify] Could not determine component name");const r=C(()=>{var l;return(l=n.value)==null?void 0:l[e._as??t]}),o=new Proxy(e,{get(l,u){var d,f,h,m;const c=Reflect.get(l,u);return u==="class"||u==="style"?[(d=r.value)==null?void 0:d[u],c].filter(g=>g!=null):typeof u=="string"&&!lR(i.vnode,u)?((f=r.value)==null?void 0:f[u])??((m=(h=n.value)==null?void 0:h.global)==null?void 0:m[u])??c:c}}),a=be();Dn(()=>{if(r.value){const l=Object.entries(r.value).filter(u=>{let[c]=u;return c.startsWith(c[0].toUpperCase())});a.value=l.length?Object.fromEntries(l):void 0}else a.value=void 0});function s(){const l=oR(ur,i);Ft(ur,C(()=>a.value?Ut((l==null?void 0:l.value)??{},a.value):l==null?void 0:l.value))}return{props:o,provideSubDefaults:s}}const cR=J({defaults:Object,disabled:Boolean,reset:[Number,String],root:[Boolean,String],scoped:Boolean},"VDefaultsProvider"),ct=oe(!1)({name:"VDefaultsProvider",props:cR(),setup(e,t){let{slots:n}=t;const{defaults:i,disabled:r,reset:o,root:a,scoped:s}=Ql(e);return Cn(i,{reset:o,root:a,scoped:s,disabled:r}),()=>{var l;return(l=n.default)==null?void 0:l.call(n)}}});function Ru(e){return yu(()=>{const t=[],n={};if(e.value.background)if(Sl(e.value.background)){if(n.backgroundColor=e.value.background,!e.value.text&&GC(e.value.background)){const i=vn(e.value.background);if(i.a==null||i.a===1){const r=qh(i);n.color=r,n.caretColor=r}}}else t.push(`bg-${e.value.background}`);return e.value.text&&(Sl(e.value.text)?(n.color=e.value.text,n.caretColor=e.value.text):t.push(`text-${e.value.text}`)),{colorClasses:t,colorStyles:n}})}function Pn(e,t){const n=C(()=>({text:nt(e)?e.value:t?e[t]:null})),{colorClasses:i,colorStyles:r}=Ru(n);return{textColorClasses:i,textColorStyles:r}}function Qt(e,t){const n=C(()=>({background:nt(e)?e.value:t?e[t]:null})),{colorClasses:i,colorStyles:r}=Ru(n);return{backgroundColorClasses:i,backgroundColorStyles:r}}const dR={collapse:"mdi-chevron-up",complete:"mdi-check",cancel:"mdi-close-circle",close:"mdi-close",delete:"mdi-close-circle",clear:"mdi-close-circle",success:"mdi-check-circle",info:"mdi-information",warning:"mdi-alert-circle",error:"mdi-close-circle",prev:"mdi-chevron-left",next:"mdi-chevron-right",checkboxOn:"mdi-checkbox-marked",checkboxOff:"mdi-checkbox-blank-outline",checkboxIndeterminate:"mdi-minus-box",delimiter:"mdi-circle",sortAsc:"mdi-arrow-up",sortDesc:"mdi-arrow-down",expand:"mdi-chevron-down",menu:"mdi-menu",subgroup:"mdi-menu-down",dropdown:"mdi-menu-down",radioOn:"mdi-radiobox-marked",radioOff:"mdi-radiobox-blank",edit:"mdi-pencil",ratingEmpty:"mdi-star-outline",ratingFull:"mdi-star",ratingHalf:"mdi-star-half-full",loading:"mdi-cached",first:"mdi-page-first",last:"mdi-page-last",unfold:"mdi-unfold-more-horizontal",file:"mdi-paperclip",plus:"mdi-plus",minus:"mdi-minus",calendar:"mdi-calendar",eyeDropper:"mdi-eyedropper"},fR={component:e=>bn(_u,{...e,class:"mdi"})},qe=[String,Function,Object,Array],Cl=Symbol.for("vuetify:icons"),ds=J({icon:{type:qe},tag:{type:String,required:!0}},"icon"),Wd=oe()({name:"VComponentIcon",props:ds(),setup(e,t){let{slots:n}=t;return()=>{const i=e.icon;return p(e.tag,null,{default:()=>{var r;return[e.icon?p(i,null,null):(r=n.default)==null?void 0:r.call(n)]}})}}}),Wh=hr({name:"VSvgIcon",inheritAttrs:!1,props:ds(),setup(e,t){let{attrs:n}=t;return()=>p(e.tag,Pe(n,{style:null}),{default:()=>[p("svg",{class:"v-icon__svg",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",role:"img","aria-hidden":"true"},[Array.isArray(e.icon)?e.icon.map(i=>Array.isArray(i)?p("path",{d:i[0],"fill-opacity":i[1]},null):p("path",{d:i},null)):p("path",{d:e.icon},null)])]})}});hr({name:"VLigatureIcon",props:ds(),setup(e){return()=>p(e.tag,null,{default:()=>[e.icon]})}});const _u=hr({name:"VClassIcon",props:ds(),setup(e){return()=>p(e.tag,{class:e.icon},null)}}),pR={svg:{component:Wh},class:{component:_u}};function hR(e){return Ut({defaultSet:"mdi",sets:{...pR,mdi:fR},aliases:{...dR,vuetify:["M8.2241 14.2009L12 21L22 3H14.4459L8.2241 14.2009Z",["M7.26303 12.4733L7.00113 12L2 3H12.5261C12.5261 3 12.5261 3 12.5261 3L7.26303 12.4733Z",.6]],"vuetify-outline":"svg:M7.26 12.47 12.53 3H2L7.26 12.47ZM14.45 3 8.22 14.2 12 21 22 3H14.45ZM18.6 5 12 16.88 10.51 14.2 15.62 5ZM7.26 8.35 5.4 5H9.13L7.26 8.35Z"}},e)}const mR=e=>{const t=Je(Cl);if(!t)throw new Error("Missing Vuetify Icons provide!");return{iconData:C(()=>{var l;const i=bt(e);if(!i)return{component:Wd};let r=i;if(typeof r=="string"&&(r=r.trim(),r.startsWith("$")&&(r=(l=t.aliases)==null?void 0:l[r.slice(1)])),!r)throw new Error(`Could not find aliased icon "${i}"`);if(Array.isArray(r))return{component:Wh,icon:r};if(typeof r!="string")return{component:Wd,icon:r};const o=Object.keys(t.sets).find(u=>typeof r=="string"&&r.startsWith(`${u}:`)),a=o?r.slice(o.length+1):r;return{component:t.sets[o??t.defaultSet].component,icon:a}})}},gR=["x-small","small","default","large","x-large"],oi=J({size:{type:[String,Number],default:"default"}},"size");function mr(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Sn();return yu(()=>{let n,i;return Ua(gR,e.size)?n=`${t}--size-${e.size}`:e.size&&(i={width:le(e.size),height:le(e.size)}),{sizeClasses:n,sizeStyles:i}})}const He=J({tag:{type:String,default:"div"}},"tag"),wo=Symbol.for("vuetify:theme"),it=J({theme:String},"theme");function Jd(){return{defaultTheme:"light",variations:{colors:[],lighten:0,darken:0},themes:{light:{dark:!1,colors:{background:"#FFFFFF",surface:"#FFFFFF","surface-bright":"#FFFFFF","surface-light":"#EEEEEE","surface-variant":"#424242","on-surface-variant":"#EEEEEE",primary:"#1867C0","primary-darken-1":"#1F5592",secondary:"#48A9A6","secondary-darken-1":"#018786",error:"#B00020",info:"#2196F3",success:"#4CAF50",warning:"#FB8C00"},variables:{"border-color":"#000000","border-opacity":.12,"high-emphasis-opacity":.87,"medium-emphasis-opacity":.6,"disabled-opacity":.38,"idle-opacity":.04,"hover-opacity":.04,"focus-opacity":.12,"selected-opacity":.08,"activated-opacity":.12,"pressed-opacity":.12,"dragged-opacity":.08,"theme-kbd":"#212529","theme-on-kbd":"#FFFFFF","theme-code":"#F5F5F5","theme-on-code":"#000000"}},dark:{dark:!0,colors:{background:"#121212",surface:"#212121","surface-bright":"#ccbfd6","surface-light":"#424242","surface-variant":"#a3a3a3","on-surface-variant":"#424242",primary:"#2196F3","primary-darken-1":"#277CC1",secondary:"#54B6B2","secondary-darken-1":"#48A9A6",error:"#CF6679",info:"#2196F3",success:"#4CAF50",warning:"#FB8C00"},variables:{"border-color":"#FFFFFF","border-opacity":.12,"high-emphasis-opacity":1,"medium-emphasis-opacity":.7,"disabled-opacity":.5,"idle-opacity":.1,"hover-opacity":.04,"focus-opacity":.12,"selected-opacity":.08,"activated-opacity":.12,"pressed-opacity":.16,"dragged-opacity":.08,"theme-kbd":"#212529","theme-on-kbd":"#FFFFFF","theme-code":"#343434","theme-on-code":"#CCCCCC"}}}}}function vR(){var i,r;let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Jd();const t=Jd();if(!e)return{...t,isDisabled:!0};const n={};for(const[o,a]of Object.entries(e.themes??{})){const s=a.dark||o==="dark"?(i=t.themes)==null?void 0:i.dark:(r=t.themes)==null?void 0:r.light;n[o]=Ut(s,a)}return Ut(t,{...e,themes:n})}function yR(e){const t=vR(e),n=Se(t.defaultTheme),i=Se(t.themes),r=C(()=>{const c={};for(const[d,f]of Object.entries(i.value)){const h=c[d]={...f,colors:{...f.colors}};if(t.variations)for(const m of t.variations.colors){const g=h.colors[m];if(g)for(const S of["lighten","darken"]){const R=S==="lighten"?QC:jC;for(const k of mu(t.variations[S],1))h.colors[`${m}-${S}-${k}`]=ZC(R(vn(g),k))}}for(const m of Object.keys(h.colors)){if(/^on-[a-z]/.test(m)||h.colors[`on-${m}`])continue;const g=`on-${m}`,S=vn(h.colors[m]);h.colors[g]=qh(S)}}return c}),o=C(()=>r.value[n.value]),a=C(()=>{const c=[];o.value.dark&&ci(c,":root",["color-scheme: dark"]),ci(c,":root",Gd(o.value));for(const[m,g]of Object.entries(r.value))ci(c,`.v-theme--${m}`,[`color-scheme: ${g.dark?"dark":"normal"}`,...Gd(g)]);const d=[],f=[],h=new Set(Object.values(r.value).flatMap(m=>Object.keys(m.colors)));for(const m of h)/^on-[a-z]/.test(m)?ci(f,`.${m}`,[`color: rgb(var(--v-theme-${m})) !important`]):(ci(d,`.bg-${m}`,[`--v-theme-overlay-multiplier: var(--v-theme-${m}-overlay-multiplier)`,`background-color: rgb(var(--v-theme-${m})) !important`,`color: rgb(var(--v-theme-on-${m})) !important`]),ci(f,`.text-${m}`,[`color: rgb(var(--v-theme-${m})) !important`]),ci(f,`.border-${m}`,[`--v-border-color: var(--v-theme-${m})`]));return c.push(...d,...f),c.map((m,g)=>g===0?m:` ${m}`).join("")});function s(){return{style:[{children:a.value,id:"vuetify-theme-stylesheet",nonce:t.cspNonce||!1}]}}function l(c){if(t.isDisabled)return;const d=c._context.provides.usehead;if(d)if(d.push){const h=d.push(s);Ye&&we(a,()=>{h.patch(s)})}else Ye?(d.addHeadObjs(C(s)),Dn(()=>d.updateDOM())):d.addHeadObjs(s());else{let m=function(){if(typeof document<"u"&&!h){const g=document.createElement("style");g.type="text/css",g.id="vuetify-theme-stylesheet",t.cspNonce&&g.setAttribute("nonce",t.cspNonce),h=g,document.head.appendChild(h)}h&&(h.innerHTML=a.value)};var f=m;let h=Ye?document.getElementById("vuetify-theme-stylesheet"):null;Ye?we(a,m,{immediate:!0}):m()}}const u=C(()=>t.isDisabled?void 0:`v-theme--${n.value}`);return{install:l,isDisabled:t.isDisabled,name:n,themes:i,current:o,computedThemes:r,themeClasses:u,styles:a,global:{name:n,current:o}}}function lt(e){dt("provideTheme");const t=Je(wo,null);if(!t)throw new Error("Could not find Vuetify theme injection");const n=C(()=>e.theme??t.name.value),i=C(()=>t.themes.value[n.value]),r=C(()=>t.isDisabled?void 0:`v-theme--${n.value}`),o={...t,name:n,current:i,themeClasses:r};return Ft(wo,o),o}function wR(){dt("useTheme");const e=Je(wo,null);if(!e)throw new Error("Could not find Vuetify theme injection");return e}function ci(e,t,n){e.push(`${t} { +`,...n.map(i=>` ${i}; +`),`} +`)}function Gd(e){const t=e.dark?2:1,n=e.dark?1:2,i=[];for(const[r,o]of Object.entries(e.colors)){const a=vn(o);i.push(`--v-theme-${r}: ${a.r},${a.g},${a.b}`),r.startsWith("on-")||i.push(`--v-theme-${r}-overlay-multiplier: ${eR(o)>.18?t:n}`)}for(const[r,o]of Object.entries(e.variables)){const a=typeof o=="string"&&o.startsWith("#")?vn(o):void 0,s=a?`${a.r}, ${a.g}, ${a.b}`:void 0;i.push(`--v-${r}: ${s??o}`)}return i}const bR=J({color:String,start:Boolean,end:Boolean,icon:qe,...Ce(),...oi(),...He({tag:"i"}),...it()},"VIcon"),Qe=oe()({name:"VIcon",props:bR(),setup(e,t){let{attrs:n,slots:i}=t;const r=Se(),{themeClasses:o}=lt(e),{iconData:a}=mR(C(()=>r.value||e.icon)),{sizeClasses:s}=mr(e),{textColorClasses:l,textColorStyles:u}=Pn(ve(e,"color"));return pe(()=>{var d,f;const c=(d=i.default)==null?void 0:d.call(i);return c&&(r.value=(f=Ph(c).filter(h=>h.type===To&&h.children&&typeof h.children=="string")[0])==null?void 0:f.children),p(a.value.component,{tag:e.tag,icon:a.value.icon,class:["v-icon","notranslate",o.value,s.value,l.value,{"v-icon--clickable":!!n.onClick,"v-icon--start":e.start,"v-icon--end":e.end},e.class],style:[s.value?void 0:{fontSize:le(e.size),height:le(e.size),width:le(e.size)},u.value,e.style],role:n.onClick?"button":void 0,"aria-hidden":!n.onClick},{default:()=>[c]})}),{}}}),Li=J({height:[Number,String],maxHeight:[Number,String],maxWidth:[Number,String],minHeight:[Number,String],minWidth:[Number,String],width:[Number,String]},"dimension");function Pi(e){return{dimensionStyles:C(()=>({height:le(e.height),maxHeight:le(e.maxHeight),maxWidth:le(e.maxWidth),minHeight:le(e.minHeight),minWidth:le(e.minWidth),width:le(e.width)}))}}function SR(e){return{aspectStyles:C(()=>{const t=Number(e.aspectRatio);return t?{paddingBottom:String(1/t*100)+"%"}:void 0})}}const Jh=J({aspectRatio:[String,Number],contentClass:String,inline:Boolean,...Ce(),...Li()},"VResponsive"),Kd=oe()({name:"VResponsive",props:Jh(),setup(e,t){let{slots:n}=t;const{aspectStyles:i}=SR(e),{dimensionStyles:r}=Pi(e);return pe(()=>{var o;return p("div",{class:["v-responsive",{"v-responsive--inline":e.inline},e.class],style:[r.value,e.style]},[p("div",{class:"v-responsive__sizer",style:i.value},null),(o=n.additional)==null?void 0:o.call(n),n.default&&p("div",{class:["v-responsive__content",e.contentClass]},[n.default()])])}),{}}}),Et=J({rounded:{type:[Boolean,Number,String],default:void 0}},"rounded");function Bt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Sn();return{roundedClasses:C(()=>{const i=nt(e)?e.value:e.rounded,r=[];if(i===!0||i==="")r.push(`${t}--rounded`);else if(typeof i=="string"||i===0)for(const o of String(i).split(" "))r.push(`rounded-${o}`);return r})}}const fs=J({transition:{type:[Boolean,String,Object],default:"fade-transition",validator:e=>e!==!0}},"transition"),yi=(e,t)=>{let{slots:n}=t;const{transition:i,disabled:r,...o}=e,{component:a=Ln,...s}=typeof i=="object"?i:{};return bn(a,Pe(typeof i=="string"?{name:r?"":i}:s,o,{disabled:r}),n)};function CR(e,t){if(!hu)return;const n=t.modifiers||{},i=t.value,{handler:r,options:o}=typeof i=="object"?i:{handler:i,options:{}},a=new IntersectionObserver(function(){var d;let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],l=arguments.length>1?arguments[1]:void 0;const u=(d=e._observe)==null?void 0:d[t.instance.$.uid];if(!u)return;const c=s.some(f=>f.isIntersecting);r&&(!n.quiet||u.init)&&(!n.once||c||u.init)&&r(c,s,l),c&&n.once?Gh(e,t):u.init=!0},o);e._observe=Object(e._observe),e._observe[t.instance.$.uid]={init:!1,observer:a},a.observe(e)}function Gh(e,t){var i;const n=(i=e._observe)==null?void 0:i[t.instance.$.uid];n&&(n.observer.unobserve(e),delete e._observe[t.instance.$.uid])}const RR={mounted:CR,unmounted:Gh},Kh=RR,_R=J({alt:String,cover:Boolean,color:String,draggable:{type:[Boolean,String],default:void 0},eager:Boolean,gradient:String,lazySrc:String,options:{type:Object,default:()=>({root:void 0,rootMargin:void 0,threshold:void 0})},sizes:String,src:{type:[String,Object],default:""},crossorigin:String,referrerpolicy:String,srcset:String,position:String,...Jh(),...Ce(),...Et(),...fs()},"VImg"),gr=oe()({name:"VImg",directives:{intersect:Kh},props:_R(),emits:{loadstart:e=>!0,load:e=>!0,error:e=>!0},setup(e,t){let{emit:n,slots:i}=t;const{backgroundColorClasses:r,backgroundColorStyles:o}=Qt(ve(e,"color")),{roundedClasses:a}=Bt(e),s=dt("VImg"),l=be(""),u=Se(),c=be(e.eager?"loading":"idle"),d=be(),f=be(),h=C(()=>e.src&&typeof e.src=="object"?{src:e.src.src,srcset:e.srcset||e.src.srcset,lazySrc:e.lazySrc||e.src.lazySrc,aspect:Number(e.aspectRatio||e.src.aspect||0)}:{src:e.src,srcset:e.srcset,lazySrc:e.lazySrc,aspect:Number(e.aspectRatio||0)}),m=C(()=>h.value.aspect||d.value/f.value||0);we(()=>e.src,()=>{g(c.value!=="idle")}),we(m,(O,F)=>{!O&&F&&u.value&&P(u.value)}),ou(()=>g());function g(O){if(!(e.eager&&O)&&!(hu&&!O&&!e.eager)){if(c.value="loading",h.value.lazySrc){const F=new Image;F.src=h.value.lazySrc,P(F,null)}h.value.src&&vt(()=>{var F;n("loadstart",((F=u.value)==null?void 0:F.currentSrc)||h.value.src),setTimeout(()=>{var V;if(!s.isUnmounted)if((V=u.value)!=null&&V.complete){if(u.value.naturalWidth||R(),c.value==="error")return;m.value||P(u.value,null),c.value==="loading"&&S()}else m.value||P(u.value),k()})})}}function S(){var O;s.isUnmounted||(k(),P(u.value),c.value="loaded",n("load",((O=u.value)==null?void 0:O.currentSrc)||h.value.src))}function R(){var O;s.isUnmounted||(c.value="error",n("error",((O=u.value)==null?void 0:O.currentSrc)||h.value.src))}function k(){const O=u.value;O&&(l.value=O.currentSrc||O.src)}let I=-1;dn(()=>{clearTimeout(I)});function P(O){let F=arguments.length>1&&arguments[1]!==void 0?arguments[1]:100;const V=()=>{if(clearTimeout(I),s.isUnmounted)return;const{naturalHeight:ae,naturalWidth:se}=O;ae||se?(d.value=se,f.value=ae):!O.complete&&c.value==="loading"&&F!=null?I=window.setTimeout(V,F):(O.currentSrc.endsWith(".svg")||O.currentSrc.startsWith("data:image/svg+xml"))&&(d.value=1,f.value=1)};V()}const L=C(()=>({"v-img__img--cover":e.cover,"v-img__img--contain":!e.cover})),T=()=>{var V;if(!h.value.src||c.value==="idle")return null;const O=p("img",{class:["v-img__img",L.value],style:{objectPosition:e.position},src:h.value.src,srcset:h.value.srcset,alt:e.alt,crossorigin:e.crossorigin,referrerpolicy:e.referrerpolicy,draggable:e.draggable,sizes:e.sizes,ref:u,onLoad:S,onError:R},null),F=(V=i.sources)==null?void 0:V.call(i);return p(yi,{transition:e.transition,appear:!0},{default:()=>[Xt(F?p("picture",{class:"v-img__picture"},[F,O]):O,[[pr,c.value==="loaded"]])]})},E=()=>p(yi,{transition:e.transition},{default:()=>[h.value.lazySrc&&c.value!=="loaded"&&p("img",{class:["v-img__img","v-img__img--preload",L.value],style:{objectPosition:e.position},src:h.value.lazySrc,alt:e.alt,crossorigin:e.crossorigin,referrerpolicy:e.referrerpolicy,draggable:e.draggable},null)]}),x=()=>i.placeholder?p(yi,{transition:e.transition,appear:!0},{default:()=>[(c.value==="loading"||c.value==="error"&&!i.error)&&p("div",{class:"v-img__placeholder"},[i.placeholder()])]}):null,N=()=>i.error?p(yi,{transition:e.transition,appear:!0},{default:()=>[c.value==="error"&&p("div",{class:"v-img__error"},[i.error()])]}):null,$=()=>e.gradient?p("div",{class:"v-img__gradient",style:{backgroundImage:`linear-gradient(${e.gradient})`}},null):null,W=be(!1);{const O=we(m,F=>{F&&(requestAnimationFrame(()=>{requestAnimationFrame(()=>{W.value=!0})}),O())})}return pe(()=>{const O=Kd.filterProps(e);return Xt(p(Kd,Pe({class:["v-img",{"v-img--booting":!W.value},r.value,a.value,e.class],style:[{width:le(e.width==="auto"?d.value:e.width)},o.value,e.style]},O,{aspectRatio:m.value,"aria-label":e.alt,role:e.alt?"img":void 0}),{additional:()=>p(_e,null,[p(T,null,null),p(E,null,null),p($,null,null),p(x,null,null),p(N,null,null)]),default:i.default}),[[Ai("intersect"),{handler:g,options:e.options},null,{once:!0}]])}),{currentSrc:l,image:u,state:c,naturalWidth:d,naturalHeight:f}}}),kR=[null,"default","comfortable","compact"],$t=J({density:{type:String,default:"default",validator:e=>kR.includes(e)}},"density");function fn(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Sn();return{densityClasses:C(()=>`${t}--density-${e.density}`)}}const TR=["elevated","flat","tonal","outlined","text","plain"];function xo(e,t){return p(_e,null,[e&&p("span",{key:"overlay",class:`${t}__overlay`},null),p("span",{key:"underlay",class:`${t}__underlay`},null)])}const Ui=J({color:String,variant:{type:String,default:"elevated",validator:e=>TR.includes(e)}},"variant");function Ao(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Sn();const n=C(()=>{const{variant:o}=bt(e);return`${t}--variant-${o}`}),{colorClasses:i,colorStyles:r}=Ru(C(()=>{const{variant:o,color:a}=bt(e);return{[["elevated","flat"].includes(o)?"background":"text"]:a}}));return{colorClasses:i,colorStyles:r,variantClasses:n}}const ER=J({start:Boolean,end:Boolean,icon:qe,image:String,text:String,...Ce(),...$t(),...Et(),...oi(),...He(),...it(),...Ui({variant:"flat"})},"VAvatar"),bo=oe()({name:"VAvatar",props:ER(),setup(e,t){let{slots:n}=t;const{themeClasses:i}=lt(e),{colorClasses:r,colorStyles:o,variantClasses:a}=Ao(e),{densityClasses:s}=fn(e),{roundedClasses:l}=Bt(e),{sizeClasses:u,sizeStyles:c}=mr(e);return pe(()=>p(e.tag,{class:["v-avatar",{"v-avatar--start":e.start,"v-avatar--end":e.end},i.value,r.value,s.value,l.value,u.value,a.value,e.class],style:[o.value,c.value,e.style]},{default:()=>[n.default?p(ct,{key:"content-defaults",defaults:{VImg:{cover:!0,image:e.image},VIcon:{icon:e.icon}}},{default:()=>[n.default()]}):e.image?p(gr,{key:"image",src:e.image,alt:"",cover:!0},null):e.icon?p(Qe,{key:"icon",icon:e.icon},null):e.text,xo(!1,"v-avatar")]})),{}}}),vr=J({border:[Boolean,Number,String]},"border");function yr(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Sn();return{borderClasses:C(()=>{const i=nt(e)?e.value:e.border,r=[];if(i===!0||i==="")r.push(`${t}--border`);else if(typeof i=="string"||i===0)for(const o of String(i).split(" "))r.push(`border-${o}`);return r})}}const Rn=J({elevation:{type:[Number,String],validator(e){const t=parseInt(e);return!isNaN(t)&&t>=0&&t<=24}}},"elevation");function Mn(e){return{elevationClasses:C(()=>{const n=nt(e)?e.value:e.elevation,i=[];return n==null||i.push(`elevation-${n}`),i})}}const Zh=J({divided:Boolean,...vr(),...Ce(),...$t(),...Rn(),...Et(),...He(),...it(),...Ui()},"VBtnGroup"),Na=oe()({name:"VBtnGroup",props:Zh(),setup(e,t){let{slots:n}=t;const{themeClasses:i}=lt(e),{densityClasses:r}=fn(e),{borderClasses:o}=yr(e),{elevationClasses:a}=Mn(e),{roundedClasses:s}=Bt(e);Cn({VBtn:{height:"auto",color:ve(e,"color"),density:ve(e,"density"),flat:!0,variant:ve(e,"variant")}}),pe(()=>p(e.tag,{class:["v-btn-group",{"v-btn-group--divided":e.divided},i.value,o.value,r.value,a.value,s.value,e.class],style:e.style},n))}});function Ti(e,t){let n;function i(){n=ja(),n.run(()=>t.length?t(()=>{n==null||n.stop(),i()}):t())}we(e,r=>{r&&!n?i():r||(n==null||n.stop(),n=void 0)},{immediate:!0}),cn(()=>{n==null||n.stop()})}function It(e,t,n){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:d=>d,r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:d=>d;const o=dt("useProxiedModel"),a=Se(e[t]!==void 0?e[t]:n),s=Ri(t),u=C(s!==t?()=>{var d,f,h,m;return e[t],!!(((d=o.vnode.props)!=null&&d.hasOwnProperty(t)||(f=o.vnode.props)!=null&&f.hasOwnProperty(s))&&((h=o.vnode.props)!=null&&h.hasOwnProperty(`onUpdate:${t}`)||(m=o.vnode.props)!=null&&m.hasOwnProperty(`onUpdate:${s}`)))}:()=>{var d,f;return e[t],!!((d=o.vnode.props)!=null&&d.hasOwnProperty(t)&&((f=o.vnode.props)!=null&&f.hasOwnProperty(`onUpdate:${t}`)))});Ti(()=>!u.value,()=>{we(()=>e[t],d=>{a.value=d})});const c=C({get(){const d=e[t];return i(u.value?d:a.value)},set(d){const f=r(d),h=Te(u.value?e[t]:a.value);h===f||i(h)===d||(a.value=f,o==null||o.emit(`update:${t}`,f))}});return Object.defineProperty(c,"externalValue",{get:()=>u.value?e[t]:a.value}),c}const Oo=J({modelValue:{type:null,default:void 0},multiple:Boolean,mandatory:[Boolean,String],max:Number,selectedClass:String,disabled:Boolean},"group"),ku=J({value:null,disabled:Boolean,selectedClass:String},"group-item");function Tu(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;const i=dt("useGroupItem");if(!i)throw new Error("[Vuetify] useGroupItem composable must be used inside a component setup function");const r=$n();Ft(Symbol.for(`${t.description}:id`),r);const o=Je(t,null);if(!o){if(!n)return o;throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${t.description}`)}const a=ve(e,"value"),s=C(()=>!!(o.disabled.value||e.disabled));o.register({id:r,value:a,disabled:s},i),dn(()=>{o.unregister(r)});const l=C(()=>o.isSelected(r)),u=C(()=>l.value&&[o.selectedClass.value,e.selectedClass]);return we(l,c=>{i.emit("group:selected",{value:c})}),{id:r,isSelected:l,toggle:()=>o.select(r,!l.value),select:c=>o.select(r,c),selectedClass:u,value:a,disabled:s,group:o}}function Lo(e,t){let n=!1;const i=ht([]),r=It(e,"modelValue",[],f=>f==null?[]:Yh(i,io(f)),f=>{const h=xR(i,f);return e.multiple?h:h[0]}),o=dt("useGroup");function a(f,h){const m=f,g=Symbol.for(`${t.description}:id`),R=ro(g,o==null?void 0:o.vnode).indexOf(h);bt(m.value)==null&&(m.value=R),R>-1?i.splice(R,0,m):i.push(m)}function s(f){if(n)return;l();const h=i.findIndex(m=>m.id===f);i.splice(h,1)}function l(){const f=i.find(h=>!h.disabled);f&&e.mandatory==="force"&&!r.value.length&&(r.value=[f.id])}Bn(()=>{l()}),dn(()=>{n=!0});function u(f,h){const m=i.find(g=>g.id===f);if(!(h&&(m!=null&&m.disabled)))if(e.multiple){const g=r.value.slice(),S=g.findIndex(k=>k===f),R=~S;if(h=h??!R,R&&e.mandatory&&g.length<=1||!R&&e.max!=null&&g.length+1>e.max)return;S<0&&h?g.push(f):S>=0&&!h&&g.splice(S,1),r.value=g}else{const g=r.value.includes(f);if(e.mandatory&&g)return;r.value=h??!g?[f]:[]}}function c(f){if(e.multiple,r.value.length){const h=r.value[0],m=i.findIndex(R=>R.id===h);let g=(m+f)%i.length,S=i[g];for(;S.disabled&&g!==m;)g=(g+f)%i.length,S=i[g];if(S.disabled)return;r.value=[i[g].id]}else{const h=i.find(m=>!m.disabled);h&&(r.value=[h.id])}}const d={register:a,unregister:s,selected:r,select:u,disabled:ve(e,"disabled"),prev:()=>c(i.length-1),next:()=>c(1),isSelected:f=>r.value.includes(f),selectedClass:C(()=>e.selectedClass),items:C(()=>i),getItemIndex:f=>IR(i,f)};return Ft(t,d),d}function IR(e,t){const n=Yh(e,[t]);return n.length?e.findIndex(i=>i.id===n[0]):-1}function Yh(e,t){const n=[];return t.forEach(i=>{const r=e.find(a=>cs(i,a.value)),o=e[i];(r==null?void 0:r.value)!=null?n.push(r.id):o!=null&&n.push(o.id)}),n}function xR(e,t){const n=[];return t.forEach(i=>{const r=e.findIndex(o=>o.id===i);if(~r){const o=e[r];n.push(o.value!=null?o.value:r)}}),n}const Eu=Symbol.for("vuetify:v-btn-toggle"),AR=J({...Zh(),...Oo()},"VBtnToggle");oe()({name:"VBtnToggle",props:AR(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const{isSelected:i,next:r,prev:o,select:a,selected:s}=Lo(e,Eu);return pe(()=>{const l=Na.filterProps(e);return p(Na,Pe({class:["v-btn-toggle",e.class]},l,{style:e.style}),{default:()=>{var u;return[(u=n.default)==null?void 0:u.call(n,{isSelected:i,next:r,prev:o,select:a,selected:s})]}})}),{next:r,prev:o,select:a}}});function Iu(e,t){const n=Se(),i=be(!1);if(hu){const r=new IntersectionObserver(o=>{e==null||e(o,r),i.value=!!o.find(a=>a.isIntersecting)},t);dn(()=>{r.disconnect()}),we(n,(o,a)=>{a&&(r.unobserve(a),i.value=!1),o&&r.observe(o)},{flush:"post"})}return{intersectionRef:n,isIntersecting:i}}function Ba(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"content";const n=Se(),i=Se();if(Ye){const r=new ResizeObserver(o=>{e==null||e(o,r),o.length&&(t==="content"?i.value=o[0].contentRect:i.value=o[0].target.getBoundingClientRect())});dn(()=>{r.disconnect()}),we(n,(o,a)=>{a&&(r.unobserve(Pa(a)),i.value=void 0),o&&r.observe(Pa(o))},{flush:"post"})}return{resizeRef:n,contentRect:ko(i)}}const OR=J({bgColor:String,color:String,indeterminate:[Boolean,String],modelValue:{type:[Number,String],default:0},rotate:{type:[Number,String],default:0},width:{type:[Number,String],default:4},...Ce(),...oi(),...He({tag:"div"}),...it()},"VProgressCircular"),Rl=oe()({name:"VProgressCircular",props:OR(),setup(e,t){let{slots:n}=t;const i=20,r=2*Math.PI*i,o=Se(),{themeClasses:a}=lt(e),{sizeClasses:s,sizeStyles:l}=mr(e),{textColorClasses:u,textColorStyles:c}=Pn(ve(e,"color")),{textColorClasses:d,textColorStyles:f}=Pn(ve(e,"bgColor")),{intersectionRef:h,isIntersecting:m}=Iu(),{resizeRef:g,contentRect:S}=Ba(),R=C(()=>Math.max(0,Math.min(100,parseFloat(e.modelValue)))),k=C(()=>Number(e.width)),I=C(()=>l.value?Number(e.size):S.value?S.value.width:Math.max(k.value,32)),P=C(()=>i/(1-k.value/I.value)*2),L=C(()=>k.value/I.value*P.value),T=C(()=>le((100-R.value)/100*r));return Dn(()=>{h.value=o.value,g.value=o.value}),pe(()=>p(e.tag,{ref:o,class:["v-progress-circular",{"v-progress-circular--indeterminate":!!e.indeterminate,"v-progress-circular--visible":m.value,"v-progress-circular--disable-shrink":e.indeterminate==="disable-shrink"},a.value,s.value,u.value,e.class],style:[l.value,c.value,e.style],role:"progressbar","aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":e.indeterminate?void 0:R.value},{default:()=>[p("svg",{style:{transform:`rotate(calc(-90deg + ${Number(e.rotate)}deg))`},xmlns:"http://www.w3.org/2000/svg",viewBox:`0 0 ${P.value} ${P.value}`},[p("circle",{class:["v-progress-circular__underlay",d.value],style:f.value,fill:"transparent",cx:"50%",cy:"50%",r:i,"stroke-width":L.value,"stroke-dasharray":r,"stroke-dashoffset":0},null),p("circle",{class:"v-progress-circular__overlay",fill:"transparent",cx:"50%",cy:"50%",r:i,"stroke-width":L.value,"stroke-dasharray":r,"stroke-dashoffset":T.value},null)]),n.default&&p("div",{class:"v-progress-circular__content"},[n.default({value:R.value})])]})),{}}}),LR={badge:"Badge",open:"Open",close:"Close",confirmEdit:{ok:"OK",cancel:"Cancel"},dataIterator:{noResultsText:"No matching records found",loadingText:"Loading items..."},dataTable:{itemsPerPageText:"Rows per page:",ariaLabel:{sortDescending:"Sorted descending.",sortAscending:"Sorted ascending.",sortNone:"Not sorted.",activateNone:"Activate to remove sorting.",activateDescending:"Activate to sort descending.",activateAscending:"Activate to sort ascending."},sortBy:"Sort by"},dataFooter:{itemsPerPageText:"Items per page:",itemsPerPageAll:"All",nextPage:"Next page",prevPage:"Previous page",firstPage:"First page",lastPage:"Last page",pageText:"{0}-{1} of {2}"},dateRangeInput:{divider:"to"},datePicker:{itemsSelected:"{0} selected",range:{title:"Select dates",header:"Enter dates"},title:"Select date",header:"Enter date",input:{placeholder:"Enter date"}},noDataText:"No data available",carousel:{prev:"Previous visual",next:"Next visual",ariaLabel:{delimiter:"Carousel slide {0} of {1}"}},calendar:{moreEvents:"{0} more",today:"Today"},input:{clear:"Clear {0}",prependAction:"{0} prepended action",appendAction:"{0} appended action",otp:"Please enter OTP character {0}"},fileInput:{counter:"{0} files",counterSize:"{0} files ({1} in total)"},timePicker:{am:"AM",pm:"PM"},pagination:{ariaLabel:{root:"Pagination Navigation",next:"Next page",previous:"Previous page",page:"Go to page {0}",currentPage:"Page {0}, Current page",first:"First page",last:"Last page"}},stepper:{next:"Next",prev:"Previous"},rating:{ariaLabel:{item:"Rating {0} of {1}"}},loading:"Loading...",infiniteScroll:{loadMore:"Load more",empty:"No more"}},Zd="$vuetify.",Yd=(e,t)=>e.replace(/\{(\d+)\}/g,(n,i)=>String(t[+i])),Xh=(e,t,n)=>function(i){for(var r=arguments.length,o=new Array(r>1?r-1:0),a=1;anew Intl.NumberFormat([e.value,t.value],i).format(n)}function qs(e,t,n){const i=It(e,t,e[t]??n.value);return i.value=e[t]??n.value,we(n,r=>{e[t]==null&&(i.value=n.value)}),i}function jh(e){return t=>{const n=qs(t,"locale",e.current),i=qs(t,"fallback",e.fallback),r=qs(t,"messages",e.messages);return{name:"vuetify",current:n,fallback:i,messages:r,t:Xh(n,i,r),n:Qh(n,i),provide:jh({current:n,fallback:i,messages:r})}}}function PR(e){const t=be((e==null?void 0:e.locale)??"en"),n=be((e==null?void 0:e.fallback)??"en"),i=Se({en:LR,...e==null?void 0:e.messages});return{name:"vuetify",current:t,fallback:n,messages:i,t:Xh(t,n,i),n:Qh(t,n),provide:jh({current:t,fallback:n,messages:i})}}const $a=Symbol.for("vuetify:locale");function UR(e){return e.name!=null}function FR(e){const t=e!=null&&e.adapter&&UR(e==null?void 0:e.adapter)?e==null?void 0:e.adapter:PR(e),n=NR(t,e);return{...t,...n}}function Po(){const e=Je($a);if(!e)throw new Error("[Vuetify] Could not find injected locale instance");return e}function DR(){return{af:!1,ar:!0,bg:!1,ca:!1,ckb:!1,cs:!1,de:!1,el:!1,en:!1,es:!1,et:!1,fa:!0,fi:!1,fr:!1,hr:!1,hu:!1,he:!0,id:!1,it:!1,ja:!1,km:!1,ko:!1,lv:!1,lt:!1,nl:!1,no:!1,pl:!1,pt:!1,ro:!1,ru:!1,sk:!1,sl:!1,srCyrl:!1,srLatn:!1,sv:!1,th:!1,tr:!1,az:!1,uk:!1,vi:!1,zhHans:!1,zhHant:!1}}function NR(e,t){const n=Se((t==null?void 0:t.rtl)??DR()),i=C(()=>n.value[e.current.value]??!1);return{isRtl:i,rtl:n,rtlClasses:C(()=>`v-locale--is-${i.value?"rtl":"ltr"}`)}}function _n(){const e=Je($a);if(!e)throw new Error("[Vuetify] Could not find injected rtl instance");return{isRtl:e.isRtl,rtlClasses:e.rtlClasses}}const Xd={center:"center",top:"bottom",bottom:"top",left:"right",right:"left"},ps=J({location:String},"location");function hs(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=arguments.length>2?arguments[2]:void 0;const{isRtl:i}=_n();return{locationStyles:C(()=>{if(!e.location)return{};const{side:o,align:a}=bl(e.location.split(" ").length>1?e.location:`${e.location} center`,i.value);function s(u){return n?n(u):0}const l={};return o!=="center"&&(t?l[Xd[o]]=`calc(100% - ${s(o)}px)`:l[o]=0),a!=="center"?t?l[Xd[a]]=`calc(100% - ${s(a)}px)`:l[a]=0:(o==="center"?l.top=l.left="50%":l[{top:"left",bottom:"left",left:"top",right:"top"}[o]]="50%",l.transform={top:"translateX(-50%)",bottom:"translateX(-50%)",left:"translateY(-50%)",right:"translateY(-50%)",center:"translate(-50%, -50%)"}[o]),l})}}const BR=J({absolute:Boolean,active:{type:Boolean,default:!0},bgColor:String,bgOpacity:[Number,String],bufferValue:{type:[Number,String],default:0},clickable:Boolean,color:String,height:{type:[Number,String],default:4},indeterminate:Boolean,max:{type:[Number,String],default:100},modelValue:{type:[Number,String],default:0},reverse:Boolean,stream:Boolean,striped:Boolean,roundedBar:Boolean,...Ce(),...ps({location:"top"}),...Et(),...He(),...it()},"VProgressLinear"),$R=oe()({name:"VProgressLinear",props:BR(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const i=It(e,"modelValue"),{isRtl:r,rtlClasses:o}=_n(),{themeClasses:a}=lt(e),{locationStyles:s}=hs(e),{textColorClasses:l,textColorStyles:u}=Pn(e,"color"),{backgroundColorClasses:c,backgroundColorStyles:d}=Qt(C(()=>e.bgColor||e.color)),{backgroundColorClasses:f,backgroundColorStyles:h}=Qt(e,"color"),{roundedClasses:m}=Bt(e),{intersectionRef:g,isIntersecting:S}=Iu(),R=C(()=>parseInt(e.max,10)),k=C(()=>parseInt(e.height,10)),I=C(()=>parseFloat(e.bufferValue)/R.value*100),P=C(()=>parseFloat(i.value)/R.value*100),L=C(()=>r.value!==e.reverse),T=C(()=>e.indeterminate?"fade-transition":"slide-x-transition"),E=C(()=>e.bgOpacity==null?e.bgOpacity:parseFloat(e.bgOpacity));function x(N){if(!g.value)return;const{left:$,right:W,width:O}=g.value.getBoundingClientRect(),F=L.value?O-N.clientX+(W-O):N.clientX-$;i.value=Math.round(F/O*R.value)}return pe(()=>p(e.tag,{ref:g,class:["v-progress-linear",{"v-progress-linear--absolute":e.absolute,"v-progress-linear--active":e.active&&S.value,"v-progress-linear--reverse":L.value,"v-progress-linear--rounded":e.rounded,"v-progress-linear--rounded-bar":e.roundedBar,"v-progress-linear--striped":e.striped},m.value,a.value,o.value,e.class],style:[{bottom:e.location==="bottom"?0:void 0,top:e.location==="top"?0:void 0,height:e.active?le(k.value):0,"--v-progress-linear-height":le(k.value),...s.value},e.style],role:"progressbar","aria-hidden":e.active?"false":"true","aria-valuemin":"0","aria-valuemax":e.max,"aria-valuenow":e.indeterminate?void 0:P.value,onClick:e.clickable&&x},{default:()=>[e.stream&&p("div",{key:"stream",class:["v-progress-linear__stream",l.value],style:{...u.value,[L.value?"left":"right"]:le(-k.value),borderTop:`${le(k.value/2)} dotted`,opacity:E.value,top:`calc(50% - ${le(k.value/4)})`,width:le(100-I.value,"%"),"--v-progress-linear-stream-to":le(k.value*(L.value?1:-1))}},null),p("div",{class:["v-progress-linear__background",c.value],style:[d.value,{opacity:E.value,width:le(e.stream?I.value:100,"%")}]},null),p(Ln,{name:T.value},{default:()=>[e.indeterminate?p("div",{class:"v-progress-linear__indeterminate"},[["long","short"].map(N=>p("div",{key:N,class:["v-progress-linear__indeterminate",N,f.value],style:h.value},null))]):p("div",{class:["v-progress-linear__determinate",f.value],style:[h.value,{width:le(P.value,"%")}]},null)]}),n.default&&p("div",{class:"v-progress-linear__content"},[n.default({value:P.value,buffer:I.value})])]})),{}}}),xu=J({loading:[Boolean,String]},"loader");function Au(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Sn();return{loaderClasses:C(()=>({[`${t}--loading`]:e.loading}))}}function em(e,t){var i;let{slots:n}=t;return p("div",{class:`${e.name}__loader`},[((i=n.default)==null?void 0:i.call(n,{color:e.color,isActive:e.active}))||p($R,{absolute:e.absolute,active:e.active,color:e.color,height:"2",indeterminate:!0},null)])}const MR=["static","relative","fixed","absolute","sticky"],Ou=J({position:{type:String,validator:e=>MR.includes(e)}},"position");function Lu(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Sn();return{positionClasses:C(()=>e.position?`${t}--${e.position}`:void 0)}}function VR(){const e=dt("useRoute");return C(()=>{var t;return(t=e==null?void 0:e.proxy)==null?void 0:t.$route})}function qR(){var e,t;return(t=(e=dt("useRouter"))==null?void 0:e.proxy)==null?void 0:t.$router}function Pu(e,t){const n=ry("RouterLink"),i=C(()=>!!(e.href||e.to)),r=C(()=>(i==null?void 0:i.value)||Ad(t,"click")||Ad(e,"click"));if(typeof n=="string")return{isLink:i,isClickable:r,href:ve(e,"href")};const o=e.to?n.useLink(e):void 0,a=VR();return{isLink:i,isClickable:r,route:o==null?void 0:o.route,navigate:o==null?void 0:o.navigate,isActive:o&&C(()=>{var s,l,u;return e.exact?a.value?((u=o.isExactActive)==null?void 0:u.value)&&cs(o.route.value.query,a.value.query):(l=o.isExactActive)==null?void 0:l.value:(s=o.isActive)==null?void 0:s.value}),href:C(()=>e.to?o==null?void 0:o.route.value.href:e.href)}}const Uu=J({href:String,replace:Boolean,to:[String,Object],exact:Boolean},"router");let zs=!1;function zR(e,t){let n=!1,i,r;Ye&&(vt(()=>{window.addEventListener("popstate",o),i=e==null?void 0:e.beforeEach((a,s,l)=>{zs?n?t(l):l():setTimeout(()=>n?t(l):l()),zs=!0}),r=e==null?void 0:e.afterEach(()=>{zs=!1})}),cn(()=>{window.removeEventListener("popstate",o),i==null||i(),r==null||r()}));function o(a){var s;(s=a.state)!=null&&s.replaced||(n=!0,setTimeout(()=>n=!1))}}function HR(e,t){we(()=>{var n;return(n=e.isActive)==null?void 0:n.value},n=>{e.isLink.value&&n&&t&&vt(()=>{t(!0)})},{immediate:!0})}const _l=Symbol("rippleStop"),WR=80;function Qd(e,t){e.style.transform=t,e.style.webkitTransform=t}function kl(e){return e.constructor.name==="TouchEvent"}function tm(e){return e.constructor.name==="KeyboardEvent"}const JR=function(e,t){var d;let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=0,r=0;if(!tm(e)){const f=t.getBoundingClientRect(),h=kl(e)?e.touches[e.touches.length-1]:e;i=h.clientX-f.left,r=h.clientY-f.top}let o=0,a=.3;(d=t._ripple)!=null&&d.circle?(a=.15,o=t.clientWidth/2,o=n.center?o:o+Math.sqrt((i-o)**2+(r-o)**2)/4):o=Math.sqrt(t.clientWidth**2+t.clientHeight**2)/2;const s=`${(t.clientWidth-o*2)/2}px`,l=`${(t.clientHeight-o*2)/2}px`,u=n.center?s:`${i-o}px`,c=n.center?l:`${r-o}px`;return{radius:o,scale:a,x:u,y:c,centerX:s,centerY:l}},Ma={show(e,t){var h;let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!((h=t==null?void 0:t._ripple)!=null&&h.enabled))return;const i=document.createElement("span"),r=document.createElement("span");i.appendChild(r),i.className="v-ripple__container",n.class&&(i.className+=` ${n.class}`);const{radius:o,scale:a,x:s,y:l,centerX:u,centerY:c}=JR(e,t,n),d=`${o*2}px`;r.className="v-ripple__animation",r.style.width=d,r.style.height=d,t.appendChild(i);const f=window.getComputedStyle(t);f&&f.position==="static"&&(t.style.position="relative",t.dataset.previousPosition="static"),r.classList.add("v-ripple__animation--enter"),r.classList.add("v-ripple__animation--visible"),Qd(r,`translate(${s}, ${l}) scale3d(${a},${a},${a})`),r.dataset.activated=String(performance.now()),setTimeout(()=>{r.classList.remove("v-ripple__animation--enter"),r.classList.add("v-ripple__animation--in"),Qd(r,`translate(${u}, ${c}) scale3d(1,1,1)`)},0)},hide(e){var o;if(!((o=e==null?void 0:e._ripple)!=null&&o.enabled))return;const t=e.getElementsByClassName("v-ripple__animation");if(t.length===0)return;const n=t[t.length-1];if(n.dataset.isHiding)return;n.dataset.isHiding="true";const i=performance.now()-Number(n.dataset.activated),r=Math.max(250-i,0);setTimeout(()=>{n.classList.remove("v-ripple__animation--in"),n.classList.add("v-ripple__animation--out"),setTimeout(()=>{var s;e.getElementsByClassName("v-ripple__animation").length===1&&e.dataset.previousPosition&&(e.style.position=e.dataset.previousPosition,delete e.dataset.previousPosition),((s=n.parentNode)==null?void 0:s.parentNode)===e&&e.removeChild(n.parentNode)},300)},r)}};function nm(e){return typeof e>"u"||!!e}function So(e){const t={},n=e.currentTarget;if(!(!(n!=null&&n._ripple)||n._ripple.touched||e[_l])){if(e[_l]=!0,kl(e))n._ripple.touched=!0,n._ripple.isTouch=!0;else if(n._ripple.isTouch)return;if(t.center=n._ripple.centered||tm(e),n._ripple.class&&(t.class=n._ripple.class),kl(e)){if(n._ripple.showTimerCommit)return;n._ripple.showTimerCommit=()=>{Ma.show(e,n,t)},n._ripple.showTimer=window.setTimeout(()=>{var i;(i=n==null?void 0:n._ripple)!=null&&i.showTimerCommit&&(n._ripple.showTimerCommit(),n._ripple.showTimerCommit=null)},WR)}else Ma.show(e,n,t)}}function jd(e){e[_l]=!0}function Lt(e){const t=e.currentTarget;if(t!=null&&t._ripple){if(window.clearTimeout(t._ripple.showTimer),e.type==="touchend"&&t._ripple.showTimerCommit){t._ripple.showTimerCommit(),t._ripple.showTimerCommit=null,t._ripple.showTimer=window.setTimeout(()=>{Lt(e)});return}window.setTimeout(()=>{t._ripple&&(t._ripple.touched=!1)}),Ma.hide(t)}}function im(e){const t=e.currentTarget;t!=null&&t._ripple&&(t._ripple.showTimerCommit&&(t._ripple.showTimerCommit=null),window.clearTimeout(t._ripple.showTimer))}let Co=!1;function rm(e){!Co&&(e.keyCode===Td.enter||e.keyCode===Td.space)&&(Co=!0,So(e))}function om(e){Co=!1,Lt(e)}function am(e){Co&&(Co=!1,Lt(e))}function sm(e,t,n){const{value:i,modifiers:r}=t,o=nm(i);if(o||Ma.hide(e),e._ripple=e._ripple??{},e._ripple.enabled=o,e._ripple.centered=r.center,e._ripple.circle=r.circle,La(i)&&i.class&&(e._ripple.class=i.class),o&&!n){if(r.stop){e.addEventListener("touchstart",jd,{passive:!0}),e.addEventListener("mousedown",jd);return}e.addEventListener("touchstart",So,{passive:!0}),e.addEventListener("touchend",Lt,{passive:!0}),e.addEventListener("touchmove",im,{passive:!0}),e.addEventListener("touchcancel",Lt),e.addEventListener("mousedown",So),e.addEventListener("mouseup",Lt),e.addEventListener("mouseleave",Lt),e.addEventListener("keydown",rm),e.addEventListener("keyup",om),e.addEventListener("blur",am),e.addEventListener("dragstart",Lt,{passive:!0})}else!o&&n&&lm(e)}function lm(e){e.removeEventListener("mousedown",So),e.removeEventListener("touchstart",So),e.removeEventListener("touchend",Lt),e.removeEventListener("touchmove",im),e.removeEventListener("touchcancel",Lt),e.removeEventListener("mouseup",Lt),e.removeEventListener("mouseleave",Lt),e.removeEventListener("keydown",rm),e.removeEventListener("keyup",om),e.removeEventListener("dragstart",Lt),e.removeEventListener("blur",am)}function GR(e,t){sm(e,t,!1)}function KR(e){delete e._ripple,lm(e)}function ZR(e,t){if(t.value===t.oldValue)return;const n=nm(t.oldValue);sm(e,t,n)}const ms={mounted:GR,unmounted:KR,updated:ZR},um=J({active:{type:Boolean,default:void 0},symbol:{type:null,default:Eu},flat:Boolean,icon:[Boolean,String,Function,Object],prependIcon:qe,appendIcon:qe,block:Boolean,slim:Boolean,stacked:Boolean,ripple:{type:[Boolean,Object],default:!0},text:String,...vr(),...Ce(),...$t(),...Li(),...Rn(),...ku(),...xu(),...ps(),...Ou(),...Et(),...Uu(),...oi(),...He({tag:"button"}),...it(),...Ui({variant:"elevated"})},"VBtn"),je=oe()({name:"VBtn",directives:{Ripple:ms},props:um(),emits:{"group:selected":e=>!0},setup(e,t){let{attrs:n,slots:i}=t;const{themeClasses:r}=lt(e),{borderClasses:o}=yr(e),{colorClasses:a,colorStyles:s,variantClasses:l}=Ao(e),{densityClasses:u}=fn(e),{dimensionStyles:c}=Pi(e),{elevationClasses:d}=Mn(e),{loaderClasses:f}=Au(e),{locationStyles:h}=hs(e),{positionClasses:m}=Lu(e),{roundedClasses:g}=Bt(e),{sizeClasses:S,sizeStyles:R}=mr(e),k=Tu(e,e.symbol,!1),I=Pu(e,n),P=C(()=>{var N;return e.active!==void 0?e.active:I.isLink.value?(N=I.isActive)==null?void 0:N.value:k==null?void 0:k.isSelected.value}),L=C(()=>(k==null?void 0:k.disabled.value)||e.disabled),T=C(()=>e.variant==="elevated"&&!(e.disabled||e.flat||e.border)),E=C(()=>{if(!(e.value===void 0||typeof e.value=="symbol"))return Object(e.value)===e.value?JSON.stringify(e.value,null,0):e.value});function x(N){var $;L.value||I.isLink.value&&(N.metaKey||N.ctrlKey||N.shiftKey||N.button!==0||n.target==="_blank")||(($=I.navigate)==null||$.call(I,N),k==null||k.toggle())}return HR(I,k==null?void 0:k.select),pe(()=>{var V,ae;const N=I.isLink.value?"a":e.tag,$=!!(e.prependIcon||i.prepend),W=!!(e.appendIcon||i.append),O=!!(e.icon&&e.icon!==!0),F=(k==null?void 0:k.isSelected.value)&&(!I.isLink.value||((V=I.isActive)==null?void 0:V.value))||!k||((ae=I.isActive)==null?void 0:ae.value);return Xt(p(N,{type:N==="a"?void 0:"button",class:["v-btn",k==null?void 0:k.selectedClass.value,{"v-btn--active":P.value,"v-btn--block":e.block,"v-btn--disabled":L.value,"v-btn--elevated":T.value,"v-btn--flat":e.flat,"v-btn--icon":!!e.icon,"v-btn--loading":e.loading,"v-btn--slim":e.slim,"v-btn--stacked":e.stacked},r.value,o.value,F?a.value:void 0,u.value,d.value,f.value,m.value,g.value,S.value,l.value,e.class],style:[F?s.value:void 0,c.value,h.value,R.value,e.style],disabled:L.value||void 0,href:I.href.value,onClick:x,value:E.value},{default:()=>{var se;return[xo(!0,"v-btn"),!e.icon&&$&&p("span",{key:"prepend",class:"v-btn__prepend"},[i.prepend?p(ct,{key:"prepend-defaults",disabled:!e.prependIcon,defaults:{VIcon:{icon:e.prependIcon}}},i.prepend):p(Qe,{key:"prepend-icon",icon:e.prependIcon},null)]),p("span",{class:"v-btn__content","data-no-activator":""},[!i.default&&O?p(Qe,{key:"content-icon",icon:e.icon},null):p(ct,{key:"content-defaults",disabled:!O,defaults:{VIcon:{icon:e.icon}}},{default:()=>{var ne;return[((ne=i.default)==null?void 0:ne.call(i))??e.text]}})]),!e.icon&&W&&p("span",{key:"append",class:"v-btn__append"},[i.append?p(ct,{key:"append-defaults",disabled:!e.appendIcon,defaults:{VIcon:{icon:e.appendIcon}}},i.append):p(Qe,{key:"append-icon",icon:e.appendIcon},null)]),!!e.loading&&p("span",{key:"loader",class:"v-btn__loader"},[((se=i.loader)==null?void 0:se.call(i))??p(Rl,{color:typeof e.loading=="boolean"?void 0:e.loading,indeterminate:!0,size:"23",width:"2"},null)])]}}),[[Ai("ripple"),!L.value&&e.ripple,null]])}),{group:k}}}),cm=oe()({name:"VCardActions",props:Ce(),setup(e,t){let{slots:n}=t;return Cn({VBtn:{slim:!0,variant:"text"}}),pe(()=>{var i;return p("div",{class:["v-card-actions",e.class],style:e.style},[(i=n.default)==null?void 0:i.call(n)])}),{}}}),dm=Io("v-card-subtitle"),Uo=Io("v-card-title"),YR=J({appendAvatar:String,appendIcon:qe,prependAvatar:String,prependIcon:qe,subtitle:[String,Number],title:[String,Number],...Ce(),...$t()},"VCardItem"),fm=oe()({name:"VCardItem",props:YR(),setup(e,t){let{slots:n}=t;return pe(()=>{var u;const i=!!(e.prependAvatar||e.prependIcon),r=!!(i||n.prepend),o=!!(e.appendAvatar||e.appendIcon),a=!!(o||n.append),s=!!(e.title!=null||n.title),l=!!(e.subtitle!=null||n.subtitle);return p("div",{class:["v-card-item",e.class],style:e.style},[r&&p("div",{key:"prepend",class:"v-card-item__prepend"},[n.prepend?p(ct,{key:"prepend-defaults",disabled:!i,defaults:{VAvatar:{density:e.density,image:e.prependAvatar},VIcon:{density:e.density,icon:e.prependIcon}}},n.prepend):p(_e,null,[e.prependAvatar&&p(bo,{key:"prepend-avatar",density:e.density,image:e.prependAvatar},null),e.prependIcon&&p(Qe,{key:"prepend-icon",density:e.density,icon:e.prependIcon},null)])]),p("div",{class:"v-card-item__content"},[s&&p(Uo,{key:"title"},{default:()=>{var c;return[((c=n.title)==null?void 0:c.call(n))??e.title]}}),l&&p(dm,{key:"subtitle"},{default:()=>{var c;return[((c=n.subtitle)==null?void 0:c.call(n))??e.subtitle]}}),(u=n.default)==null?void 0:u.call(n)]),a&&p("div",{key:"append",class:"v-card-item__append"},[n.append?p(ct,{key:"append-defaults",disabled:!o,defaults:{VAvatar:{density:e.density,image:e.appendAvatar},VIcon:{density:e.density,icon:e.appendIcon}}},n.append):p(_e,null,[e.appendIcon&&p(Qe,{key:"append-icon",density:e.density,icon:e.appendIcon},null),e.appendAvatar&&p(bo,{key:"append-avatar",density:e.density,image:e.appendAvatar},null)])])])}),{}}}),ri=Io("v-card-text"),XR=J({appendAvatar:String,appendIcon:qe,disabled:Boolean,flat:Boolean,hover:Boolean,image:String,link:{type:Boolean,default:void 0},prependAvatar:String,prependIcon:qe,ripple:{type:[Boolean,Object],default:!0},subtitle:[String,Number],text:[String,Number],title:[String,Number],...vr(),...Ce(),...$t(),...Li(),...Rn(),...xu(),...ps(),...Ou(),...Et(),...Uu(),...He(),...it(),...Ui({variant:"elevated"})},"VCard"),An=oe()({name:"VCard",directives:{Ripple:ms},props:XR(),setup(e,t){let{attrs:n,slots:i}=t;const{themeClasses:r}=lt(e),{borderClasses:o}=yr(e),{colorClasses:a,colorStyles:s,variantClasses:l}=Ao(e),{densityClasses:u}=fn(e),{dimensionStyles:c}=Pi(e),{elevationClasses:d}=Mn(e),{loaderClasses:f}=Au(e),{locationStyles:h}=hs(e),{positionClasses:m}=Lu(e),{roundedClasses:g}=Bt(e),S=Pu(e,n),R=C(()=>e.link!==!1&&S.isLink.value),k=C(()=>!e.disabled&&e.link!==!1&&(e.link||S.isClickable.value));return pe(()=>{const I=R.value?"a":e.tag,P=!!(i.title||e.title!=null),L=!!(i.subtitle||e.subtitle!=null),T=P||L,E=!!(i.append||e.appendAvatar||e.appendIcon),x=!!(i.prepend||e.prependAvatar||e.prependIcon),N=!!(i.image||e.image),$=T||x||E,W=!!(i.text||e.text!=null);return Xt(p(I,{class:["v-card",{"v-card--disabled":e.disabled,"v-card--flat":e.flat,"v-card--hover":e.hover&&!(e.disabled||e.flat),"v-card--link":k.value},r.value,o.value,a.value,u.value,d.value,f.value,m.value,g.value,l.value,e.class],style:[s.value,c.value,h.value,e.style],href:S.href.value,onClick:k.value&&S.navigate,tabindex:e.disabled?-1:void 0},{default:()=>{var O;return[N&&p("div",{key:"image",class:"v-card__image"},[i.image?p(ct,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},i.image):p(gr,{key:"image-img",cover:!0,src:e.image},null)]),p(em,{name:"v-card",active:!!e.loading,color:typeof e.loading=="boolean"?void 0:e.loading},{default:i.loader}),$&&p(fm,{key:"item",prependAvatar:e.prependAvatar,prependIcon:e.prependIcon,title:e.title,subtitle:e.subtitle,appendAvatar:e.appendAvatar,appendIcon:e.appendIcon},{default:i.item,prepend:i.prepend,title:i.title,subtitle:i.subtitle,append:i.append}),W&&p(ri,{key:"text"},{default:()=>{var F;return[((F=i.text)==null?void 0:F.call(i))??e.text]}}),(O=i.default)==null?void 0:O.call(i),i.actions&&p(cm,null,{default:i.actions}),xo(k.value,"v-card")]}}),[[Ai("ripple"),k.value&&e.ripple]])}),{}}}),QR=J({disabled:Boolean,group:Boolean,hideOnLeave:Boolean,leaveAbsolute:Boolean,mode:String,origin:String},"transition");function Mt(e,t,n){return oe()({name:e,props:QR({mode:n,origin:t}),setup(i,r){let{slots:o}=r;const a={onBeforeEnter(s){i.origin&&(s.style.transformOrigin=i.origin)},onLeave(s){if(i.leaveAbsolute){const{offsetTop:l,offsetLeft:u,offsetWidth:c,offsetHeight:d}=s;s._transitionInitialStyles={position:s.style.position,top:s.style.top,left:s.style.left,width:s.style.width,height:s.style.height},s.style.position="absolute",s.style.top=`${l}px`,s.style.left=`${u}px`,s.style.width=`${c}px`,s.style.height=`${d}px`}i.hideOnLeave&&s.style.setProperty("display","none","important")},onAfterLeave(s){if(i.leaveAbsolute&&(s!=null&&s._transitionInitialStyles)){const{position:l,top:u,left:c,width:d,height:f}=s._transitionInitialStyles;delete s._transitionInitialStyles,s.style.position=l||"",s.style.top=u||"",s.style.left=c||"",s.style.width=d||"",s.style.height=f||""}}};return()=>{const s=i.group?Cw:Ln;return bn(s,{name:i.disabled?"":e,css:!i.disabled,...i.group?void 0:{mode:i.mode},...i.disabled?{}:a},o.default)}}})}function pm(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"in-out";return oe()({name:e,props:{mode:{type:String,default:n},disabled:Boolean},setup(i,r){let{slots:o}=r;return()=>bn(Ln,{name:i.disabled?"":e,css:!i.disabled,...i.disabled?{}:t},o.default)}})}function hm(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";const n=(arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1)?"width":"height",i=Yt(`offset-${n}`);return{onBeforeEnter(a){a._parent=a.parentNode,a._initialStyle={transition:a.style.transition,overflow:a.style.overflow,[n]:a.style[n]}},onEnter(a){const s=a._initialStyle;a.style.setProperty("transition","none","important"),a.style.overflow="hidden";const l=`${a[i]}px`;a.style[n]="0",a.offsetHeight,a.style.transition=s.transition,e&&a._parent&&a._parent.classList.add(e),requestAnimationFrame(()=>{a.style[n]=l})},onAfterEnter:o,onEnterCancelled:o,onLeave(a){a._initialStyle={transition:"",overflow:a.style.overflow,[n]:a.style[n]},a.style.overflow="hidden",a.style[n]=`${a[i]}px`,a.offsetHeight,requestAnimationFrame(()=>a.style[n]="0")},onAfterLeave:r,onLeaveCancelled:r};function r(a){e&&a._parent&&a._parent.classList.remove(e),o(a)}function o(a){const s=a._initialStyle[n];a.style.overflow=a._initialStyle.overflow,s!=null&&(a.style[n]=s),delete a._initialStyle}}const jR=J({target:[Object,Array]},"v-dialog-transition"),e_=oe()({name:"VDialogTransition",props:jR(),setup(e,t){let{slots:n}=t;const i={onBeforeEnter(r){r.style.pointerEvents="none",r.style.visibility="hidden"},async onEnter(r,o){var f;await new Promise(h=>requestAnimationFrame(h)),await new Promise(h=>requestAnimationFrame(h)),r.style.visibility="";const{x:a,y:s,sx:l,sy:u,speed:c}=tf(e.target,r),d=vi(r,[{transform:`translate(${a}px, ${s}px) scale(${l}, ${u})`,opacity:0},{}],{duration:225*c,easing:tR});(f=ef(r))==null||f.forEach(h=>{vi(h,[{opacity:0},{opacity:0,offset:.33},{}],{duration:225*2*c,easing:yo})}),d.finished.then(()=>o())},onAfterEnter(r){r.style.removeProperty("pointer-events")},onBeforeLeave(r){r.style.pointerEvents="none"},async onLeave(r,o){var f;await new Promise(h=>requestAnimationFrame(h));const{x:a,y:s,sx:l,sy:u,speed:c}=tf(e.target,r);vi(r,[{},{transform:`translate(${a}px, ${s}px) scale(${l}, ${u})`,opacity:0}],{duration:125*c,easing:nR}).finished.then(()=>o()),(f=ef(r))==null||f.forEach(h=>{vi(h,[{},{opacity:0,offset:.2},{opacity:0}],{duration:125*2*c,easing:yo})})},onAfterLeave(r){r.style.removeProperty("pointer-events")}};return()=>e.target?p(Ln,Pe({name:"dialog-transition"},i,{css:!1}),n):p(Ln,{name:"dialog-transition"},n)}});function ef(e){var n;const t=(n=e.querySelector(":scope > .v-card, :scope > .v-sheet, :scope > .v-list"))==null?void 0:n.children;return t&&[...t]}function tf(e,t){const n=Nh(e),i=wu(t),[r,o]=getComputedStyle(t).transformOrigin.split(" ").map(R=>parseFloat(R)),[a,s]=getComputedStyle(t).getPropertyValue("--v-overlay-anchor-origin").split(" ");let l=n.left+n.width/2;a==="left"||s==="left"?l-=n.width/2:(a==="right"||s==="right")&&(l+=n.width/2);let u=n.top+n.height/2;a==="top"||s==="top"?u-=n.height/2:(a==="bottom"||s==="bottom")&&(u+=n.height/2);const c=n.width/i.width,d=n.height/i.height,f=Math.max(1,c,d),h=c/f||0,m=d/f||0,g=i.width*i.height/(window.innerWidth*window.innerHeight),S=g>.12?Math.min(1.5,(g-.12)*10+1):1;return{x:l-(r+i.left),y:u-(o+i.top),sx:h,sy:m,speed:S}}Mt("fab-transition","center center","out-in");Mt("dialog-bottom-transition");Mt("dialog-top-transition");const nf=Mt("fade-transition");Mt("scale-transition");Mt("scroll-x-transition");Mt("scroll-x-reverse-transition");Mt("scroll-y-transition");Mt("scroll-y-reverse-transition");Mt("slide-x-transition");Mt("slide-x-reverse-transition");const mm=Mt("slide-y-transition");Mt("slide-y-reverse-transition");const gm=pm("expand-transition",hm()),vm=pm("expand-x-transition",hm("",!0));function Hs(e,t){return{x:e.x+t.x,y:e.y+t.y}}function t_(e,t){return{x:e.x-t.x,y:e.y-t.y}}function rf(e,t){if(e.side==="top"||e.side==="bottom"){const{side:n,align:i}=e,r=i==="left"?0:i==="center"?t.width/2:i==="right"?t.width:i,o=n==="top"?0:n==="bottom"?t.height:n;return Hs({x:r,y:o},t)}else if(e.side==="left"||e.side==="right"){const{side:n,align:i}=e,r=n==="left"?0:n==="right"?t.width:n,o=i==="top"?0:i==="center"?t.height/2:i==="bottom"?t.height:i;return Hs({x:r,y:o},t)}return Hs({x:t.width/2,y:t.height/2},t)}const ym={static:r_,connected:a_},n_=J({locationStrategy:{type:[String,Function],default:"static",validator:e=>typeof e=="function"||e in ym},location:{type:String,default:"bottom"},origin:{type:String,default:"auto"},offset:[Number,String,Array]},"VOverlay-location-strategies");function i_(e,t){const n=Se({}),i=Se();Ye&&Ti(()=>!!(t.isActive.value&&e.locationStrategy),o=>{var a,s;we(()=>e.locationStrategy,o),cn(()=>{window.removeEventListener("resize",r),i.value=void 0}),window.addEventListener("resize",r,{passive:!0}),typeof e.locationStrategy=="function"?i.value=(a=e.locationStrategy(t,e,n))==null?void 0:a.updateLocation:i.value=(s=ym[e.locationStrategy](t,e,n))==null?void 0:s.updateLocation});function r(o){var a;(a=i.value)==null||a.call(i,o)}return{contentStyles:n,updateLocation:i}}function r_(){}function o_(e,t){t?e.style.removeProperty("left"):e.style.removeProperty("right");const n=wu(e);return t?n.x+=parseFloat(e.style.right||0):n.x-=parseFloat(e.style.left||0),n.y-=parseFloat(e.style.top||0),n}function a_(e,t,n){(Array.isArray(e.target.value)||aR(e.target.value))&&Object.assign(n.value,{position:"fixed",top:0,[e.isRtl.value?"right":"left"]:0});const{preferredAnchor:r,preferredOrigin:o}=yu(()=>{const m=bl(t.location,e.isRtl.value),g=t.origin==="overlap"?m:t.origin==="auto"?Ms(m):bl(t.origin,e.isRtl.value);return m.side===g.side&&m.align===Vs(g).align?{preferredAnchor:Ld(m),preferredOrigin:Ld(g)}:{preferredAnchor:m,preferredOrigin:g}}),[a,s,l,u]=["minWidth","minHeight","maxWidth","maxHeight"].map(m=>C(()=>{const g=parseFloat(t[m]);return isNaN(g)?1/0:g})),c=C(()=>{if(Array.isArray(t.offset))return t.offset;if(typeof t.offset=="string"){const m=t.offset.split(" ").map(parseFloat);return m.length<2&&m.push(0),m}return typeof t.offset=="number"?[t.offset,0]:[0,0]});let d=!1;const f=new ResizeObserver(()=>{d&&h()});we([e.target,e.contentEl],(m,g)=>{let[S,R]=m,[k,I]=g;k&&!Array.isArray(k)&&f.unobserve(k),S&&!Array.isArray(S)&&f.observe(S),I&&f.unobserve(I),R&&f.observe(R)},{immediate:!0}),cn(()=>{f.disconnect()});function h(){if(d=!1,requestAnimationFrame(()=>d=!0),!e.target.value||!e.contentEl.value)return;const m=Nh(e.target.value),g=o_(e.contentEl.value,e.isRtl.value),S=Da(e.contentEl.value),R=12;S.length||(S.push(document.documentElement),e.contentEl.value.style.top&&e.contentEl.value.style.left||(g.x-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-x")||0),g.y-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-y")||0)));const k=S.reduce((W,O)=>{const F=O.getBoundingClientRect(),V=new _i({x:O===document.documentElement?0:F.x,y:O===document.documentElement?0:F.y,width:O.clientWidth,height:O.clientHeight});return W?new _i({x:Math.max(W.left,V.left),y:Math.max(W.top,V.top),width:Math.min(W.right,V.right)-Math.max(W.left,V.left),height:Math.min(W.bottom,V.bottom)-Math.max(W.top,V.top)}):V},void 0);k.x+=R,k.y+=R,k.width-=R*2,k.height-=R*2;let I={anchor:r.value,origin:o.value};function P(W){const O=new _i(g),F=rf(W.anchor,m),V=rf(W.origin,O);let{x:ae,y:se}=t_(F,V);switch(W.anchor.side){case"top":se-=c.value[0];break;case"bottom":se+=c.value[0];break;case"left":ae-=c.value[0];break;case"right":ae+=c.value[0];break}switch(W.anchor.align){case"top":se-=c.value[1];break;case"bottom":se+=c.value[1];break;case"left":ae-=c.value[1];break;case"right":ae+=c.value[1];break}return O.x+=ae,O.y+=se,O.width=Math.min(O.width,l.value),O.height=Math.min(O.height,u.value),{overflows:Ud(O,k),x:ae,y:se}}let L=0,T=0;const E={x:0,y:0},x={x:!1,y:!1};let N=-1;for(;!(N++>10);){const{x:W,y:O,overflows:F}=P(I);L+=W,T+=O,g.x+=W,g.y+=O;{const V=Pd(I.anchor),ae=F.x.before||F.x.after,se=F.y.before||F.y.after;let ne=!1;if(["x","y"].forEach(ee=>{if(ee==="x"&&ae&&!x.x||ee==="y"&&se&&!x.y){const Ae={anchor:{...I.anchor},origin:{...I.origin}},Ne=ee==="x"?V==="y"?Vs:Ms:V==="y"?Ms:Vs;Ae.anchor=Ne(Ae.anchor),Ae.origin=Ne(Ae.origin);const{overflows:X}=P(Ae);(X[ee].before<=F[ee].before&&X[ee].after<=F[ee].after||X[ee].before+X[ee].after<(F[ee].before+F[ee].after)/2)&&(I=Ae,ne=x[ee]=!0)}}),ne)continue}F.x.before&&(L+=F.x.before,g.x+=F.x.before),F.x.after&&(L-=F.x.after,g.x-=F.x.after),F.y.before&&(T+=F.y.before,g.y+=F.y.before),F.y.after&&(T-=F.y.after,g.y-=F.y.after);{const V=Ud(g,k);E.x=k.width-V.x.before-V.x.after,E.y=k.height-V.y.before-V.y.after,L+=V.x.before,g.x+=V.x.before,T+=V.y.before,g.y+=V.y.before}break}const $=Pd(I.anchor);return Object.assign(n.value,{"--v-overlay-anchor-origin":`${I.anchor.side} ${I.anchor.align}`,transformOrigin:`${I.origin.side} ${I.origin.align}`,top:le(Ws(T)),left:e.isRtl.value?void 0:le(Ws(L)),right:e.isRtl.value?le(Ws(-L)):void 0,minWidth:le($==="y"?Math.min(a.value,m.width):a.value),maxWidth:le(of(lr(E.x,a.value===1/0?0:a.value,l.value))),maxHeight:le(of(lr(E.y,s.value===1/0?0:s.value,u.value)))}),{available:E,contentBox:g}}return we(()=>[r.value,o.value,t.offset,t.minWidth,t.minHeight,t.maxWidth,t.maxHeight],()=>h()),vt(()=>{const m=h();if(!m)return;const{available:g,contentBox:S}=m;S.height>g.y&&requestAnimationFrame(()=>{h(),requestAnimationFrame(()=>{h()})})}),{updateLocation:h}}function Ws(e){return Math.round(e*devicePixelRatio)/devicePixelRatio}function of(e){return Math.ceil(e*devicePixelRatio)/devicePixelRatio}let Tl=!0;const Va=[];function s_(e){!Tl||Va.length?(Va.push(e),El()):(Tl=!1,e(),El())}let af=-1;function El(){cancelAnimationFrame(af),af=requestAnimationFrame(()=>{const e=Va.shift();e&&e(),Va.length?El():Tl=!0})}const pa={none:null,close:c_,block:d_,reposition:f_},l_=J({scrollStrategy:{type:[String,Function],default:"block",validator:e=>typeof e=="function"||e in pa}},"VOverlay-scroll-strategies");function u_(e,t){if(!Ye)return;let n;Dn(async()=>{n==null||n.stop(),t.isActive.value&&e.scrollStrategy&&(n=ja(),await vt(),n.active&&n.run(()=>{var i;typeof e.scrollStrategy=="function"?e.scrollStrategy(t,e,n):(i=pa[e.scrollStrategy])==null||i.call(pa,t,e,n)}))}),cn(()=>{n==null||n.stop()})}function c_(e){function t(n){e.isActive.value=!1}wm(e.targetEl.value??e.contentEl.value,t)}function d_(e,t){var a;const n=(a=e.root.value)==null?void 0:a.offsetParent,i=[...new Set([...Da(e.targetEl.value,t.contained?n:void 0),...Da(e.contentEl.value,t.contained?n:void 0)])].filter(s=>!s.classList.contains("v-overlay-scroll-blocked")),r=window.innerWidth-document.documentElement.offsetWidth,o=(s=>Su(s)&&s)(n||document.documentElement);o&&e.root.value.classList.add("v-overlay--scroll-blocked"),i.forEach((s,l)=>{s.style.setProperty("--v-body-scroll-x",le(-s.scrollLeft)),s.style.setProperty("--v-body-scroll-y",le(-s.scrollTop)),s!==document.documentElement&&s.style.setProperty("--v-scrollbar-offset",le(r)),s.classList.add("v-overlay-scroll-blocked")}),cn(()=>{i.forEach((s,l)=>{const u=parseFloat(s.style.getPropertyValue("--v-body-scroll-x")),c=parseFloat(s.style.getPropertyValue("--v-body-scroll-y")),d=s.style.scrollBehavior;s.style.scrollBehavior="auto",s.style.removeProperty("--v-body-scroll-x"),s.style.removeProperty("--v-body-scroll-y"),s.style.removeProperty("--v-scrollbar-offset"),s.classList.remove("v-overlay-scroll-blocked"),s.scrollLeft=-u,s.scrollTop=-c,s.style.scrollBehavior=d}),o&&e.root.value.classList.remove("v-overlay--scroll-blocked")})}function f_(e,t,n){let i=!1,r=-1,o=-1;function a(s){s_(()=>{var c,d;const l=performance.now();(d=(c=e.updateLocation).value)==null||d.call(c,s),i=(performance.now()-l)/(1e3/60)>2})}o=(typeof requestIdleCallback>"u"?s=>s():requestIdleCallback)(()=>{n.run(()=>{wm(e.targetEl.value??e.contentEl.value,s=>{i?(cancelAnimationFrame(r),r=requestAnimationFrame(()=>{r=requestAnimationFrame(()=>{a(s)})})):a(s)})})}),cn(()=>{typeof cancelIdleCallback<"u"&&cancelIdleCallback(o),cancelAnimationFrame(r)})}function wm(e,t){const n=[document,...Da(e)];n.forEach(i=>{i.addEventListener("scroll",t,{passive:!0})}),cn(()=>{n.forEach(i=>{i.removeEventListener("scroll",t)})})}const p_=Symbol.for("vuetify:v-menu"),h_=J({closeDelay:[Number,String],openDelay:[Number,String]},"delay");function m_(e,t){let n=()=>{};function i(a){n==null||n();const s=Number(a?e.openDelay:e.closeDelay);return new Promise(l=>{n=AC(s,()=>{t==null||t(a),l(a)})})}function r(){return i(!0)}function o(){return i(!1)}return{clearDelay:n,runOpenDelay:r,runCloseDelay:o}}const g_=J({target:[String,Object],activator:[String,Object],activatorProps:{type:Object,default:()=>({})},openOnClick:{type:Boolean,default:void 0},openOnHover:Boolean,openOnFocus:{type:Boolean,default:void 0},closeOnContentClick:Boolean,...h_()},"VOverlay-activator");function v_(e,t){let{isActive:n,isTop:i}=t;const r=dt("useActivator"),o=Se();let a=!1,s=!1,l=!0;const u=C(()=>e.openOnFocus||e.openOnFocus==null&&e.openOnHover),c=C(()=>e.openOnClick||e.openOnClick==null&&!e.openOnHover&&!u.value),{runOpenDelay:d,runCloseDelay:f}=m_(e,E=>{E===(e.openOnHover&&a||u.value&&s)&&!(e.openOnHover&&n.value&&!i.value)&&(n.value!==E&&(l=!0),n.value=E)}),h=Se(),m={onClick:E=>{E.stopPropagation(),o.value=E.currentTarget||E.target,n.value||(h.value=[E.clientX,E.clientY]),n.value=!n.value},onMouseenter:E=>{var x;(x=E.sourceCapabilities)!=null&&x.firesTouchEvents||(a=!0,o.value=E.currentTarget||E.target,d())},onMouseleave:E=>{a=!1,f()},onFocus:E=>{xC(E.target,":focus-visible")!==!1&&(s=!0,E.stopPropagation(),o.value=E.currentTarget||E.target,d())},onBlur:E=>{s=!1,E.stopPropagation(),f()}},g=C(()=>{const E={};return c.value&&(E.onClick=m.onClick),e.openOnHover&&(E.onMouseenter=m.onMouseenter,E.onMouseleave=m.onMouseleave),u.value&&(E.onFocus=m.onFocus,E.onBlur=m.onBlur),E}),S=C(()=>{const E={};if(e.openOnHover&&(E.onMouseenter=()=>{a=!0,d()},E.onMouseleave=()=>{a=!1,f()}),u.value&&(E.onFocusin=()=>{s=!0,d()},E.onFocusout=()=>{s=!1,f()}),e.closeOnContentClick){const x=Je(p_,null);E.onClick=()=>{n.value=!1,x==null||x.closeParents()}}return E}),R=C(()=>{const E={};return e.openOnHover&&(E.onMouseenter=()=>{l&&(a=!0,l=!1,d())},E.onMouseleave=()=>{a=!1,f()}),E});we(i,E=>{E&&(e.openOnHover&&!a&&(!u.value||!s)||u.value&&!s&&(!e.openOnHover||!a))&&(n.value=!1)}),we(n,E=>{E||setTimeout(()=>{h.value=void 0})},{flush:"post"});const k=Se();Dn(()=>{k.value&&vt(()=>{o.value=Pa(k.value)})});const I=Se(),P=C(()=>e.target==="cursor"&&h.value?h.value:I.value?Pa(I.value):bm(e.target,r)||o.value),L=C(()=>Array.isArray(P.value)?void 0:P.value);let T;return we(()=>!!e.activator,E=>{E&&Ye?(T=ja(),T.run(()=>{y_(e,r,{activatorEl:o,activatorEvents:g})})):T&&T.stop()},{flush:"post",immediate:!0}),cn(()=>{T==null||T.stop()}),{activatorEl:o,activatorRef:k,target:P,targetEl:L,targetRef:I,activatorEvents:g,contentEvents:S,scrimEvents:R}}function y_(e,t,n){let{activatorEl:i,activatorEvents:r}=n;we(()=>e.activator,(l,u)=>{if(u&&l!==u){const c=s(u);c&&a(c)}l&&vt(()=>o())},{immediate:!0}),we(()=>e.activatorProps,()=>{o()}),cn(()=>{a()});function o(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:s(),u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e.activatorProps;l&&LC(l,Pe(r.value,u))}function a(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:s(),u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e.activatorProps;l&&PC(l,Pe(r.value,u))}function s(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.activator;const u=bm(l,t);return i.value=(u==null?void 0:u.nodeType)===Node.ELEMENT_NODE?u:void 0,i.value}}function bm(e,t){var i,r;if(!e)return;let n;if(e==="parent"){let o=(r=(i=t==null?void 0:t.proxy)==null?void 0:i.$el)==null?void 0:r.parentNode;for(;o!=null&&o.hasAttribute("data-no-activator");)o=o.parentNode;n=o}else typeof e=="string"?n=document.querySelector(e):"$el"in e?n=e.$el:n=e;return n}const gs=["sm","md","lg","xl","xxl"],Il=Symbol.for("vuetify:display"),sf={mobileBreakpoint:"lg",thresholds:{xs:0,sm:600,md:960,lg:1280,xl:1920,xxl:2560}},w_=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:sf;return Ut(sf,e)};function lf(e){return Ye&&!e?window.innerWidth:typeof e=="object"&&e.clientWidth||0}function uf(e){return Ye&&!e?window.innerHeight:typeof e=="object"&&e.clientHeight||0}function cf(e){const t=Ye&&!e?window.navigator.userAgent:"ssr";function n(m){return!!t.match(m)}const i=n(/android/i),r=n(/iphone|ipad|ipod/i),o=n(/cordova/i),a=n(/electron/i),s=n(/chrome/i),l=n(/edge/i),u=n(/firefox/i),c=n(/opera/i),d=n(/win/i),f=n(/mac/i),h=n(/linux/i);return{android:i,ios:r,cordova:o,electron:a,chrome:s,edge:l,firefox:u,opera:c,win:d,mac:f,linux:h,touch:RC,ssr:t==="ssr"}}function b_(e,t){const{thresholds:n,mobileBreakpoint:i}=w_(e),r=be(uf(t)),o=be(cf(t)),a=ht({}),s=be(lf(t));function l(){r.value=uf(),s.value=lf()}function u(){l(),o.value=cf()}return Dn(()=>{const c=s.value=n.xxl,S=c?"xs":d?"sm":f?"md":h?"lg":m?"xl":"xxl",R=typeof i=="number"?i:n[i],k=s.value0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Sn();const n=Je(Il);if(!n)throw new Error("Could not find Vuetify display injection");const i=C(()=>{if(!e.mobileBreakpoint)return n.mobile.value;const o=typeof e.mobileBreakpoint=="number"?e.mobileBreakpoint:n.thresholds.value[e.mobileBreakpoint];return n.width.valuet?{[`${t}--mobile`]:i.value}:{});return{...n,displayClasses:r,mobile:i}}function C_(){if(!Ye)return be(!1);const{ssr:e}=Sm();if(e){const t=be(!1);return Bn(()=>{t.value=!0}),t}else return be(!0)}const Fu=J({eager:Boolean},"lazy");function Cm(e,t){const n=be(!1),i=C(()=>n.value||e.eager||t.value);we(t,()=>n.value=!0);function r(){e.eager||(n.value=!1)}return{isBooted:n,hasContent:i,onAfterLeave:r}}function Du(){const t=dt("useScopeId").vnode.scopeId;return{scopeId:t?{[t]:""}:void 0}}const df=Symbol.for("vuetify:stack"),$r=ht([]);function R_(e,t,n){const i=dt("useStack"),r=!n,o=Je(df,void 0),a=ht({activeChildren:new Set});Ft(df,a);const s=be(+t.value);Ti(e,()=>{var d;const c=(d=$r.at(-1))==null?void 0:d[1];s.value=c?c+10:+t.value,r&&$r.push([i.uid,s.value]),o==null||o.activeChildren.add(i.uid),cn(()=>{if(r){const f=Te($r).findIndex(h=>h[0]===i.uid);$r.splice(f,1)}o==null||o.activeChildren.delete(i.uid)})});const l=be(!0);r&&Dn(()=>{var d;const c=((d=$r.at(-1))==null?void 0:d[0])===i.uid;setTimeout(()=>l.value=c)});const u=C(()=>!a.activeChildren.size);return{globalTop:ko(l),localTop:u,stackStyles:C(()=>({zIndex:s.value}))}}function __(e){return{teleportTarget:C(()=>{const n=e.value;if(n===!0||!Ye)return;const i=n===!1?document.body:typeof n=="string"?document.querySelector(n):n;if(i==null)return;let r=i.querySelector(":scope > .v-overlay-container");return r||(r=document.createElement("div"),r.className="v-overlay-container",i.appendChild(r)),r})}}function k_(){return!0}function Rm(e,t,n){if(!e||_m(e,n)===!1)return!1;const i=zh(t);if(typeof ShadowRoot<"u"&&i instanceof ShadowRoot&&i.host===e.target)return!1;const r=(typeof n.value=="object"&&n.value.include||(()=>[]))();return r.push(t),!r.some(o=>o==null?void 0:o.contains(e.target))}function _m(e,t){return(typeof t.value=="object"&&t.value.closeConditional||k_)(e)}function T_(e,t,n){const i=typeof n.value=="function"?n.value:n.value.handler;t._clickOutside.lastMousedownWasOutside&&Rm(e,t,n)&&setTimeout(()=>{_m(e,n)&&i&&i(e)},0)}function ff(e,t){const n=zh(e);t(document),typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&t(n)}const E_={mounted(e,t){const n=r=>T_(r,e,t),i=r=>{e._clickOutside.lastMousedownWasOutside=Rm(r,e,t)};ff(e,r=>{r.addEventListener("click",n,!0),r.addEventListener("mousedown",i,!0)}),e._clickOutside||(e._clickOutside={lastMousedownWasOutside:!1}),e._clickOutside[t.instance.$.uid]={onClick:n,onMousedown:i}},unmounted(e,t){e._clickOutside&&(ff(e,n=>{var o;if(!n||!((o=e._clickOutside)!=null&&o[t.instance.$.uid]))return;const{onClick:i,onMousedown:r}=e._clickOutside[t.instance.$.uid];n.removeEventListener("click",i,!0),n.removeEventListener("mousedown",r,!0)}),delete e._clickOutside[t.instance.$.uid])}};function I_(e){const{modelValue:t,color:n,...i}=e;return p(Ln,{name:"fade-transition",appear:!0},{default:()=>[e.modelValue&&p("div",Pe({class:["v-overlay__scrim",e.color.backgroundColorClasses.value],style:e.color.backgroundColorStyles.value},i),null)]})}const Nu=J({absolute:Boolean,attach:[Boolean,String,Object],closeOnBack:{type:Boolean,default:!0},contained:Boolean,contentClass:null,contentProps:null,disabled:Boolean,opacity:[Number,String],noClickAnimation:Boolean,modelValue:Boolean,persistent:Boolean,scrim:{type:[Boolean,String],default:!0},zIndex:{type:[Number,String],default:2e3},...g_(),...Ce(),...Li(),...Fu(),...n_(),...l_(),...it(),...fs()},"VOverlay"),qa=oe()({name:"VOverlay",directives:{ClickOutside:E_},inheritAttrs:!1,props:{_disableGlobalStack:Boolean,...Nu()},emits:{"click:outside":e=>!0,"update:modelValue":e=>!0,afterLeave:()=>!0},setup(e,t){let{slots:n,attrs:i,emit:r}=t;const o=It(e,"modelValue"),a=C({get:()=>o.value,set:he=>{he&&e.disabled||(o.value=he)}}),{teleportTarget:s}=__(C(()=>e.attach||e.contained)),{themeClasses:l}=lt(e),{rtlClasses:u,isRtl:c}=_n(),{hasContent:d,onAfterLeave:f}=Cm(e,a),h=Qt(C(()=>typeof e.scrim=="string"?e.scrim:null)),{globalTop:m,localTop:g,stackStyles:S}=R_(a,ve(e,"zIndex"),e._disableGlobalStack),{activatorEl:R,activatorRef:k,target:I,targetEl:P,targetRef:L,activatorEvents:T,contentEvents:E,scrimEvents:x}=v_(e,{isActive:a,isTop:g}),{dimensionStyles:N}=Pi(e),$=C_(),{scopeId:W}=Du();we(()=>e.disabled,he=>{he&&(a.value=!1)});const O=Se(),F=Se(),{contentStyles:V,updateLocation:ae}=i_(e,{isRtl:c,contentEl:F,target:I,isActive:a});u_(e,{root:O,contentEl:F,targetEl:P,isActive:a,updateLocation:ae});function se(he){r("click:outside",he),e.persistent?X():a.value=!1}function ne(){return a.value&&m.value}Ye&&we(a,he=>{he?window.addEventListener("keydown",ee):window.removeEventListener("keydown",ee)},{immediate:!0}),dn(()=>{Ye&&window.removeEventListener("keydown",ee)});function ee(he){var Xe,yt;he.key==="Escape"&&m.value&&(e.persistent?X():(a.value=!1,(Xe=F.value)!=null&&Xe.contains(document.activeElement)&&((yt=R.value)==null||yt.focus())))}const Ae=qR();Ti(()=>e.closeOnBack,()=>{zR(Ae,he=>{m.value&&a.value?(he(!1),e.persistent?X():a.value=!1):he()})});const Ne=Se();we(()=>a.value&&(e.absolute||e.contained)&&s.value==null,he=>{if(he){const Xe=iR(O.value);Xe&&Xe!==document.scrollingElement&&(Ne.value=Xe.scrollTop)}});function X(){e.noClickAnimation||F.value&&vi(F.value,[{transformOrigin:"center"},{transform:"scale(1.03)"},{transformOrigin:"center"}],{duration:150,easing:yo})}function ie(){f(),r("afterLeave")}return pe(()=>{var he;return p(_e,null,[(he=n.activator)==null?void 0:he.call(n,{isActive:a.value,props:Pe({ref:k,targetRef:L},T.value,e.activatorProps)}),$.value&&d.value&&p(By,{disabled:!s.value,to:s.value},{default:()=>[p("div",Pe({class:["v-overlay",{"v-overlay--absolute":e.absolute||e.contained,"v-overlay--active":a.value,"v-overlay--contained":e.contained},l.value,u.value,e.class],style:[S.value,{"--v-overlay-opacity":e.opacity,top:le(Ne.value)},e.style],ref:O},W,i),[p(I_,Pe({color:h,modelValue:a.value&&!!e.scrim},x.value),null),p(yi,{appear:!0,persisted:!0,transition:e.transition,target:I.value,onAfterLeave:ie},{default:()=>{var Xe;return[Xt(p("div",Pe({ref:F,class:["v-overlay__content",e.contentClass],style:[N.value,V.value]},E.value,e.contentProps),[(Xe=n.default)==null?void 0:Xe.call(n,{isActive:a})]),[[pr,a.value],[Ai("click-outside"),{handler:se,closeConditional:ne,include:()=>[R.value]}]])]}})])]})])}),{activatorEl:R,target:I,animateClick:X,contentEl:F,globalTop:m,localTop:g,updateLocation:ae}}}),Js=Symbol("Forwarded refs");function Gs(e,t){let n=e;for(;n;){const i=Reflect.getOwnPropertyDescriptor(n,t);if(i)return i;n=Object.getPrototypeOf(n)}}function vs(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i!0},setup(e,t){let{slots:n}=t;const i=It(e,"modelValue"),{scopeId:r}=Du(),o=Se();function a(l){var d,f;const u=l.relatedTarget,c=l.target;if(u!==c&&((d=o.value)!=null&&d.contentEl)&&((f=o.value)!=null&&f.globalTop)&&![document,o.value.contentEl].includes(c)&&!o.value.contentEl.contains(c)){const h=Fh(o.value.contentEl);if(!h.length)return;const m=h[0],g=h[h.length-1];u===m?g.focus():m.focus()}}Ye&&we(()=>i.value&&e.retainFocus,l=>{l?document.addEventListener("focusin",a):document.removeEventListener("focusin",a)},{immediate:!0}),we(i,async l=>{var u,c;await vt(),l?(u=o.value.contentEl)==null||u.focus({preventScroll:!0}):(c=o.value.activatorEl)==null||c.focus({preventScroll:!0})});const s=C(()=>Pe({"aria-haspopup":"dialog","aria-expanded":String(i.value)},e.activatorProps));return pe(()=>{const l=qa.filterProps(e);return p(qa,Pe({ref:o,class:["v-dialog",{"v-dialog--fullscreen":e.fullscreen,"v-dialog--scrollable":e.scrollable},e.class],style:e.style},l,{modelValue:i.value,"onUpdate:modelValue":u=>i.value=u,"aria-modal":"true",activatorProps:s.value,role:"dialog"},r),{activator:n.activator,default:function(){for(var u=arguments.length,c=new Array(u),d=0;d{var f;return[(f=n.default)==null?void 0:f.call(n,...c)]}})}})}),vs({},o)}}),A_=J({color:String,inset:Boolean,length:[Number,String],thickness:[Number,String],vertical:Boolean,...Ce(),...it()},"VDivider"),O_=oe()({name:"VDivider",props:A_(),setup(e,t){let{attrs:n}=t;const{themeClasses:i}=lt(e),{textColorClasses:r,textColorStyles:o}=Pn(ve(e,"color")),a=C(()=>{const s={};return e.length&&(s[e.vertical?"maxHeight":"maxWidth"]=le(e.length)),e.thickness&&(s[e.vertical?"borderRightWidth":"borderTopWidth"]=le(e.thickness)),s});return pe(()=>p("hr",{class:[{"v-divider":!0,"v-divider--inset":e.inset,"v-divider--vertical":e.vertical},i.value,r.value,e.class],style:[a.value,o.value,e.style],"aria-orientation":!n.role||n.role==="separator"?e.vertical?"vertical":"horizontal":void 0,role:`${n.role||"separator"}`},null)),{}}}),L_=J({active:Boolean,max:[Number,String],value:{type:[Number,String],default:0},...Ce(),...fs({transition:{component:mm}})},"VCounter"),P_=oe()({name:"VCounter",functional:!0,props:L_(),setup(e,t){let{slots:n}=t;const i=C(()=>e.max?`${e.value} / ${e.max}`:String(e.value));return pe(()=>p(yi,{transition:e.transition},{default:()=>[Xt(p("div",{class:["v-counter",e.class],style:e.style},[n.default?n.default({counter:i.value,max:e.max,value:e.value}):i.value]),[[pr,e.active]])]})),{}}}),U_=J({text:String,onClick:xn(),...Ce(),...it()},"VLabel"),Tm=oe()({name:"VLabel",props:U_(),setup(e,t){let{slots:n}=t;return pe(()=>{var i;return p("label",{class:["v-label",{"v-label--clickable":!!e.onClick},e.class],style:e.style,onClick:e.onClick},[e.text,(i=n.default)==null?void 0:i.call(n)])}),{}}}),F_=J({floating:Boolean,...Ce()},"VFieldLabel"),ta=oe()({name:"VFieldLabel",props:F_(),setup(e,t){let{slots:n}=t;return pe(()=>p(Tm,{class:["v-field-label",{"v-field-label--floating":e.floating},e.class],style:e.style,"aria-hidden":e.floating||void 0},n)),{}}});function Em(e){const{t}=Po();function n(i){let{name:r}=i;const o={prepend:"prependAction",prependInner:"prependAction",append:"appendAction",appendInner:"appendAction",clear:"clear"}[r],a=e[`onClick:${r}`],s=a&&o?t(`$vuetify.input.${o}`,e.label??""):void 0;return p(Qe,{icon:e[`${r}Icon`],"aria-label":s,onClick:a},null)}return{InputIcon:n}}const Im=J({focused:Boolean,"onUpdate:focused":xn()},"focus");function xm(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Sn();const n=It(e,"focused"),i=C(()=>({[`${t}--focused`]:n.value}));function r(){n.value=!0}function o(){n.value=!1}return{focusClasses:i,isFocused:n,focus:r,blur:o}}const D_=["underlined","outlined","filled","solo","solo-inverted","solo-filled","plain"],Am=J({appendInnerIcon:qe,bgColor:String,clearable:Boolean,clearIcon:{type:qe,default:"$clear"},active:Boolean,centerAffix:{type:Boolean,default:void 0},color:String,baseColor:String,dirty:Boolean,disabled:{type:Boolean,default:null},error:Boolean,flat:Boolean,label:String,persistentClear:Boolean,prependInnerIcon:qe,reverse:Boolean,singleLine:Boolean,variant:{type:String,default:"filled",validator:e=>D_.includes(e)},"onClick:clear":xn(),"onClick:appendInner":xn(),"onClick:prependInner":xn(),...Ce(),...xu(),...Et(),...it()},"VField"),Om=oe()({name:"VField",inheritAttrs:!1,props:{id:String,...Im(),...Am()},emits:{"update:focused":e=>!0,"update:modelValue":e=>!0},setup(e,t){let{attrs:n,emit:i,slots:r}=t;const{themeClasses:o}=lt(e),{loaderClasses:a}=Au(e),{focusClasses:s,isFocused:l,focus:u,blur:c}=xm(e),{InputIcon:d}=Em(e),{roundedClasses:f}=Bt(e),{rtlClasses:h}=_n(),m=C(()=>e.dirty||e.active),g=C(()=>!e.singleLine&&!!(e.label||r.label)),S=$n(),R=C(()=>e.id||`input-${S}`),k=C(()=>`${R.value}-messages`),I=Se(),P=Se(),L=Se(),T=C(()=>["plain","underlined"].includes(e.variant)),{backgroundColorClasses:E,backgroundColorStyles:x}=Qt(ve(e,"bgColor")),{textColorClasses:N,textColorStyles:$}=Pn(C(()=>e.error||e.disabled?void 0:m.value&&l.value?e.color:e.baseColor));we(m,F=>{if(g.value){const V=I.value.$el,ae=P.value.$el;requestAnimationFrame(()=>{const se=wu(V),ne=ae.getBoundingClientRect(),ee=ne.x-se.x,Ae=ne.y-se.y-(se.height/2-ne.height/2),Ne=ne.width/.75,X=Math.abs(Ne-se.width)>1?{maxWidth:le(Ne)}:void 0,ie=getComputedStyle(V),he=getComputedStyle(ae),Xe=parseFloat(ie.transitionDuration)*1e3||150,yt=parseFloat(he.getPropertyValue("--v-field-label-scale")),Oe=he.getPropertyValue("color");V.style.visibility="visible",ae.style.visibility="hidden",vi(V,{transform:`translate(${ee}px, ${Ae}px) scale(${yt})`,color:Oe,...X},{duration:Xe,easing:yo,direction:F?"normal":"reverse"}).finished.then(()=>{V.style.removeProperty("visibility"),ae.style.removeProperty("visibility")})})}},{flush:"post"});const W=C(()=>({isActive:m,isFocused:l,controlRef:L,blur:c,focus:u}));function O(F){F.target!==document.activeElement&&F.preventDefault()}return pe(()=>{var ee,Ae,Ne;const F=e.variant==="outlined",V=r["prepend-inner"]||e.prependInnerIcon,ae=!!(e.clearable||r.clear),se=!!(r["append-inner"]||e.appendInnerIcon||ae),ne=()=>r.label?r.label({...W.value,label:e.label,props:{for:R.value}}):e.label;return p("div",Pe({class:["v-field",{"v-field--active":m.value,"v-field--appended":se,"v-field--center-affix":e.centerAffix??!T.value,"v-field--disabled":e.disabled,"v-field--dirty":e.dirty,"v-field--error":e.error,"v-field--flat":e.flat,"v-field--has-background":!!e.bgColor,"v-field--persistent-clear":e.persistentClear,"v-field--prepended":V,"v-field--reverse":e.reverse,"v-field--single-line":e.singleLine,"v-field--no-label":!ne(),[`v-field--variant-${e.variant}`]:!0},o.value,E.value,s.value,a.value,f.value,h.value,e.class],style:[x.value,e.style],onClick:O},n),[p("div",{class:"v-field__overlay"},null),p(em,{name:"v-field",active:!!e.loading,color:e.error?"error":typeof e.loading=="string"?e.loading:e.color},{default:r.loader}),V&&p("div",{key:"prepend",class:"v-field__prepend-inner"},[e.prependInnerIcon&&p(d,{key:"prepend-icon",name:"prependInner"},null),(ee=r["prepend-inner"])==null?void 0:ee.call(r,W.value)]),p("div",{class:"v-field__field","data-no-activator":""},[["filled","solo","solo-inverted","solo-filled"].includes(e.variant)&&g.value&&p(ta,{key:"floating-label",ref:P,class:[N.value],floating:!0,for:R.value,style:$.value},{default:()=>[ne()]}),p(ta,{ref:I,for:R.value},{default:()=>[ne()]}),(Ae=r.default)==null?void 0:Ae.call(r,{...W.value,props:{id:R.value,class:"v-field__input","aria-describedby":k.value},focus:u,blur:c})]),ae&&p(vm,{key:"clear"},{default:()=>[Xt(p("div",{class:"v-field__clearable",onMousedown:X=>{X.preventDefault(),X.stopPropagation()}},[r.clear?r.clear():p(d,{name:"clear"},null)]),[[pr,e.dirty]])]}),se&&p("div",{key:"append",class:"v-field__append-inner"},[(Ne=r["append-inner"])==null?void 0:Ne.call(r,W.value),e.appendInnerIcon&&p(d,{key:"append-icon",name:"appendInner"},null)]),p("div",{class:["v-field__outline",N.value],style:$.value},[F&&p(_e,null,[p("div",{class:"v-field__outline__start"},null),g.value&&p("div",{class:"v-field__outline__notch"},[p(ta,{ref:P,floating:!0,for:R.value},{default:()=>[ne()]})]),p("div",{class:"v-field__outline__end"},null)]),T.value&&g.value&&p(ta,{ref:P,floating:!0,for:R.value},{default:()=>[ne()]})])])}),{controlRef:L}}});function N_(e){const t=Object.keys(Om.props).filter(n=>!vu(n)&&n!=="class"&&n!=="style");return Oh(e,t)}const B_=J({active:Boolean,color:String,messages:{type:[Array,String],default:()=>[]},...Ce(),...fs({transition:{component:mm,leaveAbsolute:!0,group:!0}})},"VMessages"),$_=oe()({name:"VMessages",props:B_(),setup(e,t){let{slots:n}=t;const i=C(()=>io(e.messages)),{textColorClasses:r,textColorStyles:o}=Pn(C(()=>e.color));return pe(()=>p(yi,{transition:e.transition,tag:"div",class:["v-messages",r.value,e.class],style:[o.value,e.style],role:"alert","aria-live":"polite"},{default:()=>[e.active&&i.value.map((a,s)=>p("div",{class:"v-messages__message",key:`${s}-${i.value}`},[n.message?n.message({message:a}):a]))]})),{}}}),M_=Symbol.for("vuetify:form");function V_(){return Je(M_,null)}const q_=J({disabled:{type:Boolean,default:null},error:Boolean,errorMessages:{type:[Array,String],default:()=>[]},maxErrors:{type:[Number,String],default:1},name:String,label:String,readonly:{type:Boolean,default:null},rules:{type:Array,default:()=>[]},modelValue:null,validateOn:String,validationValue:null,...Im()},"validation");function z_(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Sn(),n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:$n();const i=It(e,"modelValue"),r=C(()=>e.validationValue===void 0?i.value:e.validationValue),o=V_(),a=Se([]),s=be(!0),l=C(()=>!!(io(i.value===""?null:i.value).length||io(r.value===""?null:r.value).length)),u=C(()=>!!(e.disabled??(o==null?void 0:o.isDisabled.value))),c=C(()=>!!(e.readonly??(o==null?void 0:o.isReadonly.value))),d=C(()=>{var P;return(P=e.errorMessages)!=null&&P.length?io(e.errorMessages).concat(a.value).slice(0,Math.max(0,+e.maxErrors)):a.value}),f=C(()=>{let P=(e.validateOn??(o==null?void 0:o.validateOn.value))||"input";P==="lazy"&&(P="input lazy");const L=new Set((P==null?void 0:P.split(" "))??[]);return{blur:L.has("blur")||L.has("input"),input:L.has("input"),submit:L.has("submit"),lazy:L.has("lazy")}}),h=C(()=>{var P;return e.error||(P=e.errorMessages)!=null&&P.length?!1:e.rules.length?s.value?a.value.length||f.value.lazy?null:!0:!a.value.length:!0}),m=be(!1),g=C(()=>({[`${t}--error`]:h.value===!1,[`${t}--dirty`]:l.value,[`${t}--disabled`]:u.value,[`${t}--readonly`]:c.value})),S=C(()=>e.name??bt(n));ou(()=>{o==null||o.register({id:S.value,validate:I,reset:R,resetValidation:k})}),dn(()=>{o==null||o.unregister(S.value)}),Bn(async()=>{f.value.lazy||await I(!0),o==null||o.update(S.value,h.value,d.value)}),Ti(()=>f.value.input,()=>{we(r,()=>{if(r.value!=null)I();else if(e.focused){const P=we(()=>e.focused,L=>{L||I(),P()})}})}),Ti(()=>f.value.blur,()=>{we(()=>e.focused,P=>{P||I()})}),we([h,d],()=>{o==null||o.update(S.value,h.value,d.value)});function R(){i.value=null,vt(k)}function k(){s.value=!0,f.value.lazy?a.value=[]:I(!0)}async function I(){let P=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;const L=[];m.value=!0;for(const T of e.rules){if(L.length>=+(e.maxErrors??1))break;const x=await(typeof T=="function"?T:()=>T)(r.value);if(x!==!0){if(x!==!1&&typeof x!="string"){console.warn(`${x} is not a valid value. Rule functions must return boolean true or a string.`);continue}L.push(x||"")}}return a.value=L,m.value=!1,s.value=P,a.value}return{errorMessages:d,isDirty:l,isDisabled:u,isReadonly:c,isPristine:s,isValid:h,isValidating:m,reset:R,resetValidation:k,validate:I,validationClasses:g}}const Lm=J({id:String,appendIcon:qe,centerAffix:{type:Boolean,default:!0},prependIcon:qe,hideDetails:[Boolean,String],hideSpinButtons:Boolean,hint:String,persistentHint:Boolean,messages:{type:[Array,String],default:()=>[]},direction:{type:String,default:"horizontal",validator:e=>["horizontal","vertical"].includes(e)},"onClick:prepend":xn(),"onClick:append":xn(),...Ce(),...$t(),...q_()},"VInput"),pf=oe()({name:"VInput",props:{...Lm()},emits:{"update:modelValue":e=>!0},setup(e,t){let{attrs:n,slots:i,emit:r}=t;const{densityClasses:o}=fn(e),{rtlClasses:a}=_n(),{InputIcon:s}=Em(e),l=$n(),u=C(()=>e.id||`input-${l}`),c=C(()=>`${u.value}-messages`),{errorMessages:d,isDirty:f,isDisabled:h,isReadonly:m,isPristine:g,isValid:S,isValidating:R,reset:k,resetValidation:I,validate:P,validationClasses:L}=z_(e,"v-input",u),T=C(()=>({id:u,messagesId:c,isDirty:f,isDisabled:h,isReadonly:m,isPristine:g,isValid:S,isValidating:R,reset:k,resetValidation:I,validate:P})),E=C(()=>{var x;return(x=e.errorMessages)!=null&&x.length||!g.value&&d.value.length?d.value:e.hint&&(e.persistentHint||e.focused)?e.hint:e.messages});return pe(()=>{var O,F,V,ae;const x=!!(i.prepend||e.prependIcon),N=!!(i.append||e.appendIcon),$=E.value.length>0,W=!e.hideDetails||e.hideDetails==="auto"&&($||!!i.details);return p("div",{class:["v-input",`v-input--${e.direction}`,{"v-input--center-affix":e.centerAffix,"v-input--hide-spin-buttons":e.hideSpinButtons},o.value,a.value,L.value,e.class],style:e.style},[x&&p("div",{key:"prepend",class:"v-input__prepend"},[(O=i.prepend)==null?void 0:O.call(i,T.value),e.prependIcon&&p(s,{key:"prepend-icon",name:"prepend"},null)]),i.default&&p("div",{class:"v-input__control"},[(F=i.default)==null?void 0:F.call(i,T.value)]),N&&p("div",{key:"append",class:"v-input__append"},[e.appendIcon&&p(s,{key:"append-icon",name:"append"},null),(V=i.append)==null?void 0:V.call(i,T.value)]),W&&p("div",{class:"v-input__details"},[p($_,{id:c.value,active:$,messages:E.value},{message:i.message}),(ae=i.details)==null?void 0:ae.call(i,T.value)])])}),{reset:k,resetValidation:I,validate:P,isValid:S,errorMessages:d}}}),H_=["color","file","time","date","datetime-local","week","month"],W_=J({autofocus:Boolean,counter:[Boolean,Number,String],counterValue:[Number,Function],prefix:String,placeholder:String,persistentPlaceholder:Boolean,persistentCounter:Boolean,suffix:String,role:String,type:{type:String,default:"text"},modelModifiers:Object,...Lm(),...Am()},"VTextField"),Pm=oe()({name:"VTextField",directives:{Intersect:Kh},inheritAttrs:!1,props:W_(),emits:{"click:control":e=>!0,"mousedown:control":e=>!0,"update:focused":e=>!0,"update:modelValue":e=>!0},setup(e,t){let{attrs:n,emit:i,slots:r}=t;const o=It(e,"modelValue"),{isFocused:a,focus:s,blur:l}=xm(e),u=C(()=>typeof e.counterValue=="function"?e.counterValue(o.value):typeof e.counterValue=="number"?e.counterValue:(o.value??"").toString().length),c=C(()=>{if(n.maxlength)return n.maxlength;if(!(!e.counter||typeof e.counter!="number"&&typeof e.counter!="string"))return e.counter}),d=C(()=>["plain","underlined"].includes(e.variant));function f(T,E){var x,N;!e.autofocus||!T||(N=(x=E[0].target)==null?void 0:x.focus)==null||N.call(x)}const h=Se(),m=Se(),g=Se(),S=C(()=>H_.includes(e.type)||e.persistentPlaceholder||a.value||e.active);function R(){var T;g.value!==document.activeElement&&((T=g.value)==null||T.focus()),a.value||s()}function k(T){i("mousedown:control",T),T.target!==g.value&&(R(),T.preventDefault())}function I(T){R(),i("click:control",T)}function P(T){T.stopPropagation(),R(),vt(()=>{o.value=null,IC(e["onClick:clear"],T)})}function L(T){var x;const E=T.target;if(o.value=E.value,(x=e.modelModifiers)!=null&&x.trim&&["text","search","password","tel","url"].includes(e.type)){const N=[E.selectionStart,E.selectionEnd];vt(()=>{E.selectionStart=N[0],E.selectionEnd=N[1]})}}return pe(()=>{const T=!!(r.counter||e.counter!==!1&&e.counter!=null),E=!!(T||r.details),[x,N]=TC(n),{modelValue:$,...W}=pf.filterProps(e),O=N_(e);return p(pf,Pe({ref:h,modelValue:o.value,"onUpdate:modelValue":F=>o.value=F,class:["v-text-field",{"v-text-field--prefixed":e.prefix,"v-text-field--suffixed":e.suffix,"v-input--plain-underlined":d.value},e.class],style:e.style},x,W,{centerAffix:!d.value,focused:a.value}),{...r,default:F=>{let{id:V,isDisabled:ae,isDirty:se,isReadonly:ne,isValid:ee}=F;return p(Om,Pe({ref:m,onMousedown:k,onClick:I,"onClick:clear":P,"onClick:prependInner":e["onClick:prependInner"],"onClick:appendInner":e["onClick:appendInner"],role:e.role},O,{id:V.value,active:S.value||se.value,dirty:se.value||e.dirty,disabled:ae.value,focused:a.value,error:ee.value===!1}),{...r,default:Ae=>{let{props:{class:Ne,...X}}=Ae;const ie=Xt(p("input",Pe({ref:g,value:o.value,onInput:L,autofocus:e.autofocus,readonly:ne.value,disabled:ae.value,name:e.name,placeholder:e.placeholder,size:1,type:e.type,onFocus:R,onBlur:l},X,N),null),[[Ai("intersect"),{handler:f},null,{once:!0}]]);return p(_e,null,[e.prefix&&p("span",{class:"v-text-field__prefix"},[p("span",{class:"v-text-field__prefix__text"},[e.prefix])]),r.default?p("div",{class:Ne,"data-no-activator":""},[r.default(),ie]):On(ie,{class:Ne}),e.suffix&&p("span",{class:"v-text-field__suffix"},[p("span",{class:"v-text-field__suffix__text"},[e.suffix])])])}})},details:E?F=>{var V;return p(_e,null,[(V=r.details)==null?void 0:V.call(r,F),T&&p(_e,null,[p("span",null,null),p(P_,{active:e.persistentCounter||a.value,value:u.value,max:c.value},r.counter)])])}:void 0})}),vs({},h,m,g)}}),J_=Ee("i",{class:"fas fa-search mr-1"},null,-1);function G_(e,t,n,i,r,o){return de(),Me(km,{width:"90%","max-width":"800px",activator:"parent",modelValue:e.dialog,"onUpdate:modelValue":t[2]||(t[2]=a=>e.dialog=a),location:"id_dialog_anchor","location-strategy":"connected"},{activator:q(({props:a})=>[zp(e.$slots,"activator",{},()=>[p(je,Pe(a,{size:"small",density:"default",variant:"outlined"}),{default:q(()=>[J_,Ve(" Search")]),_:2},1040)])]),default:q(({isActive:a})=>[p(An,null,{default:q(()=>[p(ri,{class:"pb-0"},{default:q(()=>[p(Pm,{id:"id_global_search_input",modelValue:e.search_query,"onUpdate:modelValue":t[0]||(t[0]=s=>e.search_query=s),autocomplete:"off",clearable:"",placeholder:"Search","prepend-inner-icon":"fas fa-search",variant:"solo"},null,8,["modelValue"])]),_:1}),p(O_),p(ri,null,{default:q(()=>[(de(!0),at(_e,null,Oi(e.search_results,(s,l)=>(de(),Me(An,{variant:e.cardVariant(l),hover:"",class:"mt-1",onClick:u=>e.selected_result=l},{default:q(()=>[p(Uo,{onClick:t[1]||(t[1]=u=>e.goToSelectedRecipe())},{default:q(()=>[s.image?(de(),Me(bo,{key:0,image:s.image},null,8,["image"])):kt("",!0),s.icon?(de(),Me(Qe,{key:1,icon:s.icon},null,8,["icon"])):kt("",!0),Ve(" "+Fe(s.name),1)]),_:2},1024)]),_:2},1032,["variant","onClick"]))),256))]),_:1})]),_:1})]),_:3},8,["modelValue"])}const Um=Ct(CC,[["render",G_]]),K_=pt({components:{GlobalSearchDialog:Um},mixins:[],data(){return{drawer:!0,rail:!0}},mounted(){},methods:{}}),Z_="/static/vue3/assets/brand_logo-D4X97p3N.svg",za=Symbol.for("vuetify:layout"),Fm=Symbol.for("vuetify:layout-item"),hf=1e3,Y_=J({overlaps:{type:Array,default:()=>[]},fullHeight:Boolean},"layout"),Dm=J({name:{type:String},order:{type:[Number,String],default:0},absolute:Boolean},"layout-item");function X_(){const e=Je(za);if(!e)throw new Error("[Vuetify] Could not find injected layout");return{getLayoutItem:e.getLayoutItem,mainRect:e.mainRect,mainStyles:e.mainStyles}}function Nm(e){const t=Je(za);if(!t)throw new Error("[Vuetify] Could not find injected layout");const n=e.id??`layout-item-${$n()}`,i=dt("useLayoutItem");Ft(Fm,{id:n});const r=be(!1);$p(()=>r.value=!0),Bp(()=>r.value=!1);const{layoutItemStyles:o,layoutItemScrimStyles:a}=t.register(i,{...e,active:C(()=>r.value?!1:e.active.value),id:n});return dn(()=>t.unregister(n)),{layoutItemStyles:o,layoutRect:t.layoutRect,layoutItemScrimStyles:a}}const Q_=(e,t,n,i)=>{let r={top:0,left:0,right:0,bottom:0};const o=[{id:"",layer:{...r}}];for(const a of e){const s=t.get(a),l=n.get(a),u=i.get(a);if(!s||!l||!u)continue;const c={...r,[s.value]:parseInt(r[s.value],10)+(u.value?parseInt(l.value,10):0)};o.push({id:a,layer:c}),r=c}return o};function j_(e){const t=Je(za,null),n=C(()=>t?t.rootZIndex.value-100:hf),i=Se([]),r=ht(new Map),o=ht(new Map),a=ht(new Map),s=ht(new Map),l=ht(new Map),{resizeRef:u,contentRect:c}=Ba(),d=C(()=>{const T=new Map,E=e.overlaps??[];for(const x of E.filter(N=>N.includes(":"))){const[N,$]=x.split(":");if(!i.value.includes(N)||!i.value.includes($))continue;const W=r.get(N),O=r.get($),F=o.get(N),V=o.get($);!W||!O||!F||!V||(T.set($,{position:W.value,amount:parseInt(F.value,10)}),T.set(N,{position:O.value,amount:-parseInt(V.value,10)}))}return T}),f=C(()=>{const T=[...new Set([...a.values()].map(x=>x.value))].sort((x,N)=>x-N),E=[];for(const x of T){const N=i.value.filter($=>{var W;return((W=a.get($))==null?void 0:W.value)===x});E.push(...N)}return Q_(E,r,o,s)}),h=C(()=>!Array.from(l.values()).some(T=>T.value)),m=C(()=>f.value[f.value.length-1].layer),g=C(()=>({"--v-layout-left":le(m.value.left),"--v-layout-right":le(m.value.right),"--v-layout-top":le(m.value.top),"--v-layout-bottom":le(m.value.bottom),...h.value?void 0:{transition:"none"}})),S=C(()=>f.value.slice(1).map((T,E)=>{let{id:x}=T;const{layer:N}=f.value[E],$=o.get(x),W=r.get(x);return{id:x,...N,size:Number($.value),position:W.value}})),R=T=>S.value.find(E=>E.id===T),k=dt("createLayout"),I=be(!1);Bn(()=>{I.value=!0}),Ft(za,{register:(T,E)=>{let{id:x,order:N,position:$,layoutSize:W,elementSize:O,active:F,disableTransitions:V,absolute:ae}=E;a.set(x,N),r.set(x,$),o.set(x,W),s.set(x,F),V&&l.set(x,V);const ne=ro(Fm,k==null?void 0:k.vnode).indexOf(T);ne>-1?i.value.splice(ne,0,x):i.value.push(x);const ee=C(()=>S.value.findIndex(ie=>ie.id===x)),Ae=C(()=>n.value+f.value.length*2-ee.value*2),Ne=C(()=>{const ie=$.value==="left"||$.value==="right",he=$.value==="right",Xe=$.value==="bottom",yt={[$.value]:0,zIndex:Ae.value,transform:`translate${ie?"X":"Y"}(${(F.value?0:-110)*(he||Xe?-1:1)}%)`,position:ae.value||n.value!==hf?"absolute":"fixed",...h.value?void 0:{transition:"none"}};if(!I.value)return yt;const Oe=S.value[ee.value];if(!Oe)throw new Error(`[Vuetify] Could not find layout item "${x}"`);const U=d.value.get(x);return U&&(Oe[U.position]+=U.amount),{...yt,height:ie?`calc(100% - ${Oe.top}px - ${Oe.bottom}px)`:O.value?`${O.value}px`:void 0,left:he?void 0:`${Oe.left}px`,right:he?`${Oe.right}px`:void 0,top:$.value!=="bottom"?`${Oe.top}px`:void 0,bottom:$.value!=="top"?`${Oe.bottom}px`:void 0,width:ie?O.value?`${O.value}px`:void 0:`calc(100% - ${Oe.left}px - ${Oe.right}px)`}}),X=C(()=>({zIndex:Ae.value-1}));return{layoutItemStyles:Ne,layoutItemScrimStyles:X,zIndex:Ae}},unregister:T=>{a.delete(T),r.delete(T),o.delete(T),s.delete(T),l.delete(T),i.value=i.value.filter(E=>E!==T)},mainRect:m,mainStyles:g,getLayoutItem:R,items:S,layoutRect:c,rootZIndex:n});const P=C(()=>["v-layout",{"v-layout--full-height":e.fullHeight}]),L=C(()=>({zIndex:t?n.value:void 0,position:t?"relative":void 0,overflow:t?"hidden":void 0}));return{layoutClasses:P,layoutStyles:L,getLayoutItem:R,items:S,layoutRect:c,layoutRef:u}}const ek=J({...Ce(),...Y_({fullHeight:!0}),...it()},"VApp"),tk=oe()({name:"VApp",props:ek(),setup(e,t){let{slots:n}=t;const i=lt(e),{layoutClasses:r,getLayoutItem:o,items:a,layoutRef:s}=j_(e),{rtlClasses:l}=_n();return pe(()=>{var u;return p("div",{ref:s,class:["v-application",i.themeClasses.value,r.value,l.value,e.class],style:[e.style]},[p("div",{class:"v-application__wrap"},[(u=n.default)==null?void 0:u.call(n)])])}),{getLayoutItem:o,items:a,theme:i}}}),nk=J({text:String,...Ce(),...He()},"VToolbarTitle"),ik=oe()({name:"VToolbarTitle",props:nk(),setup(e,t){let{slots:n}=t;return pe(()=>{const i=!!(n.default||n.text||e.text);return p(e.tag,{class:["v-toolbar-title",e.class],style:e.style},{default:()=>{var r;return[i&&p("div",{class:"v-toolbar-title__placeholder"},[n.text?n.text():e.text,(r=n.default)==null?void 0:r.call(n)])]}})}),{}}}),rk=[null,"prominent","default","comfortable","compact"],Bm=J({absolute:Boolean,collapse:Boolean,color:String,density:{type:String,default:"default",validator:e=>rk.includes(e)},extended:Boolean,extensionHeight:{type:[Number,String],default:48},flat:Boolean,floating:Boolean,height:{type:[Number,String],default:64},image:String,title:String,...vr(),...Ce(),...Rn(),...Et(),...He({tag:"header"}),...it()},"VToolbar"),mf=oe()({name:"VToolbar",props:Bm(),setup(e,t){var h;let{slots:n}=t;const{backgroundColorClasses:i,backgroundColorStyles:r}=Qt(ve(e,"color")),{borderClasses:o}=yr(e),{elevationClasses:a}=Mn(e),{roundedClasses:s}=Bt(e),{themeClasses:l}=lt(e),{rtlClasses:u}=_n(),c=be(!!(e.extended||(h=n.extension)!=null&&h.call(n))),d=C(()=>parseInt(Number(e.height)+(e.density==="prominent"?Number(e.height):0)-(e.density==="comfortable"?8:0)-(e.density==="compact"?16:0),10)),f=C(()=>c.value?parseInt(Number(e.extensionHeight)+(e.density==="prominent"?Number(e.extensionHeight):0)-(e.density==="comfortable"?4:0)-(e.density==="compact"?8:0),10):0);return Cn({VBtn:{variant:"text"}}),pe(()=>{var R;const m=!!(e.title||n.title),g=!!(n.image||e.image),S=(R=n.extension)==null?void 0:R.call(n);return c.value=!!(e.extended||S),p(e.tag,{class:["v-toolbar",{"v-toolbar--absolute":e.absolute,"v-toolbar--collapse":e.collapse,"v-toolbar--flat":e.flat,"v-toolbar--floating":e.floating,[`v-toolbar--density-${e.density}`]:!0},i.value,o.value,a.value,s.value,l.value,u.value,e.class],style:[r.value,e.style]},{default:()=>[g&&p("div",{key:"image",class:"v-toolbar__image"},[n.image?p(ct,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},n.image):p(gr,{key:"image-img",cover:!0,src:e.image},null)]),p(ct,{defaults:{VTabs:{height:le(d.value)}}},{default:()=>{var k,I,P;return[p("div",{class:"v-toolbar__content",style:{height:le(d.value)}},[n.prepend&&p("div",{class:"v-toolbar__prepend"},[(k=n.prepend)==null?void 0:k.call(n)]),m&&p(ik,{key:"title",text:e.title},{text:n.title}),(I=n.default)==null?void 0:I.call(n),n.append&&p("div",{class:"v-toolbar__append"},[(P=n.append)==null?void 0:P.call(n)])])]}}),p(ct,{defaults:{VTabs:{height:le(f.value)}}},{default:()=>[p(gm,null,{default:()=>[c.value&&p("div",{class:"v-toolbar__extension",style:{height:le(f.value)}},[S])]})]})]})}),{contentHeight:d,extensionHeight:f}}}),ok=J({scrollTarget:{type:String},scrollThreshold:{type:[String,Number],default:300}},"scroll");function ak(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{canScroll:n}=t;let i=0;const r=Se(null),o=be(0),a=be(0),s=be(0),l=be(!1),u=be(!1),c=C(()=>Number(e.scrollThreshold)),d=C(()=>lr((c.value-o.value)/c.value||0)),f=()=>{const h=r.value;!h||n&&!n.value||(i=o.value,o.value="window"in h?h.pageYOffset:h.scrollTop,u.value=o.value{a.value=a.value||o.value}),we(l,()=>{a.value=0}),Bn(()=>{we(()=>e.scrollTarget,h=>{var g;const m=h?document.querySelector(h):window;m&&m!==r.value&&((g=r.value)==null||g.removeEventListener("scroll",f),r.value=m,r.value.addEventListener("scroll",f,{passive:!0}))},{immediate:!0})}),dn(()=>{var h;(h=r.value)==null||h.removeEventListener("scroll",f)}),n&&we(n,f,{immediate:!0}),{scrollThreshold:c,currentScroll:o,currentThreshold:s,isScrollActive:l,scrollRatio:d,isScrollingUp:u,savedScroll:a}}function Bu(){const e=be(!1);return Bn(()=>{window.requestAnimationFrame(()=>{e.value=!0})}),{ssrBootStyles:C(()=>e.value?void 0:{transition:"none !important"}),isBooted:ko(e)}}const sk=J({scrollBehavior:String,modelValue:{type:Boolean,default:!0},location:{type:String,default:"top",validator:e=>["top","bottom"].includes(e)},...Bm(),...Dm(),...ok(),height:{type:[Number,String],default:64}},"VAppBar"),lk=oe()({name:"VAppBar",props:sk(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const i=Se(),r=It(e,"modelValue"),o=C(()=>{var k;const R=new Set(((k=e.scrollBehavior)==null?void 0:k.split(" "))??[]);return{hide:R.has("hide"),inverted:R.has("inverted"),collapse:R.has("collapse"),elevate:R.has("elevate"),fadeImage:R.has("fade-image")}}),a=C(()=>{const R=o.value;return R.hide||R.inverted||R.collapse||R.elevate||R.fadeImage||!r.value}),{currentScroll:s,scrollThreshold:l,isScrollingUp:u,scrollRatio:c}=ak(e,{canScroll:a}),d=C(()=>e.collapse||o.value.collapse&&(o.value.inverted?c.value>0:c.value===0)),f=C(()=>e.flat||o.value.elevate&&(o.value.inverted?s.value>0:s.value===0)),h=C(()=>o.value.fadeImage?o.value.inverted?1-c.value:c.value:void 0),m=C(()=>{var I,P;if(o.value.hide&&o.value.inverted)return 0;const R=((I=i.value)==null?void 0:I.contentHeight)??0,k=((P=i.value)==null?void 0:P.extensionHeight)??0;return R+k});Ti(C(()=>!!e.scrollBehavior),()=>{Dn(()=>{o.value.hide?o.value.inverted?r.value=s.value>l.value:r.value=u.value||s.valueparseInt(e.order,10)),position:ve(e,"location"),layoutSize:m,elementSize:be(void 0),active:r,absolute:ve(e,"absolute")});return pe(()=>{const R=mf.filterProps(e);return p(mf,Pe({ref:i,class:["v-app-bar",{"v-app-bar--bottom":e.location==="bottom"},e.class],style:[{...S.value,"--v-toolbar-image-opacity":h.value,height:void 0,...g.value},e.style]},R,{collapse:d.value,flat:f.value}),n)}),{}}}),uk=J({bgColor:String,color:String,grow:Boolean,mode:{type:String,validator:e=>!e||["horizontal","shift"].includes(e)},height:{type:[Number,String],default:56},active:{type:Boolean,default:!0},...vr(),...Ce(),...$t(),...Rn(),...Et(),...Dm({name:"bottom-navigation"}),...He({tag:"header"}),...Oo({modelValue:!0,selectedClass:"v-btn--selected"}),...it()},"VBottomNavigation"),ck=oe()({name:"VBottomNavigation",props:uk(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const{themeClasses:i}=wR(),{borderClasses:r}=yr(e),{backgroundColorClasses:o,backgroundColorStyles:a}=Qt(ve(e,"bgColor")),{densityClasses:s}=fn(e),{elevationClasses:l}=Mn(e),{roundedClasses:u}=Bt(e),{ssrBootStyles:c}=Bu(),d=C(()=>Number(e.height)-(e.density==="comfortable"?8:0)-(e.density==="compact"?16:0)),f=ve(e,"active"),{layoutItemStyles:h}=Nm({id:e.name,order:C(()=>parseInt(e.order,10)),position:C(()=>"bottom"),layoutSize:C(()=>f.value?d.value:0),elementSize:d,active:f,absolute:ve(e,"absolute")});return Lo(e,Eu),Cn({VBtn:{color:ve(e,"color"),density:ve(e,"density"),stacked:C(()=>e.mode!=="horizontal"),variant:"text"}},{scoped:!0}),pe(()=>p(e.tag,{class:["v-bottom-navigation",{"v-bottom-navigation--active":f.value,"v-bottom-navigation--grow":e.grow,"v-bottom-navigation--shift":e.mode==="shift"},i.value,o.value,r.value,s.value,l.value,u.value,e.class],style:[a.value,h.value,{height:le(d.value),transform:`translateY(${le(f.value?0:100,"%")})`},c.value,e.style]},{default:()=>[n.default&&p("div",{class:"v-bottom-navigation__content"},[n.default()])]})),{}}}),dk=J({fluid:{type:Boolean,default:!1},...Ce(),...He()},"VContainer"),Fo=oe()({name:"VContainer",props:dk(),setup(e,t){let{slots:n}=t;const{rtlClasses:i}=_n();return pe(()=>p(e.tag,{class:["v-container",{"v-container--fluid":e.fluid},i.value,e.class],style:e.style},n)),{}}}),$m=gs.reduce((e,t)=>(e[t]={type:[Boolean,String,Number],default:!1},e),{}),Mm=gs.reduce((e,t)=>{const n="offset"+Fn(t);return e[n]={type:[String,Number],default:null},e},{}),Vm=gs.reduce((e,t)=>{const n="order"+Fn(t);return e[n]={type:[String,Number],default:null},e},{}),gf={col:Object.keys($m),offset:Object.keys(Mm),order:Object.keys(Vm)};function fk(e,t,n){let i=e;if(!(n==null||n===!1)){if(t){const r=t.replace(e,"");i+=`-${r}`}return e==="col"&&(i="v-"+i),e==="col"&&(n===""||n===!0)||(i+=`-${n}`),i.toLowerCase()}}const pk=["auto","start","end","center","baseline","stretch"],hk=J({cols:{type:[Boolean,String,Number],default:!1},...$m,offset:{type:[String,Number],default:null},...Mm,order:{type:[String,Number],default:null},...Vm,alignSelf:{type:String,default:null,validator:e=>pk.includes(e)},...Ce(),...He()},"VCol"),yn=oe()({name:"VCol",props:hk(),setup(e,t){let{slots:n}=t;const i=C(()=>{const r=[];let o;for(o in gf)gf[o].forEach(s=>{const l=e[s],u=fk(o,s,l);u&&r.push(u)});const a=r.some(s=>s.startsWith("v-col-"));return r.push({"v-col":!a||!e.cols,[`v-col-${e.cols}`]:e.cols,[`offset-${e.offset}`]:e.offset,[`order-${e.order}`]:e.order,[`align-self-${e.alignSelf}`]:e.alignSelf}),r});return()=>{var r;return bn(e.tag,{class:[i.value,e.class],style:e.style},(r=n.default)==null?void 0:r.call(n))}}}),$u=["start","end","center"],qm=["space-between","space-around","space-evenly"];function Mu(e,t){return gs.reduce((n,i)=>{const r=e+Fn(i);return n[r]=t(),n},{})}const mk=[...$u,"baseline","stretch"],zm=e=>mk.includes(e),Hm=Mu("align",()=>({type:String,default:null,validator:zm})),gk=[...$u,...qm],Wm=e=>gk.includes(e),Jm=Mu("justify",()=>({type:String,default:null,validator:Wm})),vk=[...$u,...qm,"stretch"],Gm=e=>vk.includes(e),Km=Mu("alignContent",()=>({type:String,default:null,validator:Gm})),vf={align:Object.keys(Hm),justify:Object.keys(Jm),alignContent:Object.keys(Km)},yk={align:"align",justify:"justify",alignContent:"align-content"};function wk(e,t,n){let i=yk[e];if(n!=null){if(t){const r=t.replace(e,"");i+=`-${r}`}return i+=`-${n}`,i.toLowerCase()}}const bk=J({dense:Boolean,noGutters:Boolean,align:{type:String,default:null,validator:zm},...Hm,justify:{type:String,default:null,validator:Wm},...Jm,alignContent:{type:String,default:null,validator:Gm},...Km,...Ce(),...He()},"VRow"),Ei=oe()({name:"VRow",props:bk(),setup(e,t){let{slots:n}=t;const i=C(()=>{const r=[];let o;for(o in vf)vf[o].forEach(a=>{const s=e[a],l=wk(o,a,s);l&&r.push(l)});return r.push({"v-row--no-gutters":e.noGutters,"v-row--dense":e.dense,[`align-${e.align}`]:e.align,[`justify-${e.justify}`]:e.justify,[`align-content-${e.alignContent}`]:e.alignContent}),r});return()=>{var r;return bn(e.tag,{class:["v-row",i.value,e.class],style:e.style},(r=n.default)==null?void 0:r.call(n))}}}),Sk=Io("v-spacer","div","VSpacer"),Ck=J({scrollable:Boolean,...Ce(),...He({tag:"main"})},"VMain"),Rk=oe()({name:"VMain",props:Ck(),setup(e,t){let{slots:n}=t;const{mainStyles:i}=X_(),{ssrBootStyles:r}=Bu();return pe(()=>p(e.tag,{class:["v-main",{"v-main--scrollable":e.scrollable},e.class],style:[i.value,r.value,e.style]},{default:()=>{var o,a;return[e.scrollable?p("div",{class:"v-main__scroller"},[(o=n.default)==null?void 0:o.call(n)]):(a=n.default)==null?void 0:a.call(n)]}})),{}}}),_k=Ee("span",null,"Recipes",-1),kk=Ee("span",null,"MealPlan",-1),Tk=Ee("span",null,"Shopping",-1),Ek=Ee("span",null,"Books",-1);function Ik(e,t,n,i,r,o){const a=Pt("global-search-dialog"),s=Pt("router-view");return de(),Me(tk,null,{default:q(()=>[p(lk,{color:"tandoor",flat:"",density:"comfortable"},{default:q(()=>[p(gr,{class:"ms-2",src:Z_}),p(a),p(Sk),p(je,{density:"compact",icon:"fas fa-ellipsis-v"})]),_:1}),p(Rk,null,{default:q(()=>[p(Fo,{class:"pa-0 ma-0 mb-2"},{default:q(()=>[p(s)]),_:1})]),_:1}),p(ck,null,{default:q(()=>[p(je,{value:"recent",to:"/search"},{default:q(()=>[p(Qe,{icon:"fas fa-book"}),_k]),_:1}),p(je,{value:"favorites",to:"/mealplan"},{default:q(()=>[p(Qe,{icon:"fas fa-calendar-alt"}),kk]),_:1}),p(je,{value:"nearby",to:"/shopping"},{default:q(()=>[p(Qe,{icon:"fas fa-shopping-cart"}),Tk]),_:1}),p(je,{value:"nearby",to:"/books"},{default:q(()=>[p(Qe,{icon:"fas fa-book-open"}),Ek]),_:1})]),_:1})]),_:1})}const xk=Ct(K_,[["render",Ik]]);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const a of o.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&i(a)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function i(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();const Ak={collapse:"fas fa-chevron-up",complete:"fas fa-check",cancel:"fas fa-times-circle",close:"fas fa-times",delete:"fas fa-times-circle",clear:"fas fa-times-circle",success:"fas fa-check-circle",info:"fas fa-info-circle",warning:"fas fa-exclamation",error:"fas fa-exclamation-triangle",prev:"fas fa-chevron-left",next:"fas fa-chevron-right",checkboxOn:"fas fa-check-square",checkboxOff:"far fa-square",checkboxIndeterminate:"fas fa-minus-square",delimiter:"fas fa-circle",sortAsc:"fas fa-arrow-up",sortDesc:"fas fa-arrow-down",expand:"fas fa-chevron-down",menu:"fas fa-bars",subgroup:"fas fa-caret-down",dropdown:"fas fa-caret-down",radioOn:"far fa-dot-circle",radioOff:"far fa-circle",edit:"fas fa-edit",ratingEmpty:"far fa-star",ratingFull:"fas fa-star",ratingHalf:"fas fa-star-half",loading:"fas fa-sync",first:"fas fa-step-backward",last:"fas fa-step-forward",unfold:"fas fa-arrows-alt-v",file:"fas fa-paperclip",plus:"fas fa-plus",minus:"fas fa-minus",calendar:"fas fa-calendar",eyeDropper:"fas fa-eye-dropper"},Ok={component:_u},xl={"001":1,AD:1,AE:6,AF:6,AG:0,AI:1,AL:1,AM:1,AN:1,AR:1,AS:0,AT:1,AU:1,AX:1,AZ:1,BA:1,BD:0,BE:1,BG:1,BH:6,BM:1,BN:1,BR:0,BS:0,BT:0,BW:0,BY:1,BZ:0,CA:0,CH:1,CL:1,CM:1,CN:1,CO:0,CR:1,CY:1,CZ:1,DE:1,DJ:6,DK:1,DM:0,DO:0,DZ:6,EC:1,EE:1,EG:6,ES:1,ET:0,FI:1,FJ:1,FO:1,FR:1,GB:1,"GB-alt-variant":0,GE:1,GF:1,GP:1,GR:1,GT:0,GU:0,HK:0,HN:0,HR:1,HU:1,ID:0,IE:1,IL:0,IN:0,IQ:6,IR:6,IS:1,IT:1,JM:0,JO:6,JP:0,KE:0,KG:1,KH:0,KR:0,KW:6,KZ:1,LA:0,LB:1,LI:1,LK:1,LT:1,LU:1,LV:1,LY:6,MC:1,MD:1,ME:1,MH:0,MK:1,MM:0,MN:1,MO:0,MQ:1,MT:0,MV:5,MX:0,MY:1,MZ:0,NI:0,NL:1,NO:1,NP:0,NZ:1,OM:6,PA:0,PE:0,PH:0,PK:0,PL:1,PR:0,PT:0,PY:0,QA:6,RE:1,RO:1,RS:1,RU:1,SA:0,SD:6,SE:1,SG:0,SI:1,SK:1,SM:1,SV:0,SY:6,TH:0,TJ:1,TM:1,TR:1,TT:0,TW:0,UA:1,UM:0,US:0,UY:1,UZ:1,VA:1,VE:0,VI:0,VN:1,WS:0,XK:1,YE:0,ZA:0,ZW:0};function Lk(e,t){const n=[];let i=[];const r=Zm(e),o=Ym(e),a=(r.getDay()-xl[t.slice(-2).toUpperCase()]+7)%7,s=(o.getDay()-xl[t.slice(-2).toUpperCase()]+7)%7;for(let l=0;l0&&n.push(i),n}function Pk(e){const t=new Date(e);for(;t.getDay()!==0;)t.setDate(t.getDate()-1);return t}function Uk(e){const t=new Date(e);for(;t.getDay()!==6;)t.setDate(t.getDate()+1);return t}function Zm(e){return new Date(e.getFullYear(),e.getMonth(),1)}function Ym(e){return new Date(e.getFullYear(),e.getMonth()+1,0)}function Fk(e){const t=e.split("-").map(Number);return new Date(t[0],t[1]-1,t[2])}const Dk=/^([12]\d{3}-([1-9]|0[1-9]|1[0-2])-([1-9]|0[1-9]|[12]\d|3[01]))$/;function Xm(e){if(e==null)return new Date;if(e instanceof Date)return e;if(typeof e=="string"){let t;if(Dk.test(e))return Fk(e);if(t=Date.parse(e),!isNaN(t))return new Date(t)}return null}const yf=new Date(2e3,0,2);function Nk(e){const t=xl[e.slice(-2).toUpperCase()];return mu(7).map(n=>{const i=new Date(yf);return i.setDate(yf.getDate()+t+n),new Intl.DateTimeFormat(e,{weekday:"narrow"}).format(i)})}function Bk(e,t,n,i){const r=Xm(e)??new Date,o=i==null?void 0:i[t];if(typeof o=="function")return o(r,t,n);let a={};switch(t){case"fullDateWithWeekday":a={weekday:"long",day:"numeric",month:"long",year:"numeric"};break;case"hours12h":a={hour:"numeric",hour12:!0};break;case"normalDateWithWeekday":a={weekday:"short",day:"numeric",month:"short"};break;case"keyboardDate":a={day:"2-digit",month:"2-digit",year:"numeric"};break;case"monthAndDate":a={month:"long",day:"numeric"};break;case"monthAndYear":a={month:"long",year:"numeric"};break;case"month":a={month:"long"};break;case"monthShort":a={month:"short"};break;case"dayOfMonth":return new Intl.NumberFormat(n).format(r.getDate());case"shortDate":a={year:"2-digit",month:"numeric",day:"numeric"};break;case"weekdayShort":a={weekday:"short"};break;case"year":a={year:"numeric"};break;default:a=o??{timeZone:"UTC",timeZoneName:"short"}}return new Intl.DateTimeFormat(n,a).format(r)}function $k(e,t){const n=e.toJsDate(t),i=n.getFullYear(),r=xd(String(n.getMonth()+1),2,"0"),o=xd(String(n.getDate()),2,"0");return`${i}-${r}-${o}`}function Mk(e){const[t,n,i]=e.split("-").map(Number);return new Date(t,n-1,i)}function Vk(e,t){const n=new Date(e);return n.setMinutes(n.getMinutes()+t),n}function qk(e,t){const n=new Date(e);return n.setHours(n.getHours()+t),n}function zk(e,t){const n=new Date(e);return n.setDate(n.getDate()+t),n}function Hk(e,t){const n=new Date(e);return n.setDate(n.getDate()+t*7),n}function Wk(e,t){const n=new Date(e);return n.setMonth(n.getMonth()+t),n}function Jk(e){return e.getFullYear()}function Gk(e){return e.getMonth()}function Kk(e){return new Date(e.getFullYear(),e.getMonth()+1,1)}function Zk(e){return e.getHours()}function Yk(e){return e.getMinutes()}function Xk(e){return new Date(e.getFullYear(),0,1)}function Qk(e){return new Date(e.getFullYear(),11,31)}function jk(e,t){return Al(e,t[0])&&tT(e,t[1])}function eT(e){const t=new Date(e);return t instanceof Date&&!isNaN(t.getTime())}function Al(e,t){return e.getTime()>t.getTime()}function tT(e,t){return e.getTime(){n.locale=e.locale[i]??i??n.locale}),n}const mT=Symbol.for("vuetify:goto");function gT(){return{container:void 0,duration:300,layout:!1,offset:0,easing:"easeInOutCubic",patterns:{linear:e=>e,easeInQuad:e=>e**2,easeOutQuad:e=>e*(2-e),easeInOutQuad:e=>e<.5?2*e**2:-1+(4-2*e)*e,easeInCubic:e=>e**3,easeOutCubic:e=>--e**3+1,easeInOutCubic:e=>e<.5?4*e**3:(e-1)*(2*e-2)*(2*e-2)+1,easeInQuart:e=>e**4,easeOutQuart:e=>1- --e**4,easeInOutQuart:e=>e<.5?8*e**4:1-8*--e**4,easeInQuint:e=>e**5,easeOutQuint:e=>1+--e**5,easeInOutQuint:e=>e<.5?16*e**5:1+16*--e**5}}}function vT(e,t){return{rtl:t.isRtl,options:Ut(gT(),e)}}function Qm(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{blueprint:t,...n}=e,i=Ut(t,n),{aliases:r={},components:o={},directives:a={}}=i,s=sR(i.defaults),l=b_(i.display,i.ssr),u=yR(i.theme),c=hR(i.icons),d=FR(i.locale),f=pT(i.date,d),h=vT(i.goTo,d);return{install:g=>{for(const S in a)g.directive(S,a[S]);for(const S in o)g.component(S,o[S]);for(const S in r)g.component(S,hr({...r[S],name:S,aliasName:r[S].name}));if(u.install(g),g.provide(ur,s),g.provide(Il,l),g.provide(wo,u),g.provide(Cl,c),g.provide($a,d),g.provide(fT,f.options),g.provide(bf,f.instance),g.provide(mT,h),Ye&&i.ssr)if(g.$nuxt)g.$nuxt.hook("app:suspense:resolve",()=>{l.update()});else{const{mount:S}=g;g.mount=function(){const R=S(...arguments);return vt(()=>l.update()),g.mount=S,R}}$n.reset(),g.mixin({computed:{$vuetify(){return ht({defaults:Bi.call(this,ur),display:Bi.call(this,Il),theme:Bi.call(this,wo),icons:Bi.call(this,Cl),locale:Bi.call(this,$a),date:Bi.call(this,bf)})}}})},defaults:s,display:l,theme:u,icons:c,locale:d,date:f,goTo:h}}const yT="3.5.4";Qm.version=yT;function Bi(e){var i,r;const t=this.$,n=((i=t.parent)==null?void 0:i.provides)??((r=t.vnode.appContext)==null?void 0:r.provides);if(n&&e in n)return n[e]}const wT=Qm({theme:{defaultTheme:"light",themes:{light:{colors:{background:"#f5efea",tandoor:"#ddbf86",primary:"#b98766",secondary:"#b55e4f",success:"#82aa8b",info:"#385f84",warning:"#eaaa21",error:"#a7240e"}}}},icons:{defaultSet:"fa",aliases:Ak,sets:{fa:Ok}}}),bT=pt({name:"ShoppingListPage",data(){return{tab:1,editing_supermarket_categories:[],editing_supermarket:null,new_supermarket:{entrymode:!1,value:void 0,editmode:void 0},new_category:{entrymode:!1,value:void 0},autosync_id:void 0,new_item:{amount:1,unit:void 0,food:void 0,ingredient:void 0},new_recipe:{id:void 0}}}}),jm=Symbol.for("vuetify:v-tabs"),ST=J({fixed:Boolean,sliderColor:String,hideSlider:Boolean,direction:{type:String,default:"horizontal"},...gu(um({selectedClass:"v-tab--selected",variant:"text"}),["active","block","flat","location","position","symbol"])},"VTab"),ha=oe()({name:"VTab",props:ST(),setup(e,t){let{slots:n,attrs:i}=t;const{textColorClasses:r,textColorStyles:o}=Pn(e,"sliderColor"),a=Se(),s=Se(),l=C(()=>e.direction==="horizontal"),u=C(()=>{var d,f;return((f=(d=a.value)==null?void 0:d.group)==null?void 0:f.isSelected.value)??!1});function c(d){var h,m;let{value:f}=d;if(f){const g=(m=(h=a.value)==null?void 0:h.$el.parentElement)==null?void 0:m.querySelector(".v-tab--selected .v-tab__slider"),S=s.value;if(!g||!S)return;const R=getComputedStyle(g).color,k=g.getBoundingClientRect(),I=S.getBoundingClientRect(),P=l.value?"x":"y",L=l.value?"X":"Y",T=l.value?"right":"bottom",E=l.value?"width":"height",x=k[P],N=I[P],$=x>N?k[T]-I[T]:k[P]-I[P],W=Math.sign($)>0?l.value?"right":"bottom":Math.sign($)<0?l.value?"left":"top":"center",F=(Math.abs($)+(Math.sign($)<0?k[E]:I[E]))/Math.max(k[E],I[E])||0,V=k[E]/I[E]||0,ae=1.5;vi(S,{backgroundColor:[R,"currentcolor"],transform:[`translate${L}(${$}px) scale${L}(${V})`,`translate${L}(${$/ae}px) scale${L}(${(F-1)/ae+1})`,"none"],transformOrigin:Array(3).fill(W)},{duration:225,easing:yo})}}return pe(()=>{const d=je.filterProps(e);return p(je,Pe({symbol:jm,ref:a,class:["v-tab",e.class],style:e.style,tabindex:u.value?0:-1,role:"tab","aria-selected":String(u.value),active:!1},d,i,{block:e.fixed,maxWidth:e.fixed?300:void 0,"onGroup:selected":c}),{...n,default:()=>{var f;return p(_e,null,[((f=n.default)==null?void 0:f.call(n))??e.text,!e.hideSlider&&p("div",{ref:s,class:["v-tab__slider",r.value],style:o.value},null)])}})}),vs({},a)}});function Sf(e){const n=Math.abs(e);return Math.sign(e)*(n/((1/.501-2)*(1-n)+1))}function Cf(e){let{selectedElement:t,containerSize:n,contentSize:i,isRtl:r,currentScrollOffset:o,isHorizontal:a}=e;const s=a?t.clientWidth:t.clientHeight,l=a?t.offsetLeft:t.offsetTop,u=r&&a?i-l-s:l,c=n+o,d=s+u,f=s*.4;return u<=o?o=Math.max(u-f,0):c<=d&&(o=Math.min(o-(c-d-f),i-n)),o}function CT(e){let{selectedElement:t,containerSize:n,contentSize:i,isRtl:r,isHorizontal:o}=e;const a=o?t.clientWidth:t.clientHeight,s=o?t.offsetLeft:t.offsetTop,l=r&&o?i-s-a/2-n/2:s+a/2-n/2;return Math.min(i-n,Math.max(0,l))}const RT=Symbol.for("vuetify:v-slide-group"),Vu=J({centerActive:Boolean,direction:{type:String,default:"horizontal"},symbol:{type:null,default:RT},nextIcon:{type:qe,default:"$next"},prevIcon:{type:qe,default:"$prev"},showArrows:{type:[Boolean,String],validator:e=>typeof e=="boolean"||["always","desktop","mobile"].includes(e)},...Ce(),...S_(),...He(),...Oo({selectedClass:"v-slide-group-item--active"})},"VSlideGroup"),Ha=oe()({name:"VSlideGroup",props:Vu(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const{isRtl:i}=_n(),{displayClasses:r,mobile:o}=Sm(e),a=Lo(e,e.symbol),s=be(!1),l=be(0),u=be(0),c=be(0),d=C(()=>e.direction==="horizontal"),{resizeRef:f,contentRect:h}=Ba(),{resizeRef:m,contentRect:g}=Ba(),S=C(()=>a.selected.value.length?a.items.value.findIndex(X=>X.id===a.selected.value[0]):-1),R=C(()=>a.selected.value.length?a.items.value.findIndex(X=>X.id===a.selected.value[a.selected.value.length-1]):-1);if(Ye){let X=-1;we(()=>[a.selected.value,h.value,g.value,d.value],()=>{cancelAnimationFrame(X),X=requestAnimationFrame(()=>{if(h.value&&g.value){const ie=d.value?"width":"height";u.value=h.value[ie],c.value=g.value[ie],s.value=u.value+1=0&&m.value){const ie=m.value.children[R.value];S.value===0||!s.value?l.value=0:e.centerActive?l.value=CT({selectedElement:ie,containerSize:u.value,contentSize:c.value,isRtl:i.value,isHorizontal:d.value}):s.value&&(l.value=Cf({selectedElement:ie,containerSize:u.value,contentSize:c.value,isRtl:i.value,currentScrollOffset:l.value,isHorizontal:d.value}))}})})}const k=be(!1);let I=0,P=0;function L(X){const ie=d.value?"clientX":"clientY";P=(i.value&&d.value?-1:1)*l.value,I=X.touches[0][ie],k.value=!0}function T(X){if(!s.value)return;const ie=d.value?"clientX":"clientY",he=i.value&&d.value?-1:1;l.value=he*(P+I-X.touches[0][ie])}function E(X){const ie=c.value-u.value;l.value<0||!s.value?l.value=0:l.value>=ie&&(l.value=ie),k.value=!1}function x(){f.value&&(f.value[d.value?"scrollLeft":"scrollTop"]=0)}const N=be(!1);function $(X){if(N.value=!0,!(!s.value||!m.value)){for(const ie of X.composedPath())for(const he of m.value.children)if(he===ie){l.value=Cf({selectedElement:he,containerSize:u.value,contentSize:c.value,isRtl:i.value,currentScrollOffset:l.value,isHorizontal:d.value});return}}}function W(X){N.value=!1}function O(X){var ie;!N.value&&!(X.relatedTarget&&((ie=m.value)!=null&&ie.contains(X.relatedTarget)))&&V()}function F(X){m.value&&(d.value?X.key==="ArrowRight"?V(i.value?"prev":"next"):X.key==="ArrowLeft"&&V(i.value?"next":"prev"):X.key==="ArrowDown"?V("next"):X.key==="ArrowUp"&&V("prev"),X.key==="Home"?V("first"):X.key==="End"&&V("last"))}function V(X){var ie,he,Xe,yt,Oe;if(m.value)if(!X)(ie=Fh(m.value)[0])==null||ie.focus();else if(X==="next"){const U=(he=m.value.querySelector(":focus"))==null?void 0:he.nextElementSibling;U?U.focus():V("first")}else if(X==="prev"){const U=(Xe=m.value.querySelector(":focus"))==null?void 0:Xe.previousElementSibling;U?U.focus():V("last")}else X==="first"?(yt=m.value.firstElementChild)==null||yt.focus():X==="last"&&((Oe=m.value.lastElementChild)==null||Oe.focus())}function ae(X){const ie=l.value+(X==="prev"?-1:1)*u.value;l.value=lr(ie,0,c.value-u.value)}const se=C(()=>{let X=l.value>c.value-u.value?-(c.value-u.value)+Sf(c.value-u.value-l.value):-l.value;l.value<=0&&(X=Sf(-l.value));const ie=i.value&&d.value?-1:1;return{transform:`translate${d.value?"X":"Y"}(${ie*X}px)`,transition:k.value?"none":"",willChange:k.value?"transform":""}}),ne=C(()=>({next:a.next,prev:a.prev,select:a.select,isSelected:a.isSelected})),ee=C(()=>{switch(e.showArrows){case"always":return!0;case"desktop":return!o.value;case!0:return s.value||Math.abs(l.value)>0;case"mobile":return o.value||s.value||Math.abs(l.value)>0;default:return!o.value&&(s.value||Math.abs(l.value)>0)}}),Ae=C(()=>Math.abs(l.value)>0),Ne=C(()=>c.value>Math.abs(l.value)+u.value);return pe(()=>p(e.tag,{class:["v-slide-group",{"v-slide-group--vertical":!d.value,"v-slide-group--has-affixes":ee.value,"v-slide-group--is-overflowing":s.value},r.value,e.class],style:e.style,tabindex:N.value||a.selected.value.length?-1:0,onFocus:O},{default:()=>{var X,ie,he;return[ee.value&&p("div",{key:"prev",class:["v-slide-group__prev",{"v-slide-group__prev--disabled":!Ae.value}],onClick:()=>Ae.value&&ae("prev")},[((X=n.prev)==null?void 0:X.call(n,ne.value))??p(nf,null,{default:()=>[p(Qe,{icon:i.value?e.nextIcon:e.prevIcon},null)]})]),p("div",{key:"container",ref:f,class:"v-slide-group__container",onScroll:x},[p("div",{ref:m,class:"v-slide-group__content",style:se.value,onTouchstartPassive:L,onTouchmovePassive:T,onTouchendPassive:E,onFocusin:$,onFocusout:W,onKeydown:F},[(ie=n.default)==null?void 0:ie.call(n,ne.value)])]),ee.value&&p("div",{key:"next",class:["v-slide-group__next",{"v-slide-group__next--disabled":!Ne.value}],onClick:()=>Ne.value&&ae("next")},[((he=n.next)==null?void 0:he.call(n,ne.value))??p(nf,null,{default:()=>[p(Qe,{icon:i.value?e.prevIcon:e.nextIcon},null)]})])]}})),{selected:a.selected,scrollTo:ae,scrollOffset:l,focus:V}}});function _T(e){return e?e.map(t=>La(t)?t:{text:t,value:t}):[]}const kT=J({alignTabs:{type:String,default:"start"},color:String,fixedTabs:Boolean,items:{type:Array,default:()=>[]},stacked:Boolean,bgColor:String,grow:Boolean,height:{type:[Number,String],default:void 0},hideSlider:Boolean,sliderColor:String,...Vu({mandatory:"force"}),...$t(),...He()},"VTabs"),TT=oe()({name:"VTabs",props:kT(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const i=It(e,"modelValue"),r=C(()=>_T(e.items)),{densityClasses:o}=fn(e),{backgroundColorClasses:a,backgroundColorStyles:s}=Qt(ve(e,"bgColor"));return Cn({VTab:{color:ve(e,"color"),direction:ve(e,"direction"),stacked:ve(e,"stacked"),fixed:ve(e,"fixedTabs"),sliderColor:ve(e,"sliderColor"),hideSlider:ve(e,"hideSlider")}}),pe(()=>{const l=Ha.filterProps(e);return p(Ha,Pe(l,{modelValue:i.value,"onUpdate:modelValue":u=>i.value=u,class:["v-tabs",`v-tabs--${e.direction}`,`v-tabs--align-tabs-${e.alignTabs}`,{"v-tabs--fixed-tabs":e.fixedTabs,"v-tabs--grow":e.grow,"v-tabs--stacked":e.stacked},o.value,a.value,e.class],style:[{"--v-tabs-height":le(e.height)},s.value,e.style],role:"tablist",symbol:jm}),{default:()=>[n.default?n.default():r.value.map(u=>p(ha,Pe(u,{key:u.text}),null))]})}),{}}}),ET=Ee("i",{class:"fas fa-shopping-cart fa-fw"},null,-1);function IT(e,t,n,i,r,o){return de(),Me(TT,null,{default:q(()=>[p(ha,{value:1},{default:q(()=>[ET]),_:1}),p(ha,{value:2},{default:q(()=>[Ve("Super")]),_:1}),p(ha,{value:3},{default:q(()=>[Ve("Super")]),_:1})]),_:1})}const Ks=Ct(bT,[["render",IT]]),xT={name:"KeywordsBar",mixins:[],props:{keywords:Array},computed:{},methods:{}},eg=Symbol.for("vuetify:v-chip-group"),AT=J({column:Boolean,filter:Boolean,valueComparator:{type:Function,default:cs},...Vu(),...Ce(),...Oo({selectedClass:"v-chip--selected"}),...He(),...it(),...Ui({variant:"tonal"})},"VChipGroup");oe()({name:"VChipGroup",props:AT(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const{themeClasses:i}=lt(e),{isSelected:r,select:o,next:a,prev:s,selected:l}=Lo(e,eg);return Cn({VChip:{color:ve(e,"color"),disabled:ve(e,"disabled"),filter:ve(e,"filter"),variant:ve(e,"variant")}}),pe(()=>{const u=Ha.filterProps(e);return p(Ha,Pe(u,{class:["v-chip-group",{"v-chip-group--column":e.column},i.value,e.class],style:e.style}),{default:()=>{var c;return[(c=n.default)==null?void 0:c.call(n,{isSelected:r,select:o,next:a,prev:s,selected:l.value})]}})}),{}}});const OT=J({activeClass:String,appendAvatar:String,appendIcon:qe,closable:Boolean,closeIcon:{type:qe,default:"$delete"},closeLabel:{type:String,default:"$vuetify.close"},draggable:Boolean,filter:Boolean,filterIcon:{type:String,default:"$complete"},label:Boolean,link:{type:Boolean,default:void 0},pill:Boolean,prependAvatar:String,prependIcon:qe,ripple:{type:[Boolean,Object],default:!0},text:String,modelValue:{type:Boolean,default:!0},onClick:xn(),onClickOnce:xn(),...vr(),...Ce(),...$t(),...Rn(),...ku(),...Et(),...Uu(),...oi(),...He({tag:"span"}),...it(),...Ui({variant:"tonal"})},"VChip"),tg=oe()({name:"VChip",directives:{Ripple:ms},props:OT(),emits:{"click:close":e=>!0,"update:modelValue":e=>!0,"group:selected":e=>!0,click:e=>!0},setup(e,t){let{attrs:n,emit:i,slots:r}=t;const{t:o}=Po(),{borderClasses:a}=yr(e),{colorClasses:s,colorStyles:l,variantClasses:u}=Ao(e),{densityClasses:c}=fn(e),{elevationClasses:d}=Mn(e),{roundedClasses:f}=Bt(e),{sizeClasses:h}=mr(e),{themeClasses:m}=lt(e),g=It(e,"modelValue"),S=Tu(e,eg,!1),R=Pu(e,n),k=C(()=>e.link!==!1&&R.isLink.value),I=C(()=>!e.disabled&&e.link!==!1&&(!!S||e.link||R.isClickable.value)),P=C(()=>({"aria-label":o(e.closeLabel),onClick(E){E.stopPropagation(),g.value=!1,i("click:close",E)}}));function L(E){var x;i("click",E),I.value&&((x=R.navigate)==null||x.call(R,E),S==null||S.toggle())}function T(E){(E.key==="Enter"||E.key===" ")&&(E.preventDefault(),L(E))}return()=>{const E=R.isLink.value?"a":e.tag,x=!!(e.appendIcon||e.appendAvatar),N=!!(x||r.append),$=!!(r.close||e.closable),W=!!(r.filter||e.filter)&&S,O=!!(e.prependIcon||e.prependAvatar),F=!!(O||r.prepend),V=!S||S.isSelected.value;return g.value&&Xt(p(E,{class:["v-chip",{"v-chip--disabled":e.disabled,"v-chip--label":e.label,"v-chip--link":I.value,"v-chip--filter":W,"v-chip--pill":e.pill},m.value,a.value,V?s.value:void 0,c.value,d.value,f.value,h.value,u.value,S==null?void 0:S.selectedClass.value,e.class],style:[V?l.value:void 0,e.style],disabled:e.disabled||void 0,draggable:e.draggable,href:R.href.value,tabindex:I.value?0:void 0,onClick:L,onKeydown:I.value&&!k.value&&T},{default:()=>{var ae;return[xo(I.value,"v-chip"),W&&p(vm,{key:"filter"},{default:()=>[Xt(p("div",{class:"v-chip__filter"},[r.filter?p(ct,{key:"filter-defaults",disabled:!e.filterIcon,defaults:{VIcon:{icon:e.filterIcon}}},r.filter):p(Qe,{key:"filter-icon",icon:e.filterIcon},null)]),[[pr,S.isSelected.value]])]}),F&&p("div",{key:"prepend",class:"v-chip__prepend"},[r.prepend?p(ct,{key:"prepend-defaults",disabled:!O,defaults:{VAvatar:{image:e.prependAvatar,start:!0},VIcon:{icon:e.prependIcon,start:!0}}},r.prepend):p(_e,null,[e.prependIcon&&p(Qe,{key:"prepend-icon",icon:e.prependIcon,start:!0},null),e.prependAvatar&&p(bo,{key:"prepend-avatar",image:e.prependAvatar,start:!0},null)])]),p("div",{class:"v-chip__content","data-no-activator":""},[((ae=r.default)==null?void 0:ae.call(r,{isSelected:S==null?void 0:S.isSelected.value,selectedClass:S==null?void 0:S.selectedClass.value,select:S==null?void 0:S.select,toggle:S==null?void 0:S.toggle,value:S==null?void 0:S.value.value,disabled:e.disabled}))??e.text]),N&&p("div",{key:"append",class:"v-chip__append"},[r.append?p(ct,{key:"append-defaults",disabled:!x,defaults:{VAvatar:{end:!0,image:e.appendAvatar},VIcon:{end:!0,icon:e.appendIcon}}},r.append):p(_e,null,[e.appendIcon&&p(Qe,{key:"append-icon",end:!0,icon:e.appendIcon},null),e.appendAvatar&&p(bo,{key:"append-avatar",end:!0,image:e.appendAvatar},null)])]),$&&p("button",Pe({key:"close",class:"v-chip__close",type:"button"},P.value),[r.close?p(ct,{key:"close-defaults",defaults:{VIcon:{icon:e.closeIcon,size:"x-small"}}},r.close):p(Qe,{key:"close-icon",icon:e.closeIcon,size:"x-small"},null)])]}}),[[Ai("ripple"),I.value&&e.ripple,null]])}}});function LT(e,t,n,i,r,o){return de(!0),at(_e,null,Oi(n.keywords,a=>(de(),Me(tg,{color:"info",size:"x-small"},{default:q(()=>[Ve(Fe(a==null?void 0:a.label),1)]),_:2},1024))),256)}const qu=Ct(xT,[["render",LT]]),PT=pt({name:"RecipeCard",components:{KeywordsComponent:qu},props:{recipe:{},show_keywords:{type:Boolean,required:!1},show_description:{type:Boolean,required:!1}}}),UT=J({name:String,itemAriaLabel:{type:String,default:"$vuetify.rating.ariaLabel.item"},activeColor:String,color:String,clearable:Boolean,disabled:Boolean,emptyIcon:{type:qe,default:"$ratingEmpty"},fullIcon:{type:qe,default:"$ratingFull"},halfIncrements:Boolean,hover:Boolean,length:{type:[Number,String],default:5},readonly:Boolean,modelValue:{type:[Number,String],default:0},itemLabels:Array,itemLabelPosition:{type:String,default:"top",validator:e=>["top","bottom"].includes(e)},ripple:Boolean,...Ce(),...$t(),...oi(),...He(),...it()},"VRating"),zu=oe()({name:"VRating",props:UT(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const{t:i}=Po(),{themeClasses:r}=lt(e),o=It(e,"modelValue"),a=C(()=>lr(parseFloat(o.value),0,+e.length)),s=C(()=>mu(Number(e.length),1)),l=C(()=>s.value.flatMap(g=>e.halfIncrements?[g-.5,g]:[g])),u=be(-1),c=C(()=>l.value.map(g=>{const S=e.hover&&u.value>-1,R=a.value>=g,k=u.value>=g,P=(S?k:R)?e.fullIcon:e.emptyIcon,L=e.activeColor??e.color,T=R||k?L:e.color;return{isFilled:R,isHovered:k,icon:P,color:T}})),d=C(()=>[0,...l.value].map(g=>{function S(){u.value=g}function R(){u.value=-1}function k(){e.disabled||e.readonly||(o.value=a.value===g&&e.clearable?0:g)}return{onMouseenter:e.hover?S:void 0,onMouseleave:e.hover?R:void 0,onClick:k}})),f=C(()=>e.name??`v-rating-${$n()}`);function h(g){var x,N;let{value:S,index:R,showStar:k=!0}=g;const{onMouseenter:I,onMouseleave:P,onClick:L}=d.value[R+1],T=`${f.value}-${String(S).replace(".","-")}`,E={color:(x=c.value[R])==null?void 0:x.color,density:e.density,disabled:e.disabled,icon:(N=c.value[R])==null?void 0:N.icon,ripple:e.ripple,size:e.size,variant:"plain"};return p(_e,null,[p("label",{for:T,class:{"v-rating__item--half":e.halfIncrements&&S%1>0,"v-rating__item--full":e.halfIncrements&&S%1===0},onMouseenter:I,onMouseleave:P,onClick:L},[p("span",{class:"v-rating__hidden"},[i(e.itemAriaLabel,S,e.length)]),k?n.item?n.item({...c.value[R],props:E,value:S,index:R,rating:a.value}):p(je,Pe({"aria-label":i(e.itemAriaLabel,S,e.length)},E),null):void 0]),p("input",{class:"v-rating__hidden",name:f.value,id:T,type:"radio",value:S,checked:a.value===S,tabindex:-1,readonly:e.readonly,disabled:e.disabled},null)])}function m(g){return n["item-label"]?n["item-label"](g):g.label?p("span",null,[g.label]):p("span",null,[Ve(" ")])}return pe(()=>{var S;const g=!!((S=e.itemLabels)!=null&&S.length)||n["item-label"];return p(e.tag,{class:["v-rating",{"v-rating--hover":e.hover,"v-rating--readonly":e.readonly},r.value,e.class],style:e.style},{default:()=>[p(h,{value:0,index:-1,showStar:!1},null),s.value.map((R,k)=>{var I,P;return p("div",{class:"v-rating__wrapper"},[g&&e.itemLabelPosition==="top"?m({value:R,index:k,label:(I=e.itemLabels)==null?void 0:I[k]}):void 0,p("div",{class:"v-rating__item"},[e.halfIncrements?p(_e,null,[p(h,{value:R-.5,index:k*2},null),p(h,{value:R,index:k*2+1},null)]):p(h,{value:R,index:k},null)]),g&&e.itemLabelPosition==="bottom"?m({value:R,index:k,label:(P=e.itemLabels)==null?void 0:P[k]}):void 0])})]})}),{}}}),FT={class:"text-grey"};function DT(e,t,n,i,r,o){const a=Pt("KeywordsComponent");return de(),Me(An,{to:`/recipe/${e.recipe.id}`},{default:q(()=>[p(gr,{cover:"",height:"50%",src:e.recipe.image},null,8,["src"]),p(fm,null,{default:q(()=>[p(Uo,null,{default:q(()=>[Ve(Fe(e.recipe.name),1)]),_:1}),e.show_keywords?(de(),Me(dm,{key:0},{default:q(()=>[p(a,{keywords:e.recipe.keywords},null,8,["keywords"])]),_:1})):kt("",!0)]),_:1}),e.show_description?(de(),Me(ri,{key:0},{default:q(()=>[e.recipe.rating?(de(),Me(Ei,{key:0,align:"center",class:"mx-0"},{default:q(()=>[p(zu,{"model-value":e.recipe.rating,color:"amber",density:"compact","half-increments":"",readonly:"",size:"small"},null,8,["model-value"]),Ee("div",FT,Fe(e.recipe.rating),1)]),_:1})):kt("",!0),Ee("div",null,Fe(e.recipe.description),1)]),_:1})):kt("",!0)]),_:1},8,["to"])}const Ol=Ct(PT,[["render",DT]]),NT=pt({name:"HorizontalRecipeScroller",components:{RecipeCard:Ol},props:{title:{type:String,required:!0},recipes:{type:Array,required:!0}},data(){return{scroll_id:Math.random(1e3).toString()}},methods:{scrollList(e,t){const n=document.getElementById(t);n!=null&&(n.scrollLeft=n.scrollLeft+200*(e=="left"?-1:1))}}}),BT=J({color:String,direction:{type:String,default:"vertical",validator:e=>["vertical","horizontal"].includes(e)},side:{type:String,default:"end",validator:e=>["start","end","both"].includes(e)},mode:{type:String,default:"intersect",validator:e=>["intersect","manual"].includes(e)},margin:[Number,String],loadMoreText:{type:String,default:"$vuetify.infiniteScroll.loadMore"},emptyText:{type:String,default:"$vuetify.infiniteScroll.empty"},...Li(),...He()},"VInfiniteScroll"),Rf=hr({name:"VInfiniteScrollIntersect",props:{side:{type:String,required:!0},rootRef:null,rootMargin:String},emits:{intersect:(e,t)=>!0},setup(e,t){let{emit:n}=t;const{intersectionRef:i,isIntersecting:r}=Iu(o=>{},e.rootMargin?{rootMargin:e.rootMargin}:void 0);return we(r,async o=>{n("intersect",e.side,o)}),pe(()=>p("div",{class:"v-infinite-scroll-intersect",ref:i},[Ve(" ")])),{}}}),$T=oe()({name:"VInfiniteScroll",props:BT(),emits:{load:e=>!0},setup(e,t){let{slots:n,emit:i}=t;const r=Se(),o=be("ok"),a=be("ok"),s=C(()=>le(e.margin)),l=be(!1);function u(L){if(!r.value)return;const T=e.direction==="vertical"?"scrollTop":"scrollLeft";r.value[T]=L}function c(){if(!r.value)return 0;const L=e.direction==="vertical"?"scrollTop":"scrollLeft";return r.value[L]}function d(){if(!r.value)return 0;const L=e.direction==="vertical"?"scrollHeight":"scrollWidth";return r.value[L]}function f(){if(!r.value)return 0;const L=e.direction==="vertical"?"clientHeight":"clientWidth";return r.value[L]}Bn(()=>{r.value&&(e.side==="start"?u(d()):e.side==="both"&&u(d()/2-f()/2))});function h(L,T){L==="start"?o.value=T:L==="end"&&(a.value=T)}function m(L){return L==="start"?o.value:a.value}let g=0;function S(L,T){l.value=T,l.value&&R(L)}function R(L){if(e.mode!=="manual"&&!l.value)return;const T=m(L);if(!r.value||T==="loading")return;g=d(),h(L,"loading");function E(x){h(L,x),vt(()=>{x==="empty"||x==="error"||(x==="ok"&&L==="start"&&u(d()-g+c()),e.mode!=="manual"&&vt(()=>{window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>{window.requestAnimationFrame(()=>{R(L)})})})}))})}i("load",{side:L,done:E})}const{t:k}=Po();function I(L,T){var N,$,W,O,F;if(e.side!==L&&e.side!=="both")return;const E=()=>R(L),x={side:L,props:{onClick:E,color:e.color}};return T==="error"?(N=n.error)==null?void 0:N.call(n,x):T==="empty"?(($=n.empty)==null?void 0:$.call(n,x))??p("div",null,[k(e.emptyText)]):e.mode==="manual"?T==="loading"?((W=n.loading)==null?void 0:W.call(n,x))??p(Rl,{indeterminate:!0,color:e.color},null):((O=n["load-more"])==null?void 0:O.call(n,x))??p(je,{variant:"outlined",color:e.color,onClick:E},{default:()=>[k(e.loadMoreText)]}):((F=n.loading)==null?void 0:F.call(n,x))??p(Rl,{indeterminate:!0,color:e.color},null)}const{dimensionStyles:P}=Pi(e);pe(()=>{const L=e.tag,T=e.side==="start"||e.side==="both",E=e.side==="end"||e.side==="both",x=e.mode==="intersect";return p(L,{ref:r,class:["v-infinite-scroll",`v-infinite-scroll--${e.direction}`,{"v-infinite-scroll--start":T,"v-infinite-scroll--end":E}],style:P.value},{default:()=>{var N;return[p("div",{class:"v-infinite-scroll__side"},[I("start",o.value)]),r.value&&T&&x&&p(Rf,{key:"start",side:"start",onIntersect:S,rootRef:r.value,rootMargin:s.value},null),(N=n.default)==null?void 0:N.call(n),r.value&&E&&x&&p(Rf,{key:"end",side:"end",onIntersect:S,rootRef:r.value,rootMargin:s.value},null),p("div",{class:"v-infinite-scroll__side"},[I("end",a.value)])]}})})}}),MT={class:"mr-2"};function VT(e,t,n,i,r,o){const a=Pt("recipe-card");return de(),at(_e,null,[p(Ei,{justify:"space-between"},{default:q(()=>[p(yn,null,{default:q(()=>[Ee("h2",null,Fe(e.title),1)]),_:1}),p(yn,null,{default:q(()=>[p(je,{density:"default",variant:"outlined",size:"x-small",icon:"fas fa-chevron-left",onClick:t[0]||(t[0]=s=>e.scrollList("left",e.scroll_id))}),p(je,{density:"default",variant:"outlined",size:"x-small",icon:"fas fa-chevron-right",onClick:t[1]||(t[1]=s=>e.scrollList("right",e.scroll_id))})]),_:1})]),_:1}),p(Ei,null,{default:q(()=>[p(yn,null,{default:q(()=>[p($T,{direction:"horizontal",mode:"manual",id:e.scroll_id},{"load-more":q(()=>[]),default:q(()=>[(de(!0),at(_e,null,Oi(e.recipes,s=>(de(),at("div",MT,[p(a,{recipe:s,show_description:!1,show_keywords:!1,style:{width:"45vw",height:"30vh"}},null,8,["recipe"])]))),256))]),_:1},8,["id"])]),_:1})]),_:1})],64)}const qT=Ct(NT,[["render",VT]]),zT=pt({name:"RecipeSearchPage",components:{HorizontalRecipeScroller:qT,RecipeCard:Ol,GlobalSearchDialog:Um,RecipeCardComponent:Ol,KeywordsComponent:qu},computed:{},data(){return{recipes:[],items:Array.from({length:50},(e,t)=>t+1),new_recipes:[],high_rated_recipes:[]}},mounted(){const e=new us;e.apiRecipeList({_new:"true"}).then(t=>{t.results!=null&&(this.new_recipes=t.results)}),e.apiRecipeList({rating:4}).then(t=>{t.results!=null&&(this.high_rated_recipes=t.results)})},methods:{}});function HT(e,t,n,i,r,o){const a=Pt("horizontal-recipe-scroller");return de(),Me(Fo,null,{default:q(()=>[p(a,{title:"New Recipes",recipes:e.new_recipes},null,8,["recipes"]),p(a,{title:"Top Rated",recipes:e.high_rated_recipes},null,8,["recipes"])]),_:1})}const WT=Ct(zT,[["render",HT]]),JT=pt({name:"NumberScalerDialog",emits:{change(e){return e}},props:{number:{type:Number,default:0},title:{type:String,default:"Number"}},data(){return{dialog:!1,mutable_number:0}},watch:{number:function(e){this.mutable_number=e}},mounted(){this.mutable_number=this.number},methods:{updateNumber:function(e){e==="half"&&(this.mutable_number=this.number/2),e==="double"&&(this.mutable_number=this.number*2),e==="add"&&(this.mutable_number=this.number+1),e==="sub"&&(this.mutable_number=this.number-1),this.$emit("change",{number:this.mutable_number})}}}),GT=Ee("i",{class:"fas fa-divide"},null,-1),KT=Ee("i",{class:"fas fa-minus"},null,-1),ZT=Ee("i",{class:"fas fa-plus"},null,-1),YT=Ee("i",{class:"fas fa-times"},null,-1);function XT(e,t,n,i,r,o){return de(),Me(km,{width:"500",activator:"parent",modelValue:e.dialog,"onUpdate:modelValue":t[8]||(t[8]=a=>e.dialog=a)},{activator:q(({props:a})=>[zp(e.$slots,"activator",{},()=>[p(je,Pe(a,{text:"Open Dialog"}),null,16)])]),default:q(({isActive:a})=>[p(An,{title:e.title},{default:q(()=>[p(ri,null,{default:q(()=>[Ve(" Change Number ")]),_:1}),p(ri,null,{default:q(()=>[p(Na,{divided:"",color:"primary"},{default:q(()=>[p(je,{onClick:t[0]||(t[0]=s=>e.updateNumber("half"))},{default:q(()=>[GT,Ve(" 2 ")]),_:1}),p(je,{onClick:t[1]||(t[1]=s=>e.updateNumber("sub"))},{default:q(()=>[KT]),_:1}),p(je,{onClick:t[2]||(t[2]=s=>e.updateNumber("prompt"))},{default:q(()=>[Ve(Fe(e.mutable_number),1)]),_:1}),p(je,{onClick:t[3]||(t[3]=s=>e.updateNumber("add"))},{default:q(()=>[ZT]),_:1}),p(je,{onClick:t[4]||(t[4]=s=>e.updateNumber("double"))},{default:q(()=>[YT,Ve(" 2 ")]),_:1})]),_:1}),p(Pm,{type:"number",modelValue:e.mutable_number,"onUpdate:modelValue":t[5]||(t[5]=s=>e.mutable_number=s),modelModifiers:{number:!0},onChange:t[6]||(t[6]=s=>e.updateNumber("set"))},null,8,["modelValue"])]),_:1}),p(cm,null,{default:q(()=>[p(je,{rounded:"",variant:"outlined",onClick:t[7]||(t[7]=s=>e.dialog=!1)},{default:q(()=>[Ve("Close")]),_:1})]),_:1})]),_:1},8,["title"])]),_:3},8,["modelValue"])}const QT=Ct(JT,[["render",XT]]),jT=pt({name:"IngredientsTableRow",props:{ingredient:{type:{},required:!0}},data(){return{show_tooltip:!1}}}),e1=J({id:String,text:String,...gu(Nu({closeOnBack:!1,location:"end",locationStrategy:"connected",eager:!0,minWidth:0,offset:10,openOnClick:!1,openOnHover:!0,origin:"auto",scrim:!1,scrollStrategy:"reposition",transition:!1}),["absolute","persistent"])},"VTooltip"),t1=oe()({name:"VTooltip",props:e1(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const i=It(e,"modelValue"),{scopeId:r}=Du(),o=$n(),a=C(()=>e.id||`v-tooltip-${o}`),s=Se(),l=C(()=>e.location.split(" ").length>1?e.location:e.location+" center"),u=C(()=>e.origin==="auto"||e.origin==="overlap"||e.origin.split(" ").length>1||e.location.split(" ").length>1?e.origin:e.origin+" center"),c=C(()=>e.transition?e.transition:i.value?"scale-transition":"fade-transition"),d=C(()=>Pe({"aria-describedby":a.value},e.activatorProps));return pe(()=>{const f=qa.filterProps(e);return p(qa,Pe({ref:s,class:["v-tooltip",e.class],style:e.style,id:a.value},f,{modelValue:i.value,"onUpdate:modelValue":h=>i.value=h,transition:c.value,absolute:!0,location:l.value,origin:u.value,persistent:!0,role:"tooltip",activatorProps:d.value,_disableGlobalStack:!0},r),{activator:n.activator,default:function(){var S;for(var h=arguments.length,m=new Array(h),g=0;ge.show_tooltip=!e.show_tooltip)},{default:q(()=>[p(t1,{modelValue:e.show_tooltip,"onUpdate:modelValue":t[0]||(t[0]=a=>e.show_tooltip=a),activator:"parent",location:"start"},{default:q(()=>[Ve(Fe(e.ingredient.note),1)]),_:1},8,["modelValue"])]),_:1})):kt("",!0)])],64))])}const ng=Ct(jT,[["render",o1]]),a1=pt({name:"IngredientsTable",components:{IngredientsTableRow:ng},props:{ingredients:{type:Array,default:[]}},mounted(){}}),s1=J({fixedHeader:Boolean,fixedFooter:Boolean,height:[Number,String],hover:Boolean,...Ce(),...$t(),...He(),...it()},"VTable"),l1=oe()({name:"VTable",props:s1(),setup(e,t){let{slots:n,emit:i}=t;const{themeClasses:r}=lt(e),{densityClasses:o}=fn(e);return pe(()=>p(e.tag,{class:["v-table",{"v-table--fixed-height":!!e.height,"v-table--fixed-header":e.fixedHeader,"v-table--fixed-footer":e.fixedFooter,"v-table--has-top":!!n.top,"v-table--has-bottom":!!n.bottom,"v-table--hover":e.hover},r.value,o.value,e.class],style:e.style},{default:()=>{var a,s,l;return[(a=n.top)==null?void 0:a.call(n),n.default?p("div",{class:"v-table__wrapper",style:{height:le(e.height)}},[p("table",null,[n.default()])]):(s=n.wrapper)==null?void 0:s.call(n),(l=n.bottom)==null?void 0:l.call(n)]}})),{}}});function u1(e,t,n,i,r,o){const a=Pt("IngredientsTableRow");return e.ingredients.length>0?(de(),Me(l1,{key:0,density:"compact"},{default:q(()=>[Ee("tbody",null,[(de(!0),at(_e,null,Oi(e.ingredients,s=>(de(),Me(a,{ingredient:s,key:s.id},null,8,["ingredient"]))),128))])]),_:1})):kt("",!0)}const Hu=Ct(a1,[["render",u1]]),c1=pt({name:"StepsOverview",components:{IngredientsTable:Hu,IngredientsTableRow:ng},props:{steps:{type:Array,default:[]}}}),Ro=Symbol.for("vuetify:v-expansion-panel"),d1=["default","accordion","inset","popout"],f1=J({color:String,static:Boolean,variant:{type:String,default:"default",validator:e=>d1.includes(e)},readonly:Boolean,...Ce(),...Oo(),...He(),...it()},"VExpansionPanels"),p1=oe()({name:"VExpansionPanels",props:f1(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;Lo(e,Ro);const{themeClasses:i}=lt(e),r=C(()=>e.variant&&`v-expansion-panels--variant-${e.variant}`);return Cn({VExpansionPanel:{color:ve(e,"color"),readonly:ve(e,"readonly"),static:ve(e,"static")}}),pe(()=>p(e.tag,{class:["v-expansion-panels",i.value,r.value,e.class],style:e.style},n)),{}}}),h1=J({...Ce(),...Fu()},"VExpansionPanelText"),ig=oe()({name:"VExpansionPanelText",props:h1(),setup(e,t){let{slots:n}=t;const i=Je(Ro);if(!i)throw new Error("[Vuetify] v-expansion-panel-text needs to be placed inside v-expansion-panel");const{hasContent:r,onAfterLeave:o}=Cm(e,i.isSelected);return pe(()=>p(gm,{onAfterLeave:o},{default:()=>{var a;return[Xt(p("div",{class:["v-expansion-panel-text",e.class],style:e.style},[n.default&&r.value&&p("div",{class:"v-expansion-panel-text__wrapper"},[(a=n.default)==null?void 0:a.call(n)])]),[[pr,i.isSelected.value]])]}})),{}}}),rg=J({color:String,expandIcon:{type:qe,default:"$expand"},collapseIcon:{type:qe,default:"$collapse"},hideActions:Boolean,static:Boolean,ripple:{type:[Boolean,Object],default:!1},readonly:Boolean,...Ce()},"VExpansionPanelTitle"),m1=oe()({name:"VExpansionPanelTitle",directives:{Ripple:ms},props:rg(),setup(e,t){let{slots:n}=t;const i=Je(Ro);if(!i)throw new Error("[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel");const{backgroundColorClasses:r,backgroundColorStyles:o}=Qt(e,"color"),a=C(()=>({collapseIcon:e.collapseIcon,disabled:i.disabled.value,expanded:i.isSelected.value,expandIcon:e.expandIcon,readonly:e.readonly}));return pe(()=>{var s;return Xt(p("button",{class:["v-expansion-panel-title",{"v-expansion-panel-title--active":i.isSelected.value,"v-expansion-panel-title--static":e.static},r.value,e.class],style:[o.value,e.style],type:"button",tabindex:i.disabled.value?-1:void 0,disabled:i.disabled.value,"aria-expanded":i.isSelected.value,onClick:e.readonly?void 0:i.toggle},[p("span",{class:"v-expansion-panel-title__overlay"},null),(s=n.default)==null?void 0:s.call(n,a.value),!e.hideActions&&p("span",{class:"v-expansion-panel-title__icon"},[n.actions?n.actions(a.value):p(Qe,{icon:i.isSelected.value?e.collapseIcon:e.expandIcon},null)])]),[[Ai("ripple"),e.ripple]])}),{}}}),g1=J({title:String,text:String,bgColor:String,...Ce(),...Rn(),...ku(),...Fu(),...Et(),...He(),...rg()},"VExpansionPanel"),v1=oe()({name:"VExpansionPanel",props:g1(),emits:{"group:selected":e=>!0},setup(e,t){let{slots:n}=t;const i=Tu(e,Ro),{backgroundColorClasses:r,backgroundColorStyles:o}=Qt(e,"bgColor"),{elevationClasses:a}=Mn(e),{roundedClasses:s}=Bt(e),l=C(()=>(i==null?void 0:i.disabled.value)||e.disabled),u=C(()=>i.group.items.value.reduce((f,h,m)=>(i.group.selected.value.includes(h.id)&&f.push(m),f),[])),c=C(()=>{const f=i.group.items.value.findIndex(h=>h.id===i.id);return!i.isSelected.value&&u.value.some(h=>h-f===1)}),d=C(()=>{const f=i.group.items.value.findIndex(h=>h.id===i.id);return!i.isSelected.value&&u.value.some(h=>h-f===-1)});return Ft(Ro,i),Cn({VExpansionPanelText:{eager:ve(e,"eager")},VExpansionPanelTitle:{readonly:ve(e,"readonly")}}),pe(()=>{const f=!!(n.text||e.text),h=!!(n.title||e.title);return p(e.tag,{class:["v-expansion-panel",{"v-expansion-panel--active":i.isSelected.value,"v-expansion-panel--before-active":c.value,"v-expansion-panel--after-active":d.value,"v-expansion-panel--disabled":l.value},s.value,r.value,e.class],style:[o.value,e.style]},{default:()=>{var m;return[p("div",{class:["v-expansion-panel__shadow",...a.value]},null),h&&p(m1,{key:"title",collapseIcon:e.collapseIcon,color:e.color,expandIcon:e.expandIcon,hideActions:e.hideActions,ripple:e.ripple},{default:()=>[n.title?n.title():e.title]}),f&&p(ig,{key:"text"},{default:()=>[n.text?n.text():e.text]}),(m=n.default)==null?void 0:m.call(n)]}})}),{}}}),y1={key:0};function w1(e,t,n,i,r,o){const a=Pt("IngredientsTable");return de(),Me(p1,null,{default:q(()=>[p(v1,{title:"Steps Overview"},{default:q(()=>[p(ig,null,{default:q(()=>[p(Fo,null,{default:q(()=>[(de(!0),at(_e,null,Oi(e.steps,(s,l)=>(de(),Me(Ei,null,{default:q(()=>[p(yn,{class:"pa-1"},{default:q(()=>[s.showAsHeader?(de(),at("b",y1,Fe(l+1)+". "+Fe(s.name),1)):kt("",!0),p(a,{ingredients:s.ingredients},null,8,["ingredients"])]),_:2},1024)]),_:2},1024))),256))]),_:1})]),_:1})]),_:1})]),_:1})}const b1=Ct(c1,[["render",w1]]);class Fi extends Error{}class S1 extends Fi{constructor(t){super(`Invalid DateTime: ${t.toMessage()}`)}}class C1 extends Fi{constructor(t){super(`Invalid Interval: ${t.toMessage()}`)}}class R1 extends Fi{constructor(t){super(`Invalid Duration: ${t.toMessage()}`)}}class Yi extends Fi{}class og extends Fi{constructor(t){super(`Invalid unit ${t}`)}}class _t extends Fi{}class Hn extends Fi{constructor(){super("Zone is an abstract class")}}const K="numeric",un="short",Nt="long",Wa={year:K,month:K,day:K},ag={year:K,month:un,day:K},_1={year:K,month:un,day:K,weekday:un},sg={year:K,month:Nt,day:K},lg={year:K,month:Nt,day:K,weekday:Nt},ug={hour:K,minute:K},cg={hour:K,minute:K,second:K},dg={hour:K,minute:K,second:K,timeZoneName:un},fg={hour:K,minute:K,second:K,timeZoneName:Nt},pg={hour:K,minute:K,hourCycle:"h23"},hg={hour:K,minute:K,second:K,hourCycle:"h23"},mg={hour:K,minute:K,second:K,hourCycle:"h23",timeZoneName:un},gg={hour:K,minute:K,second:K,hourCycle:"h23",timeZoneName:Nt},vg={year:K,month:K,day:K,hour:K,minute:K},yg={year:K,month:K,day:K,hour:K,minute:K,second:K},wg={year:K,month:un,day:K,hour:K,minute:K},bg={year:K,month:un,day:K,hour:K,minute:K,second:K},k1={year:K,month:un,day:K,weekday:un,hour:K,minute:K},Sg={year:K,month:Nt,day:K,hour:K,minute:K,timeZoneName:un},Cg={year:K,month:Nt,day:K,hour:K,minute:K,second:K,timeZoneName:un},Rg={year:K,month:Nt,day:K,weekday:Nt,hour:K,minute:K,timeZoneName:Nt},_g={year:K,month:Nt,day:K,weekday:Nt,hour:K,minute:K,second:K,timeZoneName:Nt};class Do{get type(){throw new Hn}get name(){throw new Hn}get ianaName(){return this.name}get isUniversal(){throw new Hn}offsetName(t,n){throw new Hn}formatOffset(t,n){throw new Hn}offset(t){throw new Hn}equals(t){throw new Hn}get isValid(){throw new Hn}}let Zs=null;class ys extends Do{static get instance(){return Zs===null&&(Zs=new ys),Zs}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(t,{format:n,locale:i}){return Pg(t,n,i)}formatOffset(t,n){return oo(this.offset(t),n)}offset(t){return-new Date(t).getTimezoneOffset()}equals(t){return t.type==="system"}get isValid(){return!0}}let ma={};function T1(e){return ma[e]||(ma[e]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:e,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),ma[e]}const E1={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function I1(e,t){const n=e.format(t).replace(/\u200E/g,""),i=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(n),[,r,o,a,s,l,u,c]=i;return[a,r,o,s,l,u,c]}function x1(e,t){const n=e.formatToParts(t),i=[];for(let r=0;r=0?m:1e3+m,(f-h)/(60*1e3)}equals(t){return t.type==="iana"&&t.name===this.name}get isValid(){return this.valid}}let _f={};function A1(e,t={}){const n=JSON.stringify([e,t]);let i=_f[n];return i||(i=new Intl.ListFormat(e,t),_f[n]=i),i}let Ll={};function Pl(e,t={}){const n=JSON.stringify([e,t]);let i=Ll[n];return i||(i=new Intl.DateTimeFormat(e,t),Ll[n]=i),i}let Ul={};function O1(e,t={}){const n=JSON.stringify([e,t]);let i=Ul[n];return i||(i=new Intl.NumberFormat(e,t),Ul[n]=i),i}let Fl={};function L1(e,t={}){const{base:n,...i}=t,r=JSON.stringify([e,i]);let o=Fl[r];return o||(o=new Intl.RelativeTimeFormat(e,t),Fl[r]=o),o}let Kr=null;function P1(){return Kr||(Kr=new Intl.DateTimeFormat().resolvedOptions().locale,Kr)}let kf={};function U1(e){let t=kf[e];if(!t){const n=new Intl.Locale(e);t="getWeekInfo"in n?n.getWeekInfo():n.weekInfo,kf[e]=t}return t}function F1(e){const t=e.indexOf("-x-");t!==-1&&(e=e.substring(0,t));const n=e.indexOf("-u-");if(n===-1)return[e];{let i,r;try{i=Pl(e).resolvedOptions(),r=e}catch{const l=e.substring(0,n);i=Pl(l).resolvedOptions(),r=l}const{numberingSystem:o,calendar:a}=i;return[r,o,a]}}function D1(e,t,n){return(n||t)&&(e.includes("-u-")||(e+="-u"),n&&(e+=`-ca-${n}`),t&&(e+=`-nu-${t}`)),e}function N1(e){const t=[];for(let n=1;n<=12;n++){const i=fe.utc(2009,n,1);t.push(e(i))}return t}function B1(e){const t=[];for(let n=1;n<=7;n++){const i=fe.utc(2016,11,13+n);t.push(e(i))}return t}function ia(e,t,n,i){const r=e.listingMode();return r==="error"?null:r==="en"?n(t):i(t)}function $1(e){return e.numberingSystem&&e.numberingSystem!=="latn"?!1:e.numberingSystem==="latn"||!e.locale||e.locale.startsWith("en")||new Intl.DateTimeFormat(e.intl).resolvedOptions().numberingSystem==="latn"}class M1{constructor(t,n,i){this.padTo=i.padTo||0,this.floor=i.floor||!1;const{padTo:r,floor:o,...a}=i;if(!n||Object.keys(a).length>0){const s={useGrouping:!1,...i};i.padTo>0&&(s.minimumIntegerDigits=i.padTo),this.inf=O1(t,s)}}format(t){if(this.inf){const n=this.floor?Math.floor(t):t;return this.inf.format(n)}else{const n=this.floor?Math.floor(t):Ku(t,3);return rt(n,this.padTo)}}}class V1{constructor(t,n,i){this.opts=i,this.originalZone=void 0;let r;if(this.opts.timeZone)this.dt=t;else if(t.zone.type==="fixed"){const a=-1*(t.offset/60),s=a>=0?`Etc/GMT+${a}`:`Etc/GMT${a}`;t.offset!==0&&Un.create(s).valid?(r=s,this.dt=t):(r="UTC",this.dt=t.offset===0?t:t.setZone("UTC").plus({minutes:t.offset}),this.originalZone=t.zone)}else t.zone.type==="system"?this.dt=t:t.zone.type==="iana"?(this.dt=t,r=t.zone.name):(r="UTC",this.dt=t.setZone("UTC").plus({minutes:t.offset}),this.originalZone=t.zone);const o={...this.opts};o.timeZone=o.timeZone||r,this.dtf=Pl(n,o)}format(){return this.originalZone?this.formatToParts().map(({value:t})=>t).join(""):this.dtf.format(this.dt.toJSDate())}formatToParts(){const t=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?t.map(n=>{if(n.type==="timeZoneName"){const i=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...n,value:i}}else return n}):t}resolvedOptions(){return this.dtf.resolvedOptions()}}class q1{constructor(t,n,i){this.opts={style:"long",...i},!n&&Og()&&(this.rtf=L1(t,i))}format(t,n){return this.rtf?this.rtf.format(t,n):lE(n,t,this.opts.numeric,this.opts.style!=="long")}formatToParts(t,n){return this.rtf?this.rtf.formatToParts(t,n):[]}}const z1={firstDay:1,minimalDays:4,weekend:[6,7]};class $e{static fromOpts(t){return $e.create(t.locale,t.numberingSystem,t.outputCalendar,t.weekSettings,t.defaultToEN)}static create(t,n,i,r,o=!1){const a=t||tt.defaultLocale,s=a||(o?"en-US":P1()),l=n||tt.defaultNumberingSystem,u=i||tt.defaultOutputCalendar,c=Dl(r)||tt.defaultWeekSettings;return new $e(s,l,u,c,a)}static resetCache(){Kr=null,Ll={},Ul={},Fl={}}static fromObject({locale:t,numberingSystem:n,outputCalendar:i,weekSettings:r}={}){return $e.create(t,n,i,r)}constructor(t,n,i,r,o){const[a,s,l]=F1(t);this.locale=a,this.numberingSystem=n||s||null,this.outputCalendar=i||l||null,this.weekSettings=r,this.intl=D1(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=o,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=$1(this)),this.fastNumbersCached}listingMode(){const t=this.isEnglish(),n=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return t&&n?"en":"intl"}clone(t){return!t||Object.getOwnPropertyNames(t).length===0?this:$e.create(t.locale||this.specifiedLocale,t.numberingSystem||this.numberingSystem,t.outputCalendar||this.outputCalendar,Dl(t.weekSettings)||this.weekSettings,t.defaultToEN||!1)}redefaultToEN(t={}){return this.clone({...t,defaultToEN:!0})}redefaultToSystem(t={}){return this.clone({...t,defaultToEN:!1})}months(t,n=!1){return ia(this,t,Dg,()=>{const i=n?{month:t,day:"numeric"}:{month:t},r=n?"format":"standalone";return this.monthsCache[r][t]||(this.monthsCache[r][t]=N1(o=>this.extract(o,i,"month"))),this.monthsCache[r][t]})}weekdays(t,n=!1){return ia(this,t,$g,()=>{const i=n?{weekday:t,year:"numeric",month:"long",day:"numeric"}:{weekday:t},r=n?"format":"standalone";return this.weekdaysCache[r][t]||(this.weekdaysCache[r][t]=B1(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[r][t]})}meridiems(){return ia(this,void 0,()=>Mg,()=>{if(!this.meridiemCache){const t={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[fe.utc(2016,11,13,9),fe.utc(2016,11,13,19)].map(n=>this.extract(n,t,"dayperiod"))}return this.meridiemCache})}eras(t){return ia(this,t,Vg,()=>{const n={era:t};return this.eraCache[t]||(this.eraCache[t]=[fe.utc(-40,1,1),fe.utc(2017,1,1)].map(i=>this.extract(i,n,"era"))),this.eraCache[t]})}extract(t,n,i){const r=this.dtFormatter(t,n),o=r.formatToParts(),a=o.find(s=>s.type.toLowerCase()===i);return a?a.value:null}numberFormatter(t={}){return new M1(this.intl,t.forceSimple||this.fastNumbers,t)}dtFormatter(t,n={}){return new V1(t,this.intl,n)}relFormatter(t={}){return new q1(this.intl,this.isEnglish(),t)}listFormatter(t={}){return A1(this.intl,t)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:Lg()?U1(this.locale):z1}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(t){return this.locale===t.locale&&this.numberingSystem===t.numberingSystem&&this.outputCalendar===t.outputCalendar}}let Ys=null;class St extends Do{static get utcInstance(){return Ys===null&&(Ys=new St(0)),Ys}static instance(t){return t===0?St.utcInstance:new St(t)}static parseSpecifier(t){if(t){const n=t.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new St(Ss(n[1],n[2]))}return null}constructor(t){super(),this.fixed=t}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${oo(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${oo(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(t,n){return oo(this.fixed,n)}get isUniversal(){return!0}offset(){return this.fixed}equals(t){return t.type==="fixed"&&t.fixed===this.fixed}get isValid(){return!0}}class H1 extends Do{constructor(t){super(),this.zoneName=t}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}}function ei(e,t){if(ge(e)||e===null)return t;if(e instanceof Do)return e;if(G1(e)){const n=e.toLowerCase();return n==="default"?t:n==="local"||n==="system"?ys.instance:n==="utc"||n==="gmt"?St.utcInstance:St.parseSpecifier(n)||Un.create(e)}else return ki(e)?St.instance(e):typeof e=="object"&&"offset"in e&&typeof e.offset=="function"?e:new H1(e)}let Tf=()=>Date.now(),Ef="system",If=null,xf=null,Af=null,Of=60,Lf,Pf=null;class tt{static get now(){return Tf}static set now(t){Tf=t}static set defaultZone(t){Ef=t}static get defaultZone(){return ei(Ef,ys.instance)}static get defaultLocale(){return If}static set defaultLocale(t){If=t}static get defaultNumberingSystem(){return xf}static set defaultNumberingSystem(t){xf=t}static get defaultOutputCalendar(){return Af}static set defaultOutputCalendar(t){Af=t}static get defaultWeekSettings(){return Pf}static set defaultWeekSettings(t){Pf=Dl(t)}static get twoDigitCutoffYear(){return Of}static set twoDigitCutoffYear(t){Of=t%100}static get throwOnInvalid(){return Lf}static set throwOnInvalid(t){Lf=t}static resetCaches(){$e.resetCache(),Un.resetCache()}}class sn{constructor(t,n){this.reason=t,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}const kg=[0,31,59,90,120,151,181,212,243,273,304,334],Tg=[0,31,60,91,121,152,182,213,244,274,305,335];function Wt(e,t){return new sn("unit out of range",`you specified ${t} (of type ${typeof t}) as a ${e}, which is invalid`)}function Wu(e,t,n){const i=new Date(Date.UTC(e,t-1,n));e<100&&e>=0&&i.setUTCFullYear(i.getUTCFullYear()-1900);const r=i.getUTCDay();return r===0?7:r}function Eg(e,t,n){return n+(No(e)?Tg:kg)[t-1]}function Ig(e,t){const n=No(e)?Tg:kg,i=n.findIndex(o=>o_o(i,t,n)?(u=i+1,l=1):u=i,{weekYear:u,weekNumber:l,weekday:s,...Cs(e)}}function Uf(e,t=4,n=1){const{weekYear:i,weekNumber:r,weekday:o}=e,a=Ju(Wu(i,1,t),n),s=tr(i);let l=r*7+o-a-7+t,u;l<1?(u=i-1,l+=tr(u)):l>s?(u=i+1,l-=tr(i)):u=i;const{month:c,day:d}=Ig(u,l);return{year:u,month:c,day:d,...Cs(e)}}function Xs(e){const{year:t,month:n,day:i}=e,r=Eg(t,n,i);return{year:t,ordinal:r,...Cs(e)}}function Ff(e){const{year:t,ordinal:n}=e,{month:i,day:r}=Ig(t,n);return{year:t,month:i,day:r,...Cs(e)}}function Df(e,t){if(!ge(e.localWeekday)||!ge(e.localWeekNumber)||!ge(e.localWeekYear)){if(!ge(e.weekday)||!ge(e.weekNumber)||!ge(e.weekYear))throw new Yi("Cannot mix locale-based week fields with ISO-based week fields");return ge(e.localWeekday)||(e.weekday=e.localWeekday),ge(e.localWeekNumber)||(e.weekNumber=e.localWeekNumber),ge(e.localWeekYear)||(e.weekYear=e.localWeekYear),delete e.localWeekday,delete e.localWeekNumber,delete e.localWeekYear,{minDaysInFirstWeek:t.getMinDaysInFirstWeek(),startOfWeek:t.getStartOfWeek()}}else return{minDaysInFirstWeek:4,startOfWeek:1}}function W1(e,t=4,n=1){const i=ws(e.weekYear),r=Jt(e.weekNumber,1,_o(e.weekYear,t,n)),o=Jt(e.weekday,1,7);return i?r?o?!1:Wt("weekday",e.weekday):Wt("week",e.weekNumber):Wt("weekYear",e.weekYear)}function J1(e){const t=ws(e.year),n=Jt(e.ordinal,1,tr(e.year));return t?n?!1:Wt("ordinal",e.ordinal):Wt("year",e.year)}function xg(e){const t=ws(e.year),n=Jt(e.month,1,12),i=Jt(e.day,1,Ga(e.year,e.month));return t?n?i?!1:Wt("day",e.day):Wt("month",e.month):Wt("year",e.year)}function Ag(e){const{hour:t,minute:n,second:i,millisecond:r}=e,o=Jt(t,0,23)||t===24&&n===0&&i===0&&r===0,a=Jt(n,0,59),s=Jt(i,0,59),l=Jt(r,0,999);return o?a?s?l?!1:Wt("millisecond",r):Wt("second",i):Wt("minute",n):Wt("hour",t)}function ge(e){return typeof e>"u"}function ki(e){return typeof e=="number"}function ws(e){return typeof e=="number"&&e%1===0}function G1(e){return typeof e=="string"}function K1(e){return Object.prototype.toString.call(e)==="[object Date]"}function Og(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function Lg(){try{return typeof Intl<"u"&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch{return!1}}function Z1(e){return Array.isArray(e)?e:[e]}function Nf(e,t,n){if(e.length!==0)return e.reduce((i,r)=>{const o=[t(r),r];return i&&n(i[0],o[0])===i[0]?i:o},null)[1]}function Y1(e,t){return t.reduce((n,i)=>(n[i]=e[i],n),{})}function cr(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Dl(e){if(e==null)return null;if(typeof e!="object")throw new _t("Week settings must be an object");if(!Jt(e.firstDay,1,7)||!Jt(e.minimalDays,1,7)||!Array.isArray(e.weekend)||e.weekend.some(t=>!Jt(t,1,7)))throw new _t("Invalid week settings");return{firstDay:e.firstDay,minimalDays:e.minimalDays,weekend:Array.from(e.weekend)}}function Jt(e,t,n){return ws(e)&&e>=t&&e<=n}function X1(e,t){return e-t*Math.floor(e/t)}function rt(e,t=2){const n=e<0;let i;return n?i="-"+(""+-e).padStart(t,"0"):i=(""+e).padStart(t,"0"),i}function jn(e){if(!(ge(e)||e===null||e===""))return parseInt(e,10)}function di(e){if(!(ge(e)||e===null||e===""))return parseFloat(e)}function Gu(e){if(!(ge(e)||e===null||e==="")){const t=parseFloat("0."+e)*1e3;return Math.floor(t)}}function Ku(e,t,n=!1){const i=10**t;return(n?Math.trunc:Math.round)(e*i)/i}function No(e){return e%4===0&&(e%100!==0||e%400===0)}function tr(e){return No(e)?366:365}function Ga(e,t){const n=X1(t-1,12)+1,i=e+(t-n)/12;return n===2?No(i)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function bs(e){let t=Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute,e.second,e.millisecond);return e.year<100&&e.year>=0&&(t=new Date(t),t.setUTCFullYear(e.year,e.month-1,e.day)),+t}function Bf(e,t,n){return-Ju(Wu(e,1,t),n)+t-1}function _o(e,t=4,n=1){const i=Bf(e,t,n),r=Bf(e+1,t,n);return(tr(e)-i+r)/7}function Nl(e){return e>99?e:e>tt.twoDigitCutoffYear?1900+e:2e3+e}function Pg(e,t,n,i=null){const r=new Date(e),o={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};i&&(o.timeZone=i);const a={timeZoneName:t,...o},s=new Intl.DateTimeFormat(n,a).formatToParts(r).find(l=>l.type.toLowerCase()==="timezonename");return s?s.value:null}function Ss(e,t){let n=parseInt(e,10);Number.isNaN(n)&&(n=0);const i=parseInt(t,10)||0,r=n<0||Object.is(n,-0)?-i:i;return n*60+r}function Ug(e){const t=Number(e);if(typeof e=="boolean"||e===""||Number.isNaN(t))throw new _t(`Invalid unit value ${e}`);return t}function Ka(e,t){const n={};for(const i in e)if(cr(e,i)){const r=e[i];if(r==null)continue;n[t(i)]=Ug(r)}return n}function oo(e,t){const n=Math.trunc(Math.abs(e/60)),i=Math.trunc(Math.abs(e%60)),r=e>=0?"+":"-";switch(t){case"short":return`${r}${rt(n,2)}:${rt(i,2)}`;case"narrow":return`${r}${n}${i>0?`:${i}`:""}`;case"techie":return`${r}${rt(n,2)}${rt(i,2)}`;default:throw new RangeError(`Value format ${t} is out of range for property format`)}}function Cs(e){return Y1(e,["hour","minute","second","millisecond"])}const Q1=["January","February","March","April","May","June","July","August","September","October","November","December"],Fg=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],j1=["J","F","M","A","M","J","J","A","S","O","N","D"];function Dg(e){switch(e){case"narrow":return[...j1];case"short":return[...Fg];case"long":return[...Q1];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}const Ng=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],Bg=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],eE=["M","T","W","T","F","S","S"];function $g(e){switch(e){case"narrow":return[...eE];case"short":return[...Bg];case"long":return[...Ng];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const Mg=["AM","PM"],tE=["Before Christ","Anno Domini"],nE=["BC","AD"],iE=["B","A"];function Vg(e){switch(e){case"narrow":return[...iE];case"short":return[...nE];case"long":return[...tE];default:return null}}function rE(e){return Mg[e.hour<12?0:1]}function oE(e,t){return $g(t)[e.weekday-1]}function aE(e,t){return Dg(t)[e.month-1]}function sE(e,t){return Vg(t)[e.year<0?0:1]}function lE(e,t,n="always",i=!1){const r={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},o=["hours","minutes","seconds"].indexOf(e)===-1;if(n==="auto"&&o){const d=e==="days";switch(t){case 1:return d?"tomorrow":`next ${r[e][0]}`;case-1:return d?"yesterday":`last ${r[e][0]}`;case 0:return d?"today":`this ${r[e][0]}`}}const a=Object.is(t,-0)||t<0,s=Math.abs(t),l=s===1,u=r[e],c=i?l?u[1]:u[2]||u[1]:l?r[e][0]:e;return a?`${s} ${c} ago`:`in ${s} ${c}`}function $f(e,t){let n="";for(const i of e)i.literal?n+=i.val:n+=t(i.val);return n}const uE={D:Wa,DD:ag,DDD:sg,DDDD:lg,t:ug,tt:cg,ttt:dg,tttt:fg,T:pg,TT:hg,TTT:mg,TTTT:gg,f:vg,ff:wg,fff:Sg,ffff:Rg,F:yg,FF:bg,FFF:Cg,FFFF:_g};class gt{static create(t,n={}){return new gt(t,n)}static parseFormat(t){let n=null,i="",r=!1;const o=[];for(let a=0;a0&&o.push({literal:r||/^\s+$/.test(i),val:i}),n=null,i="",r=!r):r||s===n?i+=s:(i.length>0&&o.push({literal:/^\s+$/.test(i),val:i}),i=s,n=s)}return i.length>0&&o.push({literal:r||/^\s+$/.test(i),val:i}),o}static macroTokenToFormatOpts(t){return uE[t]}constructor(t,n){this.opts=n,this.loc=t,this.systemLoc=null}formatWithSystemDefault(t,n){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(t,{...this.opts,...n}).format()}dtFormatter(t,n={}){return this.loc.dtFormatter(t,{...this.opts,...n})}formatDateTime(t,n){return this.dtFormatter(t,n).format()}formatDateTimeParts(t,n){return this.dtFormatter(t,n).formatToParts()}formatInterval(t,n){return this.dtFormatter(t.start,n).dtf.formatRange(t.start.toJSDate(),t.end.toJSDate())}resolvedOptions(t,n){return this.dtFormatter(t,n).resolvedOptions()}num(t,n=0){if(this.opts.forceSimple)return rt(t,n);const i={...this.opts};return n>0&&(i.padTo=n),this.loc.numberFormatter(i).format(t)}formatDateTimeFromString(t,n){const i=this.loc.listingMode()==="en",r=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",o=(h,m)=>this.loc.extract(t,h,m),a=h=>t.isOffsetFixed&&t.offset===0&&h.allowZ?"Z":t.isValid?t.zone.formatOffset(t.ts,h.format):"",s=()=>i?rE(t):o({hour:"numeric",hourCycle:"h12"},"dayperiod"),l=(h,m)=>i?aE(t,h):o(m?{month:h}:{month:h,day:"numeric"},"month"),u=(h,m)=>i?oE(t,h):o(m?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const m=gt.macroTokenToFormatOpts(h);return m?this.formatWithSystemDefault(t,m):h},d=h=>i?sE(t,h):o({era:h},"era"),f=h=>{switch(h){case"S":return this.num(t.millisecond);case"u":case"SSS":return this.num(t.millisecond,3);case"s":return this.num(t.second);case"ss":return this.num(t.second,2);case"uu":return this.num(Math.floor(t.millisecond/10),2);case"uuu":return this.num(Math.floor(t.millisecond/100));case"m":return this.num(t.minute);case"mm":return this.num(t.minute,2);case"h":return this.num(t.hour%12===0?12:t.hour%12);case"hh":return this.num(t.hour%12===0?12:t.hour%12,2);case"H":return this.num(t.hour);case"HH":return this.num(t.hour,2);case"Z":return a({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return a({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return a({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return t.zone.offsetName(t.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return t.zone.offsetName(t.ts,{format:"long",locale:this.loc.locale});case"z":return t.zoneName;case"a":return s();case"d":return r?o({day:"numeric"},"day"):this.num(t.day);case"dd":return r?o({day:"2-digit"},"day"):this.num(t.day,2);case"c":return this.num(t.weekday);case"ccc":return u("short",!0);case"cccc":return u("long",!0);case"ccccc":return u("narrow",!0);case"E":return this.num(t.weekday);case"EEE":return u("short",!1);case"EEEE":return u("long",!1);case"EEEEE":return u("narrow",!1);case"L":return r?o({month:"numeric",day:"numeric"},"month"):this.num(t.month);case"LL":return r?o({month:"2-digit",day:"numeric"},"month"):this.num(t.month,2);case"LLL":return l("short",!0);case"LLLL":return l("long",!0);case"LLLLL":return l("narrow",!0);case"M":return r?o({month:"numeric"},"month"):this.num(t.month);case"MM":return r?o({month:"2-digit"},"month"):this.num(t.month,2);case"MMM":return l("short",!1);case"MMMM":return l("long",!1);case"MMMMM":return l("narrow",!1);case"y":return r?o({year:"numeric"},"year"):this.num(t.year);case"yy":return r?o({year:"2-digit"},"year"):this.num(t.year.toString().slice(-2),2);case"yyyy":return r?o({year:"numeric"},"year"):this.num(t.year,4);case"yyyyyy":return r?o({year:"numeric"},"year"):this.num(t.year,6);case"G":return d("short");case"GG":return d("long");case"GGGGG":return d("narrow");case"kk":return this.num(t.weekYear.toString().slice(-2),2);case"kkkk":return this.num(t.weekYear,4);case"W":return this.num(t.weekNumber);case"WW":return this.num(t.weekNumber,2);case"n":return this.num(t.localWeekNumber);case"nn":return this.num(t.localWeekNumber,2);case"ii":return this.num(t.localWeekYear.toString().slice(-2),2);case"iiii":return this.num(t.localWeekYear,4);case"o":return this.num(t.ordinal);case"ooo":return this.num(t.ordinal,3);case"q":return this.num(t.quarter);case"qq":return this.num(t.quarter,2);case"X":return this.num(Math.floor(t.ts/1e3));case"x":return this.num(t.ts);default:return c(h)}};return $f(gt.parseFormat(n),f)}formatDurationFromString(t,n){const i=l=>{switch(l[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},r=l=>u=>{const c=i(u);return c?this.num(l.get(c),u.length):u},o=gt.parseFormat(n),a=o.reduce((l,{literal:u,val:c})=>u?l:l.concat(c),[]),s=t.shiftTo(...a.map(i).filter(l=>l));return $f(o,r(s))}}const qg=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function wr(...e){const t=e.reduce((n,i)=>n+i.source,"");return RegExp(`^${t}$`)}function br(...e){return t=>e.reduce(([n,i,r],o)=>{const[a,s,l]=o(t,r);return[{...n,...a},s||i,l]},[{},null,1]).slice(0,2)}function Sr(e,...t){if(e==null)return[null,null];for(const[n,i]of t){const r=n.exec(e);if(r)return i(r)}return[null,null]}function zg(...e){return(t,n)=>{const i={};let r;for(r=0;rh!==void 0&&(m||h&&c)?-h:h;return[{years:f(di(n)),months:f(di(i)),weeks:f(di(r)),days:f(di(o)),hours:f(di(a)),minutes:f(di(s)),seconds:f(di(l),l==="-0"),milliseconds:f(Gu(u),d)}]}const CE={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function Xu(e,t,n,i,r,o,a){const s={year:t.length===2?Nl(jn(t)):jn(t),month:Fg.indexOf(n)+1,day:jn(i),hour:jn(r),minute:jn(o)};return a&&(s.second=jn(a)),e&&(s.weekday=e.length>3?Ng.indexOf(e)+1:Bg.indexOf(e)+1),s}const RE=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function _E(e){const[,t,n,i,r,o,a,s,l,u,c,d]=e,f=Xu(t,r,i,n,o,a,s);let h;return l?h=CE[l]:u?h=0:h=Ss(c,d),[f,new St(h)]}function kE(e){return e.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const TE=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,EE=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,IE=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function Mf(e){const[,t,n,i,r,o,a,s]=e;return[Xu(t,r,i,n,o,a,s),St.utcInstance]}function xE(e){const[,t,n,i,r,o,a,s]=e;return[Xu(t,s,n,i,r,o,a),St.utcInstance]}const AE=wr(dE,Yu),OE=wr(fE,Yu),LE=wr(pE,Yu),PE=wr(Wg),Gg=br(yE,Cr,Bo,$o),UE=br(hE,Cr,Bo,$o),FE=br(mE,Cr,Bo,$o),DE=br(Cr,Bo,$o);function NE(e){return Sr(e,[AE,Gg],[OE,UE],[LE,FE],[PE,DE])}function BE(e){return Sr(kE(e),[RE,_E])}function $E(e){return Sr(e,[TE,Mf],[EE,Mf],[IE,xE])}function ME(e){return Sr(e,[bE,SE])}const VE=br(Cr);function qE(e){return Sr(e,[wE,VE])}const zE=wr(gE,vE),HE=wr(Jg),WE=br(Cr,Bo,$o);function JE(e){return Sr(e,[zE,Gg],[HE,WE])}const Vf="Invalid Duration",Kg={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},GE={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3},...Kg},qt=146097/400,$i=146097/4800,KE={years:{quarters:4,months:12,weeks:qt/7,days:qt,hours:qt*24,minutes:qt*24*60,seconds:qt*24*60*60,milliseconds:qt*24*60*60*1e3},quarters:{months:3,weeks:qt/28,days:qt/4,hours:qt*24/4,minutes:qt*24*60/4,seconds:qt*24*60*60/4,milliseconds:qt*24*60*60*1e3/4},months:{weeks:$i/7,days:$i,hours:$i*24,minutes:$i*24*60,seconds:$i*24*60*60,milliseconds:$i*24*60*60*1e3},...Kg},wi=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],ZE=wi.slice(0).reverse();function Wn(e,t,n=!1){const i={values:n?t.values:{...e.values,...t.values||{}},loc:e.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||e.conversionAccuracy,matrix:t.matrix||e.matrix};return new Ie(i)}function Zg(e,t){let n=t.milliseconds??0;for(const i of ZE.slice(1))t[i]&&(n+=t[i]*e[i].milliseconds);return n}function qf(e,t){const n=Zg(e,t)<0?-1:1;wi.reduceRight((i,r)=>{if(ge(t[r]))return i;if(i){const o=t[i]*n,a=e[r][i],s=Math.floor(o/a);t[r]+=s*n,t[i]-=s*a*n}return r},null),wi.reduce((i,r)=>{if(ge(t[r]))return i;if(i){const o=t[i]%1;t[i]-=o,t[r]+=o*e[i][r]}return r},null)}function YE(e){const t={};for(const[n,i]of Object.entries(e))i!==0&&(t[n]=i);return t}class Ie{constructor(t){const n=t.conversionAccuracy==="longterm"||!1;let i=n?KE:GE;t.matrix&&(i=t.matrix),this.values=t.values,this.loc=t.loc||$e.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=t.invalid||null,this.matrix=i,this.isLuxonDuration=!0}static fromMillis(t,n){return Ie.fromObject({milliseconds:t},n)}static fromObject(t,n={}){if(t==null||typeof t!="object")throw new _t(`Duration.fromObject: argument expected to be an object, got ${t===null?"null":typeof t}`);return new Ie({values:Ka(t,Ie.normalizeUnit),loc:$e.fromObject(n),conversionAccuracy:n.conversionAccuracy,matrix:n.matrix})}static fromDurationLike(t){if(ki(t))return Ie.fromMillis(t);if(Ie.isDuration(t))return t;if(typeof t=="object")return Ie.fromObject(t);throw new _t(`Unknown duration argument ${t} of type ${typeof t}`)}static fromISO(t,n){const[i]=ME(t);return i?Ie.fromObject(i,n):Ie.invalid("unparsable",`the input "${t}" can't be parsed as ISO 8601`)}static fromISOTime(t,n){const[i]=qE(t);return i?Ie.fromObject(i,n):Ie.invalid("unparsable",`the input "${t}" can't be parsed as ISO 8601`)}static invalid(t,n=null){if(!t)throw new _t("need to specify a reason the Duration is invalid");const i=t instanceof sn?t:new sn(t,n);if(tt.throwOnInvalid)throw new R1(i);return new Ie({invalid:i})}static normalizeUnit(t){const n={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[t&&t.toLowerCase()];if(!n)throw new og(t);return n}static isDuration(t){return t&&t.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(t,n={}){const i={...n,floor:n.round!==!1&&n.floor!==!1};return this.isValid?gt.create(this.loc,i).formatDurationFromString(this,t):Vf}toHuman(t={}){if(!this.isValid)return Vf;const n=wi.map(i=>{const r=this.values[i];return ge(r)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...t,unit:i.slice(0,-1)}).format(r)}).filter(i=>i);return this.loc.listFormatter({type:"conjunction",style:t.listStyle||"narrow",...t}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let t="P";return this.years!==0&&(t+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(t+=this.months+this.quarters*3+"M"),this.weeks!==0&&(t+=this.weeks+"W"),this.days!==0&&(t+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(t+="T"),this.hours!==0&&(t+=this.hours+"H"),this.minutes!==0&&(t+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(t+=Ku(this.seconds+this.milliseconds/1e3,3)+"S"),t==="P"&&(t+="T0S"),t}toISOTime(t={}){if(!this.isValid)return null;const n=this.toMillis();return n<0||n>=864e5?null:(t={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...t,includeOffset:!1},fe.fromMillis(n,{zone:"UTC"}).toISOTime(t))}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?Zg(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(t){if(!this.isValid)return this;const n=Ie.fromDurationLike(t),i={};for(const r of wi)(cr(n.values,r)||cr(this.values,r))&&(i[r]=n.get(r)+this.get(r));return Wn(this,{values:i},!0)}minus(t){if(!this.isValid)return this;const n=Ie.fromDurationLike(t);return this.plus(n.negate())}mapUnits(t){if(!this.isValid)return this;const n={};for(const i of Object.keys(this.values))n[i]=Ug(t(this.values[i],i));return Wn(this,{values:n},!0)}get(t){return this[Ie.normalizeUnit(t)]}set(t){if(!this.isValid)return this;const n={...this.values,...Ka(t,Ie.normalizeUnit)};return Wn(this,{values:n})}reconfigure({locale:t,numberingSystem:n,conversionAccuracy:i,matrix:r}={}){const a={loc:this.loc.clone({locale:t,numberingSystem:n}),matrix:r,conversionAccuracy:i};return Wn(this,a)}as(t){return this.isValid?this.shiftTo(t).get(t):NaN}normalize(){if(!this.isValid)return this;const t=this.toObject();return qf(this.matrix,t),Wn(this,{values:t},!0)}rescale(){if(!this.isValid)return this;const t=YE(this.normalize().shiftToAll().toObject());return Wn(this,{values:t},!0)}shiftTo(...t){if(!this.isValid)return this;if(t.length===0)return this;t=t.map(a=>Ie.normalizeUnit(a));const n={},i={},r=this.toObject();let o;for(const a of wi)if(t.indexOf(a)>=0){o=a;let s=0;for(const u in i)s+=this.matrix[u][a]*i[u],i[u]=0;ki(r[a])&&(s+=r[a]);const l=Math.trunc(s);n[a]=l,i[a]=(s*1e3-l*1e3)/1e3}else ki(r[a])&&(i[a]=r[a]);for(const a in i)i[a]!==0&&(n[o]+=a===o?i[a]:i[a]/this.matrix[o][a]);return qf(this.matrix,n),Wn(this,{values:n},!0)}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;const t={};for(const n of Object.keys(this.values))t[n]=this.values[n]===0?0:-this.values[n];return Wn(this,{values:t},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(t){if(!this.isValid||!t.isValid||!this.loc.equals(t.loc))return!1;function n(i,r){return i===void 0||i===0?r===void 0||r===0:i===r}for(const i of wi)if(!n(this.values[i],t.values[i]))return!1;return!0}}const Mi="Invalid Interval";function XE(e,t){return!e||!e.isValid?Ze.invalid("missing or invalid start"):!t||!t.isValid?Ze.invalid("missing or invalid end"):tt:!1}isBefore(t){return this.isValid?this.e<=t:!1}contains(t){return this.isValid?this.s<=t&&this.e>t:!1}set({start:t,end:n}={}){return this.isValid?Ze.fromDateTimes(t||this.s,n||this.e):this}splitAt(...t){if(!this.isValid)return[];const n=t.map(Vr).filter(a=>this.contains(a)).sort((a,s)=>a.toMillis()-s.toMillis()),i=[];let{s:r}=this,o=0;for(;r+this.e?this.e:a;i.push(Ze.fromDateTimes(r,s)),r=s,o+=1}return i}splitBy(t){const n=Ie.fromDurationLike(t);if(!this.isValid||!n.isValid||n.as("milliseconds")===0)return[];let{s:i}=this,r=1,o;const a=[];for(;il*r));o=+s>+this.e?this.e:s,a.push(Ze.fromDateTimes(i,o)),i=o,r+=1}return a}divideEqually(t){return this.isValid?this.splitBy(this.length()/t).slice(0,t):[]}overlaps(t){return this.e>t.s&&this.s=t.e:!1}equals(t){return!this.isValid||!t.isValid?!1:this.s.equals(t.s)&&this.e.equals(t.e)}intersection(t){if(!this.isValid)return this;const n=this.s>t.s?this.s:t.s,i=this.e=i?null:Ze.fromDateTimes(n,i)}union(t){if(!this.isValid)return this;const n=this.st.e?this.e:t.e;return Ze.fromDateTimes(n,i)}static merge(t){const[n,i]=t.sort((r,o)=>r.s-o.s).reduce(([r,o],a)=>o?o.overlaps(a)||o.abutsStart(a)?[r,o.union(a)]:[r.concat([o]),a]:[r,a],[[],null]);return i&&n.push(i),n}static xor(t){let n=null,i=0;const r=[],o=t.map(l=>[{time:l.s,type:"s"},{time:l.e,type:"e"}]),a=Array.prototype.concat(...o),s=a.sort((l,u)=>l.time-u.time);for(const l of s)i+=l.type==="s"?1:-1,i===1?n=l.time:(n&&+n!=+l.time&&r.push(Ze.fromDateTimes(n,l.time)),n=null);return Ze.merge(r)}difference(...t){return Ze.xor([this].concat(t)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:Mi}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(t=Wa,n={}){return this.isValid?gt.create(this.s.loc.clone(n),t).formatInterval(this):Mi}toISO(t){return this.isValid?`${this.s.toISO(t)}/${this.e.toISO(t)}`:Mi}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Mi}toISOTime(t){return this.isValid?`${this.s.toISOTime(t)}/${this.e.toISOTime(t)}`:Mi}toFormat(t,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(t)}${n}${this.e.toFormat(t)}`:Mi}toDuration(t,n){return this.isValid?this.e.diff(this.s,t,n):Ie.invalid(this.invalidReason)}mapEndpoints(t){return Ze.fromDateTimes(t(this.s),t(this.e))}}class ra{static hasDST(t=tt.defaultZone){const n=fe.now().setZone(t).set({month:12});return!t.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(t){return Un.isValidZone(t)}static normalizeZone(t){return ei(t,tt.defaultZone)}static getStartOfWeek({locale:t=null,locObj:n=null}={}){return(n||$e.create(t)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:t=null,locObj:n=null}={}){return(n||$e.create(t)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:t=null,locObj:n=null}={}){return(n||$e.create(t)).getWeekendDays().slice()}static months(t="long",{locale:n=null,numberingSystem:i=null,locObj:r=null,outputCalendar:o="gregory"}={}){return(r||$e.create(n,i,o)).months(t)}static monthsFormat(t="long",{locale:n=null,numberingSystem:i=null,locObj:r=null,outputCalendar:o="gregory"}={}){return(r||$e.create(n,i,o)).months(t,!0)}static weekdays(t="long",{locale:n=null,numberingSystem:i=null,locObj:r=null}={}){return(r||$e.create(n,i,null)).weekdays(t)}static weekdaysFormat(t="long",{locale:n=null,numberingSystem:i=null,locObj:r=null}={}){return(r||$e.create(n,i,null)).weekdays(t,!0)}static meridiems({locale:t=null}={}){return $e.create(t).meridiems()}static eras(t="short",{locale:n=null}={}){return $e.create(n,null,"gregory").eras(t)}static features(){return{relative:Og(),localeWeek:Lg()}}}function zf(e,t){const n=r=>r.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),i=n(t)-n(e);return Math.floor(Ie.fromMillis(i).as("days"))}function QE(e,t,n){const i=[["years",(l,u)=>u.year-l.year],["quarters",(l,u)=>u.quarter-l.quarter+(u.year-l.year)*4],["months",(l,u)=>u.month-l.month+(u.year-l.year)*12],["weeks",(l,u)=>{const c=zf(l,u);return(c-c%7)/7}],["days",zf]],r={},o=e;let a,s;for(const[l,u]of i)n.indexOf(l)>=0&&(a=l,r[l]=u(e,t),s=o.plus(r),s>t?(r[l]--,e=o.plus(r),e>t&&(s=e,r[l]--,e=o.plus(r))):e=s);return[e,r,s,a]}function jE(e,t,n,i){let[r,o,a,s]=QE(e,t,n);const l=t-r,u=n.filter(d=>["hours","minutes","seconds","milliseconds"].indexOf(d)>=0);u.length===0&&(a0?Ie.fromMillis(l,i).shiftTo(...u).plus(c):c}const Qu={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},Hf={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},eI=Qu.hanidec.replace(/[\[|\]]/g,"").split("");function tI(e){let t=parseInt(e,10);if(isNaN(t)){t="";for(let n=0;n=o&&i<=a&&(t+=i-o)}}return parseInt(t,10)}else return t}function en({numberingSystem:e},t=""){return new RegExp(`${Qu[e||"latn"]}${t}`)}const nI="missing Intl.DateTimeFormat.formatToParts support";function Le(e,t=n=>n){return{regex:e,deser:([n])=>t(tI(n))}}const iI=" ",Yg=`[ ${iI}]`,Xg=new RegExp(Yg,"g");function rI(e){return e.replace(/\./g,"\\.?").replace(Xg,Yg)}function Wf(e){return e.replace(/\./g,"").replace(Xg," ").toLowerCase()}function tn(e,t){return e===null?null:{regex:RegExp(e.map(rI).join("|")),deser:([n])=>e.findIndex(i=>Wf(n)===Wf(i))+t}}function Jf(e,t){return{regex:e,deser:([,n,i])=>Ss(n,i),groups:t}}function oa(e){return{regex:e,deser:([t])=>t}}function oI(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function aI(e,t){const n=en(t),i=en(t,"{2}"),r=en(t,"{3}"),o=en(t,"{4}"),a=en(t,"{6}"),s=en(t,"{1,2}"),l=en(t,"{1,3}"),u=en(t,"{1,6}"),c=en(t,"{1,9}"),d=en(t,"{2,4}"),f=en(t,"{4,6}"),h=S=>({regex:RegExp(oI(S.val)),deser:([R])=>R,literal:!0}),g=(S=>{if(e.literal)return h(S);switch(S.val){case"G":return tn(t.eras("short"),0);case"GG":return tn(t.eras("long"),0);case"y":return Le(u);case"yy":return Le(d,Nl);case"yyyy":return Le(o);case"yyyyy":return Le(f);case"yyyyyy":return Le(a);case"M":return Le(s);case"MM":return Le(i);case"MMM":return tn(t.months("short",!0),1);case"MMMM":return tn(t.months("long",!0),1);case"L":return Le(s);case"LL":return Le(i);case"LLL":return tn(t.months("short",!1),1);case"LLLL":return tn(t.months("long",!1),1);case"d":return Le(s);case"dd":return Le(i);case"o":return Le(l);case"ooo":return Le(r);case"HH":return Le(i);case"H":return Le(s);case"hh":return Le(i);case"h":return Le(s);case"mm":return Le(i);case"m":return Le(s);case"q":return Le(s);case"qq":return Le(i);case"s":return Le(s);case"ss":return Le(i);case"S":return Le(l);case"SSS":return Le(r);case"u":return oa(c);case"uu":return oa(s);case"uuu":return Le(n);case"a":return tn(t.meridiems(),0);case"kkkk":return Le(o);case"kk":return Le(d,Nl);case"W":return Le(s);case"WW":return Le(i);case"E":case"c":return Le(n);case"EEE":return tn(t.weekdays("short",!1),1);case"EEEE":return tn(t.weekdays("long",!1),1);case"ccc":return tn(t.weekdays("short",!0),1);case"cccc":return tn(t.weekdays("long",!0),1);case"Z":case"ZZ":return Jf(new RegExp(`([+-]${s.source})(?::(${i.source}))?`),2);case"ZZZ":return Jf(new RegExp(`([+-]${s.source})(${i.source})?`),2);case"z":return oa(/[a-z_+-/]{1,256}?/i);case" ":return oa(/[^\S\n\r]/);default:return h(S)}})(e)||{invalidReason:nI};return g.token=e,g}const sI={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};function lI(e,t,n){const{type:i,value:r}=e;if(i==="literal"){const l=/^\s+$/.test(r);return{literal:!l,val:l?" ":r}}const o=t[i];let a=i;i==="hour"&&(t.hour12!=null?a=t.hour12?"hour12":"hour24":t.hourCycle!=null?t.hourCycle==="h11"||t.hourCycle==="h12"?a="hour12":a="hour24":a=n.hour12?"hour12":"hour24");let s=sI[a];if(typeof s=="object"&&(s=s[o]),s)return{literal:!1,val:s}}function uI(e){return[`^${e.map(n=>n.regex).reduce((n,i)=>`${n}(${i.source})`,"")}$`,e]}function cI(e,t,n){const i=e.match(t);if(i){const r={};let o=1;for(const a in n)if(cr(n,a)){const s=n[a],l=s.groups?s.groups+1:1;!s.literal&&s.token&&(r[s.token.val[0]]=s.deser(i.slice(o,o+l))),o+=l}return[i,r]}else return[i,{}]}function dI(e){const t=o=>{switch(o){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}};let n=null,i;return ge(e.z)||(n=Un.create(e.z)),ge(e.Z)||(n||(n=new St(e.Z)),i=e.Z),ge(e.q)||(e.M=(e.q-1)*3+1),ge(e.h)||(e.h<12&&e.a===1?e.h+=12:e.h===12&&e.a===0&&(e.h=0)),e.G===0&&e.y&&(e.y=-e.y),ge(e.u)||(e.S=Gu(e.u)),[Object.keys(e).reduce((o,a)=>{const s=t(a);return s&&(o[s]=e[a]),o},{}),n,i]}let Qs=null;function fI(){return Qs||(Qs=fe.fromMillis(1555555555555)),Qs}function pI(e,t){if(e.literal)return e;const n=gt.macroTokenToFormatOpts(e.val),i=ev(n,t);return i==null||i.includes(void 0)?e:i}function Qg(e,t){return Array.prototype.concat(...e.map(n=>pI(n,t)))}function jg(e,t,n){const i=Qg(gt.parseFormat(n),e),r=i.map(a=>aI(a,e)),o=r.find(a=>a.invalidReason);if(o)return{input:t,tokens:i,invalidReason:o.invalidReason};{const[a,s]=uI(r),l=RegExp(a,"i"),[u,c]=cI(t,l,s),[d,f,h]=c?dI(c):[null,null,void 0];if(cr(c,"a")&&cr(c,"H"))throw new Yi("Can't include meridiem when specifying 24-hour format");return{input:t,tokens:i,regex:l,rawMatches:u,matches:c,result:d,zone:f,specificOffset:h}}}function hI(e,t,n){const{result:i,zone:r,specificOffset:o,invalidReason:a}=jg(e,t,n);return[i,r,o,a]}function ev(e,t){if(!e)return null;const i=gt.create(t,e).dtFormatter(fI()),r=i.formatToParts(),o=i.resolvedOptions();return r.map(a=>lI(a,e,o))}const js="Invalid DateTime",Gf=864e13;function aa(e){return new sn("unsupported zone",`the zone "${e.name}" is not supported`)}function el(e){return e.weekData===null&&(e.weekData=Ja(e.c)),e.weekData}function tl(e){return e.localWeekData===null&&(e.localWeekData=Ja(e.c,e.loc.getMinDaysInFirstWeek(),e.loc.getStartOfWeek())),e.localWeekData}function fi(e,t){const n={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new fe({...n,...t,old:n})}function tv(e,t,n){let i=e-t*60*1e3;const r=n.offset(i);if(t===r)return[i,t];i-=(r-t)*60*1e3;const o=n.offset(i);return r===o?[i,r]:[e-Math.min(r,o)*60*1e3,Math.max(r,o)]}function sa(e,t){e+=t*60*1e3;const n=new Date(e);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function ga(e,t,n){return tv(bs(e),t,n)}function Kf(e,t){const n=e.o,i=e.c.year+Math.trunc(t.years),r=e.c.month+Math.trunc(t.months)+Math.trunc(t.quarters)*3,o={...e.c,year:i,month:r,day:Math.min(e.c.day,Ga(i,r))+Math.trunc(t.days)+Math.trunc(t.weeks)*7},a=Ie.fromObject({years:t.years-Math.trunc(t.years),quarters:t.quarters-Math.trunc(t.quarters),months:t.months-Math.trunc(t.months),weeks:t.weeks-Math.trunc(t.weeks),days:t.days-Math.trunc(t.days),hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as("milliseconds"),s=bs(o);let[l,u]=tv(s,n,e.zone);return a!==0&&(l+=a,u=e.zone.offset(l)),{ts:l,o:u}}function Mr(e,t,n,i,r,o){const{setZone:a,zone:s}=n;if(e&&Object.keys(e).length!==0||t){const l=t||s,u=fe.fromObject(e,{...n,zone:l,specificOffset:o});return a?u:u.setZone(s)}else return fe.invalid(new sn("unparsable",`the input "${r}" can't be parsed as ${i}`))}function la(e,t,n=!0){return e.isValid?gt.create($e.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(e,t):null}function nl(e,t){const n=e.c.year>9999||e.c.year<0;let i="";return n&&e.c.year>=0&&(i+="+"),i+=rt(e.c.year,n?6:4),t?(i+="-",i+=rt(e.c.month),i+="-",i+=rt(e.c.day)):(i+=rt(e.c.month),i+=rt(e.c.day)),i}function Zf(e,t,n,i,r,o){let a=rt(e.c.hour);return t?(a+=":",a+=rt(e.c.minute),(e.c.millisecond!==0||e.c.second!==0||!n)&&(a+=":")):a+=rt(e.c.minute),(e.c.millisecond!==0||e.c.second!==0||!n)&&(a+=rt(e.c.second),(e.c.millisecond!==0||!i)&&(a+=".",a+=rt(e.c.millisecond,3))),r&&(e.isOffsetFixed&&e.offset===0&&!o?a+="Z":e.o<0?(a+="-",a+=rt(Math.trunc(-e.o/60)),a+=":",a+=rt(Math.trunc(-e.o%60))):(a+="+",a+=rt(Math.trunc(e.o/60)),a+=":",a+=rt(Math.trunc(e.o%60)))),o&&(a+="["+e.zone.ianaName+"]"),a}const nv={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},mI={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},gI={ordinal:1,hour:0,minute:0,second:0,millisecond:0},iv=["year","month","day","hour","minute","second","millisecond"],vI=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],yI=["year","ordinal","hour","minute","second","millisecond"];function wI(e){const t={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[e.toLowerCase()];if(!t)throw new og(e);return t}function Yf(e){switch(e.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return wI(e)}}function Xf(e,t){const n=ei(t.zone,tt.defaultZone),i=$e.fromObject(t),r=tt.now();let o,a;if(ge(e.year))o=r;else{for(const u of iv)ge(e[u])&&(e[u]=nv[u]);const s=xg(e)||Ag(e);if(s)return fe.invalid(s);const l=n.offset(r);[o,a]=ga(e,l,n)}return new fe({ts:o,zone:n,loc:i,o:a})}function Qf(e,t,n){const i=ge(n.round)?!0:n.round,r=(a,s)=>(a=Ku(a,i||n.calendary?0:2,!0),t.loc.clone(n).relFormatter(n).format(a,s)),o=a=>n.calendary?t.hasSame(e,a)?0:t.startOf(a).diff(e.startOf(a),a).get(a):t.diff(e,a).get(a);if(n.unit)return r(o(n.unit),n.unit);for(const a of n.units){const s=o(a);if(Math.abs(s)>=1)return r(s,a)}return r(e>t?-0:0,n.units[n.units.length-1])}function jf(e){let t={},n;return e.length>0&&typeof e[e.length-1]=="object"?(t=e[e.length-1],n=Array.from(e).slice(0,e.length-1)):n=Array.from(e),[t,n]}class fe{constructor(t){const n=t.zone||tt.defaultZone;let i=t.invalid||(Number.isNaN(t.ts)?new sn("invalid input"):null)||(n.isValid?null:aa(n));this.ts=ge(t.ts)?tt.now():t.ts;let r=null,o=null;if(!i)if(t.old&&t.old.ts===this.ts&&t.old.zone.equals(n))[r,o]=[t.old.c,t.old.o];else{const s=n.offset(this.ts);r=sa(this.ts,s),i=Number.isNaN(r.year)?new sn("invalid input"):null,r=i?null:r,o=i?null:s}this._zone=n,this.loc=t.loc||$e.create(),this.invalid=i,this.weekData=null,this.localWeekData=null,this.c=r,this.o=o,this.isLuxonDateTime=!0}static now(){return new fe({})}static local(){const[t,n]=jf(arguments),[i,r,o,a,s,l,u]=n;return Xf({year:i,month:r,day:o,hour:a,minute:s,second:l,millisecond:u},t)}static utc(){const[t,n]=jf(arguments),[i,r,o,a,s,l,u]=n;return t.zone=St.utcInstance,Xf({year:i,month:r,day:o,hour:a,minute:s,second:l,millisecond:u},t)}static fromJSDate(t,n={}){const i=K1(t)?t.valueOf():NaN;if(Number.isNaN(i))return fe.invalid("invalid input");const r=ei(n.zone,tt.defaultZone);return r.isValid?new fe({ts:i,zone:r,loc:$e.fromObject(n)}):fe.invalid(aa(r))}static fromMillis(t,n={}){if(ki(t))return t<-Gf||t>Gf?fe.invalid("Timestamp out of range"):new fe({ts:t,zone:ei(n.zone,tt.defaultZone),loc:$e.fromObject(n)});throw new _t(`fromMillis requires a numerical input, but received a ${typeof t} with value ${t}`)}static fromSeconds(t,n={}){if(ki(t))return new fe({ts:t*1e3,zone:ei(n.zone,tt.defaultZone),loc:$e.fromObject(n)});throw new _t("fromSeconds requires a numerical input")}static fromObject(t,n={}){t=t||{};const i=ei(n.zone,tt.defaultZone);if(!i.isValid)return fe.invalid(aa(i));const r=$e.fromObject(n),o=Ka(t,Yf),{minDaysInFirstWeek:a,startOfWeek:s}=Df(o,r),l=tt.now(),u=ge(n.specificOffset)?i.offset(l):n.specificOffset,c=!ge(o.ordinal),d=!ge(o.year),f=!ge(o.month)||!ge(o.day),h=d||f,m=o.weekYear||o.weekNumber;if((h||c)&&m)throw new Yi("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(f&&c)throw new Yi("Can't mix ordinal dates with month/day");const g=m||o.weekday&&!h;let S,R,k=sa(l,u);g?(S=vI,R=mI,k=Ja(k,a,s)):c?(S=yI,R=gI,k=Xs(k)):(S=iv,R=nv);let I=!1;for(const $ of S){const W=o[$];ge(W)?I?o[$]=R[$]:o[$]=k[$]:I=!0}const P=g?W1(o,a,s):c?J1(o):xg(o),L=P||Ag(o);if(L)return fe.invalid(L);const T=g?Uf(o,a,s):c?Ff(o):o,[E,x]=ga(T,u,i),N=new fe({ts:E,zone:i,o:x,loc:r});return o.weekday&&h&&t.weekday!==N.weekday?fe.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${N.toISO()}`):N}static fromISO(t,n={}){const[i,r]=NE(t);return Mr(i,r,n,"ISO 8601",t)}static fromRFC2822(t,n={}){const[i,r]=BE(t);return Mr(i,r,n,"RFC 2822",t)}static fromHTTP(t,n={}){const[i,r]=$E(t);return Mr(i,r,n,"HTTP",n)}static fromFormat(t,n,i={}){if(ge(t)||ge(n))throw new _t("fromFormat requires an input string and a format");const{locale:r=null,numberingSystem:o=null}=i,a=$e.fromOpts({locale:r,numberingSystem:o,defaultToEN:!0}),[s,l,u,c]=hI(a,t,n);return c?fe.invalid(c):Mr(s,l,i,`format ${n}`,t,u)}static fromString(t,n,i={}){return fe.fromFormat(t,n,i)}static fromSQL(t,n={}){const[i,r]=JE(t);return Mr(i,r,n,"SQL",t)}static invalid(t,n=null){if(!t)throw new _t("need to specify a reason the DateTime is invalid");const i=t instanceof sn?t:new sn(t,n);if(tt.throwOnInvalid)throw new S1(i);return new fe({invalid:i})}static isDateTime(t){return t&&t.isLuxonDateTime||!1}static parseFormatForOpts(t,n={}){const i=ev(t,$e.fromObject(n));return i?i.map(r=>r?r.val:null).join(""):null}static expandFormat(t,n={}){return Qg(gt.parseFormat(t),$e.fromObject(n)).map(r=>r.val).join("")}get(t){return this[t]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?el(this).weekYear:NaN}get weekNumber(){return this.isValid?el(this).weekNumber:NaN}get weekday(){return this.isValid?el(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?tl(this).weekday:NaN}get localWeekNumber(){return this.isValid?tl(this).weekNumber:NaN}get localWeekYear(){return this.isValid?tl(this).weekYear:NaN}get ordinal(){return this.isValid?Xs(this.c).ordinal:NaN}get monthShort(){return this.isValid?ra.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?ra.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?ra.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?ra.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];const t=864e5,n=6e4,i=bs(this.c),r=this.zone.offset(i-t),o=this.zone.offset(i+t),a=this.zone.offset(i-r*n),s=this.zone.offset(i-o*n);if(a===s)return[this];const l=i-a*n,u=i-s*n,c=sa(l,a),d=sa(u,s);return c.hour===d.hour&&c.minute===d.minute&&c.second===d.second&&c.millisecond===d.millisecond?[fi(this,{ts:l}),fi(this,{ts:u})]:[this]}get isInLeapYear(){return No(this.year)}get daysInMonth(){return Ga(this.year,this.month)}get daysInYear(){return this.isValid?tr(this.year):NaN}get weeksInWeekYear(){return this.isValid?_o(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?_o(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(t={}){const{locale:n,numberingSystem:i,calendar:r}=gt.create(this.loc.clone(t),t).resolvedOptions(this);return{locale:n,numberingSystem:i,outputCalendar:r}}toUTC(t=0,n={}){return this.setZone(St.instance(t),n)}toLocal(){return this.setZone(tt.defaultZone)}setZone(t,{keepLocalTime:n=!1,keepCalendarTime:i=!1}={}){if(t=ei(t,tt.defaultZone),t.equals(this.zone))return this;if(t.isValid){let r=this.ts;if(n||i){const o=t.offset(this.ts),a=this.toObject();[r]=ga(a,o,t)}return fi(this,{ts:r,zone:t})}else return fe.invalid(aa(t))}reconfigure({locale:t,numberingSystem:n,outputCalendar:i}={}){const r=this.loc.clone({locale:t,numberingSystem:n,outputCalendar:i});return fi(this,{loc:r})}setLocale(t){return this.reconfigure({locale:t})}set(t){if(!this.isValid)return this;const n=Ka(t,Yf),{minDaysInFirstWeek:i,startOfWeek:r}=Df(n,this.loc),o=!ge(n.weekYear)||!ge(n.weekNumber)||!ge(n.weekday),a=!ge(n.ordinal),s=!ge(n.year),l=!ge(n.month)||!ge(n.day),u=s||l,c=n.weekYear||n.weekNumber;if((u||a)&&c)throw new Yi("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&a)throw new Yi("Can't mix ordinal dates with month/day");let d;o?d=Uf({...Ja(this.c,i,r),...n},i,r):ge(n.ordinal)?(d={...this.toObject(),...n},ge(n.day)&&(d.day=Math.min(Ga(d.year,d.month),d.day))):d=Ff({...Xs(this.c),...n});const[f,h]=ga(d,this.o,this.zone);return fi(this,{ts:f,o:h})}plus(t){if(!this.isValid)return this;const n=Ie.fromDurationLike(t);return fi(this,Kf(this,n))}minus(t){if(!this.isValid)return this;const n=Ie.fromDurationLike(t).negate();return fi(this,Kf(this,n))}startOf(t,{useLocaleWeeks:n=!1}={}){if(!this.isValid)return this;const i={},r=Ie.normalizeUnit(t);switch(r){case"years":i.month=1;case"quarters":case"months":i.day=1;case"weeks":case"days":i.hour=0;case"hours":i.minute=0;case"minutes":i.second=0;case"seconds":i.millisecond=0;break}if(r==="weeks")if(n){const o=this.loc.getStartOfWeek(),{weekday:a}=this;athis.valueOf(),s=a?this:t,l=a?t:this,u=jE(s,l,o,r);return a?u.negate():u}diffNow(t="milliseconds",n={}){return this.diff(fe.now(),t,n)}until(t){return this.isValid?Ze.fromDateTimes(this,t):this}hasSame(t,n,i){if(!this.isValid)return!1;const r=t.valueOf(),o=this.setZone(t.zone,{keepLocalTime:!0});return o.startOf(n,i)<=r&&r<=o.endOf(n,i)}equals(t){return this.isValid&&t.isValid&&this.valueOf()===t.valueOf()&&this.zone.equals(t.zone)&&this.loc.equals(t.loc)}toRelative(t={}){if(!this.isValid)return null;const n=t.base||fe.fromObject({},{zone:this.zone}),i=t.padding?thisn.valueOf(),Math.min)}static max(...t){if(!t.every(fe.isDateTime))throw new _t("max requires all arguments be DateTimes");return Nf(t,n=>n.valueOf(),Math.max)}static fromFormatExplain(t,n,i={}){const{locale:r=null,numberingSystem:o=null}=i,a=$e.fromOpts({locale:r,numberingSystem:o,defaultToEN:!0});return jg(a,t,n)}static fromStringExplain(t,n,i={}){return fe.fromFormatExplain(t,n,i)}static get DATE_SHORT(){return Wa}static get DATE_MED(){return ag}static get DATE_MED_WITH_WEEKDAY(){return _1}static get DATE_FULL(){return sg}static get DATE_HUGE(){return lg}static get TIME_SIMPLE(){return ug}static get TIME_WITH_SECONDS(){return cg}static get TIME_WITH_SHORT_OFFSET(){return dg}static get TIME_WITH_LONG_OFFSET(){return fg}static get TIME_24_SIMPLE(){return pg}static get TIME_24_WITH_SECONDS(){return hg}static get TIME_24_WITH_SHORT_OFFSET(){return mg}static get TIME_24_WITH_LONG_OFFSET(){return gg}static get DATETIME_SHORT(){return vg}static get DATETIME_SHORT_WITH_SECONDS(){return yg}static get DATETIME_MED(){return wg}static get DATETIME_MED_WITH_SECONDS(){return bg}static get DATETIME_MED_WITH_WEEKDAY(){return k1}static get DATETIME_FULL(){return Sg}static get DATETIME_FULL_WITH_SECONDS(){return Cg}static get DATETIME_HUGE(){return Rg}static get DATETIME_HUGE_WITH_SECONDS(){return _g}}function Vr(e){if(fe.isDateTime(e))return e;if(e&&e.valueOf&&ki(e.valueOf()))return fe.fromJSDate(e);if(e&&typeof e=="object")return fe.fromObject(e);throw new _t(`Unknown datetime argument: ${e}, of type ${typeof e}`)}const bI=pt({name:"Step",computed:{timer_color:function(){return this.timer_end!=null&&this.time_now>this.timer_end?"warning":""},remaining_time:function(){return this.timer_end!=null?Ze.fromDateTimes(this.time_now,this.timer_end).length()>0?Ie.fromMillis(Ze.fromDateTimes(this.time_now,this.timer_end).length()).toFormat("hh:mm:ss"):"00:00:00":""},finished_at:function(){return this.timer_end!=null?this.timer_end.toLocaleString(fe.TIME_SIMPLE):""}},components:{IngredientsTable:Hu},props:{step:{type:{},required:!0}},data(){return{timer_end:null,time_now:fe.now()}},mounted(){setInterval(()=>{this.time_now=fe.now()},500)},methods:{startTimer(e){this.timer_end=fe.now().plus({minutes:e})}}}),rv=Io("v-alert-title"),SI=["success","info","warning","error"],CI=J({border:{type:[Boolean,String],validator:e=>typeof e=="boolean"||["top","end","bottom","start"].includes(e)},borderColor:String,closable:Boolean,closeIcon:{type:qe,default:"$close"},closeLabel:{type:String,default:"$vuetify.close"},icon:{type:[Boolean,String,Function,Object],default:null},modelValue:{type:Boolean,default:!0},prominent:Boolean,title:String,text:String,type:{type:String,validator:e=>SI.includes(e)},...Ce(),...$t(),...Li(),...Rn(),...ps(),...Ou(),...Et(),...He(),...it(),...Ui({variant:"flat"})},"VAlert"),RI=oe()({name:"VAlert",props:CI(),emits:{"click:close":e=>!0,"update:modelValue":e=>!0},setup(e,t){let{emit:n,slots:i}=t;const r=It(e,"modelValue"),o=C(()=>{if(e.icon!==!1)return e.type?e.icon??`$${e.type}`:e.icon}),a=C(()=>({color:e.color??e.type,variant:e.variant})),{themeClasses:s}=lt(e),{colorClasses:l,colorStyles:u,variantClasses:c}=Ao(a),{densityClasses:d}=fn(e),{dimensionStyles:f}=Pi(e),{elevationClasses:h}=Mn(e),{locationStyles:m}=hs(e),{positionClasses:g}=Lu(e),{roundedClasses:S}=Bt(e),{textColorClasses:R,textColorStyles:k}=Pn(ve(e,"borderColor")),{t:I}=Po(),P=C(()=>({"aria-label":I(e.closeLabel),onClick(L){r.value=!1,n("click:close",L)}}));return()=>{const L=!!(i.prepend||o.value),T=!!(i.title||e.title),E=!!(i.close||e.closable);return r.value&&p(e.tag,{class:["v-alert",e.border&&{"v-alert--border":!!e.border,[`v-alert--border-${e.border===!0?"start":e.border}`]:!0},{"v-alert--prominent":e.prominent},s.value,l.value,d.value,h.value,g.value,S.value,c.value,e.class],style:[u.value,f.value,m.value,e.style],role:"alert"},{default:()=>{var x,N;return[xo(!1,"v-alert"),e.border&&p("div",{key:"border",class:["v-alert__border",R.value],style:k.value},null),L&&p("div",{key:"prepend",class:"v-alert__prepend"},[i.prepend?p(ct,{key:"prepend-defaults",disabled:!o.value,defaults:{VIcon:{density:e.density,icon:o.value,size:e.prominent?44:28}}},i.prepend):p(Qe,{key:"prepend-icon",density:e.density,icon:o.value,size:e.prominent?44:28},null)]),p("div",{class:"v-alert__content"},[T&&p(rv,{key:"title"},{default:()=>{var $;return[(($=i.title)==null?void 0:$.call(i))??e.title]}}),((x=i.text)==null?void 0:x.call(i))??e.text,(N=i.default)==null?void 0:N.call(i)]),i.append&&p("div",{key:"append",class:"v-alert__append"},[i.append()]),E&&p("div",{key:"close",class:"v-alert__close"},[i.close?p(ct,{key:"close-defaults",defaults:{VBtn:{icon:e.closeIcon,size:"x-small",variant:"text"}}},{default:()=>{var $;return[($=i.close)==null?void 0:$.call(i,{props:P.value})]}}):p(je,Pe({key:"close-btn",icon:e.closeIcon,size:"x-small",variant:"text"},P.value),null)])]}})}}}),_I=Ee("i",{class:"fas fa-stopwatch mr-1"},null,-1),kI=Ee("i",{class:"fas fa-check"},null,-1),TI=Ee("i",{class:"fas fa-stopwatch mr-1"},null,-1);function EI(e,t,n,i,r,o){const a=Pt("IngredientsTable");return de(),Me(An,null,{default:q(()=>{var s;return[p(Uo,null,{default:q(()=>[p(Ei,null,{default:q(()=>[p(yn,null,{default:q(()=>[Ve(Fe(e.step.name),1)]),_:1}),p(yn,{class:"text-right"},{default:q(()=>[p(Na,{density:"compact",variant:"tonal"},{default:q(()=>[e.step.time>0?(de(),Me(je,{key:0,size:"small",color:"info",onClick:t[0]||(t[0]=l=>e.startTimer(e.step.time))},{default:q(()=>[_I,Ve(" "+Fe(e.step.time),1)]),_:1})):kt("",!0),p(je,{size:"small",color:"success"},{default:q(()=>[kI]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),e.timer_end!=null?(de(),Me(RI,{key:0,color:e.timer_color,closable:"","onClick:close":t[1]||(t[1]=l=>e.timer_end=null)},{default:q(()=>[p(rv,null,{default:q(()=>[TI,Ve(" "+Fe(e.remaining_time),1)]),_:1}),Ve(" Finished at "+Fe(e.finished_at),1)]),_:1},8,["color"])):kt("",!0),p(a,{ingredients:e.step.ingredients},null,8,["ingredients"]),((s=e.step.instruction)==null?void 0:s.length)>0?(de(),Me(ri,{key:1},{default:q(()=>[Ve(Fe(e.step.instruction),1)]),_:1})):kt("",!0)]}),_:1})}const II=Ct(bI,[["render",EI]]),xI=pt({name:"RecipeActivity",props:{recipe:{type:Object,required:!0}},data(){return{cook_logs:[]}},mounted(){new us().listCookLogs({recipe:this.recipe.id}).then(t=>{this.cook_logs=t.results})}}),AI=J({align:{type:String,default:"center",validator:e=>["center","start"].includes(e)},direction:{type:String,default:"vertical",validator:e=>["vertical","horizontal"].includes(e)},justify:{type:String,default:"auto",validator:e=>["auto","center"].includes(e)},side:{type:String,validator:e=>e==null||["start","end"].includes(e)},lineInset:{type:[String,Number],default:0},lineThickness:{type:[String,Number],default:2},lineColor:String,truncateLine:{type:String,validator:e=>["start","end","both"].includes(e)},...Ce(),...$t(),...He(),...it()},"VTimeline"),OI=oe()({name:"VTimeline",props:AI(),setup(e,t){let{slots:n}=t;const{themeClasses:i}=lt(e),{densityClasses:r}=fn(e),{rtlClasses:o}=_n();Cn({VTimelineDivider:{lineColor:ve(e,"lineColor")},VTimelineItem:{density:ve(e,"density"),lineInset:ve(e,"lineInset")}});const a=C(()=>{const l=e.side?e.side:e.density!=="default"?"end":null;return l&&`v-timeline--side-${l}`}),s=C(()=>{const l=["v-timeline--truncate-line-start","v-timeline--truncate-line-end"];switch(e.truncateLine){case"both":return l;case"start":return l[0];case"end":return l[1];default:return null}});return pe(()=>p(e.tag,{class:["v-timeline",`v-timeline--${e.direction}`,`v-timeline--align-${e.align}`,`v-timeline--justify-${e.justify}`,s.value,{"v-timeline--inset-line":!!e.lineInset},i.value,r.value,a.value,o.value,e.class],style:[{"--v-timeline-line-thickness":le(e.lineThickness)},e.style]},n)),{}}}),LI=J({dotColor:String,fillDot:Boolean,hideDot:Boolean,icon:qe,iconColor:String,lineColor:String,...Ce(),...Et(),...oi(),...Rn()},"VTimelineDivider"),PI=oe()({name:"VTimelineDivider",props:LI(),setup(e,t){let{slots:n}=t;const{sizeClasses:i,sizeStyles:r}=mr(e,"v-timeline-divider__dot"),{backgroundColorStyles:o,backgroundColorClasses:a}=Qt(ve(e,"dotColor")),{roundedClasses:s}=Bt(e,"v-timeline-divider__dot"),{elevationClasses:l}=Mn(e),{backgroundColorClasses:u,backgroundColorStyles:c}=Qt(ve(e,"lineColor"));return pe(()=>p("div",{class:["v-timeline-divider",{"v-timeline-divider--fill-dot":e.fillDot},e.class],style:e.style},[p("div",{class:["v-timeline-divider__before",u.value],style:c.value},null),!e.hideDot&&p("div",{key:"dot",class:["v-timeline-divider__dot",l.value,s.value,i.value],style:r.value},[p("div",{class:["v-timeline-divider__inner-dot",a.value,s.value],style:o.value},[n.default?p(ct,{key:"icon-defaults",disabled:!e.icon,defaults:{VIcon:{color:e.iconColor,icon:e.icon,size:e.size}}},n.default):p(Qe,{key:"icon",color:e.iconColor,icon:e.icon,size:e.size},null)])]),p("div",{class:["v-timeline-divider__after",u.value],style:c.value},null)])),{}}}),UI=J({density:String,dotColor:String,fillDot:Boolean,hideDot:Boolean,hideOpposite:{type:Boolean,default:void 0},icon:qe,iconColor:String,lineInset:[Number,String],...Ce(),...Li(),...Rn(),...Et(),...oi(),...He()},"VTimelineItem"),FI=oe()({name:"VTimelineItem",props:UI(),setup(e,t){let{slots:n}=t;const{dimensionStyles:i}=Pi(e),r=be(0),o=Se();return we(o,a=>{var s;a&&(r.value=((s=a.$el.querySelector(".v-timeline-divider__dot"))==null?void 0:s.getBoundingClientRect().width)??0)},{flush:"post"}),pe(()=>{var a,s;return p("div",{class:["v-timeline-item",{"v-timeline-item--fill-dot":e.fillDot},e.class],style:[{"--v-timeline-dot-size":le(r.value),"--v-timeline-line-inset":e.lineInset?`calc(var(--v-timeline-dot-size) / 2 + ${le(e.lineInset)})`:le(0)},e.style]},[p("div",{class:"v-timeline-item__body",style:i.value},[(a=n.default)==null?void 0:a.call(n)]),p(PI,{ref:o,hideDot:e.hideDot,icon:e.icon,iconColor:e.iconColor,size:e.size,elevation:e.elevation,dotColor:e.dotColor,fillDot:e.fillDot,rounded:e.rounded},{default:n.icon}),e.density!=="compact"&&p("div",{class:"v-timeline-item__opposite"},[!e.hideOpposite&&((s=n.opposite)==null?void 0:s.call(n))])])}),{}}}),DI=Ee("h2",null,"Activity",-1),NI={key:0};function BI(e,t,n,i,r,o){return de(),Me(Fo,null,{default:q(()=>[p(Ei,null,{default:q(()=>[p(yn,null,{default:q(()=>[DI,p(OI,{side:"end",align:"start"},{default:q(()=>[(de(!0),at(_e,null,Oi(e.cook_logs,a=>(de(),Me(FI,{"dot-color":"grey",size:"xsmall",key:a.id},{default:q(()=>[p(An,null,{default:q(()=>[p(ri,{class:"bg-primary"},{default:q(()=>[Ee("small",null,Fe(a.createdAt)+" by "+Fe(a.createdBy.displayName),1)]),_:2},1024),p(zu,{density:"compact",size:"small",color:"tandoor",modelValue:a.rating,"onUpdate:modelValue":s=>a.rating=s},null,8,["modelValue","onUpdate:modelValue"]),a.servings!=null&&a.servings>0?(de(),at("span",NI,Fe(a.servings)+" "+Fe(e.recipe.servingsText),1)):kt("",!0),Ee("p",null,Fe(a.comment),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1})]),_:1})}const $I=Ct(xI,[["render",BI]]),MI=pt({name:"RecipeView",components:{RecipeActivity:$I,Step:II,StepsOverview:b1,IngredientsTable:Hu,NumberScalerDialog:QT,KeywordsBar:qu},computed:{},data(){return{}},props:{recipe:{type:Object,required:!0}},mounted(){},methods:{}}),VI=Ee("i",{class:"fas fa-cogs"},null,-1),qI=Ee("br",null,null,-1),zI=Ee("i",{class:"fas fa-hourglass-half"},null,-1),HI=Ee("div",{class:"text-grey"},"Waiting Time",-1),WI=Ee("i",{class:"fas fa-calendar-alt"},null,-1),JI=Ee("br",null,null,-1),GI={class:"text-grey"},KI={key:0},ZI={key:1};function YI(e,t,n,i,r,o){const a=Pt("KeywordsBar"),s=Pt("NumberScalerDialog"),l=Pt("StepsOverview"),u=Pt("Step");return de(),at(_e,null,[p(An,null,{default:q(()=>[p(Uo,null,{default:q(()=>[Ve(Fe(e.recipe.name),1)]),_:1}),p(gr,{"max-height":"25vh",cover:"",lazy:"",src:e.recipe.image},{default:q(()=>{var c;return[p(a,{keywords:(c=e.recipe)==null?void 0:c.keywords},null,8,["keywords"]),p(tg,{size:"small",color:"primary",label:""},{default:q(()=>[p(Qe,{icon:"fas fa-calendar",class:"mr-2"}),Ve(" "+Fe(e.recipe.lastCooked),1)]),_:1}),p(zu,{modelValue:e.recipe.rating,"onUpdate:modelValue":t[0]||(t[0]=d=>e.recipe.rating=d),color:"tandoor"},null,8,["modelValue"])]}),_:1},8,["src"]),p(Fo,null,{default:q(()=>[p(Ei,{class:"text-center text-body-2"},{default:q(()=>[p(yn,{class:"pt-1 pb-1"},{default:q(()=>[VI,Ve(" "+Fe(e.recipe.workingTime)+" min",1),qI,p(Tm,null,{default:q(()=>[Ve("Working Time")]),_:1})]),_:1}),p(yn,{class:"pt-1 pb-1"},{default:q(()=>[Ee("div",null,[zI,Ve(" "+Fe(e.recipe.waitingTime)+" min",1)]),HI]),_:1}),p(yn,{class:"pt-1 pb-1"},{default:q(()=>[p(s,{number:e.recipe.servings,onChange:t[1]||(t[1]=c=>e.recipe.servings=c.number),title:"Servings"},{activator:q(()=>{var c;return[WI,Ve(" "+Fe(e.recipe.servings)+" ",1),JI,Ee("div",GI,[(c=e.recipe)!=null&&c.servingsText?(de(),at("span",KI,Fe(e.recipe.servingsText),1)):(de(),at("span",ZI,"Servings"))])]}),_:1},8,["number"])]),_:1})]),_:1})]),_:1})]),_:1}),p(An,{class:"mt-1"},{default:q(()=>[p(l,{steps:e.recipe.steps},null,8,["steps"])]),_:1}),(de(!0),at(_e,null,Oi(e.recipe.steps,c=>(de(),Me(An,{class:"mt-1",key:c.id},{default:q(()=>[p(u,{step:c},null,8,["step"])]),_:2},1024))),128))],64)}const XI=Ct(MI,[["render",YI]]),QI=pt({name:"RecipeSearchPage",components:{RecipeView:XI},watch:{id:function(e){this.refreshData(e)}},props:{id:{type:String,required:!0}},data(){return{recipe:{}}},mounted(){this.refreshData(this.id)},methods:{refreshData(e){new us().apiRecipeRetrieve({id:Number(e)}).then(n=>{this.recipe=n})}}});function jI(e,t,n,i,r,o){const a=Pt("RecipeView");return de(),Me(a,{recipe:e.recipe},null,8,["recipe"])}const ep=Ct(QI,[["render",jI]]),ex={install:e=>{e.config.globalProperties.$luxon=fe}},tx=[{path:"/",redirect:"/search",name:"index"},{path:"/search",component:WT,name:"view_search"},{path:"/shopping",component:Ks,name:"view_shopping"},{path:"/mealplan",component:Ks,name:"view_mealplan"},{path:"/books",component:Ks,name:"view_books"},{path:"/recipe/:id",component:ep,name:"view_recipe",props:!0},{path:"/recipe/edit/:id",component:ep,name:"edit_recipe",props:!0}],nx=U0({history:Yw(),routes:tx}),Mo=xw(xk);Mo.use(B0());Mo.use(wT);Mo.use(nx);Mo.use(ex);Mo.mount("#app"); diff --git a/cookbook/static/vue3/assets/main-OseOyQb7.js b/cookbook/static/vue3/assets/main-OseOyQb7.js new file mode 100644 index 000000000..98fb460d8 --- /dev/null +++ b/cookbook/static/vue3/assets/main-OseOyQb7.js @@ -0,0 +1,29 @@ +var Um=Object.defineProperty;var Lm=(e,t,n)=>t in e?Um(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Fn=(e,t,n)=>(Lm(e,typeof t!="symbol"?t+"":t,n),n);/** +* @vue/shared v3.4.19 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Xs(e,t){const n=new Set(e.split(","));return t?i=>n.has(i.toLowerCase()):i=>n.has(i)}const Ue={},si=[],Tt=()=>{},Nm=()=>!1,Ha=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Qs=e=>e.startsWith("onUpdate:"),We=Object.assign,js=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},qm=Object.prototype.hasOwnProperty,Ce=(e,t)=>qm.call(e,t),de=Array.isArray,li=e=>Ga(e)==="[object Map]",hu=e=>Ga(e)==="[object Set]",pe=e=>typeof e=="function",Ge=e=>typeof e=="string",yi=e=>typeof e=="symbol",De=e=>e!==null&&typeof e=="object",gu=e=>(De(e)||pe(e))&&pe(e.then)&&pe(e.catch),yu=Object.prototype.toString,Ga=e=>yu.call(e),$m=e=>Ga(e).slice(8,-1),vu=e=>Ga(e)==="[object Object]",el=e=>Ge(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,mr=Xs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ka=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Bm=/-(\w)/g,It=Ka(e=>e.replace(Bm,(t,n)=>n?n.toUpperCase():"")),Vm=/\B([A-Z])/g,vi=Ka(e=>e.replace(Vm,"-$1").toLowerCase()),an=Ka(e=>e.charAt(0).toUpperCase()+e.slice(1)),yo=Ka(e=>e?`on${an(e)}`:""),kn=(e,t)=>!Object.is(e,t),vo=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Mm=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Jm=e=>{const t=Ge(e)?Number(e):NaN;return isNaN(t)?e:t};let dd;const wu=()=>dd||(dd=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function tl(e){if(de(e)){const t={};for(let n=0;n{if(n){const i=n.split(Hm);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function nl(e){let t="";if(Ge(e))t=e;else if(de(e))for(let n=0;nGe(e)?e:e==null?"":de(e)||De(e)&&(e.toString===yu||!pe(e.toString))?JSON.stringify(e,_u,2):String(e),_u=(e,t)=>t&&t.__v_isRef?_u(e,t.value):li(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[i,r],a)=>(n[wo(i,a)+" =>"]=r,n),{})}:hu(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>wo(n))}:yi(t)?wo(t):De(t)&&!de(t)&&!vu(t)?String(t):t,wo=(e,t="")=>{var n;return yi(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.19 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let yt;class Su{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=yt,!t&&yt&&(this.index=(yt.scopes||(yt.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=yt;try{return yt=this,t()}finally{yt=n}}}on(){yt=this}off(){yt=this.parent}stop(t){if(this._active){let n,i;for(n=0,i=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),Xn()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Cn,n=Jn;try{return Cn=!0,Jn=this,this._runnings++,cd(this),this.fn()}finally{ud(this),this._runnings--,Jn=n,Cn=t}}stop(){var t;this.active&&(cd(this),ud(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function Qm(e){return e.value}function cd(e){e._trackId++,e._depsLength=0}function ud(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},_a=new WeakMap,zn=Symbol(""),Ts=Symbol("");function ut(e,t,n){if(Cn&&Jn){let i=_a.get(e);i||_a.set(e,i=new Map);let r=i.get(n);r||i.set(n,r=Ou(()=>i.delete(n))),Tu(Jn,r)}}function Qt(e,t,n,i,r,a){const o=_a.get(e);if(!o)return;let s=[];if(t==="clear")s=[...o.values()];else if(n==="length"&&de(e)){const d=Number(i);o.forEach((c,u)=>{(u==="length"||!yi(u)&&u>=d)&&s.push(c)})}else switch(n!==void 0&&s.push(o.get(n)),t){case"add":de(e)?el(n)&&s.push(o.get("length")):(s.push(o.get(zn)),li(e)&&s.push(o.get(Ts)));break;case"delete":de(e)||(s.push(o.get(zn)),li(e)&&s.push(o.get(Ts)));break;case"set":li(e)&&s.push(o.get(zn));break}rl();for(const d of s)d&&ku(d,4);al()}function jm(e,t){var n;return(n=_a.get(e))==null?void 0:n.get(t)}const eh=Xs("__proto__,__v_isRef,__isVue"),Iu=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(yi)),pd=th();function th(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const i=_e(this);for(let a=0,o=this.length;a{e[t]=function(...n){Zn(),rl();const i=_e(this)[t].apply(this,n);return al(),Xn(),i}}),e}function nh(e){const t=_e(this);return ut(t,"has",e),t.hasOwnProperty(e)}class Pu{constructor(t=!1,n=!1){this._isReadonly=t,this._shallow=n}get(t,n,i){const r=this._isReadonly,a=this._shallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return a;if(n==="__v_raw")return i===(r?a?hh:Au:a?Fu:xu).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(i)?t:void 0;const o=de(t);if(!r){if(o&&Ce(pd,n))return Reflect.get(pd,n,i);if(n==="hasOwnProperty")return nh}const s=Reflect.get(t,n,i);return(yi(n)?Iu.has(n):eh(n))||(r||ut(t,"get",n),a)?s:Ke(s)?o&&el(n)?s:s.value:De(s)?r?Br(s):nt(s):s}}class Eu extends Pu{constructor(t=!1){super(!1,t)}set(t,n,i,r){let a=t[n];if(!this._shallow){const d=ui(a);if(!Sa(i)&&!ui(i)&&(a=_e(a),i=_e(i)),!de(t)&&Ke(a)&&!Ke(i))return d?!1:(a.value=i,!0)}const o=de(t)&&el(n)?Number(n)e,Ya=e=>Reflect.getPrototypeOf(e);function Qr(e,t,n=!1,i=!1){e=e.__v_raw;const r=_e(e),a=_e(t);n||(kn(t,a)&&ut(r,"get",t),ut(r,"get",a));const{has:o}=Ya(r),s=i?ol:n?cl:Cr;if(o.call(r,t))return s(e.get(t));if(o.call(r,a))return s(e.get(a));e!==r&&e.get(t)}function jr(e,t=!1){const n=this.__v_raw,i=_e(n),r=_e(e);return t||(kn(e,r)&&ut(i,"has",e),ut(i,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function ea(e,t=!1){return e=e.__v_raw,!t&&ut(_e(e),"iterate",zn),Reflect.get(e,"size",e)}function fd(e){e=_e(e);const t=_e(this);return Ya(t).has.call(t,e)||(t.add(e),Qt(t,"add",e,e)),this}function md(e,t){t=_e(t);const n=_e(this),{has:i,get:r}=Ya(n);let a=i.call(n,e);a||(e=_e(e),a=i.call(n,e));const o=r.call(n,e);return n.set(e,t),a?kn(t,o)&&Qt(n,"set",e,t):Qt(n,"add",e,t),this}function hd(e){const t=_e(this),{has:n,get:i}=Ya(t);let r=n.call(t,e);r||(e=_e(e),r=n.call(t,e)),i&&i.call(t,e);const a=t.delete(e);return r&&Qt(t,"delete",e,void 0),a}function gd(){const e=_e(this),t=e.size!==0,n=e.clear();return t&&Qt(e,"clear",void 0,void 0),n}function ta(e,t){return function(i,r){const a=this,o=a.__v_raw,s=_e(o),d=t?ol:e?cl:Cr;return!e&&ut(s,"iterate",zn),o.forEach((c,u)=>i.call(r,d(c),d(u),a))}}function na(e,t,n){return function(...i){const r=this.__v_raw,a=_e(r),o=li(a),s=e==="entries"||e===Symbol.iterator&&o,d=e==="keys"&&o,c=r[e](...i),u=n?ol:t?cl:Cr;return!t&&ut(a,"iterate",d?Ts:zn),{next(){const{value:p,done:f}=c.next();return f?{value:p,done:f}:{value:s?[u(p[0]),u(p[1])]:u(p),done:f}},[Symbol.iterator](){return this}}}}function pn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function sh(){const e={get(a){return Qr(this,a)},get size(){return ea(this)},has:jr,add:fd,set:md,delete:hd,clear:gd,forEach:ta(!1,!1)},t={get(a){return Qr(this,a,!1,!0)},get size(){return ea(this)},has:jr,add:fd,set:md,delete:hd,clear:gd,forEach:ta(!1,!0)},n={get(a){return Qr(this,a,!0)},get size(){return ea(this,!0)},has(a){return jr.call(this,a,!0)},add:pn("add"),set:pn("set"),delete:pn("delete"),clear:pn("clear"),forEach:ta(!0,!1)},i={get(a){return Qr(this,a,!0,!0)},get size(){return ea(this,!0)},has(a){return jr.call(this,a,!0)},add:pn("add"),set:pn("set"),delete:pn("delete"),clear:pn("clear"),forEach:ta(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(a=>{e[a]=na(a,!1,!1),n[a]=na(a,!0,!1),t[a]=na(a,!1,!0),i[a]=na(a,!0,!0)}),[e,n,t,i]}const[lh,dh,ch,uh]=sh();function sl(e,t){const n=t?e?uh:ch:e?dh:lh;return(i,r,a)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?i:Reflect.get(Ce(n,r)&&r in i?n:i,r,a)}const ph={get:sl(!1,!1)},fh={get:sl(!1,!0)},mh={get:sl(!0,!1)},xu=new WeakMap,Fu=new WeakMap,Au=new WeakMap,hh=new WeakMap;function gh(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function yh(e){return e.__v_skip||!Object.isExtensible(e)?0:gh($m(e))}function nt(e){return ui(e)?e:ll(e,!1,rh,ph,xu)}function Du(e){return ll(e,!1,oh,fh,Fu)}function Br(e){return ll(e,!0,ah,mh,Au)}function ll(e,t,n,i,r){if(!De(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const a=r.get(e);if(a)return a;const o=yh(e);if(o===0)return e;const s=new Proxy(e,o===2?i:n);return r.set(e,s),s}function di(e){return ui(e)?di(e.__v_raw):!!(e&&e.__v_isReactive)}function ui(e){return!!(e&&e.__v_isReadonly)}function Sa(e){return!!(e&&e.__v_isShallow)}function Uu(e){return di(e)||ui(e)}function _e(e){const t=e&&e.__v_raw;return t?_e(t):e}function dl(e){return Object.isExtensible(e)&&ba(e,"__v_skip",!0),e}const Cr=e=>De(e)?nt(e):e,cl=e=>De(e)?Br(e):e;class Lu{constructor(t,n,i,r){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new il(()=>t(this._value),()=>ma(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=i}get value(){const t=_e(this);return(!t._cacheable||t.effect.dirty)&&kn(t._value,t._value=t.effect.run())&&ma(t,4),Nu(t),t.effect._dirtyLevel>=2&&ma(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function vh(e,t,n=!1){let i,r;const a=pe(e);return a?(i=e,r=Tt):(i=e.get,r=e.set),new Lu(i,r,a||!r,n)}function Nu(e){var t;Cn&&Jn&&(e=_e(e),Tu(Jn,(t=e.dep)!=null?t:e.dep=Ou(()=>e.dep=void 0,e instanceof Lu?e:void 0)))}function ma(e,t=4,n){e=_e(e);const i=e.dep;i&&ku(i,t)}function Ke(e){return!!(e&&e.__v_isRef===!0)}function we(e){return qu(e,!1)}function ve(e){return qu(e,!0)}function qu(e,t){return Ke(e)?e:new wh(e,t)}class wh{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:_e(t),this._value=n?t:Cr(t)}get value(){return Nu(this),this._value}set value(t){const n=this.__v_isShallow||Sa(t)||ui(t);t=n?t:_e(t),kn(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Cr(t),ma(this,4))}}function dt(e){return Ke(e)?e.value:e}const bh={get:(e,t,n)=>dt(Reflect.get(e,t,n)),set:(e,t,n,i)=>{const r=e[t];return Ke(r)&&!Ke(n)?(r.value=n,!0):Reflect.set(e,t,n,i)}};function $u(e){return di(e)?e:new Proxy(e,bh)}function ul(e){const t=de(e)?new Array(e.length):{};for(const n in e)t[n]=Bu(e,n);return t}class _h{constructor(t,n,i){this._object=t,this._key=n,this._defaultValue=i,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return jm(_e(this._object),this._key)}}class Sh{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function Se(e,t,n){return Ke(e)?e:pe(e)?new Sh(e):De(e)&&arguments.length>1?Bu(e,t,n):we(e)}function Bu(e,t,n){const i=e[t];return Ke(i)?i:new _h(e,t,n)}/** +* @vue/runtime-core v3.4.19 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Tn(e,t,n,i){try{return i?e(...i):e()}catch(r){Za(r,t,n)}}function kt(e,t,n,i){if(pe(e)){const a=Tn(e,t,n,i);return a&&gu(a)&&a.catch(o=>{Za(o,t,n)}),a}const r=[];for(let a=0;a>>1,r=it[i],a=kr(r);aHt&&it.splice(t,1)}function kh(e){de(e)?ci.push(...e):(!yn||!yn.includes(e,e.allowRecurse?$n+1:$n))&&ci.push(e),Mu()}function yd(e,t,n=Tr?Ht+1:0){for(;nkr(n)-kr(i));if(ci.length=0,yn){yn.push(...t);return}for(yn=t,$n=0;$ne.id==null?1/0:e.id,Oh=(e,t)=>{const n=kr(e)-kr(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function zu(e){ks=!1,Tr=!0,it.sort(Oh);try{for(Ht=0;HtGe(h)?h.trim():h)),p&&(r=n.map(Mm))}let s,d=i[s=yo(t)]||i[s=yo(It(t))];!d&&a&&(d=i[s=yo(vi(t))]),d&&kt(d,e,6,r);const c=i[s+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[s])return;e.emitted[s]=!0,kt(c,e,6,r)}}function Hu(e,t,n=!1){const i=t.emitsCache,r=i.get(e);if(r!==void 0)return r;const a=e.emits;let o={},s=!1;if(!pe(e)){const d=c=>{const u=Hu(c,t,!0);u&&(s=!0,We(o,u))};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!a&&!s?(De(e)&&i.set(e,null),null):(de(a)?a.forEach(d=>o[d]=null):We(o,a),De(e)&&i.set(e,o),o)}function Xa(e,t){return!e||!Ha(t)?!1:(t=t.slice(2).replace(/Once$/,""),Ce(e,t[0].toLowerCase()+t.slice(1))||Ce(e,vi(t))||Ce(e,t))}let Ze=null,Gu=null;function Ra(e){const t=Ze;return Ze=e,Gu=e&&e.type.__scopeId||null,t}function J(e,t=Ze,n){if(!t||e._n)return e;const i=(...r)=>{i._d&&xd(-1);const a=Ra(t);let o;try{o=e(...r)}finally{Ra(a),i._d&&xd(1)}return o};return i._n=!0,i._c=!0,i._d=!0,i}function bo(e){const{type:t,vnode:n,proxy:i,withProxy:r,props:a,propsOptions:[o],slots:s,attrs:d,emit:c,render:u,renderCache:p,data:f,setupState:h,ctx:y,inheritAttrs:v}=e;let R,C;const T=Ra(e);try{if(n.shapeFlag&4){const A=r||i,q=A;R=zt(u.call(q,A,p,a,h,f,y)),C=d}else{const A=t;R=zt(A.length>1?A(a,{attrs:d,slots:s,emit:c}):A(a,null)),C=t.props?d:Ph(d)}}catch(A){wr.length=0,Za(A,e,1),R=m(Ot)}let P=R;if(C&&v!==!1){const A=Object.keys(C),{shapeFlag:q}=P;A.length&&q&7&&(o&&A.some(Qs)&&(C=Eh(C,o)),P=tn(P,C))}return n.dirs&&(P=tn(P),P.dirs=P.dirs?P.dirs.concat(n.dirs):n.dirs),n.transition&&(P.transition=n.transition),R=P,Ra(T),R}const Ph=e=>{let t;for(const n in e)(n==="class"||n==="style"||Ha(n))&&((t||(t={}))[n]=e[n]);return t},Eh=(e,t)=>{const n={};for(const i in e)(!Qs(i)||!(i.slice(9)in t))&&(n[i]=e[i]);return n};function xh(e,t,n){const{props:i,children:r,component:a}=e,{props:o,children:s,patchFlag:d}=t,c=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&d>=0){if(d&1024)return!0;if(d&16)return i?vd(i,o,c):!!o;if(d&8){const u=t.dynamicProps;for(let p=0;pe.__isSuspense;function Lh(e,t){t&&t.pendingBranch?de(e)?t.effects.push(...e):t.effects.push(e):kh(e)}const Nh=Symbol.for("v-scx"),qh=()=>Le(Nh);function on(e,t){return gl(e,null,t)}const ia={};function fe(e,t,n){return gl(e,t,n)}function gl(e,t,{immediate:n,deep:i,flush:r,once:a,onTrack:o,onTrigger:s}=Ue){if(t&&a){const O=t;t=(...I)=>{O(...I),q()}}const d=et,c=O=>i===!0?O:Vn(O,i===!1?1:void 0);let u,p=!1,f=!1;if(Ke(e)?(u=()=>e.value,p=Sa(e)):di(e)?(u=()=>c(e),p=!0):de(e)?(f=!0,p=e.some(O=>di(O)||Sa(O)),u=()=>e.map(O=>{if(Ke(O))return O.value;if(di(O))return c(O);if(pe(O))return Tn(O,d,2)})):pe(e)?t?u=()=>Tn(e,d,2):u=()=>(h&&h(),kt(e,d,3,[y])):u=Tt,t&&i){const O=u;u=()=>Vn(O())}let h,y=O=>{h=P.onStop=()=>{Tn(O,d,4),h=P.onStop=void 0}},v;if(to)if(y=Tt,t?n&&kt(t,d,3,[u(),f?[]:void 0,y]):u(),r==="sync"){const O=qh();v=O.__watcherHandles||(O.__watcherHandles=[])}else return Tt;let R=f?new Array(e.length).fill(ia):ia;const C=()=>{if(!(!P.active||!P.dirty))if(t){const O=P.run();(i||p||(f?O.some((I,x)=>kn(I,R[x])):kn(O,R)))&&(h&&h(),kt(t,d,3,[O,R===ia?void 0:f&&R[0]===ia?[]:R,y]),R=O)}else P.run()};C.allowRecurse=!!t;let T;r==="sync"?T=C:r==="post"?T=()=>ct(C,d&&d.suspense):(C.pre=!0,d&&(C.id=d.uid),T=()=>fl(C));const P=new il(u,Tt,T),A=Xm(),q=()=>{P.stop(),A&&js(A.effects,P)};return t?n?C():R=P.run():r==="post"?ct(P.run.bind(P),d&&d.suspense):P.run(),v&&v.push(q),q}function $h(e,t,n){const i=this.proxy,r=Ge(e)?e.includes(".")?Wu(i,e):()=>i[e]:e.bind(i,i);let a;pe(t)?a=t:(a=t.handler,n=t);const o=Mr(this),s=gl(r,a.bind(i),n);return o(),s}function Wu(e,t){const n=t.split(".");return()=>{let i=e;for(let r=0;r0){if(n>=t)return e;n++}if(i=i||new Set,i.has(e))return e;if(i.add(e),Ke(e))Vn(e.value,t,n,i);else if(de(e))for(let r=0;r{Vn(r,t,n,i)});else if(vu(e))for(const r in e)Vn(e[r],t,n,i);return e}function Pt(e,t){if(Ze===null)return e;const n=no(Ze)||Ze.proxy,i=e.dirs||(e.dirs=[]);for(let r=0;r{e.isMounted=!0}),qt(()=>{e.isUnmounting=!0}),e}const Ct=[Function,Array],Zu={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ct,onEnter:Ct,onAfterEnter:Ct,onEnterCancelled:Ct,onBeforeLeave:Ct,onLeave:Ct,onAfterLeave:Ct,onLeaveCancelled:Ct,onBeforeAppear:Ct,onAppear:Ct,onAfterAppear:Ct,onAppearCancelled:Ct},Bh={name:"BaseTransition",props:Zu,setup(e,{slots:t}){const n=Rl(),i=Yu();let r;return()=>{const a=t.default&&yl(t.default(),!0);if(!a||!a.length)return;let o=a[0];if(a.length>1){for(const v of a)if(v.type!==Ot){o=v;break}}const s=_e(e),{mode:d}=s;if(i.isLeaving)return _o(o);const c=bd(o);if(!c)return _o(o);const u=Or(c,s,i,n);Ir(c,u);const p=n.subTree,f=p&&bd(p);let h=!1;const{getTransitionKey:y}=c.type;if(y){const v=y();r===void 0?r=v:v!==r&&(r=v,h=!0)}if(f&&f.type!==Ot&&(!Bn(c,f)||h)){const v=Or(f,s,i,n);if(Ir(f,v),d==="out-in")return i.isLeaving=!0,v.afterLeave=()=>{i.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},_o(o);d==="in-out"&&c.type!==Ot&&(v.delayLeave=(R,C,T)=>{const P=Xu(i,f);P[String(f.key)]=f,R[vn]=()=>{C(),R[vn]=void 0,delete u.delayedLeave},u.delayedLeave=T})}return o}}},Vh=Bh;function Xu(e,t){const{leavingVNodes:n}=e;let i=n.get(t.type);return i||(i=Object.create(null),n.set(t.type,i)),i}function Or(e,t,n,i){const{appear:r,mode:a,persisted:o=!1,onBeforeEnter:s,onEnter:d,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:p,onLeave:f,onAfterLeave:h,onLeaveCancelled:y,onBeforeAppear:v,onAppear:R,onAfterAppear:C,onAppearCancelled:T}=t,P=String(e.key),A=Xu(n,e),q=(x,N)=>{x&&kt(x,i,9,N)},O=(x,N)=>{const H=N[1];q(x,N),de(x)?x.every(K=>K.length<=1)&&H():x.length<=1&&H()},I={mode:a,persisted:o,beforeEnter(x){let N=s;if(!n.isMounted)if(r)N=v||s;else return;x[vn]&&x[vn](!0);const H=A[P];H&&Bn(e,H)&&H.el[vn]&&H.el[vn](),q(N,[x])},enter(x){let N=d,H=c,K=u;if(!n.isMounted)if(r)N=R||d,H=C||c,K=T||u;else return;let E=!1;const U=x[ra]=B=>{E||(E=!0,B?q(K,[x]):q(H,[x]),I.delayedLeave&&I.delayedLeave(),x[ra]=void 0)};N?O(N,[x,U]):U()},leave(x,N){const H=String(e.key);if(x[ra]&&x[ra](!0),n.isUnmounting)return N();q(p,[x]);let K=!1;const E=x[vn]=U=>{K||(K=!0,N(),U?q(y,[x]):q(h,[x]),x[vn]=void 0,A[H]===e&&delete A[H])};A[H]=e,f?O(f,[x,E]):E()},clone(x){return Or(x,t,n,i)}};return I}function _o(e){if(Qa(e))return e=tn(e),e.children=null,e}function bd(e){return Qa(e)?e.children?e.children[0]:void 0:e}function Ir(e,t){e.shapeFlag&6&&e.component?Ir(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function yl(e,t=!1,n){let i=[],r=0;for(let a=0;a1)for(let a=0;a!!e.type.__asyncLoader,Qa=e=>e.type.__isKeepAlive;function Qu(e,t){ep(e,"a",t)}function ju(e,t){ep(e,"da",t)}function ep(e,t,n=et){const i=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(ja(t,i,n),n){let r=n.parent;for(;r&&r.parent;)Qa(r.parent.vnode)&&Mh(i,t,n,r),r=r.parent}}function Mh(e,t,n,i){const r=ja(t,e,i,!0);np(()=>{js(i[t],r)},n)}function ja(e,t,n=et,i=!1){if(n){const r=n[e]||(n[e]=[]),a=t.__weh||(t.__weh=(...o)=>{if(n.isUnmounted)return;Zn();const s=Mr(n),d=kt(t,n,e,o);return s(),Xn(),d});return i?r.unshift(a):r.push(a),a}}const sn=e=>(t,n=et)=>(!to||e==="sp")&&ja(e,(...i)=>t(...i),n),vl=sn("bm"),Pn=sn("m"),Jh=sn("bu"),tp=sn("u"),qt=sn("bum"),np=sn("um"),zh=sn("sp"),Hh=sn("rtg"),Gh=sn("rtc");function Kh(e,t=et){ja("ec",e,t)}function wi(e,t,n,i){let r;const a=n&&n[i];if(de(e)||Ge(e)){r=new Array(e.length);for(let o=0,s=e.length;ot(o,s,void 0,a&&a[s]));else{const o=Object.keys(e);r=new Array(o.length);for(let s=0,d=o.length;sTa(t)?!(t.type===Ot||t.type===Re&&!rp(t.children)):!0)?e:null}const Os=e=>e?gp(e)?no(e)||e.proxy:Os(e.parent):null,gr=We(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Os(e.parent),$root:e=>Os(e.root),$emit:e=>e.emit,$options:e=>wl(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,fl(e.update)}),$nextTick:e=>e.n||(e.n=pt.bind(e.proxy)),$watch:e=>$h.bind(e)}),So=(e,t)=>e!==Ue&&!e.__isScriptSetup&&Ce(e,t),Wh={get({_:e},t){const{ctx:n,setupState:i,data:r,props:a,accessCache:o,type:s,appContext:d}=e;let c;if(t[0]!=="$"){const h=o[t];if(h!==void 0)switch(h){case 1:return i[t];case 2:return r[t];case 4:return n[t];case 3:return a[t]}else{if(So(i,t))return o[t]=1,i[t];if(r!==Ue&&Ce(r,t))return o[t]=2,r[t];if((c=e.propsOptions[0])&&Ce(c,t))return o[t]=3,a[t];if(n!==Ue&&Ce(n,t))return o[t]=4,n[t];Is&&(o[t]=0)}}const u=gr[t];let p,f;if(u)return t==="$attrs"&&ut(e,"get",t),u(e);if((p=s.__cssModules)&&(p=p[t]))return p;if(n!==Ue&&Ce(n,t))return o[t]=4,n[t];if(f=d.config.globalProperties,Ce(f,t))return f[t]},set({_:e},t,n){const{data:i,setupState:r,ctx:a}=e;return So(r,t)?(r[t]=n,!0):i!==Ue&&Ce(i,t)?(i[t]=n,!0):Ce(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(a[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:i,appContext:r,propsOptions:a}},o){let s;return!!n[o]||e!==Ue&&Ce(e,o)||So(t,o)||(s=a[0])&&Ce(s,o)||Ce(i,o)||Ce(gr,o)||Ce(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Ce(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function _d(e){return de(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Is=!0;function Yh(e){const t=wl(e),n=e.proxy,i=e.ctx;Is=!1,t.beforeCreate&&Sd(t.beforeCreate,e,"bc");const{data:r,computed:a,methods:o,watch:s,provide:d,inject:c,created:u,beforeMount:p,mounted:f,beforeUpdate:h,updated:y,activated:v,deactivated:R,beforeDestroy:C,beforeUnmount:T,destroyed:P,unmounted:A,render:q,renderTracked:O,renderTriggered:I,errorCaptured:x,serverPrefetch:N,expose:H,inheritAttrs:K,components:E,directives:U,filters:B}=t;if(c&&Zh(c,i,null),o)for(const te in o){const j=o[te];pe(j)&&(i[te]=j.bind(n))}if(r){const te=r.call(n,n);De(te)&&(e.data=nt(te))}if(Is=!0,a)for(const te in a){const j=a[te],Te=pe(j)?j.bind(n,n):pe(j.get)?j.get.bind(n,n):Tt,xe=!pe(j)&&pe(j.set)?j.set.bind(n):Tt,Z=S({get:Te,set:xe});Object.defineProperty(i,te,{enumerable:!0,configurable:!0,get:()=>Z.value,set:ne=>Z.value=ne})}if(s)for(const te in s)ap(s[te],i,n,te);if(d){const te=pe(d)?d.call(n):d;Reflect.ownKeys(te).forEach(j=>{_t(j,te[j])})}u&&Sd(u,e,"c");function re(te,j){de(j)?j.forEach(Te=>te(Te.bind(n))):j&&te(j.bind(n))}if(re(vl,p),re(Pn,f),re(Jh,h),re(tp,y),re(Qu,v),re(ju,R),re(Kh,x),re(Gh,O),re(Hh,I),re(qt,T),re(np,A),re(zh,N),de(H))if(H.length){const te=e.exposed||(e.exposed={});H.forEach(j=>{Object.defineProperty(te,j,{get:()=>n[j],set:Te=>n[j]=Te})})}else e.exposed||(e.exposed={});q&&e.render===Tt&&(e.render=q),K!=null&&(e.inheritAttrs=K),E&&(e.components=E),U&&(e.directives=U)}function Zh(e,t,n=Tt){de(e)&&(e=Ps(e));for(const i in e){const r=e[i];let a;De(r)?"default"in r?a=Le(r.from||i,r.default,!0):a=Le(r.from||i):a=Le(r),Ke(a)?Object.defineProperty(t,i,{enumerable:!0,configurable:!0,get:()=>a.value,set:o=>a.value=o}):t[i]=a}}function Sd(e,t,n){kt(de(e)?e.map(i=>i.bind(t.proxy)):e.bind(t.proxy),t,n)}function ap(e,t,n,i){const r=i.includes(".")?Wu(n,i):()=>n[i];if(Ge(e)){const a=t[e];pe(a)&&fe(r,a)}else if(pe(e))fe(r,e.bind(n));else if(De(e))if(de(e))e.forEach(a=>ap(a,t,n,i));else{const a=pe(e.handler)?e.handler.bind(n):t[e.handler];pe(a)&&fe(r,a,e)}}function wl(e){const t=e.type,{mixins:n,extends:i}=t,{mixins:r,optionsCache:a,config:{optionMergeStrategies:o}}=e.appContext,s=a.get(t);let d;return s?d=s:!r.length&&!n&&!i?d=t:(d={},r.length&&r.forEach(c=>Ca(d,c,o,!0)),Ca(d,t,o)),De(t)&&a.set(t,d),d}function Ca(e,t,n,i=!1){const{mixins:r,extends:a}=t;a&&Ca(e,a,n,!0),r&&r.forEach(o=>Ca(e,o,n,!0));for(const o in t)if(!(i&&o==="expose")){const s=Xh[o]||n&&n[o];e[o]=s?s(e[o],t[o]):t[o]}return e}const Xh={data:Rd,props:Cd,emits:Cd,methods:or,computed:or,beforeCreate:lt,created:lt,beforeMount:lt,mounted:lt,beforeUpdate:lt,updated:lt,beforeDestroy:lt,beforeUnmount:lt,destroyed:lt,unmounted:lt,activated:lt,deactivated:lt,errorCaptured:lt,serverPrefetch:lt,components:or,directives:or,watch:jh,provide:Rd,inject:Qh};function Rd(e,t){return t?e?function(){return We(pe(e)?e.call(this,this):e,pe(t)?t.call(this,this):t)}:t:e}function Qh(e,t){return or(Ps(e),Ps(t))}function Ps(e){if(de(e)){const t={};for(let n=0;n1)return n&&pe(t)?t.call(i&&i.proxy):t}}function ng(e,t,n,i=!1){const r={},a={};ba(a,eo,1),e.propsDefaults=Object.create(null),sp(e,t,r,a);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=i?r:Du(r):e.type.props?e.props=r:e.props=a,e.attrs=a}function ig(e,t,n,i){const{props:r,attrs:a,vnode:{patchFlag:o}}=e,s=_e(r),[d]=e.propsOptions;let c=!1;if((i||o>0)&&!(o&16)){if(o&8){const u=e.vnode.dynamicProps;for(let p=0;p{d=!0;const[f,h]=lp(p,t,!0);We(o,f),h&&s.push(...h)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!a&&!d)return De(e)&&i.set(e,si),si;if(de(a))for(let u=0;u-1,h[1]=v<0||y-1||Ce(h,"default"))&&s.push(p)}}}const c=[o,s];return De(e)&&i.set(e,c),c}function Td(e){return e[0]!=="$"&&!mr(e)}function kd(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function Od(e,t){return kd(e)===kd(t)}function Id(e,t){return de(t)?t.findIndex(n=>Od(n,e)):pe(t)&&Od(t,e)?0:-1}const dp=e=>e[0]==="_"||e==="$stable",bl=e=>de(e)?e.map(zt):[zt(e)],rg=(e,t,n)=>{if(t._n)return t;const i=J((...r)=>bl(t(...r)),n);return i._c=!1,i},cp=(e,t,n)=>{const i=e._ctx;for(const r in e){if(dp(r))continue;const a=e[r];if(pe(a))t[r]=rg(r,a,i);else if(a!=null){const o=bl(a);t[r]=()=>o}}},up=(e,t)=>{const n=bl(t);e.slots.default=()=>n},ag=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=_e(t),ba(t,"_",n)):cp(t,e.slots={})}else e.slots={},t&&up(e,t);ba(e.slots,eo,1)},og=(e,t,n)=>{const{vnode:i,slots:r}=e;let a=!0,o=Ue;if(i.shapeFlag&32){const s=t._;s?n&&s===1?a=!1:(We(r,t),!n&&s===1&&delete r._):(a=!t.$stable,cp(t,r)),o=t}else t&&(up(e,t),o={default:1});if(a)for(const s in r)!dp(s)&&o[s]==null&&delete r[s]};function xs(e,t,n,i,r=!1){if(de(e)){e.forEach((f,h)=>xs(f,t&&(de(t)?t[h]:t),n,i,r));return}if(hr(i)&&!r)return;const a=i.shapeFlag&4?no(i.component)||i.component.proxy:i.el,o=r?null:a,{i:s,r:d}=e,c=t&&t.r,u=s.refs===Ue?s.refs={}:s.refs,p=s.setupState;if(c!=null&&c!==d&&(Ge(c)?(u[c]=null,Ce(p,c)&&(p[c]=null)):Ke(c)&&(c.value=null)),pe(d))Tn(d,s,12,[o,u]);else{const f=Ge(d),h=Ke(d);if(f||h){const y=()=>{if(e.f){const v=f?Ce(p,d)?p[d]:u[d]:d.value;r?de(v)&&js(v,a):de(v)?v.includes(a)||v.push(a):f?(u[d]=[a],Ce(p,d)&&(p[d]=u[d])):(d.value=[a],e.k&&(u[e.k]=d.value))}else f?(u[d]=o,Ce(p,d)&&(p[d]=o)):h&&(d.value=o,e.k&&(u[e.k]=o))};o?(y.id=-1,ct(y,n)):y()}}}const ct=Lh;function sg(e){return lg(e)}function lg(e,t){const n=wu();n.__VUE__=!0;const{insert:i,remove:r,patchProp:a,createElement:o,createText:s,createComment:d,setText:c,setElementText:u,parentNode:p,nextSibling:f,setScopeId:h=Tt,insertStaticContent:y}=e,v=(g,b,k,L=null,D=null,M=null,Y=void 0,V=null,z=!!b.dynamicChildren)=>{if(g===b)return;g&&!Bn(g,b)&&(L=F(g),ne(g,D,M,!0),g=null),b.patchFlag===-2&&(z=!1,b.dynamicChildren=null);const{type:$,ref:Q,shapeFlag:ae}=b;switch($){case Vr:R(g,b,k,L);break;case Ot:C(g,b,k,L);break;case Co:g==null&&T(b,k,L,Y);break;case Re:E(g,b,k,L,D,M,Y,V,z);break;default:ae&1?q(g,b,k,L,D,M,Y,V,z):ae&6?U(g,b,k,L,D,M,Y,V,z):(ae&64||ae&128)&&$.process(g,b,k,L,D,M,Y,V,z,ee)}Q!=null&&D&&xs(Q,g&&g.ref,M,b||g,!b)},R=(g,b,k,L)=>{if(g==null)i(b.el=s(b.children),k,L);else{const D=b.el=g.el;b.children!==g.children&&c(D,b.children)}},C=(g,b,k,L)=>{g==null?i(b.el=d(b.children||""),k,L):b.el=g.el},T=(g,b,k,L)=>{[g.el,g.anchor]=y(g.children,b,k,L,g.el,g.anchor)},P=({el:g,anchor:b},k,L)=>{let D;for(;g&&g!==b;)D=f(g),i(g,k,L),g=D;i(b,k,L)},A=({el:g,anchor:b})=>{let k;for(;g&&g!==b;)k=f(g),r(g),g=k;r(b)},q=(g,b,k,L,D,M,Y,V,z)=>{b.type==="svg"?Y="svg":b.type==="math"&&(Y="mathml"),g==null?O(b,k,L,D,M,Y,V,z):N(g,b,D,M,Y,V,z)},O=(g,b,k,L,D,M,Y,V)=>{let z,$;const{props:Q,shapeFlag:ae,transition:ie,dirs:ue}=g;if(z=g.el=o(g.type,M,Q&&Q.is,Q),ae&8?u(z,g.children):ae&16&&x(g.children,z,null,L,D,Ro(g,M),Y,V),ue&&An(g,null,L,"created"),I(z,g,g.scopeId,Y,L),Q){for(const Fe in Q)Fe!=="value"&&!mr(Fe)&&a(z,Fe,null,Q[Fe],M,g.children,L,D,ke);"value"in Q&&a(z,"value",null,Q.value,M),($=Q.onVnodeBeforeMount)&&Jt($,L,g)}ue&&An(g,null,L,"beforeMount");const be=dg(D,ie);be&&ie.beforeEnter(z),i(z,b,k),(($=Q&&Q.onVnodeMounted)||be||ue)&&ct(()=>{$&&Jt($,L,g),be&&ie.enter(z),ue&&An(g,null,L,"mounted")},D)},I=(g,b,k,L,D)=>{if(k&&h(g,k),L)for(let M=0;M{for(let $=z;${const V=b.el=g.el;let{patchFlag:z,dynamicChildren:$,dirs:Q}=b;z|=g.patchFlag&16;const ae=g.props||Ue,ie=b.props||Ue;let ue;if(k&&Dn(k,!1),(ue=ie.onVnodeBeforeUpdate)&&Jt(ue,k,b,g),Q&&An(b,g,k,"beforeUpdate"),k&&Dn(k,!0),$?H(g.dynamicChildren,$,V,k,L,Ro(b,D),M):Y||j(g,b,V,null,k,L,Ro(b,D),M,!1),z>0){if(z&16)K(V,b,ae,ie,k,L,D);else if(z&2&&ae.class!==ie.class&&a(V,"class",null,ie.class,D),z&4&&a(V,"style",ae.style,ie.style,D),z&8){const be=b.dynamicProps;for(let Fe=0;Fe{ue&&Jt(ue,k,b,g),Q&&An(b,g,k,"updated")},L)},H=(g,b,k,L,D,M,Y)=>{for(let V=0;V{if(k!==L){if(k!==Ue)for(const V in k)!mr(V)&&!(V in L)&&a(g,V,k[V],null,Y,b.children,D,M,ke);for(const V in L){if(mr(V))continue;const z=L[V],$=k[V];z!==$&&V!=="value"&&a(g,V,$,z,Y,b.children,D,M,ke)}"value"in L&&a(g,"value",k.value,L.value,Y)}},E=(g,b,k,L,D,M,Y,V,z)=>{const $=b.el=g?g.el:s(""),Q=b.anchor=g?g.anchor:s("");let{patchFlag:ae,dynamicChildren:ie,slotScopeIds:ue}=b;ue&&(V=V?V.concat(ue):ue),g==null?(i($,k,L),i(Q,k,L),x(b.children||[],k,Q,D,M,Y,V,z)):ae>0&&ae&64&&ie&&g.dynamicChildren?(H(g.dynamicChildren,ie,k,D,M,Y,V),(b.key!=null||D&&b===D.subTree)&&_l(g,b,!0)):j(g,b,k,Q,D,M,Y,V,z)},U=(g,b,k,L,D,M,Y,V,z)=>{b.slotScopeIds=V,g==null?b.shapeFlag&512?D.ctx.activate(b,k,L,Y,z):B(b,k,L,D,M,Y,z):oe(g,b,z)},B=(g,b,k,L,D,M,Y)=>{const V=g.component=bg(g,L,D);if(Qa(g)&&(V.ctx.renderer=ee),_g(V),V.asyncDep){if(D&&D.registerDep(V,re),!g.el){const z=V.subTree=m(Ot);C(null,z,b,k)}}else re(V,g,b,k,D,M,Y)},oe=(g,b,k)=>{const L=b.component=g.component;if(xh(g,b,k))if(L.asyncDep&&!L.asyncResolved){te(L,b,k);return}else L.next=b,Th(L.update),L.effect.dirty=!0,L.update();else b.el=g.el,L.vnode=b},re=(g,b,k,L,D,M,Y)=>{const V=()=>{if(g.isMounted){let{next:Q,bu:ae,u:ie,parent:ue,vnode:be}=g;{const jn=pp(g);if(jn){Q&&(Q.el=be.el,te(g,Q,Y)),jn.asyncDep.then(()=>{g.isUnmounted||V()});return}}let Fe=Q,$e;Dn(g,!1),Q?(Q.el=be.el,te(g,Q,Y)):Q=be,ae&&vo(ae),($e=Q.props&&Q.props.onVnodeBeforeUpdate)&&Jt($e,ue,Q,be),Dn(g,!0);const Xe=bo(g),Ft=g.subTree;g.subTree=Xe,v(Ft,Xe,p(Ft.el),F(Ft),g,D,M),Q.el=Xe.el,Fe===null&&Fh(g,Xe.el),ie&&ct(ie,D),($e=Q.props&&Q.props.onVnodeUpdated)&&ct(()=>Jt($e,ue,Q,be),D)}else{let Q;const{el:ae,props:ie}=b,{bm:ue,m:be,parent:Fe}=g,$e=hr(b);if(Dn(g,!1),ue&&vo(ue),!$e&&(Q=ie&&ie.onVnodeBeforeMount)&&Jt(Q,Fe,b),Dn(g,!0),ae&&qe){const Xe=()=>{g.subTree=bo(g),qe(ae,g.subTree,g,D,null)};$e?b.type.__asyncLoader().then(()=>!g.isUnmounted&&Xe()):Xe()}else{const Xe=g.subTree=bo(g);v(null,Xe,k,L,g,D,M),b.el=Xe.el}if(be&&ct(be,D),!$e&&(Q=ie&&ie.onVnodeMounted)){const Xe=b;ct(()=>Jt(Q,Fe,Xe),D)}(b.shapeFlag&256||Fe&&hr(Fe.vnode)&&Fe.vnode.shapeFlag&256)&&g.a&&ct(g.a,D),g.isMounted=!0,b=k=L=null}},z=g.effect=new il(V,Tt,()=>fl($),g.scope),$=g.update=()=>{z.dirty&&z.run()};$.id=g.uid,Dn(g,!0),$()},te=(g,b,k)=>{b.component=g;const L=g.vnode.props;g.vnode=b,g.next=null,ig(g,b.props,L,k),og(g,b.children,k),Zn(),yd(g),Xn()},j=(g,b,k,L,D,M,Y,V,z=!1)=>{const $=g&&g.children,Q=g?g.shapeFlag:0,ae=b.children,{patchFlag:ie,shapeFlag:ue}=b;if(ie>0){if(ie&128){xe($,ae,k,L,D,M,Y,V,z);return}else if(ie&256){Te($,ae,k,L,D,M,Y,V,z);return}}ue&8?(Q&16&&ke($,D,M),ae!==$&&u(k,ae)):Q&16?ue&16?xe($,ae,k,L,D,M,Y,V,z):ke($,D,M,!0):(Q&8&&u(k,""),ue&16&&x(ae,k,L,D,M,Y,V,z))},Te=(g,b,k,L,D,M,Y,V,z)=>{g=g||si,b=b||si;const $=g.length,Q=b.length,ae=Math.min($,Q);let ie;for(ie=0;ieQ?ke(g,D,M,!0,!1,ae):x(b,k,L,D,M,Y,V,z,ae)},xe=(g,b,k,L,D,M,Y,V,z)=>{let $=0;const Q=b.length;let ae=g.length-1,ie=Q-1;for(;$<=ae&&$<=ie;){const ue=g[$],be=b[$]=z?wn(b[$]):zt(b[$]);if(Bn(ue,be))v(ue,be,k,null,D,M,Y,V,z);else break;$++}for(;$<=ae&&$<=ie;){const ue=g[ae],be=b[ie]=z?wn(b[ie]):zt(b[ie]);if(Bn(ue,be))v(ue,be,k,null,D,M,Y,V,z);else break;ae--,ie--}if($>ae){if($<=ie){const ue=ie+1,be=ueie)for(;$<=ae;)ne(g[$],D,M,!0),$++;else{const ue=$,be=$,Fe=new Map;for($=be;$<=ie;$++){const mt=b[$]=z?wn(b[$]):zt(b[$]);mt.key!=null&&Fe.set(mt.key,$)}let $e,Xe=0;const Ft=ie-be+1;let jn=!1,od=0;const Ii=new Array(Ft);for($=0;$=Ft){ne(mt,D,M,!0);continue}let Mt;if(mt.key!=null)Mt=Fe.get(mt.key);else for($e=be;$e<=ie;$e++)if(Ii[$e-be]===0&&Bn(mt,b[$e])){Mt=$e;break}Mt===void 0?ne(mt,D,M,!0):(Ii[Mt-be]=$+1,Mt>=od?od=Mt:jn=!0,v(mt,b[Mt],k,null,D,M,Y,V,z),Xe++)}const sd=jn?cg(Ii):si;for($e=sd.length-1,$=Ft-1;$>=0;$--){const mt=be+$,Mt=b[mt],ld=mt+1{const{el:M,type:Y,transition:V,children:z,shapeFlag:$}=g;if($&6){Z(g.component.subTree,b,k,L);return}if($&128){g.suspense.move(b,k,L);return}if($&64){Y.move(g,b,k,ee);return}if(Y===Re){i(M,b,k);for(let ae=0;aeV.enter(M),D);else{const{leave:ae,delayLeave:ie,afterLeave:ue}=V,be=()=>i(M,b,k),Fe=()=>{ae(M,()=>{be(),ue&&ue()})};ie?ie(M,be,Fe):Fe()}else i(M,b,k)},ne=(g,b,k,L=!1,D=!1)=>{const{type:M,props:Y,ref:V,children:z,dynamicChildren:$,shapeFlag:Q,patchFlag:ae,dirs:ie}=g;if(V!=null&&xs(V,null,k,g,!0),Q&256){b.ctx.deactivate(g);return}const ue=Q&1&&ie,be=!hr(g);let Fe;if(be&&(Fe=Y&&Y.onVnodeBeforeUnmount)&&Jt(Fe,b,g),Q&6)st(g.component,k,L);else{if(Q&128){g.suspense.unmount(k,L);return}ue&&An(g,null,b,"beforeUnmount"),Q&64?g.type.remove(g,b,k,D,ee,L):$&&(M!==Re||ae>0&&ae&64)?ke($,b,k,!1,!0):(M===Re&&ae&384||!D&&Q&16)&&ke(z,b,k),L&&ce(g)}(be&&(Fe=Y&&Y.onVnodeUnmounted)||ue)&&ct(()=>{Fe&&Jt(Fe,b,g),ue&&An(g,null,b,"unmounted")},k)},ce=g=>{const{type:b,el:k,anchor:L,transition:D}=g;if(b===Re){ze(k,L);return}if(b===Co){A(g);return}const M=()=>{r(k),D&&!D.persisted&&D.afterLeave&&D.afterLeave()};if(g.shapeFlag&1&&D&&!D.persisted){const{leave:Y,delayLeave:V}=D,z=()=>Y(k,M);V?V(g.el,M,z):z()}else M()},ze=(g,b)=>{let k;for(;g!==b;)k=f(g),r(g),g=k;r(b)},st=(g,b,k)=>{const{bum:L,scope:D,update:M,subTree:Y,um:V}=g;L&&vo(L),D.stop(),M&&(M.active=!1,ne(Y,g,b,k)),V&&ct(V,b),ct(()=>{g.isUnmounted=!0},b),b&&b.pendingBranch&&!b.isUnmounted&&g.asyncDep&&!g.asyncResolved&&g.suspenseId===b.pendingId&&(b.deps--,b.deps===0&&b.resolve())},ke=(g,b,k,L=!1,D=!1,M=0)=>{for(let Y=M;Yg.shapeFlag&6?F(g.component.subTree):g.shapeFlag&128?g.suspense.next():f(g.anchor||g.el);let X=!1;const W=(g,b,k)=>{g==null?b._vnode&&ne(b._vnode,null,null,!0):v(b._vnode||null,g,b,null,null,null,k),X||(X=!0,yd(),Ju(),X=!1),b._vnode=g},ee={p:v,um:ne,m:Z,r:ce,mt:B,mc:x,pc:j,pbc:H,n:F,o:e};let Ie,qe;return t&&([Ie,qe]=t(ee)),{render:W,hydrate:Ie,createApp:tg(W,Ie)}}function Ro({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Dn({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function dg(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function _l(e,t,n=!1){const i=e.children,r=t.children;if(de(i)&&de(r))for(let a=0;a>1,e[n[s]]0&&(t[i]=n[a-1]),n[a]=i)}}for(a=n.length,o=n[a-1];a-- >0;)n[a]=o,o=t[o];return n}function pp(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:pp(t)}const ug=e=>e.__isTeleport,vr=e=>e&&(e.disabled||e.disabled===""),Pd=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Ed=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Fs=(e,t)=>{const n=e&&e.to;return Ge(n)?t?t(n):null:n},pg={name:"Teleport",__isTeleport:!0,process(e,t,n,i,r,a,o,s,d,c){const{mc:u,pc:p,pbc:f,o:{insert:h,querySelector:y,createText:v,createComment:R}}=c,C=vr(t.props);let{shapeFlag:T,children:P,dynamicChildren:A}=t;if(e==null){const q=t.el=v(""),O=t.anchor=v("");h(q,n,i),h(O,n,i);const I=t.target=Fs(t.props,y),x=t.targetAnchor=v("");I&&(h(x,I),o==="svg"||Pd(I)?o="svg":(o==="mathml"||Ed(I))&&(o="mathml"));const N=(H,K)=>{T&16&&u(P,H,K,r,a,o,s,d)};C?N(n,O):I&&N(I,x)}else{t.el=e.el;const q=t.anchor=e.anchor,O=t.target=e.target,I=t.targetAnchor=e.targetAnchor,x=vr(e.props),N=x?n:O,H=x?q:I;if(o==="svg"||Pd(O)?o="svg":(o==="mathml"||Ed(O))&&(o="mathml"),A?(f(e.dynamicChildren,A,N,r,a,o,s),_l(e,t,!0)):d||p(e,t,N,H,r,a,o,s,!1),C)x?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):aa(t,n,q,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const K=t.target=Fs(t.props,y);K&&aa(t,K,null,c,0)}else x&&aa(t,O,I,c,1)}fp(t)},remove(e,t,n,i,{um:r,o:{remove:a}},o){const{shapeFlag:s,children:d,anchor:c,targetAnchor:u,target:p,props:f}=e;if(p&&a(u),o&&a(c),s&16){const h=o||!vr(f);for(let y=0;y0?Dt||si:null,hg(),Pr>0&&Dt&&Dt.push(e),e}function rt(e,t,n,i,r,a){return mp(Oe(e,t,n,i,r,a,!0))}function Ve(e,t,n,i,r){return mp(m(e,t,n,i,r,!0))}function Ta(e){return e?e.__v_isVNode===!0:!1}function Bn(e,t){return e.type===t.type&&e.key===t.key}const eo="__vInternal",hp=({key:e})=>e??null,ha=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Ge(e)||Ke(e)||pe(e)?{i:Ze,r:e,k:t,f:!!n}:e:null);function Oe(e,t=null,n=null,i=0,r=null,a=e===Re?0:1,o=!1,s=!1){const d={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&hp(t),ref:t&&ha(t),scopeId:Gu,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:i,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:Ze};return s?(Sl(d,n),a&128&&e.normalize(d)):n&&(d.shapeFlag|=Ge(n)?8:16),Pr>0&&!o&&Dt&&(d.patchFlag>0||a&6)&&d.patchFlag!==32&&Dt.push(d),d}const m=gg;function gg(e,t=null,n=null,i=0,r=null,a=!1){if((!e||e===Ku)&&(e=Ot),Ta(e)){const s=tn(e,t,!0);return n&&Sl(s,n),Pr>0&&!a&&Dt&&(s.shapeFlag&6?Dt[Dt.indexOf(e)]=s:Dt.push(s)),s.patchFlag|=-2,s}if(kg(e)&&(e=e.__vccOpts),t){t=yg(t);let{class:s,style:d}=t;s&&!Ge(s)&&(t.class=nl(s)),De(d)&&(Uu(d)&&!de(d)&&(d=We({},d)),t.style=tl(d))}const o=Ge(e)?1:Uh(e)?128:ug(e)?64:De(e)?4:pe(e)?2:0;return Oe(e,t,n,i,r,o,a,!0)}function yg(e){return e?Uu(e)||eo in e?We({},e):e:null}function tn(e,t,n=!1){const{props:i,ref:r,patchFlag:a,children:o}=e,s=t?Ae(i||{},t):i;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:s,key:s&&hp(s),ref:t&&t.ref?n&&r?de(r)?r.concat(ha(t)):[r,ha(t)]:ha(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Re?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&tn(e.ssContent),ssFallback:e.ssFallback&&tn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Be(e=" ",t=0){return m(Vr,null,e,t)}function wt(e="",t=!1){return t?(he(),Ve(Ot,null,e)):m(Ot,null,e)}function zt(e){return e==null||typeof e=="boolean"?m(Ot):de(e)?m(Re,null,e.slice()):typeof e=="object"?wn(e):m(Vr,null,String(e))}function wn(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:tn(e)}function Sl(e,t){let n=0;const{shapeFlag:i}=e;if(t==null)t=null;else if(de(t))n=16;else if(typeof t=="object")if(i&65){const r=t.default;r&&(r._c&&(r._d=!1),Sl(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!(eo in t)?t._ctx=Ze:r===3&&Ze&&(Ze.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else pe(t)?(t={default:t,_ctx:Ze},n=32):(t=String(t),i&64?(n=16,t=[Be(t)]):n=8);e.children=t,e.shapeFlag|=n}function Ae(...e){const t={};for(let n=0;net||Ze;let ka,As;{const e=wu(),t=(n,i)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(i),a=>{r.length>1?r.forEach(o=>o(a)):r[0](a)}};ka=t("__VUE_INSTANCE_SETTERS__",n=>et=n),As=t("__VUE_SSR_SETTERS__",n=>to=n)}const Mr=e=>{const t=et;return ka(e),e.scope.on(),()=>{e.scope.off(),ka(t)}},Fd=()=>{et&&et.scope.off(),ka(null)};function gp(e){return e.vnode.shapeFlag&4}let to=!1;function _g(e,t=!1){t&&As(t);const{props:n,children:i}=e.vnode,r=gp(e);ng(e,n,r,t),ag(e,i);const a=r?Sg(e,t):void 0;return t&&As(!1),a}function Sg(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=dl(new Proxy(e.ctx,Wh));const{setup:i}=n;if(i){const r=e.setupContext=i.length>1?Cg(e):null,a=Mr(e);Zn();const o=Tn(i,e,0,[e.props,r]);if(Xn(),a(),gu(o)){if(o.then(Fd,Fd),t)return o.then(s=>{Ad(e,s,t)}).catch(s=>{Za(s,e,0)});e.asyncDep=o}else Ad(e,o,t)}else yp(e,t)}function Ad(e,t,n){pe(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:De(t)&&(e.setupState=$u(t)),yp(e,n)}let Dd;function yp(e,t,n){const i=e.type;if(!e.render){if(!t&&Dd&&!i.render){const r=i.template||wl(e).template;if(r){const{isCustomElement:a,compilerOptions:o}=e.appContext.config,{delimiters:s,compilerOptions:d}=i,c=We(We({isCustomElement:a,delimiters:s},o),d);i.render=Dd(r,c)}}e.render=i.render||Tt}{const r=Mr(e);Zn();try{Yh(e)}finally{Xn(),r()}}}function Rg(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return ut(e,"get","$attrs"),t[n]}}))}function Cg(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return Rg(e)},slots:e.slots,emit:e.emit,expose:t}}function no(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy($u(dl(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in gr)return gr[n](e)},has(t,n){return n in t||n in gr}}))}function Tg(e,t=!0){return pe(e)?e.displayName||e.name:e.name||t&&e.__name}function kg(e){return pe(e)&&"__vccOpts"in e}const S=(e,t)=>vh(e,t,to);function Kt(e,t,n){const i=arguments.length;return i===2?De(t)&&!de(t)?Ta(t)?m(e,null,[t]):m(e,t):m(e,null,t):(i>3?n=Array.prototype.slice.call(arguments,2):i===3&&Ta(n)&&(n=[n]),m(e,t,n))}const Og="3.4.19";/** +* @vue/runtime-dom v3.4.19 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const Ig="http://www.w3.org/2000/svg",Pg="http://www.w3.org/1998/Math/MathML",bn=typeof document<"u"?document:null,Ud=bn&&bn.createElement("template"),Eg={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,i)=>{const r=t==="svg"?bn.createElementNS(Ig,e):t==="mathml"?bn.createElementNS(Pg,e):bn.createElement(e,n?{is:n}:void 0);return e==="select"&&i&&i.multiple!=null&&r.setAttribute("multiple",i.multiple),r},createText:e=>bn.createTextNode(e),createComment:e=>bn.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>bn.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,i,r,a){const o=n?n.previousSibling:t.lastChild;if(r&&(r===a||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===a||!(r=r.nextSibling)););else{Ud.innerHTML=i==="svg"?`${e}`:i==="mathml"?`${e}`:e;const s=Ud.content;if(i==="svg"||i==="mathml"){const d=s.firstChild;for(;d.firstChild;)s.appendChild(d.firstChild);s.removeChild(d)}t.insertBefore(s,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},fn="transition",Pi="animation",pi=Symbol("_vtc"),nn=(e,{slots:t})=>Kt(Vh,wp(e),t);nn.displayName="Transition";const vp={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},xg=nn.props=We({},Zu,vp),Un=(e,t=[])=>{de(e)?e.forEach(n=>n(...t)):e&&e(...t)},Ld=e=>e?de(e)?e.some(t=>t.length>1):e.length>1:!1;function wp(e){const t={};for(const E in e)E in vp||(t[E]=e[E]);if(e.css===!1)return t;const{name:n="v",type:i,duration:r,enterFromClass:a=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:s=`${n}-enter-to`,appearFromClass:d=a,appearActiveClass:c=o,appearToClass:u=s,leaveFromClass:p=`${n}-leave-from`,leaveActiveClass:f=`${n}-leave-active`,leaveToClass:h=`${n}-leave-to`}=e,y=Fg(r),v=y&&y[0],R=y&&y[1],{onBeforeEnter:C,onEnter:T,onEnterCancelled:P,onLeave:A,onLeaveCancelled:q,onBeforeAppear:O=C,onAppear:I=T,onAppearCancelled:x=P}=t,N=(E,U,B)=>{hn(E,U?u:s),hn(E,U?c:o),B&&B()},H=(E,U)=>{E._isLeaving=!1,hn(E,p),hn(E,h),hn(E,f),U&&U()},K=E=>(U,B)=>{const oe=E?I:T,re=()=>N(U,E,B);Un(oe,[U,re]),Nd(()=>{hn(U,E?d:a),Xt(U,E?u:s),Ld(oe)||qd(U,i,v,re)})};return We(t,{onBeforeEnter(E){Un(C,[E]),Xt(E,a),Xt(E,o)},onBeforeAppear(E){Un(O,[E]),Xt(E,d),Xt(E,c)},onEnter:K(!1),onAppear:K(!0),onLeave(E,U){E._isLeaving=!0;const B=()=>H(E,U);Xt(E,p),_p(),Xt(E,f),Nd(()=>{E._isLeaving&&(hn(E,p),Xt(E,h),Ld(A)||qd(E,i,R,B))}),Un(A,[E,B])},onEnterCancelled(E){N(E,!1),Un(P,[E])},onAppearCancelled(E){N(E,!0),Un(x,[E])},onLeaveCancelled(E){H(E),Un(q,[E])}})}function Fg(e){if(e==null)return null;if(De(e))return[To(e.enter),To(e.leave)];{const t=To(e);return[t,t]}}function To(e){return Jm(e)}function Xt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[pi]||(e[pi]=new Set)).add(t)}function hn(e,t){t.split(/\s+/).forEach(i=>i&&e.classList.remove(i));const n=e[pi];n&&(n.delete(t),n.size||(e[pi]=void 0))}function Nd(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Ag=0;function qd(e,t,n,i){const r=e._endId=++Ag,a=()=>{r===e._endId&&i()};if(n)return setTimeout(a,n);const{type:o,timeout:s,propCount:d}=bp(e,t);if(!o)return i();const c=o+"end";let u=0;const p=()=>{e.removeEventListener(c,f),a()},f=h=>{h.target===e&&++u>=d&&p()};setTimeout(()=>{u(n[y]||"").split(", "),r=i(`${fn}Delay`),a=i(`${fn}Duration`),o=$d(r,a),s=i(`${Pi}Delay`),d=i(`${Pi}Duration`),c=$d(s,d);let u=null,p=0,f=0;t===fn?o>0&&(u=fn,p=o,f=a.length):t===Pi?c>0&&(u=Pi,p=c,f=d.length):(p=Math.max(o,c),u=p>0?o>c?fn:Pi:null,f=u?u===fn?a.length:d.length:0);const h=u===fn&&/\b(transform|all)(,|$)/.test(i(`${fn}Property`).toString());return{type:u,timeout:p,propCount:f,hasTransform:h}}function $d(e,t){for(;e.lengthBd(n)+Bd(e[i])))}function Bd(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function _p(){return document.body.offsetHeight}function Dg(e,t,n){const i=e[pi];i&&(t=(t?[t,...i]:[...i]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Er=Symbol("_vod"),bi={beforeMount(e,{value:t},{transition:n}){e[Er]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Ei(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:i}){!t==!n&&(e.style.display===e[Er]||!t)||(i?t?(i.beforeEnter(e),Ei(e,!0),i.enter(e)):i.leave(e,()=>{Ei(e,!1)}):Ei(e,t))},beforeUnmount(e,{value:t}){Ei(e,t)}};function Ei(e,t){e.style.display=t?e[Er]:"none"}const Ug=Symbol(""),Lg=/(^|;)\s*display\s*:/;function Ng(e,t,n){const i=e.style,r=Ge(n),a=i.display;let o=!1;if(n&&!r){if(t&&!Ge(t))for(const s in t)n[s]==null&&Ds(i,s,"");for(const s in n)s==="display"&&(o=!0),Ds(i,s,n[s])}else if(r){if(t!==n){const s=i[Ug];s&&(n+=";"+s),i.cssText=n,o=Lg.test(n)}}else t&&e.removeAttribute("style");Er in e&&(e[Er]=o?i.display:"",i.display=a)}const Vd=/\s*!important$/;function Ds(e,t,n){if(de(n))n.forEach(i=>Ds(e,t,i));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const i=qg(e,t);Vd.test(n)?e.setProperty(vi(i),n.replace(Vd,""),"important"):e[i]=n}}const Md=["Webkit","Moz","ms"],ko={};function qg(e,t){const n=ko[t];if(n)return n;let i=It(t);if(i!=="filter"&&i in e)return ko[t]=i;i=an(i);for(let r=0;rOo||(Hg.then(()=>Oo=0),Oo=Date.now());function Kg(e,t){const n=i=>{if(!i._vts)i._vts=Date.now();else if(i._vts<=n.attached)return;kt(Wg(i,n.value),t,5,[i])};return n.value=e,n.attached=Gg(),n}function Wg(e,t){if(de(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(i=>r=>!r._stopped&&i&&i(r))}else return t}const Gd=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Yg=(e,t,n,i,r,a,o,s,d)=>{const c=r==="svg";t==="class"?Dg(e,i,c):t==="style"?Ng(e,n,i):Ha(t)?Qs(t)||Jg(e,t,n,i,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Zg(e,t,i,c))?Bg(e,t,i,a,o,s,d):(t==="true-value"?e._trueValue=i:t==="false-value"&&(e._falseValue=i),$g(e,t,i,c))};function Zg(e,t,n,i){if(i)return!!(t==="innerHTML"||t==="textContent"||t in e&&Gd(t)&&pe(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Gd(t)&&Ge(n)?!1:t in e}const Sp=new WeakMap,Rp=new WeakMap,Oa=Symbol("_moveCb"),Kd=Symbol("_enterCb"),Cp={name:"TransitionGroup",props:We({},xg,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Rl(),i=Yu();let r,a;return tp(()=>{if(!r.length)return;const o=e.moveClass||`${e.name||"v"}-move`;if(!ny(r[0].el,n.vnode.el,o))return;r.forEach(jg),r.forEach(ey);const s=r.filter(ty);_p(),s.forEach(d=>{const c=d.el,u=c.style;Xt(c,o),u.transform=u.webkitTransform=u.transitionDuration="";const p=c[Oa]=f=>{f&&f.target!==c||(!f||/transform$/.test(f.propertyName))&&(c.removeEventListener("transitionend",p),c[Oa]=null,hn(c,o))};c.addEventListener("transitionend",p)})}),()=>{const o=_e(e),s=wp(o);let d=o.tag||Re;r=a,a=t.default?yl(t.default()):[];for(let c=0;cdelete e.mode;Cp.props;const Qg=Cp;function jg(e){const t=e.el;t[Oa]&&t[Oa](),t[Kd]&&t[Kd]()}function ey(e){Rp.set(e,e.el.getBoundingClientRect())}function ty(e){const t=Sp.get(e),n=Rp.get(e),i=t.left-n.left,r=t.top-n.top;if(i||r){const a=e.el.style;return a.transform=a.webkitTransform=`translate(${i}px,${r}px)`,a.transitionDuration="0s",e}}function ny(e,t,n){const i=e.cloneNode(),r=e[pi];r&&r.forEach(s=>{s.split(/\s+/).forEach(d=>d&&i.classList.remove(d))}),n.split(/\s+/).forEach(s=>s&&i.classList.add(s)),i.style.display="none";const a=t.nodeType===1?t:t.parentNode;a.appendChild(i);const{hasTransform:o}=bp(i);return a.removeChild(i),o}const iy=We({patchProp:Yg},Eg);let Wd;function ry(){return Wd||(Wd=sg(iy))}const ay=(...e)=>{const t=ry().createApp(...e),{mount:n}=t;return t.mount=i=>{const r=sy(i);if(!r)return;const a=t._component;!pe(a)&&!a.render&&!a.template&&(a.template=r.innerHTML),r.innerHTML="";const o=n(r,!1,oy(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t};function oy(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function sy(e){return Ge(e)?document.querySelector(e):e}/*! + * vue-router v4.2.5 + * (c) 2023 Eduardo San Martin Morote + * @license MIT + */const ri=typeof window<"u";function ly(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const Ee=Object.assign;function Io(e,t){const n={};for(const i in t){const r=t[i];n[i]=Ut(r)?r.map(e):e(r)}return n}const br=()=>{},Ut=Array.isArray,dy=/\/$/,cy=e=>e.replace(dy,"");function Po(e,t,n="/"){let i,r={},a="",o="";const s=t.indexOf("#");let d=t.indexOf("?");return s=0&&(d=-1),d>-1&&(i=t.slice(0,d),a=t.slice(d+1,s>-1?s:t.length),r=e(a)),s>-1&&(i=i||t.slice(0,s),o=t.slice(s,t.length)),i=my(i??t,n),{fullPath:i+(a&&"?")+a+o,path:i,query:r,hash:o}}function uy(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Yd(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function py(e,t,n){const i=t.matched.length-1,r=n.matched.length-1;return i>-1&&i===r&&fi(t.matched[i],n.matched[r])&&Tp(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function fi(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Tp(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!fy(e[n],t[n]))return!1;return!0}function fy(e,t){return Ut(e)?Zd(e,t):Ut(t)?Zd(t,e):e===t}function Zd(e,t){return Ut(t)?e.length===t.length&&e.every((n,i)=>n===t[i]):e.length===1&&e[0]===t}function my(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),i=e.split("/"),r=i[i.length-1];(r===".."||r===".")&&i.push("");let a=n.length-1,o,s;for(o=0;o1&&a--;else break;return n.slice(0,a).join("/")+"/"+i.slice(o-(o===i.length?1:0)).join("/")}var xr;(function(e){e.pop="pop",e.push="push"})(xr||(xr={}));var _r;(function(e){e.back="back",e.forward="forward",e.unknown=""})(_r||(_r={}));function hy(e){if(!e)if(ri){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),cy(e)}const gy=/^[^#]+#/;function yy(e,t){return e.replace(gy,"#")+t}function vy(e,t){const n=document.documentElement.getBoundingClientRect(),i=e.getBoundingClientRect();return{behavior:t.behavior,left:i.left-n.left-(t.left||0),top:i.top-n.top-(t.top||0)}}const io=()=>({left:window.pageXOffset,top:window.pageYOffset});function wy(e){let t;if("el"in e){const n=e.el,i=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?i?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=vy(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function Xd(e,t){return(history.state?history.state.position-t:-1)+e}const Us=new Map;function by(e,t){Us.set(e,t)}function _y(e){const t=Us.get(e);return Us.delete(e),t}let Sy=()=>location.protocol+"//"+location.host;function kp(e,t){const{pathname:n,search:i,hash:r}=t,a=e.indexOf("#");if(a>-1){let s=r.includes(e.slice(a))?e.slice(a).length:1,d=r.slice(s);return d[0]!=="/"&&(d="/"+d),Yd(d,"")}return Yd(n,e)+i+r}function Ry(e,t,n,i){let r=[],a=[],o=null;const s=({state:f})=>{const h=kp(e,location),y=n.value,v=t.value;let R=0;if(f){if(n.value=h,t.value=f,o&&o===y){o=null;return}R=v?f.position-v.position:0}else i(h);r.forEach(C=>{C(n.value,y,{delta:R,type:xr.pop,direction:R?R>0?_r.forward:_r.back:_r.unknown})})};function d(){o=n.value}function c(f){r.push(f);const h=()=>{const y=r.indexOf(f);y>-1&&r.splice(y,1)};return a.push(h),h}function u(){const{history:f}=window;f.state&&f.replaceState(Ee({},f.state,{scroll:io()}),"")}function p(){for(const f of a)f();a=[],window.removeEventListener("popstate",s),window.removeEventListener("beforeunload",u)}return window.addEventListener("popstate",s),window.addEventListener("beforeunload",u,{passive:!0}),{pauseListeners:d,listen:c,destroy:p}}function Qd(e,t,n,i=!1,r=!1){return{back:e,current:t,forward:n,replaced:i,position:window.history.length,scroll:r?io():null}}function Cy(e){const{history:t,location:n}=window,i={value:kp(e,n)},r={value:t.state};r.value||a(i.value,{back:null,current:i.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(d,c,u){const p=e.indexOf("#"),f=p>-1?(n.host&&document.querySelector("base")?e:e.slice(p))+d:Sy()+e+d;try{t[u?"replaceState":"pushState"](c,"",f),r.value=c}catch(h){console.error(h),n[u?"replace":"assign"](f)}}function o(d,c){const u=Ee({},t.state,Qd(r.value.back,d,r.value.forward,!0),c,{position:r.value.position});a(d,u,!0),i.value=d}function s(d,c){const u=Ee({},r.value,t.state,{forward:d,scroll:io()});a(u.current,u,!0);const p=Ee({},Qd(i.value,d,null),{position:u.position+1},c);a(d,p,!1),i.value=d}return{location:i,state:r,push:s,replace:o}}function Ty(e){e=hy(e);const t=Cy(e),n=Ry(e,t.state,t.location,t.replace);function i(a,o=!0){o||n.pauseListeners(),history.go(a)}const r=Ee({location:"",base:e,go:i,createHref:yy.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function ky(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),Ty(e)}function Oy(e){return typeof e=="string"||e&&typeof e=="object"}function Op(e){return typeof e=="string"||typeof e=="symbol"}const mn={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},Ip=Symbol("");var jd;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(jd||(jd={}));function mi(e,t){return Ee(new Error,{type:e,[Ip]:!0},t)}function Zt(e,t){return e instanceof Error&&Ip in e&&(t==null||!!(e.type&t))}const ec="[^/]+?",Iy={sensitive:!1,strict:!1,start:!0,end:!0},Py=/[.+*?^${}()[\]/\\]/g;function Ey(e,t){const n=Ee({},Iy,t),i=[];let r=n.start?"^":"";const a=[];for(const c of e){const u=c.length?[]:[90];n.strict&&!c.length&&(r+="/");for(let p=0;pt.length?t.length===1&&t[0]===80?1:-1:0}function Fy(e,t){let n=0;const i=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Ay={type:0,value:""},Dy=/[a-zA-Z0-9_]/;function Uy(e){if(!e)return[[]];if(e==="/")return[[Ay]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(h){throw new Error(`ERR (${n})/"${c}": ${h}`)}let n=0,i=n;const r=[];let a;function o(){a&&r.push(a),a=[]}let s=0,d,c="",u="";function p(){c&&(n===0?a.push({type:0,value:c}):n===1||n===2||n===3?(a.length>1&&(d==="*"||d==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:c,regexp:u,repeatable:d==="*"||d==="+",optional:d==="*"||d==="?"})):t("Invalid state to consume buffer"),c="")}function f(){c+=d}for(;s{o(T)}:br}function o(u){if(Op(u)){const p=i.get(u);p&&(i.delete(u),n.splice(n.indexOf(p),1),p.children.forEach(o),p.alias.forEach(o))}else{const p=n.indexOf(u);p>-1&&(n.splice(p,1),u.record.name&&i.delete(u.record.name),u.children.forEach(o),u.alias.forEach(o))}}function s(){return n}function d(u){let p=0;for(;p=0&&(u.record.path!==n[p].record.path||!Pp(u,n[p]));)p++;n.splice(p,0,u),u.record.name&&!ic(u)&&i.set(u.record.name,u)}function c(u,p){let f,h={},y,v;if("name"in u&&u.name){if(f=i.get(u.name),!f)throw mi(1,{location:u});v=f.record.name,h=Ee(nc(p.params,f.keys.filter(T=>!T.optional).map(T=>T.name)),u.params&&nc(u.params,f.keys.map(T=>T.name))),y=f.stringify(h)}else if("path"in u)y=u.path,f=n.find(T=>T.re.test(y)),f&&(h=f.parse(y),v=f.record.name);else{if(f=p.name?i.get(p.name):n.find(T=>T.re.test(p.path)),!f)throw mi(1,{location:u,currentLocation:p});v=f.record.name,h=Ee({},p.params,u.params),y=f.stringify(h)}const R=[];let C=f;for(;C;)R.unshift(C.record),C=C.parent;return{name:v,path:y,params:h,matched:R,meta:By(R)}}return e.forEach(u=>a(u)),{addRoute:a,resolve:c,removeRoute:o,getRoutes:s,getRecordMatcher:r}}function nc(e,t){const n={};for(const i of t)i in e&&(n[i]=e[i]);return n}function qy(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:$y(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function $y(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const i in e.components)t[i]=typeof n=="object"?n[i]:n;return t}function ic(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function By(e){return e.reduce((t,n)=>Ee(t,n.meta),{})}function rc(e,t){const n={};for(const i in e)n[i]=i in t?t[i]:e[i];return n}function Pp(e,t){return t.children.some(n=>n===e||Pp(e,n))}const Ep=/#/g,Vy=/&/g,My=/\//g,Jy=/=/g,zy=/\?/g,xp=/\+/g,Hy=/%5B/g,Gy=/%5D/g,Fp=/%5E/g,Ky=/%60/g,Ap=/%7B/g,Wy=/%7C/g,Dp=/%7D/g,Yy=/%20/g;function Cl(e){return encodeURI(""+e).replace(Wy,"|").replace(Hy,"[").replace(Gy,"]")}function Zy(e){return Cl(e).replace(Ap,"{").replace(Dp,"}").replace(Fp,"^")}function Ls(e){return Cl(e).replace(xp,"%2B").replace(Yy,"+").replace(Ep,"%23").replace(Vy,"%26").replace(Ky,"`").replace(Ap,"{").replace(Dp,"}").replace(Fp,"^")}function Xy(e){return Ls(e).replace(Jy,"%3D")}function Qy(e){return Cl(e).replace(Ep,"%23").replace(zy,"%3F")}function jy(e){return e==null?"":Qy(e).replace(My,"%2F")}function Ia(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function ev(e){const t={};if(e===""||e==="?")return t;const i=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;ra&&Ls(a)):[i&&Ls(i)]).forEach(a=>{a!==void 0&&(t+=(t.length?"&":"")+n,a!=null&&(t+="="+a))})}return t}function tv(e){const t={};for(const n in e){const i=e[n];i!==void 0&&(t[n]=Ut(i)?i.map(r=>r==null?null:""+r):i==null?i:""+i)}return t}const nv=Symbol(""),oc=Symbol(""),Tl=Symbol(""),Up=Symbol(""),Ns=Symbol("");function xi(){let e=[];function t(i){return e.push(i),()=>{const r=e.indexOf(i);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function _n(e,t,n,i,r){const a=i&&(i.enterCallbacks[r]=i.enterCallbacks[r]||[]);return()=>new Promise((o,s)=>{const d=p=>{p===!1?s(mi(4,{from:n,to:t})):p instanceof Error?s(p):Oy(p)?s(mi(2,{from:t,to:p})):(a&&i.enterCallbacks[r]===a&&typeof p=="function"&&a.push(p),o())},c=e.call(i&&i.instances[r],t,n,d);let u=Promise.resolve(c);e.length<3&&(u=u.then(d)),u.catch(p=>s(p))})}function Eo(e,t,n,i){const r=[];for(const a of e)for(const o in a.components){let s=a.components[o];if(!(t!=="beforeRouteEnter"&&!a.instances[o]))if(iv(s)){const c=(s.__vccOpts||s)[t];c&&r.push(_n(c,n,i,a,o))}else{let d=s();r.push(()=>d.then(c=>{if(!c)return Promise.reject(new Error(`Couldn't resolve component "${o}" at "${a.path}"`));const u=ly(c)?c.default:c;a.components[o]=u;const f=(u.__vccOpts||u)[t];return f&&_n(f,n,i,a,o)()}))}}return r}function iv(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function sc(e){const t=Le(Tl),n=Le(Up),i=S(()=>t.resolve(dt(e.to))),r=S(()=>{const{matched:d}=i.value,{length:c}=d,u=d[c-1],p=n.matched;if(!u||!p.length)return-1;const f=p.findIndex(fi.bind(null,u));if(f>-1)return f;const h=lc(d[c-2]);return c>1&&lc(u)===h&&p[p.length-1].path!==h?p.findIndex(fi.bind(null,d[c-2])):f}),a=S(()=>r.value>-1&&sv(n.params,i.value.params)),o=S(()=>r.value>-1&&r.value===n.matched.length-1&&Tp(n.params,i.value.params));function s(d={}){return ov(d)?t[dt(e.replace)?"replace":"push"](dt(e.to)).catch(br):Promise.resolve()}return{route:i,href:S(()=>i.value.href),isActive:a,isExactActive:o,navigate:s}}const rv=ot({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:sc,setup(e,{slots:t}){const n=nt(sc(e)),{options:i}=Le(Tl),r=S(()=>({[dc(e.activeClass,i.linkActiveClass,"router-link-active")]:n.isActive,[dc(e.exactActiveClass,i.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const a=t.default&&t.default(n);return e.custom?a:Kt("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},a)}}}),av=rv;function ov(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function sv(e,t){for(const n in t){const i=t[n],r=e[n];if(typeof i=="string"){if(i!==r)return!1}else if(!Ut(r)||r.length!==i.length||i.some((a,o)=>a!==r[o]))return!1}return!0}function lc(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const dc=(e,t,n)=>e??t??n,lv=ot({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const i=Le(Ns),r=S(()=>e.route||i.value),a=Le(oc,0),o=S(()=>{let c=dt(a);const{matched:u}=r.value;let p;for(;(p=u[c])&&!p.components;)c++;return c}),s=S(()=>r.value.matched[o.value]);_t(oc,S(()=>o.value+1)),_t(nv,s),_t(Ns,r);const d=we();return fe(()=>[d.value,s.value,e.name],([c,u,p],[f,h,y])=>{u&&(u.instances[p]=c,h&&h!==u&&c&&c===f&&(u.leaveGuards.size||(u.leaveGuards=h.leaveGuards),u.updateGuards.size||(u.updateGuards=h.updateGuards))),c&&u&&(!h||!fi(u,h)||!f)&&(u.enterCallbacks[p]||[]).forEach(v=>v(c))},{flush:"post"}),()=>{const c=r.value,u=e.name,p=s.value,f=p&&p.components[u];if(!f)return cc(n.default,{Component:f,route:c});const h=p.props[u],y=h?h===!0?c.params:typeof h=="function"?h(c):h:null,R=Kt(f,Ee({},y,t,{onVnodeUnmounted:C=>{C.component.isUnmounted&&(p.instances[u]=null)},ref:d}));return cc(n.default,{Component:R,route:c})||R}}});function cc(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const dv=lv;function cv(e){const t=Ny(e.routes,e),n=e.parseQuery||ev,i=e.stringifyQuery||ac,r=e.history,a=xi(),o=xi(),s=xi(),d=ve(mn);let c=mn;ri&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=Io.bind(null,F=>""+F),p=Io.bind(null,jy),f=Io.bind(null,Ia);function h(F,X){let W,ee;return Op(F)?(W=t.getRecordMatcher(F),ee=X):ee=F,t.addRoute(ee,W)}function y(F){const X=t.getRecordMatcher(F);X&&t.removeRoute(X)}function v(){return t.getRoutes().map(F=>F.record)}function R(F){return!!t.getRecordMatcher(F)}function C(F,X){if(X=Ee({},X||d.value),typeof F=="string"){const b=Po(n,F,X.path),k=t.resolve({path:b.path},X),L=r.createHref(b.fullPath);return Ee(b,k,{params:f(k.params),hash:Ia(b.hash),redirectedFrom:void 0,href:L})}let W;if("path"in F)W=Ee({},F,{path:Po(n,F.path,X.path).path});else{const b=Ee({},F.params);for(const k in b)b[k]==null&&delete b[k];W=Ee({},F,{params:p(b)}),X.params=p(X.params)}const ee=t.resolve(W,X),Ie=F.hash||"";ee.params=u(f(ee.params));const qe=uy(i,Ee({},F,{hash:Zy(Ie),path:ee.path})),g=r.createHref(qe);return Ee({fullPath:qe,hash:Ie,query:i===ac?tv(F.query):F.query||{}},ee,{redirectedFrom:void 0,href:g})}function T(F){return typeof F=="string"?Po(n,F,d.value.path):Ee({},F)}function P(F,X){if(c!==F)return mi(8,{from:X,to:F})}function A(F){return I(F)}function q(F){return A(Ee(T(F),{replace:!0}))}function O(F){const X=F.matched[F.matched.length-1];if(X&&X.redirect){const{redirect:W}=X;let ee=typeof W=="function"?W(F):W;return typeof ee=="string"&&(ee=ee.includes("?")||ee.includes("#")?ee=T(ee):{path:ee},ee.params={}),Ee({query:F.query,hash:F.hash,params:"path"in ee?{}:F.params},ee)}}function I(F,X){const W=c=C(F),ee=d.value,Ie=F.state,qe=F.force,g=F.replace===!0,b=O(W);if(b)return I(Ee(T(b),{state:typeof b=="object"?Ee({},Ie,b.state):Ie,force:qe,replace:g}),X||W);const k=W;k.redirectedFrom=X;let L;return!qe&&py(i,ee,W)&&(L=mi(16,{to:k,from:ee}),Z(ee,ee,!0,!1)),(L?Promise.resolve(L):H(k,ee)).catch(D=>Zt(D)?Zt(D,2)?D:xe(D):j(D,k,ee)).then(D=>{if(D){if(Zt(D,2))return I(Ee({replace:g},T(D.to),{state:typeof D.to=="object"?Ee({},Ie,D.to.state):Ie,force:qe}),X||k)}else D=E(k,ee,!0,g,Ie);return K(k,ee,D),D})}function x(F,X){const W=P(F,X);return W?Promise.reject(W):Promise.resolve()}function N(F){const X=ze.values().next().value;return X&&typeof X.runWithContext=="function"?X.runWithContext(F):F()}function H(F,X){let W;const[ee,Ie,qe]=uv(F,X);W=Eo(ee.reverse(),"beforeRouteLeave",F,X);for(const b of ee)b.leaveGuards.forEach(k=>{W.push(_n(k,F,X))});const g=x.bind(null,F,X);return W.push(g),ke(W).then(()=>{W=[];for(const b of a.list())W.push(_n(b,F,X));return W.push(g),ke(W)}).then(()=>{W=Eo(Ie,"beforeRouteUpdate",F,X);for(const b of Ie)b.updateGuards.forEach(k=>{W.push(_n(k,F,X))});return W.push(g),ke(W)}).then(()=>{W=[];for(const b of qe)if(b.beforeEnter)if(Ut(b.beforeEnter))for(const k of b.beforeEnter)W.push(_n(k,F,X));else W.push(_n(b.beforeEnter,F,X));return W.push(g),ke(W)}).then(()=>(F.matched.forEach(b=>b.enterCallbacks={}),W=Eo(qe,"beforeRouteEnter",F,X),W.push(g),ke(W))).then(()=>{W=[];for(const b of o.list())W.push(_n(b,F,X));return W.push(g),ke(W)}).catch(b=>Zt(b,8)?b:Promise.reject(b))}function K(F,X,W){s.list().forEach(ee=>N(()=>ee(F,X,W)))}function E(F,X,W,ee,Ie){const qe=P(F,X);if(qe)return qe;const g=X===mn,b=ri?history.state:{};W&&(ee||g?r.replace(F.fullPath,Ee({scroll:g&&b&&b.scroll},Ie)):r.push(F.fullPath,Ie)),d.value=F,Z(F,X,W,g),xe()}let U;function B(){U||(U=r.listen((F,X,W)=>{if(!st.listening)return;const ee=C(F),Ie=O(ee);if(Ie){I(Ee(Ie,{replace:!0}),ee).catch(br);return}c=ee;const qe=d.value;ri&&by(Xd(qe.fullPath,W.delta),io()),H(ee,qe).catch(g=>Zt(g,12)?g:Zt(g,2)?(I(g.to,ee).then(b=>{Zt(b,20)&&!W.delta&&W.type===xr.pop&&r.go(-1,!1)}).catch(br),Promise.reject()):(W.delta&&r.go(-W.delta,!1),j(g,ee,qe))).then(g=>{g=g||E(ee,qe,!1),g&&(W.delta&&!Zt(g,8)?r.go(-W.delta,!1):W.type===xr.pop&&Zt(g,20)&&r.go(-1,!1)),K(ee,qe,g)}).catch(br)}))}let oe=xi(),re=xi(),te;function j(F,X,W){xe(F);const ee=re.list();return ee.length?ee.forEach(Ie=>Ie(F,X,W)):console.error(F),Promise.reject(F)}function Te(){return te&&d.value!==mn?Promise.resolve():new Promise((F,X)=>{oe.add([F,X])})}function xe(F){return te||(te=!F,B(),oe.list().forEach(([X,W])=>F?W(F):X()),oe.reset()),F}function Z(F,X,W,ee){const{scrollBehavior:Ie}=e;if(!ri||!Ie)return Promise.resolve();const qe=!W&&_y(Xd(F.fullPath,0))||(ee||!W)&&history.state&&history.state.scroll||null;return pt().then(()=>Ie(F,X,qe)).then(g=>g&&wy(g)).catch(g=>j(g,F,X))}const ne=F=>r.go(F);let ce;const ze=new Set,st={currentRoute:d,listening:!0,addRoute:h,removeRoute:y,hasRoute:R,getRoutes:v,resolve:C,options:e,push:A,replace:q,go:ne,back:()=>ne(-1),forward:()=>ne(1),beforeEach:a.add,beforeResolve:o.add,afterEach:s.add,onError:re.add,isReady:Te,install(F){const X=this;F.component("RouterLink",av),F.component("RouterView",dv),F.config.globalProperties.$router=X,Object.defineProperty(F.config.globalProperties,"$route",{enumerable:!0,get:()=>dt(d)}),ri&&!ce&&d.value===mn&&(ce=!0,A(r.location).catch(Ie=>{}));const W={};for(const Ie in mn)Object.defineProperty(W,Ie,{get:()=>d.value[Ie],enumerable:!0});F.provide(Tl,X),F.provide(Up,Du(W)),F.provide(Ns,d);const ee=F.unmount;ze.add(F),F.unmount=function(){ze.delete(F),ze.size<1&&(c=mn,U&&U(),U=null,d.value=mn,ce=!1,te=!1),ee()}}};function ke(F){return F.reduce((X,W)=>X.then(()=>N(W)),Promise.resolve())}return st}function uv(e,t){const n=[],i=[],r=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;ofi(c,s))?i.push(s):n.push(s));const d=e.matched[o];d&&(t.matched.find(c=>fi(c,d))||r.push(d))}return[n,i,r]}var pv=!1;/*! + * pinia v2.1.7 + * (c) 2023 Eduardo San Martin Morote + * @license MIT + */const fv=Symbol();var uc;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(uc||(uc={}));function mv(){const e=Wa(!0),t=e.run(()=>we({}));let n=[],i=[];const r=dl({install(a){r._a=a,a.provide(fv,r),a.config.globalProperties.$pinia=r,i.forEach(o=>n.push(o)),i=[]},use(a){return!this._a&&!pv?i.push(a):n.push(a),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const hv=ot({name:"GlobalSearchDialog",props:{},watch:{dialog:function(e){setTimeout(()=>{if(e){let t=document.getElementById("id_global_search_input");t!=null&&t.focus()}},20)},search_query:function(e){this.selected_result>=this.search_results.length&&(this.selected_result=this.search_results.length-1)}},data(){return{dialog:!1,recipes:[],flat_recipes:[],search_query:null,selected_result:0}},computed:{search_results:function(){let e=[];return this.search_query!=""&&this.search_query!=null?(e.push({name:this.search_query,icon:"fas fa-search",suffix:"Advanced Search"}),this.flat_recipes.filter(t=>t.name.toLowerCase().includes(this.search_query.toLowerCase())).slice(0,10).forEach(t=>{e.push({name:t.name,image:t.image,recipe_id:t.id})})):(e.push({name:"Recent 1",icon:"fas fa-history"}),e.push({name:"Recent 2",icon:"fas fa-history"}),e.push({name:"Recent 3",icon:"fas fa-history"}),this.flat_recipes.slice(0,5).forEach(t=>{e.push({name:t.name,image:t.image,recipe_id:t.id})})),e}},mounted(){window.addEventListener("keydown",e=>{e.key=="ArrowUp"&&(this.selected_result=Math.max(0,this.selected_result-1)),e.key=="ArrowDown"&&(this.selected_result=Math.min(this.search_results.length,this.selected_result+1)),e.key=="Enter"&&this.goToSelectedRecipe()}),this.flat_recipes=[{id:692,name:"Bouillon papardelle et bolognaise",image:"/media/recipes/0d6b8758-d9a4-4366-bb0a-5917c379cdf8_692.jpeg"},{id:693,name:"Pandoro",image:"/media/recipes/8cddf7b6-3cd8-40be-bdc6-cd790c3aa4ea_693.jpeg"},{id:694,name:"torta fresca",image:"/media/recipes/53937e26-7353-4753-b9e4-eb68c1044600_694.jpeg"},{id:695,name:"aïoli",image:"/media/recipes/10757a7c-6328-45c7-85eb-ca1ca7f3b62e_695.jpeg"},{id:696,name:"Aioli senza uovo",image:"/media/recipes/b780c990-ece8-46cd-a995-5da39f74c98a_696.jpeg"},{id:697,name:"Anelli di calamari con ricotta e grana padano",image:"/media/recipes/f658a0aa-0188-47ef-9ca2-7c9c9e694a61_697.jpeg"},{id:698,name:"Arrosto al forno di manzo",image:"/media/recipes/408afeae-f7b9-492d-a804-951d30f6f4ed_698.jpeg"},{id:699,name:"Asparagi bianchi, zabaione al passito e crumble di prosciutto",image:"/media/recipes/8b16e2a8-47fc-4e88-b4c5-4967a430dcef_699.jpeg"},{id:700,name:"Avocado al forno",image:"/media/recipes/b108f51f-f2fb-41b6-8ed9-48a7665bbdbe_700.jpeg"},{id:701,name:"Baccalà alla potentina",image:"/media/recipes/6c009d14-e864-4487-badb-7cd87d9ebed4_701.jpeg"},{id:702,name:"Baccalà alla vicentina",image:"/media/recipes/7da6916b-1ac9-4342-9948-cd9ca669a0e4_702.jpeg"},{id:703,name:"Baccalà Pil Pil",image:"/media/recipes/45a241b0-3837-4e8e-bdac-8ba116ae0093_703.jpeg"},{id:704,name:"Bagna cauda",image:"/media/recipes/787109fc-3c79-4ff3-a313-043ef4df5f03_704.jpeg"},{id:705,name:"Bavarese al cioccolato bianco e lavanda",image:"/media/recipes/e58e530a-307c-4472-b2a4-99f12dd31058_705.jpeg"},{id:706,name:"Bavarese Al Mango",image:"/media/recipes/80f1fa3d-a75d-46c0-a309-165a88caad66_706.jpeg"},{id:707,name:"Bavarese di ricotta con sorpresa di ribes",image:"/media/recipes/6337a148-a726-45f9-adce-a0c6a0089fdc_707.jpeg"},{id:708,name:"Besciamella",image:"/media/recipes/2ad13bf4-4e77-4a85-b3b1-ebae720f8c11_708.jpeg"},{id:709,name:"Besciamella senza glutine",image:"/media/recipes/fa8337e7-bfd5-4b27-8c4e-8fd3895f0790_709.jpeg"},{id:710,name:"Beurre Blanche",image:"/media/recipes/54338d37-55c6-4575-82cf-130de5eabcab_710.jpeg"},{id:711,name:"Biscotti con scaglie di cioccolato",image:"/media/recipes/558a2ea8-e981-42e8-a545-465de2ed232f_711.jpeg"},{id:712,name:"Biscotti dita di strega per Halloween",image:"/media/recipes/12b82a9c-de2d-4ead-bdfe-81bfd12fbae7_712.jpeg"},{id:713,name:"Biscotti Salati",image:"/media/recipes/8c6556c0-655c-47fd-87de-533f03da82cf_713.jpeg"},{id:714,name:"Biscotti Sani",image:"/media/recipes/38c7c6fc-45ef-43f8-bae5-02a4895b2239_714.jpeg"},{id:715,name:"Blanquette de veau à l'ancienne",image:"/media/recipes/fde3f9dc-1b22-4d1e-bb63-a976b565c2d2_715.jpeg"},{id:716,name:"Bocconi di rana pescatrice con verdurine",image:null},{id:717,name:"Borsh",image:"/media/recipes/89f3fe84-fc58-484d-9d50-07dfcbdb632c_717.jpeg"},{id:718,name:"BRACIOLE DI MAIALE AL CAFFÈ CON CREMOSA SALSA WHISKY",image:"/media/recipes/36fb19ce-1016-4b44-b7f1-c35f6cd676ac_718.jpeg"},{id:719,name:"Branzino al cartoccio",image:"/media/recipes/badc559b-251d-4b1c-a068-59d93987dc9f_719.jpeg"},{id:720,name:"Branzino al sale: la ricetta per fare la spigola in crosta di sale",image:"/media/recipes/dd0c0c59-6863-412e-961b-0ff6a063e61f_720.jpeg"},{id:721,name:"Brodetto di pesce",image:"/media/recipes/73a81f9f-9847-4095-99eb-48b2c29a1276_721.jpeg"},{id:722,name:"BRODO DI BUCCIA DI ZUCCA",image:null},{id:723,name:"BRODO DI CALDARROSTE",image:null},{id:724,name:"Brodo di carne",image:"/media/recipes/3619edc1-cdb6-4606-b21e-b9ad1fc98bcc_724.jpeg"},{id:725,name:"Brodo di gallina (o pollo)",image:"/media/recipes/cdf58c22-0609-499d-b05d-b24b233af8fa_725.jpeg"},{id:726,name:"BRODO DI GAMBERI ROSSI DI MAZARA",image:null},{id:727,name:"BRODO DI MINESTRONE",image:null},{id:728,name:"Brodo di pesce",image:null},{id:729,name:"Brownies al cacao",image:"/media/recipes/a17cff8c-14ef-4e08-8cd9-39ce58668834_729.jpeg"},{id:730,name:"Burger di fagioli rucola e feta",image:"/media/recipes/ae17c961-1465-4f66-99c6-96a7e59094f2_730.jpeg"},{id:731,name:"burrata e pomodori",image:null},{id:732,name:"Caesar salad",image:"/media/recipes/c9e6a8c0-89a0-43c6-8724-abfa4084122a_732.jpeg"},{id:733,name:"Calamari ripieni di ricotta e catalogna",image:"/media/recipes/fe2899c5-c328-4fd5-99cb-f75c3fb36933_733.jpeg"},{id:734,name:"Calamari su vellutata di zucchine e patate",image:null},{id:735,name:"Calamaro ripieno, ricetta classica",image:"/media/recipes/6d119095-47bd-4f65-951b-902d9fa95c50_735.jpeg"},{id:736,name:"Canederli knödel",image:null},{id:737,name:"CANNOLI DI PANDORO TIRAMISU",image:"/media/recipes/c2c6adbf-705e-44df-a09c-0298cd9ad86e_737.jpeg"},{id:738,name:"Capesante con arancia e salsa di avocado",image:"/media/recipes/b9b4be96-7833-44b6-8ab3-fedce28ca54e_738.jpeg"},{id:739,name:"CAPESANTE CON PURÈ DI ZUCCA ALL’ARANCIA",image:"/media/recipes/a45279ff-15dd-4966-b431-a7d5d3a246b2_739.jpeg"},{id:740,name:"Caponata di melanzane, delizia agrodolce",image:"/media/recipes/b45e5ea3-38f4-4d3a-9781-8c98ef084d5f_740.jpeg"},{id:741,name:"Caponata senza glutine",image:"/media/recipes/a4f104fb-6a98-4d40-a603-ca68bb542036_741.jpeg"},{id:742,name:"Cappelli delle streghe",image:"/media/recipes/9c6c2c9d-a9c4-43c4-8e14-6be8d5bbd3aa_742.jpeg"},{id:743,name:"CARAMELLO SALATO",image:"/media/recipes/5eb2e5b4-764f-459d-a8e6-ddd816476ded_743.jpeg"},{id:744,name:"Carbonara di seppie",image:"/media/recipes/6cb0b40d-ecec-4a79-916f-d079ea6ed8a3_744.jpeg"},{id:745,name:"Carpaccio di manzo",image:"/media/recipes/ecd93c0e-4e4f-4ea0-a1c9-99dbe34499bd_745.jpeg"},{id:746,name:"Carpaccio di tonno",image:"/media/recipes/2f662b1f-bdd4-44b5-8446-ee60a305b854_746.jpeg"},{id:747,name:"Caviale di melanzane - Babaganoush",image:"/media/recipes/e8f2130e-6804-4e44-9add-7be5e6ad9da8_747.jpeg"},{id:748,name:"Cavolfiore fritto",image:"/media/recipes/a226ca44-bd1d-4bc9-a888-71e76a0f2e9f_748.jpeg"},{id:749,name:"Cavolo rosso in padella - Ricetta con foto il Cuore in Pentola",image:"/media/recipes/2cf160f5-0765-412a-a852-00781b55ba4c_749.jpeg"},{id:750,name:"Cernia in crosta di pane",image:"/media/recipes/11fbc1a8-9e1c-4cf6-9a9f-c33ccfebf19c_750.jpeg"},{id:751,name:"Ceviche peruviano",image:"/media/recipes/792ddb97-5722-47ce-9719-2c76221083fd_751.jpeg"},{id:752,name:"Cheesecake ai mirtilli",image:"/media/recipes/7999bab8-8354-4770-b799-5a2e1fe38cc1_752.jpeg"},{id:753,name:"Cheesecake al limone",image:"/media/recipes/56bd4bfb-aea9-44b0-ac5c-cea96f1302de_753.jpeg"},{id:754,name:"Chicken Caesar salad",image:"/media/recipes/274baa02-d43b-4110-b551-1fdc427f91a6_754.jpeg"},{id:755,name:"Chicken Rub",image:"/media/recipes/29d88539-e829-4741-93de-5a3887507894_755.jpeg"},{id:756,name:"Chimichurri",image:"/media/recipes/b8739ed4-45d6-4c5e-97e2-2aff41fa21ca_756.jpeg"},{id:757,name:"Chiokapic",image:null},{id:758,name:"Chips di pecorino",image:"/media/recipes/bc554049-0829-47f4-945d-140819330b7c_758.jpeg"},{id:759,name:"Chocolate Mousse and Cherry Gelee Spheres",image:"/media/recipes/967b125b-e684-41a4-9c87-9178b478c8a1_759.jpeg"},{id:760,name:"Cialde corallo",image:"/media/recipes/445a37f0-30c1-4be6-b33e-04eb015613d2_760.jpeg"},{id:761,name:"Cialdine di Parmigiano Reggiano Dop",image:"/media/recipes/0ed29884-9442-4f65-8f12-ed4290af84da_761.jpeg"},{id:762,name:"Cipolla In Agrodolce",image:"/media/recipes/91945c9f-38ab-4c62-86d8-fd163acd2205_762.jpeg"},{id:763,name:"cipolla scura al forno",image:"/media/recipes/6ed4beeb-e7a0-4b2e-bb1b-9cbf9b22797e_763.jpeg"},{id:764,name:"Cipolle pickle",image:"/media/recipes/afe45843-19a4-46c7-bfa3-39465a2d05f7_764.jpeg"},{id:765,name:"Cipolle ripiene al forno",image:"/media/recipes/8971989c-cb48-45f4-8548-87dc15c88dfa_765.jpeg"},{id:766,name:"Clam Chowder",image:"/media/recipes/64184aaa-3e54-4775-8275-e8061057491c_766.jpeg"},{id:767,name:"COME FARE LA RICOTTA",image:"/media/recipes/7056d293-ef25-4b34-accf-760b0721acf1_767.jpeg"},{id:768,name:"Come fare lo zabaione all’arancia",image:"/media/recipes/ab310566-3313-4793-bc10-b4742bf61f23_768.jpeg"},{id:769,name:"Come fare una crema al limone favolosa: solo se hai il Bimby ti viene così! - RicettaSprint.it",image:"/media/recipes/fba51b0f-baba-48ff-a9c3-1a49aed453ac_769.jpeg"},{id:770,name:"Composta Di Mele",image:"/media/recipes/907ac797-acc3-4c5a-92fd-fcd5fc5e59f0_770.jpeg"},{id:771,name:"Condimento per pesce crudo",image:null},{id:772,name:"Confettura di cipolle di Tropea",image:"/media/recipes/4b761bb0-e0fd-48c2-81ee-1395f9cf0050_772.jpeg"},{id:773,name:"CONSOMMÉ",image:"/media/recipes/73f030a7-c7fa-45e2-aa21-b581be1aeccd_773.jpeg"},{id:774,name:"COPPA DI CHEESECAKE AL CAFFE'",image:"/media/recipes/fdc4c993-24d1-4dd9-aef7-d2c99b8fd3b2_774.jpeg"},{id:775,name:"Costolette Di Maiale",image:"/media/recipes/1d1f6ea0-9a1d-40f4-93d6-5040e2d28612_775.jpeg"},{id:776,name:"Cotolette alla Kiev",image:null},{id:777,name:"Cous cous",image:"/media/recipes/3683b6c7-9425-405a-a6fc-d27b77249ae0_777.jpeg"},{id:778,name:"Cozze alla marinara",image:"/media/recipes/1c8c19c1-f676-4416-9b41-ae6ca08d4335_778.jpeg"},{id:779,name:"Cozze in salsa di vino bianco e panna",image:"/media/recipes/8785e650-5bb3-4484-a331-39b43ecc12dc_779.jpeg"},{id:780,name:"Crema Al Limone",image:"/media/recipes/e64cfb70-b872-41f8-ba41-03a6e6ec02b5_780.jpeg"},{id:781,name:"Crema al mascarpone",image:"/media/recipes/d846bee4-9a39-4862-8ca9-671654a67359_781.jpeg"},{id:782,name:"CREMA ALL’ARANCIA CON LATTE DI MANDORLA",image:"/media/recipes/5cc47568-6757-4458-8e20-22c70bc05219_782.jpeg"},{id:783,name:"Crema di avocado",image:"/media/recipes/23d9e92b-3dd7-469e-bc80-afe9ecc63778_783.jpeg"},{id:784,name:"Crema di Parmigiano",image:"/media/recipes/40959769-6d34-41a3-b24e-3668ed5983a9_784.jpeg"},{id:785,name:"Crema di pesche con amaretti e gelatina di mango e Amaretto: ricetta gourmet",image:"/media/recipes/a74ccf6c-d093-453d-b806-714843a6c7bd_785.jpeg"},{id:786,name:"Crema di zucca (Vellutata di zucca): la Ricetta perfetta, veloce e squisita!",image:"/media/recipes/c7169739-e302-4852-8cce-d9f5cfa5a888_786.jpeg"},{id:787,name:"Crema pasticcera",image:null},{id:788,name:"Crema pasticcera smart",image:"/media/recipes/87a2692f-fc16-48b3-aca7-4cfef47e1153_788.jpeg"},{id:789,name:"Crema pasticciera",image:"/media/recipes/7b588438-a55c-4aa0-af91-d2144fa6fb0f_789.jpeg"},{id:790,name:"Crema ricotta e cannella",image:"/media/recipes/4d16c137-4cb2-4adf-a5a5-41ffda0d57ae_790.jpeg"},{id:791,name:"Creme brulèe",image:"/media/recipes/b93d1836-6858-4932-8b4a-101cbcb0edad_791.jpeg"},{id:792,name:"Creme Caramel",image:"/media/recipes/5101d036-ff70-415e-a342-a3c0e6205360_792.jpeg"},{id:793,name:"Crepe con farina di ceci",image:"/media/recipes/db534250-60b2-49cd-b9a1-68d56b25336a_793.jpeg"},{id:794,name:"Crepes",image:"/media/recipes/fcae3996-523b-4451-b746-dad5103e2950_794.jpeg"},{id:795,name:"Crepes funghi e besciamella",image:"/media/recipes/006e11c6-18fc-4f3c-a128-c25cd120bba4_795.jpeg"},{id:796,name:"Crescenza di anacardi",image:"/media/recipes/5d001ed7-011d-4de1-9819-2a795ddc07c9_796.jpeg"},{id:797,name:"Crespelle di ceci con zucca, spinaci e funghi",image:"/media/recipes/8a4a5e57-5a31-4f25-8312-867680779d67_797.jpeg"},{id:798,name:"Crocche Di Gamberi",image:"/media/recipes/93fdbd4e-443c-4d88-8f23-d7f91a0ef4b7_798.jpeg"},{id:799,name:"Croissant",image:"/media/recipes/f9baacf0-5741-4d07-965d-cb0d70a73d1b_799.jpeg"},{id:800,name:"Crostata al limone",image:"/media/recipes/0370f191-8acd-415a-8a2c-435112be3475_800.jpeg"},{id:801,name:"CROSTATA CREMA LATTE ALL'ARANCIA dolce ripieno cremoso",image:"/media/recipes/779cd11c-04b4-4143-8e5d-3fd01bda0456_801.jpeg"},{id:802,name:"Cruditè al curry",image:"/media/recipes/944e4891-3cb5-4519-a0ed-e752f7fe3f02_802.jpeg"},{id:803,name:"Crumble",image:"/media/recipes/4c3b9406-c96d-4f98-8c9f-6b1cd0d89c5a_803.jpeg"},{id:804,name:"crumble salato",image:"/media/recipes/1f1eb6dc-6e2d-44f8-990b-1cbfa61cb016_804.jpeg"},{id:805,name:"Crystal bread",image:"/media/recipes/a35eb442-de29-4765-9ca5-ec20a7a77561_805.jpeg"},{id:806,name:"Curry di ceci la ricetta indiana da preparare in meno di mezz'ora - RicettaSprint.it",image:"/media/recipes/3344395c-57ef-4f07-9a65-b4092d3cc647_806.jpeg"},{id:807,name:"Dado Vegetale",image:"/media/recipes/1808c9fa-7217-4125-8135-3042e9feee09_807.jpeg"},{id:808,name:"Dahl di lenticchie in vasocottura",image:"/media/recipes/8a397e3a-ab6f-4f52-91ef-483b123e7a43_808.jpeg"},{id:809,name:"daurade mariné à la bière de monaco et zeste d'orange",image:"/media/recipes/65d6c891-7ef5-4378-af85-698b77bc62a0_809.jpeg"},{id:810,name:"DESSERT CON SFOGLIATINE E CREMA AL MASCARPONE",image:"/media/recipes/3bd4a094-ad17-4882-8857-dad322d9a411_810.jpeg"},{id:811,name:"Dolce all'arancia",image:"/media/recipes/35d02eab-3c40-48dd-9b6e-2a5d5ac4c2aa_811.jpeg"},{id:812,name:"dolce di fichi",image:"/media/recipes/707a5f3d-2c64-4bfc-b74a-1999021af845_812.jpeg"},{id:813,name:"Dolcetti all'arancia",image:"/media/recipes/d0213969-e984-4122-b3f9-73e68696a068_813.jpeg"},{id:814,name:"epaule d'agneau confite aux épices",image:null},{id:815,name:"Banana Shape Chia-Joghurt",image:"/media/recipes/d837cfad-c00a-425b-bfc7-259ab9a62213_815.jpeg"},{id:816,name:"Kakao-Bananen-Muffins",image:"/media/recipes/5ea7b754-9e97-4643-9aa9-c9dfbf672718_816.jpeg"},{id:817,name:"Pfannkuchen mit Erdbeer-Rhabarber-Marmelade",image:null},{id:818,name:"Hähnchenstreifen mit Salat",image:"/media/recipes/47ab7cf7-869f-4fcb-8b7a-045b1652fcd8_818.jpeg"},{id:819,name:"Buntes Pfannen Gemüse mit Hähnchenbrust im Arizona-Pfeffer",image:"/media/recipes/a87918f2-e1f1-4ad1-8eab-63910607d3d2_819.jpeg"},{id:820,name:"Curryhähnchen",image:"/media/recipes/8969d24d-2cba-4eb6-b52c-28171898fc9b_820.jpeg"},{id:823,name:"Pfannkuchen mit Erdbeer-Rhabarber-Marmelade",image:null},{id:827,name:"Banana Shape Chia-Joghurt",image:"/media/recipes/44770e04-f612-4815-a9fc-34ed34f74f90_827.jpeg"},{id:828,name:"Kakao-Bananen-Muffins",image:"/media/recipes/1fb40962-a4be-4340-aed5-46a8b8f9759a_828.jpeg"},{id:829,name:"Pfannkuchen mit Erdbeer-Rhabarber-Marmelade",image:"/media/recipes/5be1ac0a-ec27-491d-8036-a587baa0af9e_829.jpeg"},{id:830,name:"Hähnchenstreifen mit Salat",image:"/media/recipes/a5154f95-e8fc-4d0a-9aeb-eeea2f11d467_830.jpeg"},{id:831,name:"Buntes Pfannen Gemüse mit Hähnchenbrust im Arizona-Pfeffer",image:"/media/recipes/a353361c-5f6d-436a-9c58-13c8a693648b_831.jpeg"},{id:832,name:"Curryhähnchen",image:"/media/recipes/64c71c90-763a-4e21-8ce7-ff7fe68c838a_832.jpeg"},{id:833,name:"Roggenbrot",image:null},{id:834,name:"Gemüselasagne",image:"/media/recipes/d71f2d09-0cdc-4dd1-af29-deb775aa2c1c_834.png"},{id:835,name:"Gebackene Auberginen",image:"/media/recipes/dc1923c6-4460-466b-ad6f-01f4aedafed0_835.jpeg"},{id:836,name:"Zucchini-Möhren-Puffer",image:"/media/recipes/21317e29-c001-4dcb-a35b-cf6d9b695228_836.png"},{id:837,name:"Mini-Apfelstrudel mit Filoteig",image:"/media/recipes/b37edfc3-38f1-4898-9ef0-c82568d9313e_837.jpeg"},{id:838,name:"Frischer Mangosalat",image:"/media/recipes/5d2e42cb-36e1-4bc5-bd0b-f2f025308e6d_838.png"},{id:839,name:"Zucchini-Paprika-Möhren-Frittata mit Hüttenkäse und Tomaten",image:"/media/recipes/426ce931-a3c2-4960-964d-3dded90fabde_839.png"},{id:840,name:"Hasselback-Kartoffeln",image:"/media/recipes/f0aaff88-ff33-4eae-b061-35088c43b000_840.png"},{id:841,name:"Pizzateig (Flammkuchenteig)",image:null},{id:842,name:"Chicorée Rollladen Auflauf",image:null},{id:843,name:"Gemüsepfanne",image:"/media/recipes/756bf85c-6779-4f35-86ce-46c21fd33515_843.jpeg"},{id:844,name:"Ohne Mehl: Rezept für leckere Zucchini-Muffins mit Chili und Feta",image:"/media/recipes/de7a7ab4-9290-4663-b273-e46eb29a9d2b_844.jpeg"},{id:845,name:"Cremige Maissuppe",image:"/media/recipes/7c7cf8de-e267-41b7-b4f5-24311a8a9f81_845.jpeg"},{id:846,name:"Kathis Dunkle Cookies",image:null},{id:847,name:"Grillpizza",image:null},{id:848,name:"Italienischer Nudelsalat",image:null},{id:849,name:"Kathis Apfelkuchen",image:"/media/recipes/6af46aab-3b1d-4248-85f1-c23a90535ae7_849.png"},{id:850,name:"Nussecken",image:null},{id:851,name:"Stollen",image:"/media/recipes/baf56916-0c4c-43d4-a1df-35ccbed4b968_851.jpeg"},{id:852,name:"Wok",image:"/media/recipes/993a134c-3169-4167-9869-d394deff820e_852.png"},{id:853,name:"Pancake (Mini-Spieße)",image:"/media/recipes/30dc3b68-02a9-45c0-810e-6131c4c73390_853.png"},{id:854,name:"Kassler in Blätterteig",image:null},{id:855,name:"Baklava",image:"/media/recipes/a1676f57-1f6b-4f51-97e0-0636f1d02846_855.png"},{id:856,name:"Bohneneintopf",image:"/media/recipes/5332b2d7-c0f2-4668-a3a8-1580ab11a9b1_856.png"},{id:857,name:"Galette Frangipane (Französischer Blätterteig Kuchen)",image:"/media/recipes/a6ee2ea4-be46-4aee-a991-0c331df8f04f_857.png"},{id:858,name:"Giotto-Torte",image:"/media/recipes/685308bf-bdb8-4ab5-8d09-3c1e7a838332_858.png"},{id:859,name:"Spaghetti mit Feigen und Ziegenkäse",image:"/media/recipes/a7d5c79f-1f69-41ad-ab2e-458ed2004f7b_859.png"},{id:860,name:"Ipanema",image:"/media/recipes/40d16559-2e9d-4194-b67d-22283bf9dd2a_860.png"},{id:861,name:"Mai Tai",image:"/media/recipes/5451bfbe-85e3-4d03-ae30-956700584ca7_861.png"},{id:862,name:"Wikingertopf",image:"/media/recipes/dca630a5-afb7-4fa8-81b5-77f86fc2428b_862.png"},{id:863,name:"Tequila Sunrise",image:"/media/recipes/21f2af27-26ea-4788-b68f-cf4ef3203851_863.png"},{id:864,name:"Hurricane",image:"/media/recipes/00b8d5a1-bae3-432b-a06d-0aa8e45bdc67_864.png"},{id:865,name:"Sauerkraut-Kasseler-Pfanne mit Schupfnudeln",image:"/media/recipes/864ea5ce-41c8-418b-b8c8-c49a9b6c5ac5_865.png"},{id:866,name:"Putenkeulen",image:null},{id:867,name:"Mojito",image:"/media/recipes/22f7eeba-b703-4ffc-ae01-c9d0972407bd_867.png"},{id:868,name:"Apfelschichtkuchen",image:null},{id:869,name:"Lachs in Honigglasur mit Mango-Avocado-Salsa",image:"/media/recipes/4fc03c1c-4e28-4af6-bc4e-49a6a737f262_869.png"},{id:870,name:"Spinat-Curry mit Erdnüssen",image:"/media/recipes/46cfa7d6-fdba-433c-af58-f729664ab695_870.png"},{id:871,name:"Hüttenkäsetaler",image:"/media/recipes/5b9705c6-b6ce-4be4-a410-20dcea6e6df4_871.png"},{id:872,name:"White Russian",image:"/media/recipes/edbdb8e5-89e2-447a-8d74-5738192a1554_872.png"},{id:873,name:"Risotto mit Pfifferlingen, Zucchini, Serranoschinken und Pecorino",image:"/media/recipes/3da66d20-2e8e-485f-8e96-90d0288f56e7_873.png"},{id:874,name:"Gelbe Sauce",image:null},{id:875,name:"Tortellini-Spinat-Auflauf",image:"/media/recipes/c2b19498-6184-4a5c-808f-8a4a2c95bbe5_875.png"},{id:876,name:"Hähnchen-Gnocchi-Pfanne mit Möhren",image:"/media/recipes/048ef8c5-79cd-4fb2-8f1d-aa88e3673ccf_876.png"},{id:877,name:"Jans Linsen Curry",image:"/media/recipes/3024760b-b4c7-43ed-883d-703ebe5b0c85_877.png"},{id:878,name:"Schweinefilet in Curry-Sahne",image:"/media/recipes/b5931db8-83bc-4251-8e19-8049d0894852_878.png"},{id:879,name:"Griechischer Salat",image:null},{id:880,name:"Vegetarische Frikadellen",image:"/media/recipes/96c0e256-f1f5-4ff8-818d-d3e5172f4d3c_880.png"},{id:881,name:"Caipirinha",image:"/media/recipes/1a687b10-ce9f-4e72-ad52-43887958f7ed_881.png"},{id:882,name:"Cannelloni mit Spinat-Ricotta",image:"/media/recipes/78a460f5-9b7f-46ef-ae10-055303fac321_882.png"},{id:883,name:"Gnocchi-Gemüseauflauf mit Hackfleischsoße",image:"/media/recipes/36f70dbd-8842-4a71-9f52-eba3ab191372_883.png"},{id:884,name:"Rotkäppchenkuchen",image:"/media/recipes/3d00d269-7fa6-4c0e-973f-8d9bd923d736_884.png"},{id:885,name:"Lachs-Spinat-Lasagne Rezept",image:"/media/recipes/2015705d-7e2d-4479-a3b3-07c86046865a_885.png"},{id:886,name:"Lasagne mit Mozzarella und Parmaschinken",image:null},{id:887,name:"Rote Bete Carpaccio mit Rucola und Ziegenkäse",image:"/media/recipes/ba34d5b9-8318-400a-938c-4f15973e8691_887.png"},{id:888,name:"Ofenpfannkuchen mit Gemüse & Feta",image:"/media/recipes/a565f6b7-ed67-4e67-a1fe-0124b3472cb4_888.png"},{id:889,name:"Vegetarische Linsen-Lasagne",image:"/media/recipes/04442d72-bc16-4d97-a7eb-f15c107e884a_889.png"},{id:890,name:"Saure Bohnen Eintopf",image:"/media/recipes/5d97dc85-634b-4d2c-b377-2d3912a0f1a1_890.png"},{id:891,name:"Crepesteig",image:"/media/recipes/a6f8b5f0-59d3-4f91-98c9-ef51acfeacc5_891.png"},{id:892,name:"Gefüllte Auberginen",image:"/media/recipes/0a6c9751-f84c-444f-963f-d56475b036b4_892.png"},{id:893,name:"Moscow Mule",image:"/media/recipes/c128a6eb-1199-4713-9761-8592af87e904_893.png"},{id:894,name:"Bunte Kichererbsenpfanne",image:"/media/recipes/397c566c-e111-4b4e-9333-c40b5250a871_894.png"},{id:895,name:"Vegetarischer Nudel-Spinat-Auflauf mit Rote Beten",image:"/media/recipes/b173738f-9d1f-447a-885c-d147fae5ecc6_895.png"},{id:896,name:"Raclette",image:"/media/recipes/faf7c6e4-4417-407e-a0d2-af3a81cfea22_896.png"},{id:897,name:"Vegetarische Spinat-Lasagne al forno",image:"/media/recipes/80c163de-cd85-4a2a-80b5-0155ee27b514_897.png"},{id:898,name:"Pina Colada",image:"/media/recipes/c4294b1d-537b-4523-b888-120fd049e57c_898.png"},{id:899,name:"Obazda",image:"/media/recipes/712c3f5b-7f18-47c1-b1e0-e920522bbec9_899.png"},{id:900,name:"Kleine Röllchen ganz groß: Zucchini-Rollen mit Ricotta-Basilikum-Creme",image:"/media/recipes/81d58226-ee86-4f8f-b05b-c09f4f9e1b0c_900.png"},{id:901,name:"Samasa Blätterteig Taschen",image:null},{id:902,name:"Kürbissuppe",image:"/media/recipes/3cb77b90-58d8-48c7-acd3-5cdd95a51b9d_902.png"},{id:903,name:"Asia-Gemüse mit geröstetem Sesam",image:"/media/recipes/6675feec-93bc-4fe4-9ca9-6879f7292926_903.png"},{id:904,name:"KERNIGER ROTE-BETE-SALAT AUS DEM THERMOMIX®",image:"/media/recipes/8889597e-1287-461e-8c71-d87e99cdeb5b_904.png"},{id:905,name:"Teigtaschen mit Spinat-Feta-Füllung",image:null},{id:906,name:"Marzipan-Torte",image:"/media/recipes/4e9708b6-68ea-471d-b564-4bb47ba590ef_906.png"},{id:907,name:"Kohlrabi in Parmesan-Kräuter-Panade",image:"/media/recipes/e41cb627-4b1d-4dd7-9cd2-42b37ecbd847_907.png"},{id:908,name:"Avocado-Tomaten Salsa zu Red Snapper",image:"/media/recipes/fbd199a0-b7dd-4bcc-b85d-e6dcfc897684_908.png"},{id:909,name:"Spießbraten",image:"/media/recipes/f21927be-28e9-4202-bbcd-0ae231d171de_909.png"},{id:910,name:"Knusprige Putenröllchen",image:"/media/recipes/8e549715-8d33-4e08-977f-4967d5429d6c_910.png"},{id:911,name:"Geröstete Kürbiskerne",image:"/media/recipes/301ac254-0285-44d1-a644-5bbd540c6dce_911.png"},{id:912,name:"Magaretenplätzchen",image:null},{id:913,name:"Bayerische Semmelknödel",image:null},{id:914,name:"Gebratene Nudeln mit Gemüse, asiatisch",image:"/media/recipes/bd2fb72f-6c90-4e25-a5fa-4f634e005bf7_914.png"},{id:915,name:"Schnelle Asia-Gemüsepfanne",image:"/media/recipes/921d8abf-ced5-4f74-9675-4ed7d77fa36e_915.png"},{id:916,name:"Westfälische Quarkspeise",image:"/media/recipes/330b1965-b485-4793-945b-f5b5df75da03_916.jpeg"},{id:917,name:"Weckmann (Hefeteig)",image:"/media/recipes/8bcfdf78-7537-48fb-8342-e5e7db97a65c_917.png"},{id:918,name:"Helgas Wirsingeintopf",image:null},{id:919,name:"Linsen-Mangold-Curry",image:"/media/recipes/42f25786-d04e-4c26-a5b0-94e86b6c0443_919.png"},{id:920,name:"Vegane Brokkoli-Käse-Suppe mit Möhren",image:"/media/recipes/3081f1b5-c760-42e0-a591-be3bcbd65f1e_920.png"},{id:921,name:"Vegetarisches Linsen-Chili mit Reis",image:"/media/recipes/113ea81c-4545-4bc2-b1e1-1f83c98af9d3_921.png"},{id:922,name:"Nudelauflauf mit Hähnchen und Spinat",image:"/media/recipes/cc8892ac-1d86-47e4-aa3f-09154fc6e3c2_922.jpeg"},{id:923,name:"Rote-Bete-Burger - vegan mit Guacamole und Röstzwiebeln",image:"/media/recipes/d2084a00-d5c4-496c-9a24-75abc10bd819_923.png"},{id:924,name:"Spaghetti mit Bacon, Frühlingszwiebeln, Tomaten Sahne-Sauce",image:"/media/recipes/ca0873c1-2471-4cc2-81a0-d8011d7502ab_924.png"},{id:925,name:"Obstboden",image:null},{id:926,name:"Chili con Carne",image:"/media/recipes/c7bfdb56-060e-42ec-aa28-ebf160be9207_926.png"},{id:927,name:"Toskanischer Filet-Topf",image:"/media/recipes/971f89d7-5e59-4e84-ba91-842e24505047_927.jpeg"},{id:928,name:"Rigatoni mit Tomaten-Sahne-Sauce",image:"/media/recipes/acfac122-a708-4a92-9703-6697693c7a61_928.png"},{id:929,name:"Kathis Lasagne",image:null},{id:930,name:"Pfirsichkuchen von Petra",image:"/media/recipes/e9deab2e-8d32-49b0-b694-25079eab8337_930.jpeg"},{id:931,name:"Brombeerkuchen",image:null},{id:932,name:"Lauchcremesuppe",image:null},{id:933,name:"Käse Lauch Suppe",image:"/media/recipes/4d820ccc-6448-4e7c-96a1-87650b1e024c_933.png"},{id:934,name:"Bergische Waffeln",image:"/media/recipes/61947425-6425-4017-94af-43e024c42a13_934.png"},{id:935,name:"Cannelloni della Nonna",image:"/media/recipes/f8e7a450-73ae-49f7-b739-f05e749d5b75_935.png"},{id:936,name:"Salatdressing a la Mama",image:null},{id:937,name:"Apfel-Zimt-Kuchen",image:"/media/recipes/c9c46e8a-16c8-498b-a5cf-10c57f61de5c_937.png"},{id:938,name:"Zucchini Hackfleischauflauf",image:"/media/recipes/876f9332-987d-4b6b-957b-d7e008ed9d8e_938.png"},{id:939,name:"Helga's Kartoffelsalat",image:"/media/recipes/57fd53e0-2929-46ef-8c0d-c3e7f48f8cfa_939.png"},{id:940,name:"Kalbsschnitzel gratiniert",image:null},{id:941,name:"Sauerteig Anstellgut",image:null},{id:942,name:"Nuss Marzipan Kranz Striezel",image:"/media/recipes/cde8edb0-42f1-4b77-ac11-b54b333ddc28_942.png"},{id:943,name:"Erdbeer Tiramisu",image:"/media/recipes/ee305c0d-b26d-4533-9534-1254980eb9a4_943.png"},{id:944,name:"Burger",image:"/media/recipes/92c4cd5a-6338-4ad9-86e4-4e9301431a4b_944.png"},{id:945,name:"Roggenbrot",image:"/media/recipes/9256a1e1-c5a9-4ca7-abcb-348b1065a0fa_945.png"},{id:946,name:"Baguette",image:"/media/recipes/7131d1d7-bc91-48e6-9751-5a0dbfa9bf78_946.png"},{id:947,name:"Risotto mit grünem Spargel",image:null},{id:948,name:"Zwiebelkuchen",image:"/media/recipes/05e8647e-7f72-43b8-91ae-14a3997d69bd_948.png"},{id:949,name:"Pita Brot",image:"/media/recipes/139e0e7f-6bcf-4dfb-85f1-0ca9f241bd3c_949.png"},{id:950,name:"Goldstulle süßes Brot",image:"/media/recipes/09db927d-404e-4745-9d96-ddaa0a5d166c_950.png"},{id:951,name:"Gyros Spieß",image:"/media/recipes/cc007e6e-8af9-4d0f-af7e-653b918ec469_951.png"},{id:952,name:"Rote-Linsen-Salat mit Ziegenkäse im Speckmantel",image:"/media/recipes/eeee7734-1816-4537-bd0c-415b7c30d7c5_952.png"},{id:953,name:"Parmigiana di Melanzane",image:"/media/recipes/0e65921a-b1cb-4079-b8eb-47cfa8c799a3_953.png"},{id:954,name:"Zucchini-Ricotta-Puffer mit buntem Tomatensalat",image:"/media/recipes/7ed7d8a8-9c72-4317-aee2-1ca25963a82f_954.jpeg"},{id:955,name:"Vegetarische Zucchini-Karotten-Puffer",image:"/media/recipes/6ff8491b-339a-4061-b41f-3dee6b4fa050_955.jpeg"},{id:956,name:"Naan Brot",image:"/media/recipes/5f3a3be0-eeb8-4e27-b4b4-3af53df3961b_956.jpeg"},{id:957,name:"Mit Quinoa gefüllte Zucchini mit einem Walnuss-Ziegenkäse-Topping",image:"/media/recipes/f3caf38c-71e8-4ee4-8fa3-a612185d8556_957.png"},{id:958,name:"Indisches Rotes Linsen Dal",image:"/media/recipes/8c7219b6-c502-416c-a06c-ae871791742a_958.jpeg"},{id:959,name:"Tomatenreis mit mediterranem Gemüse",image:"/media/recipes/d0148376-8149-4f2a-990b-decf8a1b5d08_959.jpeg"},{id:960,name:"Schoko - Souffle",image:null},{id:961,name:"Veganer Bohnenburger",image:"/media/recipes/d2e85ce2-0bc2-4b2f-b903-b05f82833f38_961.jpeg"},{id:962,name:"Quiche",image:null},{id:963,name:"Süßkartoffel Taler vom Grill",image:"/media/recipes/4e350b18-48f3-4fc9-baae-b1abc44dd843_963.png"},{id:964,name:"Risotto mit getrockneten Tomaten und Rucola dazu Ziegenkäse",image:"/media/recipes/4be37e30-1d00-43ca-80dd-f2f3567f78c7_964.jpeg"},{id:965,name:"Maiseintopf",image:null},{id:966,name:"Eintopf mit Lamm und Auberginen",image:"/media/recipes/116b4329-7220-4e25-93bd-a7d4967ca6bf_966.jpeg"},{id:967,name:"Schoko-Soufflé",image:"/media/recipes/56076670-e2bc-4106-94fd-d19910032417_967.jpeg"},{id:968,name:"Nudelauflauf mit Parmesanstreuseln",image:"/media/recipes/264105ac-1ad1-4aac-8fa7-7f1ce153a0ba_968.jpeg"},{id:969,name:"Quinoa Powersalat mit Tomaten und Avocado",image:"/media/recipes/6de99697-9c82-44d3-8b8a-c96b7188aa19_969.jpeg"},{id:970,name:"Gemüsepfanne",image:"/media/recipes/10e0baf3-2956-4b08-81af-a51ffe3ae08b_970.jpeg"}]},methods:{cardVariant(e){return this.selected_result==e?"tonal":"elevated"},goToSelectedRecipe(){this.dialog=!1;let e=this.search_results[this.selected_result];e.recipe_id!=null&&this.$router.push({name:"view_recipe",params:{id:e.recipe_id}})}}}),ft=(e,t)=>{const n=e.__vccOpts||e;for(const[i,r]of t)n[i]=r;return n},Me=typeof window<"u",kl=Me&&"IntersectionObserver"in window,gv=Me&&("ontouchstart"in window||window.navigator.maxTouchPoints>0);function yv(e,t,n){const i=t.length-1;if(i<0)return e===void 0?n:e;for(let r=0;rro(e[i],t[i]))}function pc(e,t,n){return e==null||!t||typeof t!="string"?n:e[t]!==void 0?e[t]:(t=t.replace(/\[(\w+)\]/g,".$1"),t=t.replace(/^\./,""),yv(e,t.split("."),n))}function Ol(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Array.from({length:e},(n,i)=>t+i)}function se(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"px";if(!(e==null||e===""))return isNaN(+e)?String(e):isFinite(+e)?`${Number(e)}${t}`:void 0}function qs(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Pa(e){if(e&&"$el"in e){const t=e.$el;return(t==null?void 0:t.nodeType)===Node.TEXT_NODE?t.nextElementSibling:t}return e}const fc=Object.freeze({enter:13,tab:9,delete:46,esc:27,space:32,up:38,down:40,left:37,right:39,end:35,home:36,del:46,backspace:8,insert:45,pageup:33,pagedown:34,shift:16});function xo(e,t){return t.every(n=>e.hasOwnProperty(n))}function Lp(e,t){const n={},i=new Set(Object.keys(e));for(const r of t)i.has(r)&&(n[r]=e[r]);return n}function mc(e,t,n){const i=Object.create(null),r=Object.create(null);for(const a in e)t.some(o=>o instanceof RegExp?o.test(a):o===a)&&!(n!=null&&n.some(o=>o===a))?i[a]=e[a]:r[a]=e[a];return[i,r]}function Np(e,t){const n={...e};return t.forEach(i=>delete n[i]),n}const qp=/^on[^a-z]/,Il=e=>qp.test(e),vv=["onAfterscriptexecute","onAnimationcancel","onAnimationend","onAnimationiteration","onAnimationstart","onAuxclick","onBeforeinput","onBeforescriptexecute","onChange","onClick","onCompositionend","onCompositionstart","onCompositionupdate","onContextmenu","onCopy","onCut","onDblclick","onFocusin","onFocusout","onFullscreenchange","onFullscreenerror","onGesturechange","onGestureend","onGesturestart","onGotpointercapture","onInput","onKeydown","onKeypress","onKeyup","onLostpointercapture","onMousedown","onMousemove","onMouseout","onMouseover","onMouseup","onMousewheel","onPaste","onPointercancel","onPointerdown","onPointerenter","onPointerleave","onPointermove","onPointerout","onPointerover","onPointerup","onReset","onSelect","onSubmit","onTouchcancel","onTouchend","onTouchmove","onTouchstart","onTransitioncancel","onTransitionend","onTransitionrun","onTransitionstart","onWheel"];function wv(e){const[t,n]=mc(e,[qp]),i=Np(t,vv),[r,a]=mc(n,["class","style","id",/^data-/]);return Object.assign(r,t),Object.assign(a,i),[r,a]}function Sr(e){return e==null?[]:Array.isArray(e)?e:[e]}function hi(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;return Math.max(t,Math.min(n,e))}function hc(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"0";return e+n.repeat(Math.max(0,t-e.length))}function gc(e,t){return(arguments.length>2&&arguments[2]!==void 0?arguments[2]:"0").repeat(Math.max(0,t-e.length))+e}function bv(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;const n=[];let i=0;for(;i0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;const i={};for(const r in e)i[r]=e[r];for(const r in t){const a=e[r],o=t[r];if(qs(a)&&qs(o)){i[r]=bt(a,o,n);continue}if(Array.isArray(a)&&Array.isArray(o)&&n){i[r]=n(a,o);continue}i[r]=o}return i}function $p(e){return e.map(t=>t.type===Re?$p(t.children):t).flat()}function Hn(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";if(Hn.cache.has(e))return Hn.cache.get(e);const t=e.replace(/[^a-z]/gi,"-").replace(/\B([A-Z])/g,"-$1").toLowerCase();return Hn.cache.set(e,t),t}Hn.cache=new Map;function Rr(e,t){if(!t||typeof t!="object")return[];if(Array.isArray(t))return t.map(n=>Rr(e,n)).flat(1);if(Array.isArray(t.children))return t.children.map(n=>Rr(e,n)).flat(1);if(t.component){if(Object.getOwnPropertySymbols(t.component.provides).includes(e))return[t.component];if(t.component.subTree)return Rr(e,t.component.subTree).flat(1)}return[]}function Pl(e){const t=nt({}),n=S(e);return on(()=>{for(const i in n.value)t[i]=n.value[i]},{flush:"sync"}),ul(t)}function Ea(e,t){return e.includes(t)}function Bp(e){return e[2].toLowerCase()+e.slice(3)}const jt=()=>[Function,Array];function yc(e,t){return t="on"+an(t),!!(e[t]||e[`${t}Once`]||e[`${t}Capture`]||e[`${t}OnceCapture`]||e[`${t}CaptureOnce`])}function _v(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i1&&arguments[1]!==void 0?arguments[1]:!0;const n=["button","[href]",'input:not([type="hidden"])',"select","textarea","[tabindex]"].map(i=>`${i}${t?':not([tabindex="-1"])':""}:not([disabled])`).join(", ");return[...e.querySelectorAll(n)]}function Sv(e,t){if(!(Me&&typeof CSS<"u"&&typeof CSS.supports<"u"&&CSS.supports(`selector(${t})`)))return null;try{return!!e&&e.matches(t)}catch{return null}}function Rv(e,t){if(!Me||e===0)return t(),()=>{};const n=window.setTimeout(t,e);return()=>window.clearTimeout(n)}const Mp=["top","bottom"],Cv=["start","end","left","right"];function $s(e,t){let[n,i]=e.split(" ");return i||(i=Ea(Mp,n)?"start":Ea(Cv,n)?"top":"center"),{side:vc(n,t),align:vc(i,t)}}function vc(e,t){return e==="start"?t?"right":"left":e==="end"?t?"left":"right":e}function Fo(e){return{side:{center:"center",top:"bottom",bottom:"top",left:"right",right:"left"}[e.side],align:e.align}}function Ao(e){return{side:e.side,align:{center:"center",top:"bottom",bottom:"top",left:"right",right:"left"}[e.align]}}function wc(e){return{side:e.align,align:e.side}}function bc(e){return Ea(Mp,e.side)?"y":"x"}class Gn{constructor(t){let{x:n,y:i,width:r,height:a}=t;this.x=n,this.y=i,this.width=r,this.height=a}get top(){return this.y}get bottom(){return this.y+this.height}get left(){return this.x}get right(){return this.x+this.width}}function _c(e,t){return{x:{before:Math.max(0,t.left-e.left),after:Math.max(0,e.right-t.right)},y:{before:Math.max(0,t.top-e.top),after:Math.max(0,e.bottom-t.bottom)}}}function Jp(e){return Array.isArray(e)?new Gn({x:e[0],y:e[1],width:0,height:0}):e.getBoundingClientRect()}function El(e){const t=e.getBoundingClientRect(),n=getComputedStyle(e),i=n.transform;if(i){let r,a,o,s,d;if(i.startsWith("matrix3d("))r=i.slice(9,-1).split(/, /),a=+r[0],o=+r[5],s=+r[12],d=+r[13];else if(i.startsWith("matrix("))r=i.slice(7,-1).split(/, /),a=+r[0],o=+r[3],s=+r[4],d=+r[5];else return new Gn(t);const c=n.transformOrigin,u=t.x-s-(1-a)*parseFloat(c),p=t.y-d-(1-o)*parseFloat(c.slice(c.indexOf(" ")+1)),f=a?t.width/a:e.offsetWidth+1,h=o?t.height/o:e.offsetHeight+1;return new Gn({x:u,y:p,width:f,height:h})}else return new Gn(t)}function oi(e,t,n){if(typeof e.animate>"u")return{finished:Promise.resolve()};let i;try{i=e.animate(t,n)}catch{return{finished:Promise.resolve()}}return typeof i.finished>"u"&&(i.finished=new Promise(r=>{i.onfinish=()=>{r(i)}})),i}const ga=new WeakMap;function Tv(e,t){Object.keys(t).forEach(n=>{if(Il(n)){const i=Bp(n),r=ga.get(e);if(t[n]==null)r==null||r.forEach(a=>{const[o,s]=a;o===i&&(e.removeEventListener(i,s),r.delete(a))});else if(!r||![...r].some(a=>a[0]===i&&a[1]===t[n])){e.addEventListener(i,t[n]);const a=r||new Set;a.add([i,t[n]]),ga.has(e)||ga.set(e,a)}}else t[n]==null?e.removeAttribute(n):e.setAttribute(n,t[n])})}function kv(e,t){Object.keys(t).forEach(n=>{if(Il(n)){const i=Bp(n),r=ga.get(e);r==null||r.forEach(a=>{const[o,s]=a;o===i&&(e.removeEventListener(i,s),r.delete(a))})}else e.removeAttribute(n)})}const ei=2.4,Sc=.2126729,Rc=.7151522,Cc=.072175,Ov=.55,Iv=.58,Pv=.57,Ev=.62,oa=.03,Tc=1.45,xv=5e-4,Fv=1.25,Av=1.25,kc=.078,Oc=12.82051282051282,sa=.06,Ic=.001;function Pc(e,t){const n=(e.r/255)**ei,i=(e.g/255)**ei,r=(e.b/255)**ei,a=(t.r/255)**ei,o=(t.g/255)**ei,s=(t.b/255)**ei;let d=n*Sc+i*Rc+r*Cc,c=a*Sc+o*Rc+s*Cc;if(d<=oa&&(d+=(oa-d)**Tc),c<=oa&&(c+=(oa-c)**Tc),Math.abs(c-d)d){const p=(c**Ov-d**Iv)*Fv;u=p-Ic?0:p>-kc?p-p*Oc*sa:p+sa}return u*100}const xa=.20689655172413793,Dv=e=>e>xa**3?Math.cbrt(e):e/(3*xa**2)+4/29,Uv=e=>e>xa?e**3:3*xa**2*(e-4/29);function zp(e){const t=Dv,n=t(e[1]);return[116*n-16,500*(t(e[0]/.95047)-n),200*(n-t(e[2]/1.08883))]}function Hp(e){const t=Uv,n=(e[0]+16)/116;return[t(n+e[1]/500)*.95047,t(n),t(n-e[2]/200)*1.08883]}const Lv=[[3.2406,-1.5372,-.4986],[-.9689,1.8758,.0415],[.0557,-.204,1.057]],Nv=e=>e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055,qv=[[.4124,.3576,.1805],[.2126,.7152,.0722],[.0193,.1192,.9505]],$v=e=>e<=.04045?e/12.92:((e+.055)/1.055)**2.4;function Gp(e){const t=Array(3),n=Nv,i=Lv;for(let r=0;r<3;++r)t[r]=Math.round(hi(n(i[r][0]*e[0]+i[r][1]*e[1]+i[r][2]*e[2]))*255);return{r:t[0],g:t[1],b:t[2]}}function xl(e){let{r:t,g:n,b:i}=e;const r=[0,0,0],a=$v,o=qv;t=a(t/255),n=a(n/255),i=a(i/255);for(let s=0;s<3;++s)r[s]=o[s][0]*t+o[s][1]*n+o[s][2]*i;return r}function Bs(e){return!!e&&/^(#|var\(--|(rgb|hsl)a?\()/.test(e)}function Bv(e){return Bs(e)&&!/^((rgb|hsl)a?\()?var\(--/.test(e)}const Ec=/^(?(?:rgb|hsl)a?)\((?.+)\)/,Vv={rgb:(e,t,n,i)=>({r:e,g:t,b:n,a:i}),rgba:(e,t,n,i)=>({r:e,g:t,b:n,a:i}),hsl:(e,t,n,i)=>xc({h:e,s:t,l:n,a:i}),hsla:(e,t,n,i)=>xc({h:e,s:t,l:n,a:i}),hsv:(e,t,n,i)=>Fr({h:e,s:t,v:n,a:i}),hsva:(e,t,n,i)=>Fr({h:e,s:t,v:n,a:i})};function Gt(e){if(typeof e=="number")return{r:(e&16711680)>>16,g:(e&65280)>>8,b:e&255};if(typeof e=="string"&&Ec.test(e)){const{groups:t}=e.match(Ec),{fn:n,values:i}=t,r=i.split(/,\s*/).map(a=>a.endsWith("%")&&["hsl","hsla","hsv","hsva"].includes(n)?parseFloat(a)/100:parseFloat(a));return Vv[n](...r)}else if(typeof e=="string"){let t=e.startsWith("#")?e.slice(1):e;return[3,4].includes(t.length)?t=t.split("").map(n=>n+n).join(""):[6,8].includes(t.length),Jv(t)}else if(typeof e=="object"){if(xo(e,["r","g","b"]))return e;if(xo(e,["h","s","l"]))return Fr(Kp(e));if(xo(e,["h","s","v"]))return Fr(e)}throw new TypeError(`Invalid color: ${e==null?e:String(e)||e.constructor.name} +Expected #hex, #hexa, rgb(), rgba(), hsl(), hsla(), object or number`)}function Fr(e){const{h:t,s:n,v:i,a:r}=e,a=s=>{const d=(s+t/60)%6;return i-i*n*Math.max(Math.min(d,4-d,1),0)},o=[a(5),a(3),a(1)].map(s=>Math.round(s*255));return{r:o[0],g:o[1],b:o[2],a:r}}function xc(e){return Fr(Kp(e))}function Kp(e){const{h:t,s:n,l:i,a:r}=e,a=i+n*Math.min(i,1-i),o=a===0?0:2-2*i/a;return{h:t,s:o,v:a,a:r}}function la(e){const t=Math.round(e).toString(16);return("00".substr(0,2-t.length)+t).toUpperCase()}function Mv(e){let{r:t,g:n,b:i,a:r}=e;return`#${[la(t),la(n),la(i),r!==void 0?la(Math.round(r*255)):""].join("")}`}function Jv(e){e=zv(e);let[t,n,i,r]=bv(e,2).map(a=>parseInt(a,16));return r=r===void 0?r:r/255,{r:t,g:n,b:i,a:r}}function zv(e){return e.startsWith("#")&&(e=e.slice(1)),e=e.replace(/([^0-9a-f])/gi,"F"),(e.length===3||e.length===4)&&(e=e.split("").map(t=>t+t).join("")),e.length!==6&&(e=hc(hc(e,6),8,"F")),e}function Hv(e,t){const n=zp(xl(e));return n[0]=n[0]+t*10,Gp(Hp(n))}function Gv(e,t){const n=zp(xl(e));return n[0]=n[0]-t*10,Gp(Hp(n))}function Kv(e){const t=Gt(e);return xl(t)[1]}function Wp(e){const t=Math.abs(Pc(Gt(0),Gt(e)));return Math.abs(Pc(Gt(16777215),Gt(e)))>Math.min(t,50)?"#fff":"#000"}function G(e,t){return n=>Object.keys(e).reduce((i,r)=>{const o=typeof e[r]=="object"&&e[r]!=null&&!Array.isArray(e[r])?e[r]:{type:e[r]};return n&&r in n?i[r]={...o,default:n[r]}:i[r]=o,t&&!i[r].source&&(i[r].source=t),i},{})}const ge=G({class:[String,Array],style:{type:[String,Array,Object],default:null}},"component");function Jr(e){if(e._setup=e._setup??e.setup,!e.name)return e;if(e._setup){e.props=G(e.props??{},e.name)();const t=Object.keys(e.props).filter(n=>n!=="class"&&n!=="style");e.filterProps=function(i){return Lp(i,t)},e.props._as=String,e.setup=function(i,r){const a=Al();if(!a.value)return e._setup(i,r);const{props:o,provideSubDefaults:s}=nw(i,i._as??e.name,a),d=e._setup(o,r);return s(),d}}return e}function le(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return t=>(e?Jr:ot)(t)}function ao(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"div",n=arguments.length>2?arguments[2]:void 0;return le()({name:n??an(It(e.replace(/__/g,"-"))),props:{tag:{type:String,default:t},...ge()},setup(i,r){let{slots:a}=r;return()=>{var o;return Kt(i.tag,{class:[e,i.class],style:i.style},(o=a.default)==null?void 0:o.call(a))}}})}function Yp(e){if(typeof e.getRootNode!="function"){for(;e.parentNode;)e=e.parentNode;return e!==document?null:document}const t=e.getRootNode();return t!==document&&t.getRootNode({composed:!0})!==document?null:t}const Fa="cubic-bezier(0.4, 0, 0.2, 1)",Wv="cubic-bezier(0.0, 0, 0.2, 1)",Yv="cubic-bezier(0.4, 0, 1, 1)";function Qe(e,t){const n=Rl();if(!n)throw new Error(`[Vuetify] ${e} ${t||"must be called from inside a setup function"}`);return n}function Wt(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"composables";const t=Qe(e).type;return Hn((t==null?void 0:t.aliasName)||(t==null?void 0:t.name))}let Zp=0,ya=new WeakMap;function ln(){const e=Qe("getUid");if(ya.has(e))return ya.get(e);{const t=Zp++;return ya.set(e,t),t}}ln.reset=()=>{Zp=0,ya=new WeakMap};function Zv(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;for(;e;){if(t?Xv(e):Fl(e))return e;e=e.parentElement}return document.scrollingElement}function Aa(e,t){const n=[];if(t&&e&&!t.contains(e))return n;for(;e&&(Fl(e)&&n.push(e),e!==t);)e=e.parentElement;return n}function Fl(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;const t=window.getComputedStyle(e);return t.overflowY==="scroll"||t.overflowY==="auto"&&e.scrollHeight>e.clientHeight}function Xv(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;const t=window.getComputedStyle(e);return["scroll","auto"].includes(t.overflowY)}function Qv(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Qe("injectSelf");const{provides:n}=t;if(n&&e in n)return n[e]}function jv(e){for(;e;){if(window.getComputedStyle(e).position==="fixed")return!0;e=e.offsetParent}return!1}function me(e){const t=Qe("useRender");t.render=e}const gi=Symbol.for("vuetify:defaults");function ew(e){return we(e)}function Al(){const e=Le(gi);if(!e)throw new Error("[Vuetify] Could not find defaults instance");return e}function dn(e,t){const n=Al(),i=we(e),r=S(()=>{if(dt(t==null?void 0:t.disabled))return n.value;const o=dt(t==null?void 0:t.scoped),s=dt(t==null?void 0:t.reset),d=dt(t==null?void 0:t.root);if(i.value==null&&!(o||s||d))return n.value;let c=bt(i.value,{prev:n.value});if(o)return c;if(s||d){const u=Number(s||1/0);for(let p=0;p<=u&&!(!c||!("prev"in c));p++)c=c.prev;return c&&typeof d=="string"&&d in c&&(c=bt(bt(c,{prev:c}),c[d])),c}return c.prev?bt(c.prev,c):c});return _t(gi,r),r}function tw(e,t){var n,i;return typeof((n=e.props)==null?void 0:n[t])<"u"||typeof((i=e.props)==null?void 0:i[Hn(t)])<"u"}function nw(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Al();const i=Qe("useDefaults");if(t=t??i.type.name??i.type.__name,!t)throw new Error("[Vuetify] Could not determine component name");const r=S(()=>{var d;return(d=n.value)==null?void 0:d[e._as??t]}),a=new Proxy(e,{get(d,c){var p,f,h,y;const u=Reflect.get(d,c);return c==="class"||c==="style"?[(p=r.value)==null?void 0:p[c],u].filter(v=>v!=null):typeof c=="string"&&!tw(i.vnode,c)?((f=r.value)==null?void 0:f[c])??((y=(h=n.value)==null?void 0:h.global)==null?void 0:y[c])??u:u}}),o=ve();on(()=>{if(r.value){const d=Object.entries(r.value).filter(c=>{let[u]=c;return u.startsWith(u[0].toUpperCase())});o.value=d.length?Object.fromEntries(d):void 0}else o.value=void 0});function s(){const d=Qv(gi,i);_t(gi,S(()=>o.value?bt((d==null?void 0:d.value)??{},o.value):d==null?void 0:d.value))}return{props:a,provideSubDefaults:s}}const iw=G({defaults:Object,disabled:Boolean,reset:[Number,String],root:[Boolean,String],scoped:Boolean},"VDefaultsProvider"),at=le(!1)({name:"VDefaultsProvider",props:iw(),setup(e,t){let{slots:n}=t;const{defaults:i,disabled:r,reset:a,root:o,scoped:s}=ul(e);return dn(i,{reset:a,root:o,scoped:s,disabled:r}),()=>{var d;return(d=n.default)==null?void 0:d.call(n)}}});function Dl(e){return Pl(()=>{const t=[],n={};if(e.value.background)if(Bs(e.value.background)){if(n.backgroundColor=e.value.background,!e.value.text&&Bv(e.value.background)){const i=Gt(e.value.background);if(i.a==null||i.a===1){const r=Wp(i);n.color=r,n.caretColor=r}}}else t.push(`bg-${e.value.background}`);return e.value.text&&(Bs(e.value.text)?(n.color=e.value.text,n.caretColor=e.value.text):t.push(`text-${e.value.text}`)),{colorClasses:t,colorStyles:n}})}function Wn(e,t){const n=S(()=>({text:Ke(e)?e.value:t?e[t]:null})),{colorClasses:i,colorStyles:r}=Dl(n);return{textColorClasses:i,textColorStyles:r}}function Lt(e,t){const n=S(()=>({background:Ke(e)?e.value:t?e[t]:null})),{colorClasses:i,colorStyles:r}=Dl(n);return{backgroundColorClasses:i,backgroundColorStyles:r}}const rw={collapse:"mdi-chevron-up",complete:"mdi-check",cancel:"mdi-close-circle",close:"mdi-close",delete:"mdi-close-circle",clear:"mdi-close-circle",success:"mdi-check-circle",info:"mdi-information",warning:"mdi-alert-circle",error:"mdi-close-circle",prev:"mdi-chevron-left",next:"mdi-chevron-right",checkboxOn:"mdi-checkbox-marked",checkboxOff:"mdi-checkbox-blank-outline",checkboxIndeterminate:"mdi-minus-box",delimiter:"mdi-circle",sortAsc:"mdi-arrow-up",sortDesc:"mdi-arrow-down",expand:"mdi-chevron-down",menu:"mdi-menu",subgroup:"mdi-menu-down",dropdown:"mdi-menu-down",radioOn:"mdi-radiobox-marked",radioOff:"mdi-radiobox-blank",edit:"mdi-pencil",ratingEmpty:"mdi-star-outline",ratingFull:"mdi-star",ratingHalf:"mdi-star-half-full",loading:"mdi-cached",first:"mdi-page-first",last:"mdi-page-last",unfold:"mdi-unfold-more-horizontal",file:"mdi-paperclip",plus:"mdi-plus",minus:"mdi-minus",calendar:"mdi-calendar",eyeDropper:"mdi-eyedropper"},aw={component:e=>Kt(Ul,{...e,class:"mdi"})},Ne=[String,Function,Object,Array],Vs=Symbol.for("vuetify:icons"),oo=G({icon:{type:Ne},tag:{type:String,required:!0}},"icon"),Fc=le()({name:"VComponentIcon",props:oo(),setup(e,t){let{slots:n}=t;return()=>{const i=e.icon;return m(e.tag,null,{default:()=>{var r;return[e.icon?m(i,null,null):(r=n.default)==null?void 0:r.call(n)]}})}}}),Xp=Jr({name:"VSvgIcon",inheritAttrs:!1,props:oo(),setup(e,t){let{attrs:n}=t;return()=>m(e.tag,Ae(n,{style:null}),{default:()=>[m("svg",{class:"v-icon__svg",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",role:"img","aria-hidden":"true"},[Array.isArray(e.icon)?e.icon.map(i=>Array.isArray(i)?m("path",{d:i[0],"fill-opacity":i[1]},null):m("path",{d:i},null)):m("path",{d:e.icon},null)])]})}});Jr({name:"VLigatureIcon",props:oo(),setup(e){return()=>m(e.tag,null,{default:()=>[e.icon]})}});const Ul=Jr({name:"VClassIcon",props:oo(),setup(e){return()=>m(e.tag,{class:e.icon},null)}}),ow={svg:{component:Xp},class:{component:Ul}};function sw(e){return bt({defaultSet:"mdi",sets:{...ow,mdi:aw},aliases:{...rw,vuetify:["M8.2241 14.2009L12 21L22 3H14.4459L8.2241 14.2009Z",["M7.26303 12.4733L7.00113 12L2 3H12.5261C12.5261 3 12.5261 3 12.5261 3L7.26303 12.4733Z",.6]],"vuetify-outline":"svg:M7.26 12.47 12.53 3H2L7.26 12.47ZM14.45 3 8.22 14.2 12 21 22 3H14.45ZM18.6 5 12 16.88 10.51 14.2 15.62 5ZM7.26 8.35 5.4 5H9.13L7.26 8.35Z"}},e)}const lw=e=>{const t=Le(Vs);if(!t)throw new Error("Missing Vuetify Icons provide!");return{iconData:S(()=>{var d;const i=dt(e);if(!i)return{component:Fc};let r=i;if(typeof r=="string"&&(r=r.trim(),r.startsWith("$")&&(r=(d=t.aliases)==null?void 0:d[r.slice(1)])),!r)throw new Error(`Could not find aliased icon "${i}"`);if(Array.isArray(r))return{component:Xp,icon:r};if(typeof r!="string")return{component:Fc,icon:r};const a=Object.keys(t.sets).find(c=>typeof r=="string"&&r.startsWith(`${c}:`)),o=a?r.slice(a.length+1):r;return{component:t.sets[a??t.defaultSet].component,icon:o}})}},dw=["x-small","small","default","large","x-large"],En=G({size:{type:[String,Number],default:"default"}},"size");function _i(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Wt();return Pl(()=>{let n,i;return Ea(dw,e.size)?n=`${t}--size-${e.size}`:e.size&&(i={width:se(e.size),height:se(e.size)}),{sizeClasses:n,sizeStyles:i}})}const He=G({tag:{type:String,default:"div"}},"tag"),Ar=Symbol.for("vuetify:theme"),Ye=G({theme:String},"theme");function Ac(){return{defaultTheme:"light",variations:{colors:[],lighten:0,darken:0},themes:{light:{dark:!1,colors:{background:"#FFFFFF",surface:"#FFFFFF","surface-bright":"#FFFFFF","surface-light":"#EEEEEE","surface-variant":"#424242","on-surface-variant":"#EEEEEE",primary:"#1867C0","primary-darken-1":"#1F5592",secondary:"#48A9A6","secondary-darken-1":"#018786",error:"#B00020",info:"#2196F3",success:"#4CAF50",warning:"#FB8C00"},variables:{"border-color":"#000000","border-opacity":.12,"high-emphasis-opacity":.87,"medium-emphasis-opacity":.6,"disabled-opacity":.38,"idle-opacity":.04,"hover-opacity":.04,"focus-opacity":.12,"selected-opacity":.08,"activated-opacity":.12,"pressed-opacity":.12,"dragged-opacity":.08,"theme-kbd":"#212529","theme-on-kbd":"#FFFFFF","theme-code":"#F5F5F5","theme-on-code":"#000000"}},dark:{dark:!0,colors:{background:"#121212",surface:"#212121","surface-bright":"#ccbfd6","surface-light":"#424242","surface-variant":"#a3a3a3","on-surface-variant":"#424242",primary:"#2196F3","primary-darken-1":"#277CC1",secondary:"#54B6B2","secondary-darken-1":"#48A9A6",error:"#CF6679",info:"#2196F3",success:"#4CAF50",warning:"#FB8C00"},variables:{"border-color":"#FFFFFF","border-opacity":.12,"high-emphasis-opacity":1,"medium-emphasis-opacity":.7,"disabled-opacity":.5,"idle-opacity":.1,"hover-opacity":.04,"focus-opacity":.12,"selected-opacity":.08,"activated-opacity":.12,"pressed-opacity":.16,"dragged-opacity":.08,"theme-kbd":"#212529","theme-on-kbd":"#FFFFFF","theme-code":"#343434","theme-on-code":"#CCCCCC"}}}}}function cw(){var i,r;let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Ac();const t=Ac();if(!e)return{...t,isDisabled:!0};const n={};for(const[a,o]of Object.entries(e.themes??{})){const s=o.dark||a==="dark"?(i=t.themes)==null?void 0:i.dark:(r=t.themes)==null?void 0:r.light;n[a]=bt(s,o)}return bt(t,{...e,themes:n})}function uw(e){const t=cw(e),n=we(t.defaultTheme),i=we(t.themes),r=S(()=>{const u={};for(const[p,f]of Object.entries(i.value)){const h=u[p]={...f,colors:{...f.colors}};if(t.variations)for(const y of t.variations.colors){const v=h.colors[y];if(v)for(const R of["lighten","darken"]){const C=R==="lighten"?Hv:Gv;for(const T of Ol(t.variations[R],1))h.colors[`${y}-${R}-${T}`]=Mv(C(Gt(v),T))}}for(const y of Object.keys(h.colors)){if(/^on-[a-z]/.test(y)||h.colors[`on-${y}`])continue;const v=`on-${y}`,R=Gt(h.colors[y]);h.colors[v]=Wp(R)}}return u}),a=S(()=>r.value[n.value]),o=S(()=>{const u=[];a.value.dark&&Ln(u,":root",["color-scheme: dark"]),Ln(u,":root",Dc(a.value));for(const[y,v]of Object.entries(r.value))Ln(u,`.v-theme--${y}`,[`color-scheme: ${v.dark?"dark":"normal"}`,...Dc(v)]);const p=[],f=[],h=new Set(Object.values(r.value).flatMap(y=>Object.keys(y.colors)));for(const y of h)/^on-[a-z]/.test(y)?Ln(f,`.${y}`,[`color: rgb(var(--v-theme-${y})) !important`]):(Ln(p,`.bg-${y}`,[`--v-theme-overlay-multiplier: var(--v-theme-${y}-overlay-multiplier)`,`background-color: rgb(var(--v-theme-${y})) !important`,`color: rgb(var(--v-theme-on-${y})) !important`]),Ln(f,`.text-${y}`,[`color: rgb(var(--v-theme-${y})) !important`]),Ln(f,`.border-${y}`,[`--v-border-color: var(--v-theme-${y})`]));return u.push(...p,...f),u.map((y,v)=>v===0?y:` ${y}`).join("")});function s(){return{style:[{children:o.value,id:"vuetify-theme-stylesheet",nonce:t.cspNonce||!1}]}}function d(u){if(t.isDisabled)return;const p=u._context.provides.usehead;if(p)if(p.push){const h=p.push(s);Me&&fe(o,()=>{h.patch(s)})}else Me?(p.addHeadObjs(S(s)),on(()=>p.updateDOM())):p.addHeadObjs(s());else{let y=function(){if(typeof document<"u"&&!h){const v=document.createElement("style");v.type="text/css",v.id="vuetify-theme-stylesheet",t.cspNonce&&v.setAttribute("nonce",t.cspNonce),h=v,document.head.appendChild(h)}h&&(h.innerHTML=o.value)};var f=y;let h=Me?document.getElementById("vuetify-theme-stylesheet"):null;Me?fe(o,y,{immediate:!0}):y()}}const c=S(()=>t.isDisabled?void 0:`v-theme--${n.value}`);return{install:d,isDisabled:t.isDisabled,name:n,themes:i,current:a,computedThemes:r,themeClasses:c,styles:o,global:{name:n,current:a}}}function je(e){Qe("provideTheme");const t=Le(Ar,null);if(!t)throw new Error("Could not find Vuetify theme injection");const n=S(()=>e.theme??t.name.value),i=S(()=>t.themes.value[n.value]),r=S(()=>t.isDisabled?void 0:`v-theme--${n.value}`),a={...t,name:n,current:i,themeClasses:r};return _t(Ar,a),a}function pw(){Qe("useTheme");const e=Le(Ar,null);if(!e)throw new Error("Could not find Vuetify theme injection");return e}function Ln(e,t,n){e.push(`${t} { +`,...n.map(i=>` ${i}; +`),`} +`)}function Dc(e){const t=e.dark?2:1,n=e.dark?1:2,i=[];for(const[r,a]of Object.entries(e.colors)){const o=Gt(a);i.push(`--v-theme-${r}: ${o.r},${o.g},${o.b}`),r.startsWith("on-")||i.push(`--v-theme-${r}-overlay-multiplier: ${Kv(a)>.18?t:n}`)}for(const[r,a]of Object.entries(e.variables)){const o=typeof a=="string"&&a.startsWith("#")?Gt(a):void 0,s=o?`${o.r}, ${o.g}, ${o.b}`:void 0;i.push(`--v-${r}: ${s??a}`)}return i}const fw=G({color:String,start:Boolean,end:Boolean,icon:Ne,...ge(),...En(),...He({tag:"i"}),...Ye()},"VIcon"),Je=le()({name:"VIcon",props:fw(),setup(e,t){let{attrs:n,slots:i}=t;const r=we(),{themeClasses:a}=je(e),{iconData:o}=lw(S(()=>r.value||e.icon)),{sizeClasses:s}=_i(e),{textColorClasses:d,textColorStyles:c}=Wn(Se(e,"color"));return me(()=>{var p,f;const u=(p=i.default)==null?void 0:p.call(i);return u&&(r.value=(f=$p(u).filter(h=>h.type===Vr&&h.children&&typeof h.children=="string")[0])==null?void 0:f.children),m(o.value.component,{tag:e.tag,icon:o.value.icon,class:["v-icon","notranslate",a.value,s.value,d.value,{"v-icon--clickable":!!n.onClick,"v-icon--start":e.start,"v-icon--end":e.end},e.class],style:[s.value?void 0:{fontSize:se(e.size),height:se(e.size),width:se(e.size)},c.value,e.style],role:n.onClick?"button":void 0,"aria-hidden":!n.onClick},{default:()=>[u]})}),{}}}),zr=G({height:[Number,String],maxHeight:[Number,String],maxWidth:[Number,String],minHeight:[Number,String],minWidth:[Number,String],width:[Number,String]},"dimension");function Hr(e){return{dimensionStyles:S(()=>({height:se(e.height),maxHeight:se(e.maxHeight),maxWidth:se(e.maxWidth),minHeight:se(e.minHeight),minWidth:se(e.minWidth),width:se(e.width)}))}}function mw(e){return{aspectStyles:S(()=>{const t=Number(e.aspectRatio);return t?{paddingBottom:String(1/t*100)+"%"}:void 0})}}const Qp=G({aspectRatio:[String,Number],contentClass:String,inline:Boolean,...ge(),...zr()},"VResponsive"),Uc=le()({name:"VResponsive",props:Qp(),setup(e,t){let{slots:n}=t;const{aspectStyles:i}=mw(e),{dimensionStyles:r}=Hr(e);return me(()=>{var a;return m("div",{class:["v-responsive",{"v-responsive--inline":e.inline},e.class],style:[r.value,e.style]},[m("div",{class:"v-responsive__sizer",style:i.value},null),(a=n.additional)==null?void 0:a.call(n),n.default&&m("div",{class:["v-responsive__content",e.contentClass]},[n.default()])])}),{}}}),St=G({rounded:{type:[Boolean,Number,String],default:void 0}},"rounded");function Et(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Wt();return{roundedClasses:S(()=>{const i=Ke(e)?e.value:e.rounded,r=[];if(i===!0||i==="")r.push(`${t}--rounded`);else if(typeof i=="string"||i===0)for(const a of String(i).split(" "))r.push(`rounded-${a}`);return r})}}const so=G({transition:{type:[Boolean,String,Object],default:"fade-transition",validator:e=>e!==!0}},"transition"),Mn=(e,t)=>{let{slots:n}=t;const{transition:i,disabled:r,...a}=e,{component:o=nn,...s}=typeof i=="object"?i:{};return Kt(o,Ae(typeof i=="string"?{name:r?"":i}:s,a,{disabled:r}),n)};function hw(e,t){if(!kl)return;const n=t.modifiers||{},i=t.value,{handler:r,options:a}=typeof i=="object"?i:{handler:i,options:{}},o=new IntersectionObserver(function(){var p;let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],d=arguments.length>1?arguments[1]:void 0;const c=(p=e._observe)==null?void 0:p[t.instance.$.uid];if(!c)return;const u=s.some(f=>f.isIntersecting);r&&(!n.quiet||c.init)&&(!n.once||u||c.init)&&r(u,s,d),u&&n.once?jp(e,t):c.init=!0},a);e._observe=Object(e._observe),e._observe[t.instance.$.uid]={init:!1,observer:o},o.observe(e)}function jp(e,t){var i;const n=(i=e._observe)==null?void 0:i[t.instance.$.uid];n&&(n.observer.unobserve(e),delete e._observe[t.instance.$.uid])}const gw={mounted:hw,unmounted:jp},ef=gw,yw=G({alt:String,cover:Boolean,color:String,draggable:{type:[Boolean,String],default:void 0},eager:Boolean,gradient:String,lazySrc:String,options:{type:Object,default:()=>({root:void 0,rootMargin:void 0,threshold:void 0})},sizes:String,src:{type:[String,Object],default:""},crossorigin:String,referrerpolicy:String,srcset:String,position:String,...Qp(),...ge(),...St(),...so()},"VImg"),Si=le()({name:"VImg",directives:{intersect:ef},props:yw(),emits:{loadstart:e=>!0,load:e=>!0,error:e=>!0},setup(e,t){let{emit:n,slots:i}=t;const{backgroundColorClasses:r,backgroundColorStyles:a}=Lt(Se(e,"color")),{roundedClasses:o}=Et(e),s=Qe("VImg"),d=ve(""),c=we(),u=ve(e.eager?"loading":"idle"),p=ve(),f=ve(),h=S(()=>e.src&&typeof e.src=="object"?{src:e.src.src,srcset:e.srcset||e.src.srcset,lazySrc:e.lazySrc||e.src.lazySrc,aspect:Number(e.aspectRatio||e.src.aspect||0)}:{src:e.src,srcset:e.srcset,lazySrc:e.lazySrc,aspect:Number(e.aspectRatio||0)}),y=S(()=>h.value.aspect||p.value/f.value||0);fe(()=>e.src,()=>{v(u.value!=="idle")}),fe(y,(E,U)=>{!E&&U&&c.value&&A(c.value)}),vl(()=>v());function v(E){if(!(e.eager&&E)&&!(kl&&!E&&!e.eager)){if(u.value="loading",h.value.lazySrc){const U=new Image;U.src=h.value.lazySrc,A(U,null)}h.value.src&&pt(()=>{var U;n("loadstart",((U=c.value)==null?void 0:U.currentSrc)||h.value.src),setTimeout(()=>{var B;if(!s.isUnmounted)if((B=c.value)!=null&&B.complete){if(c.value.naturalWidth||C(),u.value==="error")return;y.value||A(c.value,null),u.value==="loading"&&R()}else y.value||A(c.value),T()})})}}function R(){var E;s.isUnmounted||(T(),A(c.value),u.value="loaded",n("load",((E=c.value)==null?void 0:E.currentSrc)||h.value.src))}function C(){var E;s.isUnmounted||(u.value="error",n("error",((E=c.value)==null?void 0:E.currentSrc)||h.value.src))}function T(){const E=c.value;E&&(d.value=E.currentSrc||E.src)}let P=-1;qt(()=>{clearTimeout(P)});function A(E){let U=arguments.length>1&&arguments[1]!==void 0?arguments[1]:100;const B=()=>{if(clearTimeout(P),s.isUnmounted)return;const{naturalHeight:oe,naturalWidth:re}=E;oe||re?(p.value=re,f.value=oe):!E.complete&&u.value==="loading"&&U!=null?P=window.setTimeout(B,U):(E.currentSrc.endsWith(".svg")||E.currentSrc.startsWith("data:image/svg+xml"))&&(p.value=1,f.value=1)};B()}const q=S(()=>({"v-img__img--cover":e.cover,"v-img__img--contain":!e.cover})),O=()=>{var B;if(!h.value.src||u.value==="idle")return null;const E=m("img",{class:["v-img__img",q.value],style:{objectPosition:e.position},src:h.value.src,srcset:h.value.srcset,alt:e.alt,crossorigin:e.crossorigin,referrerpolicy:e.referrerpolicy,draggable:e.draggable,sizes:e.sizes,ref:c,onLoad:R,onError:C},null),U=(B=i.sources)==null?void 0:B.call(i);return m(Mn,{transition:e.transition,appear:!0},{default:()=>[Pt(U?m("picture",{class:"v-img__picture"},[U,E]):E,[[bi,u.value==="loaded"]])]})},I=()=>m(Mn,{transition:e.transition},{default:()=>[h.value.lazySrc&&u.value!=="loaded"&&m("img",{class:["v-img__img","v-img__img--preload",q.value],style:{objectPosition:e.position},src:h.value.lazySrc,alt:e.alt,crossorigin:e.crossorigin,referrerpolicy:e.referrerpolicy,draggable:e.draggable},null)]}),x=()=>i.placeholder?m(Mn,{transition:e.transition,appear:!0},{default:()=>[(u.value==="loading"||u.value==="error"&&!i.error)&&m("div",{class:"v-img__placeholder"},[i.placeholder()])]}):null,N=()=>i.error?m(Mn,{transition:e.transition,appear:!0},{default:()=>[u.value==="error"&&m("div",{class:"v-img__error"},[i.error()])]}):null,H=()=>e.gradient?m("div",{class:"v-img__gradient",style:{backgroundImage:`linear-gradient(${e.gradient})`}},null):null,K=ve(!1);{const E=fe(y,U=>{U&&(requestAnimationFrame(()=>{requestAnimationFrame(()=>{K.value=!0})}),E())})}return me(()=>{const E=Uc.filterProps(e);return Pt(m(Uc,Ae({class:["v-img",{"v-img--booting":!K.value},r.value,o.value,e.class],style:[{width:se(e.width==="auto"?p.value:e.width)},a.value,e.style]},E,{aspectRatio:y.value,"aria-label":e.alt,role:e.alt?"img":void 0}),{additional:()=>m(Re,null,[m(O,null,null),m(I,null,null),m(H,null,null),m(x,null,null),m(N,null,null)]),default:i.default}),[[Qn("intersect"),{handler:v,options:e.options},null,{once:!0}]])}),{currentSrc:d,image:c,state:u,naturalWidth:p,naturalHeight:f}}}),vw=[null,"default","comfortable","compact"],$t=G({density:{type:String,default:"default",validator:e=>vw.includes(e)}},"density");function cn(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Wt();return{densityClasses:S(()=>`${t}--density-${e.density}`)}}const ww=["elevated","flat","tonal","outlined","text","plain"];function lo(e,t){return m(Re,null,[e&&m("span",{key:"overlay",class:`${t}__overlay`},null),m("span",{key:"underlay",class:`${t}__underlay`},null)])}const Ri=G({color:String,variant:{type:String,default:"elevated",validator:e=>ww.includes(e)}},"variant");function co(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Wt();const n=S(()=>{const{variant:a}=dt(e);return`${t}--variant-${a}`}),{colorClasses:i,colorStyles:r}=Dl(S(()=>{const{variant:a,color:o}=dt(e);return{[["elevated","flat"].includes(a)?"background":"text"]:o}}));return{colorClasses:i,colorStyles:r,variantClasses:n}}const bw=G({start:Boolean,end:Boolean,icon:Ne,image:String,text:String,...ge(),...$t(),...St(),...En(),...He(),...Ye(),...Ri({variant:"flat"})},"VAvatar"),Dr=le()({name:"VAvatar",props:bw(),setup(e,t){let{slots:n}=t;const{themeClasses:i}=je(e),{colorClasses:r,colorStyles:a,variantClasses:o}=co(e),{densityClasses:s}=cn(e),{roundedClasses:d}=Et(e),{sizeClasses:c,sizeStyles:u}=_i(e);return me(()=>m(e.tag,{class:["v-avatar",{"v-avatar--start":e.start,"v-avatar--end":e.end},i.value,r.value,s.value,d.value,c.value,o.value,e.class],style:[a.value,u.value,e.style]},{default:()=>[n.default?m(at,{key:"content-defaults",defaults:{VImg:{cover:!0,image:e.image},VIcon:{icon:e.icon}}},{default:()=>[n.default()]}):e.image?m(Si,{key:"image",src:e.image,alt:"",cover:!0},null):e.icon?m(Je,{key:"icon",icon:e.icon},null):e.text,lo(!1,"v-avatar")]})),{}}}),Ci=G({border:[Boolean,Number,String]},"border");function Ti(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Wt();return{borderClasses:S(()=>{const i=Ke(e)?e.value:e.border,r=[];if(i===!0||i==="")r.push(`${t}--border`);else if(typeof i=="string"||i===0)for(const a of String(i).split(" "))r.push(`border-${a}`);return r})}}const un=G({elevation:{type:[Number,String],validator(e){const t=parseInt(e);return!isNaN(t)&&t>=0&&t<=24}}},"elevation");function xn(e){return{elevationClasses:S(()=>{const n=Ke(e)?e.value:e.elevation,i=[];return n==null||i.push(`elevation-${n}`),i})}}const tf=G({divided:Boolean,...Ci(),...ge(),...$t(),...un(),...St(),...He(),...Ye(),...Ri()},"VBtnGroup"),Da=le()({name:"VBtnGroup",props:tf(),setup(e,t){let{slots:n}=t;const{themeClasses:i}=je(e),{densityClasses:r}=cn(e),{borderClasses:a}=Ti(e),{elevationClasses:o}=xn(e),{roundedClasses:s}=Et(e);dn({VBtn:{height:"auto",color:Se(e,"color"),density:Se(e,"density"),flat:!0,variant:Se(e,"variant")}}),me(()=>m(e.tag,{class:["v-btn-group",{"v-btn-group--divided":e.divided},i.value,a.value,r.value,o.value,s.value,e.class],style:e.style},n))}});function Yn(e,t){let n;function i(){n=Wa(),n.run(()=>t.length?t(()=>{n==null||n.stop(),i()}):t())}fe(e,r=>{r&&!n?i():r||(n==null||n.stop(),n=void 0)},{immediate:!0}),Nt(()=>{n==null||n.stop()})}function xt(e,t,n){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:p=>p,r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:p=>p;const a=Qe("useProxiedModel"),o=we(e[t]!==void 0?e[t]:n),s=Hn(t),c=S(s!==t?()=>{var p,f,h,y;return e[t],!!(((p=a.vnode.props)!=null&&p.hasOwnProperty(t)||(f=a.vnode.props)!=null&&f.hasOwnProperty(s))&&((h=a.vnode.props)!=null&&h.hasOwnProperty(`onUpdate:${t}`)||(y=a.vnode.props)!=null&&y.hasOwnProperty(`onUpdate:${s}`)))}:()=>{var p,f;return e[t],!!((p=a.vnode.props)!=null&&p.hasOwnProperty(t)&&((f=a.vnode.props)!=null&&f.hasOwnProperty(`onUpdate:${t}`)))});Yn(()=>!c.value,()=>{fe(()=>e[t],p=>{o.value=p})});const u=S({get(){const p=e[t];return i(c.value?p:o.value)},set(p){const f=r(p),h=_e(c.value?e[t]:o.value);h===f||i(h)===p||(o.value=f,a==null||a.emit(`update:${t}`,f))}});return Object.defineProperty(u,"externalValue",{get:()=>c.value?e[t]:o.value}),u}const Gr=G({modelValue:{type:null,default:void 0},multiple:Boolean,mandatory:[Boolean,String],max:Number,selectedClass:String,disabled:Boolean},"group"),Ll=G({value:null,disabled:Boolean,selectedClass:String},"group-item");function Nl(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;const i=Qe("useGroupItem");if(!i)throw new Error("[Vuetify] useGroupItem composable must be used inside a component setup function");const r=ln();_t(Symbol.for(`${t.description}:id`),r);const a=Le(t,null);if(!a){if(!n)return a;throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${t.description}`)}const o=Se(e,"value"),s=S(()=>!!(a.disabled.value||e.disabled));a.register({id:r,value:o,disabled:s},i),qt(()=>{a.unregister(r)});const d=S(()=>a.isSelected(r)),c=S(()=>d.value&&[a.selectedClass.value,e.selectedClass]);return fe(d,u=>{i.emit("group:selected",{value:u})}),{id:r,isSelected:d,toggle:()=>a.select(r,!d.value),select:u=>a.select(r,u),selectedClass:c,value:o,disabled:s,group:a}}function Kr(e,t){let n=!1;const i=nt([]),r=xt(e,"modelValue",[],f=>f==null?[]:nf(i,Sr(f)),f=>{const h=Sw(i,f);return e.multiple?h:h[0]}),a=Qe("useGroup");function o(f,h){const y=f,v=Symbol.for(`${t.description}:id`),C=Rr(v,a==null?void 0:a.vnode).indexOf(h);dt(y.value)==null&&(y.value=C),C>-1?i.splice(C,0,y):i.push(y)}function s(f){if(n)return;d();const h=i.findIndex(y=>y.id===f);i.splice(h,1)}function d(){const f=i.find(h=>!h.disabled);f&&e.mandatory==="force"&&!r.value.length&&(r.value=[f.id])}Pn(()=>{d()}),qt(()=>{n=!0});function c(f,h){const y=i.find(v=>v.id===f);if(!(h&&(y!=null&&y.disabled)))if(e.multiple){const v=r.value.slice(),R=v.findIndex(T=>T===f),C=~R;if(h=h??!C,C&&e.mandatory&&v.length<=1||!C&&e.max!=null&&v.length+1>e.max)return;R<0&&h?v.push(f):R>=0&&!h&&v.splice(R,1),r.value=v}else{const v=r.value.includes(f);if(e.mandatory&&v)return;r.value=h??!v?[f]:[]}}function u(f){if(e.multiple,r.value.length){const h=r.value[0],y=i.findIndex(C=>C.id===h);let v=(y+f)%i.length,R=i[v];for(;R.disabled&&v!==y;)v=(v+f)%i.length,R=i[v];if(R.disabled)return;r.value=[i[v].id]}else{const h=i.find(y=>!y.disabled);h&&(r.value=[h.id])}}const p={register:o,unregister:s,selected:r,select:c,disabled:Se(e,"disabled"),prev:()=>u(i.length-1),next:()=>u(1),isSelected:f=>r.value.includes(f),selectedClass:S(()=>e.selectedClass),items:S(()=>i),getItemIndex:f=>_w(i,f)};return _t(t,p),p}function _w(e,t){const n=nf(e,[t]);return n.length?e.findIndex(i=>i.id===n[0]):-1}function nf(e,t){const n=[];return t.forEach(i=>{const r=e.find(o=>ro(i,o.value)),a=e[i];(r==null?void 0:r.value)!=null?n.push(r.id):a!=null&&n.push(a.id)}),n}function Sw(e,t){const n=[];return t.forEach(i=>{const r=e.findIndex(a=>a.id===i);if(~r){const a=e[r];n.push(a.value!=null?a.value:r)}}),n}const ql=Symbol.for("vuetify:v-btn-toggle"),Rw=G({...tf(),...Gr()},"VBtnToggle");le()({name:"VBtnToggle",props:Rw(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const{isSelected:i,next:r,prev:a,select:o,selected:s}=Kr(e,ql);return me(()=>{const d=Da.filterProps(e);return m(Da,Ae({class:["v-btn-toggle",e.class]},d,{style:e.style}),{default:()=>{var c;return[(c=n.default)==null?void 0:c.call(n,{isSelected:i,next:r,prev:a,select:o,selected:s})]}})}),{next:r,prev:a,select:o}}});function rf(e,t){const n=we(),i=ve(!1);if(kl){const r=new IntersectionObserver(a=>{e==null||e(a,r),i.value=!!a.find(o=>o.isIntersecting)},t);qt(()=>{r.disconnect()}),fe(n,(a,o)=>{o&&(r.unobserve(o),i.value=!1),a&&r.observe(a)},{flush:"post"})}return{intersectionRef:n,isIntersecting:i}}function Ua(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"content";const n=we(),i=we();if(Me){const r=new ResizeObserver(a=>{e==null||e(a,r),a.length&&(t==="content"?i.value=a[0].contentRect:i.value=a[0].target.getBoundingClientRect())});qt(()=>{r.disconnect()}),fe(n,(a,o)=>{o&&(r.unobserve(Pa(o)),i.value=void 0),a&&r.observe(Pa(a))},{flush:"post"})}return{resizeRef:n,contentRect:Br(i)}}const Cw=G({bgColor:String,color:String,indeterminate:[Boolean,String],modelValue:{type:[Number,String],default:0},rotate:{type:[Number,String],default:0},width:{type:[Number,String],default:4},...ge(),...En(),...He({tag:"div"}),...Ye()},"VProgressCircular"),Tw=le()({name:"VProgressCircular",props:Cw(),setup(e,t){let{slots:n}=t;const i=20,r=2*Math.PI*i,a=we(),{themeClasses:o}=je(e),{sizeClasses:s,sizeStyles:d}=_i(e),{textColorClasses:c,textColorStyles:u}=Wn(Se(e,"color")),{textColorClasses:p,textColorStyles:f}=Wn(Se(e,"bgColor")),{intersectionRef:h,isIntersecting:y}=rf(),{resizeRef:v,contentRect:R}=Ua(),C=S(()=>Math.max(0,Math.min(100,parseFloat(e.modelValue)))),T=S(()=>Number(e.width)),P=S(()=>d.value?Number(e.size):R.value?R.value.width:Math.max(T.value,32)),A=S(()=>i/(1-T.value/P.value)*2),q=S(()=>T.value/P.value*A.value),O=S(()=>se((100-C.value)/100*r));return on(()=>{h.value=a.value,v.value=a.value}),me(()=>m(e.tag,{ref:a,class:["v-progress-circular",{"v-progress-circular--indeterminate":!!e.indeterminate,"v-progress-circular--visible":y.value,"v-progress-circular--disable-shrink":e.indeterminate==="disable-shrink"},o.value,s.value,c.value,e.class],style:[d.value,u.value,e.style],role:"progressbar","aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":e.indeterminate?void 0:C.value},{default:()=>[m("svg",{style:{transform:`rotate(calc(-90deg + ${Number(e.rotate)}deg))`},xmlns:"http://www.w3.org/2000/svg",viewBox:`0 0 ${A.value} ${A.value}`},[m("circle",{class:["v-progress-circular__underlay",p.value],style:f.value,fill:"transparent",cx:"50%",cy:"50%",r:i,"stroke-width":q.value,"stroke-dasharray":r,"stroke-dashoffset":0},null),m("circle",{class:"v-progress-circular__overlay",fill:"transparent",cx:"50%",cy:"50%",r:i,"stroke-width":q.value,"stroke-dasharray":r,"stroke-dashoffset":O.value},null)]),n.default&&m("div",{class:"v-progress-circular__content"},[n.default({value:C.value})])]})),{}}}),kw={badge:"Badge",open:"Open",close:"Close",confirmEdit:{ok:"OK",cancel:"Cancel"},dataIterator:{noResultsText:"No matching records found",loadingText:"Loading items..."},dataTable:{itemsPerPageText:"Rows per page:",ariaLabel:{sortDescending:"Sorted descending.",sortAscending:"Sorted ascending.",sortNone:"Not sorted.",activateNone:"Activate to remove sorting.",activateDescending:"Activate to sort descending.",activateAscending:"Activate to sort ascending."},sortBy:"Sort by"},dataFooter:{itemsPerPageText:"Items per page:",itemsPerPageAll:"All",nextPage:"Next page",prevPage:"Previous page",firstPage:"First page",lastPage:"Last page",pageText:"{0}-{1} of {2}"},dateRangeInput:{divider:"to"},datePicker:{itemsSelected:"{0} selected",range:{title:"Select dates",header:"Enter dates"},title:"Select date",header:"Enter date",input:{placeholder:"Enter date"}},noDataText:"No data available",carousel:{prev:"Previous visual",next:"Next visual",ariaLabel:{delimiter:"Carousel slide {0} of {1}"}},calendar:{moreEvents:"{0} more",today:"Today"},input:{clear:"Clear {0}",prependAction:"{0} prepended action",appendAction:"{0} appended action",otp:"Please enter OTP character {0}"},fileInput:{counter:"{0} files",counterSize:"{0} files ({1} in total)"},timePicker:{am:"AM",pm:"PM"},pagination:{ariaLabel:{root:"Pagination Navigation",next:"Next page",previous:"Previous page",page:"Go to page {0}",currentPage:"Page {0}, Current page",first:"First page",last:"Last page"}},stepper:{next:"Next",prev:"Previous"},rating:{ariaLabel:{item:"Rating {0} of {1}"}},loading:"Loading...",infiniteScroll:{loadMore:"Load more",empty:"No more"}},Lc="$vuetify.",Nc=(e,t)=>e.replace(/\{(\d+)\}/g,(n,i)=>String(t[+i])),af=(e,t,n)=>function(i){for(var r=arguments.length,a=new Array(r>1?r-1:0),o=1;onew Intl.NumberFormat([e.value,t.value],i).format(n)}function Do(e,t,n){const i=xt(e,t,e[t]??n.value);return i.value=e[t]??n.value,fe(n,r=>{e[t]==null&&(i.value=n.value)}),i}function sf(e){return t=>{const n=Do(t,"locale",e.current),i=Do(t,"fallback",e.fallback),r=Do(t,"messages",e.messages);return{name:"vuetify",current:n,fallback:i,messages:r,t:af(n,i,r),n:of(n,i),provide:sf({current:n,fallback:i,messages:r})}}}function Ow(e){const t=ve((e==null?void 0:e.locale)??"en"),n=ve((e==null?void 0:e.fallback)??"en"),i=we({en:kw,...e==null?void 0:e.messages});return{name:"vuetify",current:t,fallback:n,messages:i,t:af(t,n,i),n:of(t,n),provide:sf({current:t,fallback:n,messages:i})}}const La=Symbol.for("vuetify:locale");function Iw(e){return e.name!=null}function Pw(e){const t=e!=null&&e.adapter&&Iw(e==null?void 0:e.adapter)?e==null?void 0:e.adapter:Ow(e),n=xw(t,e);return{...t,...n}}function $l(){const e=Le(La);if(!e)throw new Error("[Vuetify] Could not find injected locale instance");return e}function Ew(){return{af:!1,ar:!0,bg:!1,ca:!1,ckb:!1,cs:!1,de:!1,el:!1,en:!1,es:!1,et:!1,fa:!0,fi:!1,fr:!1,hr:!1,hu:!1,he:!0,id:!1,it:!1,ja:!1,km:!1,ko:!1,lv:!1,lt:!1,nl:!1,no:!1,pl:!1,pt:!1,ro:!1,ru:!1,sk:!1,sl:!1,srCyrl:!1,srLatn:!1,sv:!1,th:!1,tr:!1,az:!1,uk:!1,vi:!1,zhHans:!1,zhHant:!1}}function xw(e,t){const n=we((t==null?void 0:t.rtl)??Ew()),i=S(()=>n.value[e.current.value]??!1);return{isRtl:i,rtl:n,rtlClasses:S(()=>`v-locale--is-${i.value?"rtl":"ltr"}`)}}function Yt(){const e=Le(La);if(!e)throw new Error("[Vuetify] Could not find injected rtl instance");return{isRtl:e.isRtl,rtlClasses:e.rtlClasses}}const qc={center:"center",top:"bottom",bottom:"top",left:"right",right:"left"},Bl=G({location:String},"location");function Vl(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=arguments.length>2?arguments[2]:void 0;const{isRtl:i}=Yt();return{locationStyles:S(()=>{if(!e.location)return{};const{side:a,align:o}=$s(e.location.split(" ").length>1?e.location:`${e.location} center`,i.value);function s(c){return n?n(c):0}const d={};return a!=="center"&&(t?d[qc[a]]=`calc(100% - ${s(a)}px)`:d[a]=0),o!=="center"?t?d[qc[o]]=`calc(100% - ${s(o)}px)`:d[o]=0:(a==="center"?d.top=d.left="50%":d[{top:"left",bottom:"left",left:"top",right:"top"}[a]]="50%",d.transform={top:"translateX(-50%)",bottom:"translateX(-50%)",left:"translateY(-50%)",right:"translateY(-50%)",center:"translate(-50%, -50%)"}[a]),d})}}const Fw=G({absolute:Boolean,active:{type:Boolean,default:!0},bgColor:String,bgOpacity:[Number,String],bufferValue:{type:[Number,String],default:0},clickable:Boolean,color:String,height:{type:[Number,String],default:4},indeterminate:Boolean,max:{type:[Number,String],default:100},modelValue:{type:[Number,String],default:0},reverse:Boolean,stream:Boolean,striped:Boolean,roundedBar:Boolean,...ge(),...Bl({location:"top"}),...St(),...He(),...Ye()},"VProgressLinear"),Aw=le()({name:"VProgressLinear",props:Fw(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const i=xt(e,"modelValue"),{isRtl:r,rtlClasses:a}=Yt(),{themeClasses:o}=je(e),{locationStyles:s}=Vl(e),{textColorClasses:d,textColorStyles:c}=Wn(e,"color"),{backgroundColorClasses:u,backgroundColorStyles:p}=Lt(S(()=>e.bgColor||e.color)),{backgroundColorClasses:f,backgroundColorStyles:h}=Lt(e,"color"),{roundedClasses:y}=Et(e),{intersectionRef:v,isIntersecting:R}=rf(),C=S(()=>parseInt(e.max,10)),T=S(()=>parseInt(e.height,10)),P=S(()=>parseFloat(e.bufferValue)/C.value*100),A=S(()=>parseFloat(i.value)/C.value*100),q=S(()=>r.value!==e.reverse),O=S(()=>e.indeterminate?"fade-transition":"slide-x-transition"),I=S(()=>e.bgOpacity==null?e.bgOpacity:parseFloat(e.bgOpacity));function x(N){if(!v.value)return;const{left:H,right:K,width:E}=v.value.getBoundingClientRect(),U=q.value?E-N.clientX+(K-E):N.clientX-H;i.value=Math.round(U/E*C.value)}return me(()=>m(e.tag,{ref:v,class:["v-progress-linear",{"v-progress-linear--absolute":e.absolute,"v-progress-linear--active":e.active&&R.value,"v-progress-linear--reverse":q.value,"v-progress-linear--rounded":e.rounded,"v-progress-linear--rounded-bar":e.roundedBar,"v-progress-linear--striped":e.striped},y.value,o.value,a.value,e.class],style:[{bottom:e.location==="bottom"?0:void 0,top:e.location==="top"?0:void 0,height:e.active?se(T.value):0,"--v-progress-linear-height":se(T.value),...s.value},e.style],role:"progressbar","aria-hidden":e.active?"false":"true","aria-valuemin":"0","aria-valuemax":e.max,"aria-valuenow":e.indeterminate?void 0:A.value,onClick:e.clickable&&x},{default:()=>[e.stream&&m("div",{key:"stream",class:["v-progress-linear__stream",d.value],style:{...c.value,[q.value?"left":"right"]:se(-T.value),borderTop:`${se(T.value/2)} dotted`,opacity:I.value,top:`calc(50% - ${se(T.value/4)})`,width:se(100-P.value,"%"),"--v-progress-linear-stream-to":se(T.value*(q.value?1:-1))}},null),m("div",{class:["v-progress-linear__background",u.value],style:[p.value,{opacity:I.value,width:se(e.stream?P.value:100,"%")}]},null),m(nn,{name:O.value},{default:()=>[e.indeterminate?m("div",{class:"v-progress-linear__indeterminate"},[["long","short"].map(N=>m("div",{key:N,class:["v-progress-linear__indeterminate",N,f.value],style:h.value},null))]):m("div",{class:["v-progress-linear__determinate",f.value],style:[h.value,{width:se(A.value,"%")}]},null)]}),n.default&&m("div",{class:"v-progress-linear__content"},[n.default({value:A.value,buffer:P.value})])]})),{}}}),Ml=G({loading:[Boolean,String]},"loader");function Jl(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Wt();return{loaderClasses:S(()=>({[`${t}--loading`]:e.loading}))}}function lf(e,t){var i;let{slots:n}=t;return m("div",{class:`${e.name}__loader`},[((i=n.default)==null?void 0:i.call(n,{color:e.color,isActive:e.active}))||m(Aw,{absolute:e.absolute,active:e.active,color:e.color,height:"2",indeterminate:!0},null)])}const Dw=["static","relative","fixed","absolute","sticky"],df=G({position:{type:String,validator:e=>Dw.includes(e)}},"position");function cf(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Wt();return{positionClasses:S(()=>e.position?`${t}--${e.position}`:void 0)}}function Uw(){const e=Qe("useRoute");return S(()=>{var t;return(t=e==null?void 0:e.proxy)==null?void 0:t.$route})}function Lw(){var e,t;return(t=(e=Qe("useRouter"))==null?void 0:e.proxy)==null?void 0:t.$router}function zl(e,t){const n=Dh("RouterLink"),i=S(()=>!!(e.href||e.to)),r=S(()=>(i==null?void 0:i.value)||yc(t,"click")||yc(e,"click"));if(typeof n=="string")return{isLink:i,isClickable:r,href:Se(e,"href")};const a=e.to?n.useLink(e):void 0,o=Uw();return{isLink:i,isClickable:r,route:a==null?void 0:a.route,navigate:a==null?void 0:a.navigate,isActive:a&&S(()=>{var s,d,c;return e.exact?o.value?((c=a.isExactActive)==null?void 0:c.value)&&ro(a.route.value.query,o.value.query):(d=a.isExactActive)==null?void 0:d.value:(s=a.isActive)==null?void 0:s.value}),href:S(()=>e.to?a==null?void 0:a.route.value.href:e.href)}}const Hl=G({href:String,replace:Boolean,to:[String,Object],exact:Boolean},"router");let Uo=!1;function Nw(e,t){let n=!1,i,r;Me&&(pt(()=>{window.addEventListener("popstate",a),i=e==null?void 0:e.beforeEach((o,s,d)=>{Uo?n?t(d):d():setTimeout(()=>n?t(d):d()),Uo=!0}),r=e==null?void 0:e.afterEach(()=>{Uo=!1})}),Nt(()=>{window.removeEventListener("popstate",a),i==null||i(),r==null||r()}));function a(o){var s;(s=o.state)!=null&&s.replaced||(n=!0,setTimeout(()=>n=!1))}}function qw(e,t){fe(()=>{var n;return(n=e.isActive)==null?void 0:n.value},n=>{e.isLink.value&&n&&t&&pt(()=>{t(!0)})},{immediate:!0})}const Ms=Symbol("rippleStop"),$w=80;function $c(e,t){e.style.transform=t,e.style.webkitTransform=t}function Js(e){return e.constructor.name==="TouchEvent"}function uf(e){return e.constructor.name==="KeyboardEvent"}const Bw=function(e,t){var p;let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=0,r=0;if(!uf(e)){const f=t.getBoundingClientRect(),h=Js(e)?e.touches[e.touches.length-1]:e;i=h.clientX-f.left,r=h.clientY-f.top}let a=0,o=.3;(p=t._ripple)!=null&&p.circle?(o=.15,a=t.clientWidth/2,a=n.center?a:a+Math.sqrt((i-a)**2+(r-a)**2)/4):a=Math.sqrt(t.clientWidth**2+t.clientHeight**2)/2;const s=`${(t.clientWidth-a*2)/2}px`,d=`${(t.clientHeight-a*2)/2}px`,c=n.center?s:`${i-a}px`,u=n.center?d:`${r-a}px`;return{radius:a,scale:o,x:c,y:u,centerX:s,centerY:d}},Na={show(e,t){var h;let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!((h=t==null?void 0:t._ripple)!=null&&h.enabled))return;const i=document.createElement("span"),r=document.createElement("span");i.appendChild(r),i.className="v-ripple__container",n.class&&(i.className+=` ${n.class}`);const{radius:a,scale:o,x:s,y:d,centerX:c,centerY:u}=Bw(e,t,n),p=`${a*2}px`;r.className="v-ripple__animation",r.style.width=p,r.style.height=p,t.appendChild(i);const f=window.getComputedStyle(t);f&&f.position==="static"&&(t.style.position="relative",t.dataset.previousPosition="static"),r.classList.add("v-ripple__animation--enter"),r.classList.add("v-ripple__animation--visible"),$c(r,`translate(${s}, ${d}) scale3d(${o},${o},${o})`),r.dataset.activated=String(performance.now()),setTimeout(()=>{r.classList.remove("v-ripple__animation--enter"),r.classList.add("v-ripple__animation--in"),$c(r,`translate(${c}, ${u}) scale3d(1,1,1)`)},0)},hide(e){var a;if(!((a=e==null?void 0:e._ripple)!=null&&a.enabled))return;const t=e.getElementsByClassName("v-ripple__animation");if(t.length===0)return;const n=t[t.length-1];if(n.dataset.isHiding)return;n.dataset.isHiding="true";const i=performance.now()-Number(n.dataset.activated),r=Math.max(250-i,0);setTimeout(()=>{n.classList.remove("v-ripple__animation--in"),n.classList.add("v-ripple__animation--out"),setTimeout(()=>{var s;e.getElementsByClassName("v-ripple__animation").length===1&&e.dataset.previousPosition&&(e.style.position=e.dataset.previousPosition,delete e.dataset.previousPosition),((s=n.parentNode)==null?void 0:s.parentNode)===e&&e.removeChild(n.parentNode)},300)},r)}};function pf(e){return typeof e>"u"||!!e}function Ur(e){const t={},n=e.currentTarget;if(!(!(n!=null&&n._ripple)||n._ripple.touched||e[Ms])){if(e[Ms]=!0,Js(e))n._ripple.touched=!0,n._ripple.isTouch=!0;else if(n._ripple.isTouch)return;if(t.center=n._ripple.centered||uf(e),n._ripple.class&&(t.class=n._ripple.class),Js(e)){if(n._ripple.showTimerCommit)return;n._ripple.showTimerCommit=()=>{Na.show(e,n,t)},n._ripple.showTimer=window.setTimeout(()=>{var i;(i=n==null?void 0:n._ripple)!=null&&i.showTimerCommit&&(n._ripple.showTimerCommit(),n._ripple.showTimerCommit=null)},$w)}else Na.show(e,n,t)}}function Bc(e){e[Ms]=!0}function vt(e){const t=e.currentTarget;if(t!=null&&t._ripple){if(window.clearTimeout(t._ripple.showTimer),e.type==="touchend"&&t._ripple.showTimerCommit){t._ripple.showTimerCommit(),t._ripple.showTimerCommit=null,t._ripple.showTimer=window.setTimeout(()=>{vt(e)});return}window.setTimeout(()=>{t._ripple&&(t._ripple.touched=!1)}),Na.hide(t)}}function ff(e){const t=e.currentTarget;t!=null&&t._ripple&&(t._ripple.showTimerCommit&&(t._ripple.showTimerCommit=null),window.clearTimeout(t._ripple.showTimer))}let Lr=!1;function mf(e){!Lr&&(e.keyCode===fc.enter||e.keyCode===fc.space)&&(Lr=!0,Ur(e))}function hf(e){Lr=!1,vt(e)}function gf(e){Lr&&(Lr=!1,vt(e))}function yf(e,t,n){const{value:i,modifiers:r}=t,a=pf(i);if(a||Na.hide(e),e._ripple=e._ripple??{},e._ripple.enabled=a,e._ripple.centered=r.center,e._ripple.circle=r.circle,qs(i)&&i.class&&(e._ripple.class=i.class),a&&!n){if(r.stop){e.addEventListener("touchstart",Bc,{passive:!0}),e.addEventListener("mousedown",Bc);return}e.addEventListener("touchstart",Ur,{passive:!0}),e.addEventListener("touchend",vt,{passive:!0}),e.addEventListener("touchmove",ff,{passive:!0}),e.addEventListener("touchcancel",vt),e.addEventListener("mousedown",Ur),e.addEventListener("mouseup",vt),e.addEventListener("mouseleave",vt),e.addEventListener("keydown",mf),e.addEventListener("keyup",hf),e.addEventListener("blur",gf),e.addEventListener("dragstart",vt,{passive:!0})}else!a&&n&&vf(e)}function vf(e){e.removeEventListener("mousedown",Ur),e.removeEventListener("touchstart",Ur),e.removeEventListener("touchend",vt),e.removeEventListener("touchmove",ff),e.removeEventListener("touchcancel",vt),e.removeEventListener("mouseup",vt),e.removeEventListener("mouseleave",vt),e.removeEventListener("keydown",mf),e.removeEventListener("keyup",hf),e.removeEventListener("dragstart",vt),e.removeEventListener("blur",gf)}function Vw(e,t){yf(e,t,!1)}function Mw(e){delete e._ripple,vf(e)}function Jw(e,t){if(t.value===t.oldValue)return;const n=pf(t.oldValue);yf(e,t,n)}const uo={mounted:Vw,unmounted:Mw,updated:Jw},zw=G({active:{type:Boolean,default:void 0},symbol:{type:null,default:ql},flat:Boolean,icon:[Boolean,String,Function,Object],prependIcon:Ne,appendIcon:Ne,block:Boolean,slim:Boolean,stacked:Boolean,ripple:{type:[Boolean,Object],default:!0},text:String,...Ci(),...ge(),...$t(),...zr(),...un(),...Ll(),...Ml(),...Bl(),...df(),...St(),...Hl(),...En(),...He({tag:"button"}),...Ye(),...Ri({variant:"elevated"})},"VBtn"),tt=le()({name:"VBtn",directives:{Ripple:uo},props:zw(),emits:{"group:selected":e=>!0},setup(e,t){let{attrs:n,slots:i}=t;const{themeClasses:r}=je(e),{borderClasses:a}=Ti(e),{colorClasses:o,colorStyles:s,variantClasses:d}=co(e),{densityClasses:c}=cn(e),{dimensionStyles:u}=Hr(e),{elevationClasses:p}=xn(e),{loaderClasses:f}=Jl(e),{locationStyles:h}=Vl(e),{positionClasses:y}=cf(e),{roundedClasses:v}=Et(e),{sizeClasses:R,sizeStyles:C}=_i(e),T=Nl(e,e.symbol,!1),P=zl(e,n),A=S(()=>{var N;return e.active!==void 0?e.active:P.isLink.value?(N=P.isActive)==null?void 0:N.value:T==null?void 0:T.isSelected.value}),q=S(()=>(T==null?void 0:T.disabled.value)||e.disabled),O=S(()=>e.variant==="elevated"&&!(e.disabled||e.flat||e.border)),I=S(()=>{if(!(e.value===void 0||typeof e.value=="symbol"))return Object(e.value)===e.value?JSON.stringify(e.value,null,0):e.value});function x(N){var H;q.value||P.isLink.value&&(N.metaKey||N.ctrlKey||N.shiftKey||N.button!==0||n.target==="_blank")||((H=P.navigate)==null||H.call(P,N),T==null||T.toggle())}return qw(P,T==null?void 0:T.select),me(()=>{var B,oe;const N=P.isLink.value?"a":e.tag,H=!!(e.prependIcon||i.prepend),K=!!(e.appendIcon||i.append),E=!!(e.icon&&e.icon!==!0),U=(T==null?void 0:T.isSelected.value)&&(!P.isLink.value||((B=P.isActive)==null?void 0:B.value))||!T||((oe=P.isActive)==null?void 0:oe.value);return Pt(m(N,{type:N==="a"?void 0:"button",class:["v-btn",T==null?void 0:T.selectedClass.value,{"v-btn--active":A.value,"v-btn--block":e.block,"v-btn--disabled":q.value,"v-btn--elevated":O.value,"v-btn--flat":e.flat,"v-btn--icon":!!e.icon,"v-btn--loading":e.loading,"v-btn--slim":e.slim,"v-btn--stacked":e.stacked},r.value,a.value,U?o.value:void 0,c.value,p.value,f.value,y.value,v.value,R.value,d.value,e.class],style:[U?s.value:void 0,u.value,h.value,C.value,e.style],disabled:q.value||void 0,href:P.href.value,onClick:x,value:I.value},{default:()=>{var re;return[lo(!0,"v-btn"),!e.icon&&H&&m("span",{key:"prepend",class:"v-btn__prepend"},[i.prepend?m(at,{key:"prepend-defaults",disabled:!e.prependIcon,defaults:{VIcon:{icon:e.prependIcon}}},i.prepend):m(Je,{key:"prepend-icon",icon:e.prependIcon},null)]),m("span",{class:"v-btn__content","data-no-activator":""},[!i.default&&E?m(Je,{key:"content-icon",icon:e.icon},null):m(at,{key:"content-defaults",disabled:!E,defaults:{VIcon:{icon:e.icon}}},{default:()=>{var te;return[((te=i.default)==null?void 0:te.call(i))??e.text]}})]),!e.icon&&K&&m("span",{key:"append",class:"v-btn__append"},[i.append?m(at,{key:"append-defaults",disabled:!e.appendIcon,defaults:{VIcon:{icon:e.appendIcon}}},i.append):m(Je,{key:"append-icon",icon:e.appendIcon},null)]),!!e.loading&&m("span",{key:"loader",class:"v-btn__loader"},[((re=i.loader)==null?void 0:re.call(i))??m(Tw,{color:typeof e.loading=="boolean"?void 0:e.loading,indeterminate:!0,size:"23",width:"2"},null)])]}}),[[Qn("ripple"),!q.value&&e.ripple,null]])}),{group:T}}}),wf=le()({name:"VCardActions",props:ge(),setup(e,t){let{slots:n}=t;return dn({VBtn:{slim:!0,variant:"text"}}),me(()=>{var i;return m("div",{class:["v-card-actions",e.class],style:e.style},[(i=n.default)==null?void 0:i.call(n)])}),{}}}),qa=ao("v-card-subtitle"),Wr=ao("v-card-title"),Hw=G({appendAvatar:String,appendIcon:Ne,prependAvatar:String,prependIcon:Ne,subtitle:[String,Number],title:[String,Number],...ge(),...$t()},"VCardItem"),bf=le()({name:"VCardItem",props:Hw(),setup(e,t){let{slots:n}=t;return me(()=>{var c;const i=!!(e.prependAvatar||e.prependIcon),r=!!(i||n.prepend),a=!!(e.appendAvatar||e.appendIcon),o=!!(a||n.append),s=!!(e.title!=null||n.title),d=!!(e.subtitle!=null||n.subtitle);return m("div",{class:["v-card-item",e.class],style:e.style},[r&&m("div",{key:"prepend",class:"v-card-item__prepend"},[n.prepend?m(at,{key:"prepend-defaults",disabled:!i,defaults:{VAvatar:{density:e.density,image:e.prependAvatar},VIcon:{density:e.density,icon:e.prependIcon}}},n.prepend):m(Re,null,[e.prependAvatar&&m(Dr,{key:"prepend-avatar",density:e.density,image:e.prependAvatar},null),e.prependIcon&&m(Je,{key:"prepend-icon",density:e.density,icon:e.prependIcon},null)])]),m("div",{class:"v-card-item__content"},[s&&m(Wr,{key:"title"},{default:()=>{var u;return[((u=n.title)==null?void 0:u.call(n))??e.title]}}),d&&m(qa,{key:"subtitle"},{default:()=>{var u;return[((u=n.subtitle)==null?void 0:u.call(n))??e.subtitle]}}),(c=n.default)==null?void 0:c.call(n)]),o&&m("div",{key:"append",class:"v-card-item__append"},[n.append?m(at,{key:"append-defaults",disabled:!a,defaults:{VAvatar:{density:e.density,image:e.appendAvatar},VIcon:{density:e.density,icon:e.appendIcon}}},n.append):m(Re,null,[e.appendIcon&&m(Je,{key:"append-icon",density:e.density,icon:e.appendIcon},null),e.appendAvatar&&m(Dr,{key:"append-avatar",density:e.density,image:e.appendAvatar},null)])])])}),{}}}),rn=ao("v-card-text"),Gw=G({appendAvatar:String,appendIcon:Ne,disabled:Boolean,flat:Boolean,hover:Boolean,image:String,link:{type:Boolean,default:void 0},prependAvatar:String,prependIcon:Ne,ripple:{type:[Boolean,Object],default:!0},subtitle:[String,Number],text:[String,Number],title:[String,Number],...Ci(),...ge(),...$t(),...zr(),...un(),...Ml(),...Bl(),...df(),...St(),...Hl(),...He(),...Ye(),...Ri({variant:"elevated"})},"VCard"),en=le()({name:"VCard",directives:{Ripple:uo},props:Gw(),setup(e,t){let{attrs:n,slots:i}=t;const{themeClasses:r}=je(e),{borderClasses:a}=Ti(e),{colorClasses:o,colorStyles:s,variantClasses:d}=co(e),{densityClasses:c}=cn(e),{dimensionStyles:u}=Hr(e),{elevationClasses:p}=xn(e),{loaderClasses:f}=Jl(e),{locationStyles:h}=Vl(e),{positionClasses:y}=cf(e),{roundedClasses:v}=Et(e),R=zl(e,n),C=S(()=>e.link!==!1&&R.isLink.value),T=S(()=>!e.disabled&&e.link!==!1&&(e.link||R.isClickable.value));return me(()=>{const P=C.value?"a":e.tag,A=!!(i.title||e.title!=null),q=!!(i.subtitle||e.subtitle!=null),O=A||q,I=!!(i.append||e.appendAvatar||e.appendIcon),x=!!(i.prepend||e.prependAvatar||e.prependIcon),N=!!(i.image||e.image),H=O||x||I,K=!!(i.text||e.text!=null);return Pt(m(P,{class:["v-card",{"v-card--disabled":e.disabled,"v-card--flat":e.flat,"v-card--hover":e.hover&&!(e.disabled||e.flat),"v-card--link":T.value},r.value,a.value,o.value,c.value,p.value,f.value,y.value,v.value,d.value,e.class],style:[s.value,u.value,h.value,e.style],href:R.href.value,onClick:T.value&&R.navigate,tabindex:e.disabled?-1:void 0},{default:()=>{var E;return[N&&m("div",{key:"image",class:"v-card__image"},[i.image?m(at,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},i.image):m(Si,{key:"image-img",cover:!0,src:e.image},null)]),m(lf,{name:"v-card",active:!!e.loading,color:typeof e.loading=="boolean"?void 0:e.loading},{default:i.loader}),H&&m(bf,{key:"item",prependAvatar:e.prependAvatar,prependIcon:e.prependIcon,title:e.title,subtitle:e.subtitle,appendAvatar:e.appendAvatar,appendIcon:e.appendIcon},{default:i.item,prepend:i.prepend,title:i.title,subtitle:i.subtitle,append:i.append}),K&&m(rn,{key:"text"},{default:()=>{var U;return[((U=i.text)==null?void 0:U.call(i))??e.text]}}),(E=i.default)==null?void 0:E.call(i),i.actions&&m(wf,null,{default:i.actions}),lo(T.value,"v-card")]}}),[[Qn("ripple"),T.value&&e.ripple]])}),{}}}),Kw=G({disabled:Boolean,group:Boolean,hideOnLeave:Boolean,leaveAbsolute:Boolean,mode:String,origin:String},"transition");function Rt(e,t,n){return le()({name:e,props:Kw({mode:n,origin:t}),setup(i,r){let{slots:a}=r;const o={onBeforeEnter(s){i.origin&&(s.style.transformOrigin=i.origin)},onLeave(s){if(i.leaveAbsolute){const{offsetTop:d,offsetLeft:c,offsetWidth:u,offsetHeight:p}=s;s._transitionInitialStyles={position:s.style.position,top:s.style.top,left:s.style.left,width:s.style.width,height:s.style.height},s.style.position="absolute",s.style.top=`${d}px`,s.style.left=`${c}px`,s.style.width=`${u}px`,s.style.height=`${p}px`}i.hideOnLeave&&s.style.setProperty("display","none","important")},onAfterLeave(s){if(i.leaveAbsolute&&(s!=null&&s._transitionInitialStyles)){const{position:d,top:c,left:u,width:p,height:f}=s._transitionInitialStyles;delete s._transitionInitialStyles,s.style.position=d||"",s.style.top=c||"",s.style.left=u||"",s.style.width=p||"",s.style.height=f||""}}};return()=>{const s=i.group?Qg:nn;return Kt(s,{name:i.disabled?"":e,css:!i.disabled,...i.group?void 0:{mode:i.mode},...i.disabled?{}:o},a.default)}}})}function _f(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"in-out";return le()({name:e,props:{mode:{type:String,default:n},disabled:Boolean},setup(i,r){let{slots:a}=r;return()=>Kt(nn,{name:i.disabled?"":e,css:!i.disabled,...i.disabled?{}:t},a.default)}})}function Sf(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";const n=(arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1)?"width":"height",i=It(`offset-${n}`);return{onBeforeEnter(o){o._parent=o.parentNode,o._initialStyle={transition:o.style.transition,overflow:o.style.overflow,[n]:o.style[n]}},onEnter(o){const s=o._initialStyle;o.style.setProperty("transition","none","important"),o.style.overflow="hidden";const d=`${o[i]}px`;o.style[n]="0",o.offsetHeight,o.style.transition=s.transition,e&&o._parent&&o._parent.classList.add(e),requestAnimationFrame(()=>{o.style[n]=d})},onAfterEnter:a,onEnterCancelled:a,onLeave(o){o._initialStyle={transition:"",overflow:o.style.overflow,[n]:o.style[n]},o.style.overflow="hidden",o.style[n]=`${o[i]}px`,o.offsetHeight,requestAnimationFrame(()=>o.style[n]="0")},onAfterLeave:r,onLeaveCancelled:r};function r(o){e&&o._parent&&o._parent.classList.remove(e),a(o)}function a(o){const s=o._initialStyle[n];o.style.overflow=o._initialStyle.overflow,s!=null&&(o.style[n]=s),delete o._initialStyle}}const Ww=G({target:[Object,Array]},"v-dialog-transition"),Yw=le()({name:"VDialogTransition",props:Ww(),setup(e,t){let{slots:n}=t;const i={onBeforeEnter(r){r.style.pointerEvents="none",r.style.visibility="hidden"},async onEnter(r,a){var f;await new Promise(h=>requestAnimationFrame(h)),await new Promise(h=>requestAnimationFrame(h)),r.style.visibility="";const{x:o,y:s,sx:d,sy:c,speed:u}=Mc(e.target,r),p=oi(r,[{transform:`translate(${o}px, ${s}px) scale(${d}, ${c})`,opacity:0},{}],{duration:225*u,easing:Wv});(f=Vc(r))==null||f.forEach(h=>{oi(h,[{opacity:0},{opacity:0,offset:.33},{}],{duration:225*2*u,easing:Fa})}),p.finished.then(()=>a())},onAfterEnter(r){r.style.removeProperty("pointer-events")},onBeforeLeave(r){r.style.pointerEvents="none"},async onLeave(r,a){var f;await new Promise(h=>requestAnimationFrame(h));const{x:o,y:s,sx:d,sy:c,speed:u}=Mc(e.target,r);oi(r,[{},{transform:`translate(${o}px, ${s}px) scale(${d}, ${c})`,opacity:0}],{duration:125*u,easing:Yv}).finished.then(()=>a()),(f=Vc(r))==null||f.forEach(h=>{oi(h,[{},{opacity:0,offset:.2},{opacity:0}],{duration:125*2*u,easing:Fa})})},onAfterLeave(r){r.style.removeProperty("pointer-events")}};return()=>e.target?m(nn,Ae({name:"dialog-transition"},i,{css:!1}),n):m(nn,{name:"dialog-transition"},n)}});function Vc(e){var n;const t=(n=e.querySelector(":scope > .v-card, :scope > .v-sheet, :scope > .v-list"))==null?void 0:n.children;return t&&[...t]}function Mc(e,t){const n=Jp(e),i=El(t),[r,a]=getComputedStyle(t).transformOrigin.split(" ").map(C=>parseFloat(C)),[o,s]=getComputedStyle(t).getPropertyValue("--v-overlay-anchor-origin").split(" ");let d=n.left+n.width/2;o==="left"||s==="left"?d-=n.width/2:(o==="right"||s==="right")&&(d+=n.width/2);let c=n.top+n.height/2;o==="top"||s==="top"?c-=n.height/2:(o==="bottom"||s==="bottom")&&(c+=n.height/2);const u=n.width/i.width,p=n.height/i.height,f=Math.max(1,u,p),h=u/f||0,y=p/f||0,v=i.width*i.height/(window.innerWidth*window.innerHeight),R=v>.12?Math.min(1.5,(v-.12)*10+1):1;return{x:d-(r+i.left),y:c-(a+i.top),sx:h,sy:y,speed:R}}Rt("fab-transition","center center","out-in");Rt("dialog-bottom-transition");Rt("dialog-top-transition");const Jc=Rt("fade-transition");Rt("scale-transition");Rt("scroll-x-transition");Rt("scroll-x-reverse-transition");Rt("scroll-y-transition");Rt("scroll-y-reverse-transition");Rt("slide-x-transition");Rt("slide-x-reverse-transition");const Rf=Rt("slide-y-transition");Rt("slide-y-reverse-transition");const Cf=_f("expand-transition",Sf()),Tf=_f("expand-x-transition",Sf("",!0));function Lo(e,t){return{x:e.x+t.x,y:e.y+t.y}}function Zw(e,t){return{x:e.x-t.x,y:e.y-t.y}}function zc(e,t){if(e.side==="top"||e.side==="bottom"){const{side:n,align:i}=e,r=i==="left"?0:i==="center"?t.width/2:i==="right"?t.width:i,a=n==="top"?0:n==="bottom"?t.height:n;return Lo({x:r,y:a},t)}else if(e.side==="left"||e.side==="right"){const{side:n,align:i}=e,r=n==="left"?0:n==="right"?t.width:n,a=i==="top"?0:i==="center"?t.height/2:i==="bottom"?t.height:i;return Lo({x:r,y:a},t)}return Lo({x:t.width/2,y:t.height/2},t)}const kf={static:jw,connected:t0},Xw=G({locationStrategy:{type:[String,Function],default:"static",validator:e=>typeof e=="function"||e in kf},location:{type:String,default:"bottom"},origin:{type:String,default:"auto"},offset:[Number,String,Array]},"VOverlay-location-strategies");function Qw(e,t){const n=we({}),i=we();Me&&Yn(()=>!!(t.isActive.value&&e.locationStrategy),a=>{var o,s;fe(()=>e.locationStrategy,a),Nt(()=>{window.removeEventListener("resize",r),i.value=void 0}),window.addEventListener("resize",r,{passive:!0}),typeof e.locationStrategy=="function"?i.value=(o=e.locationStrategy(t,e,n))==null?void 0:o.updateLocation:i.value=(s=kf[e.locationStrategy](t,e,n))==null?void 0:s.updateLocation});function r(a){var o;(o=i.value)==null||o.call(i,a)}return{contentStyles:n,updateLocation:i}}function jw(){}function e0(e,t){t?e.style.removeProperty("left"):e.style.removeProperty("right");const n=El(e);return t?n.x+=parseFloat(e.style.right||0):n.x-=parseFloat(e.style.left||0),n.y-=parseFloat(e.style.top||0),n}function t0(e,t,n){(Array.isArray(e.target.value)||jv(e.target.value))&&Object.assign(n.value,{position:"fixed",top:0,[e.isRtl.value?"right":"left"]:0});const{preferredAnchor:r,preferredOrigin:a}=Pl(()=>{const y=$s(t.location,e.isRtl.value),v=t.origin==="overlap"?y:t.origin==="auto"?Fo(y):$s(t.origin,e.isRtl.value);return y.side===v.side&&y.align===Ao(v).align?{preferredAnchor:wc(y),preferredOrigin:wc(v)}:{preferredAnchor:y,preferredOrigin:v}}),[o,s,d,c]=["minWidth","minHeight","maxWidth","maxHeight"].map(y=>S(()=>{const v=parseFloat(t[y]);return isNaN(v)?1/0:v})),u=S(()=>{if(Array.isArray(t.offset))return t.offset;if(typeof t.offset=="string"){const y=t.offset.split(" ").map(parseFloat);return y.length<2&&y.push(0),y}return typeof t.offset=="number"?[t.offset,0]:[0,0]});let p=!1;const f=new ResizeObserver(()=>{p&&h()});fe([e.target,e.contentEl],(y,v)=>{let[R,C]=y,[T,P]=v;T&&!Array.isArray(T)&&f.unobserve(T),R&&!Array.isArray(R)&&f.observe(R),P&&f.unobserve(P),C&&f.observe(C)},{immediate:!0}),Nt(()=>{f.disconnect()});function h(){if(p=!1,requestAnimationFrame(()=>p=!0),!e.target.value||!e.contentEl.value)return;const y=Jp(e.target.value),v=e0(e.contentEl.value,e.isRtl.value),R=Aa(e.contentEl.value),C=12;R.length||(R.push(document.documentElement),e.contentEl.value.style.top&&e.contentEl.value.style.left||(v.x-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-x")||0),v.y-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-y")||0)));const T=R.reduce((K,E)=>{const U=E.getBoundingClientRect(),B=new Gn({x:E===document.documentElement?0:U.x,y:E===document.documentElement?0:U.y,width:E.clientWidth,height:E.clientHeight});return K?new Gn({x:Math.max(K.left,B.left),y:Math.max(K.top,B.top),width:Math.min(K.right,B.right)-Math.max(K.left,B.left),height:Math.min(K.bottom,B.bottom)-Math.max(K.top,B.top)}):B},void 0);T.x+=C,T.y+=C,T.width-=C*2,T.height-=C*2;let P={anchor:r.value,origin:a.value};function A(K){const E=new Gn(v),U=zc(K.anchor,y),B=zc(K.origin,E);let{x:oe,y:re}=Zw(U,B);switch(K.anchor.side){case"top":re-=u.value[0];break;case"bottom":re+=u.value[0];break;case"left":oe-=u.value[0];break;case"right":oe+=u.value[0];break}switch(K.anchor.align){case"top":re-=u.value[1];break;case"bottom":re+=u.value[1];break;case"left":oe-=u.value[1];break;case"right":oe+=u.value[1];break}return E.x+=oe,E.y+=re,E.width=Math.min(E.width,d.value),E.height=Math.min(E.height,c.value),{overflows:_c(E,T),x:oe,y:re}}let q=0,O=0;const I={x:0,y:0},x={x:!1,y:!1};let N=-1;for(;!(N++>10);){const{x:K,y:E,overflows:U}=A(P);q+=K,O+=E,v.x+=K,v.y+=E;{const B=bc(P.anchor),oe=U.x.before||U.x.after,re=U.y.before||U.y.after;let te=!1;if(["x","y"].forEach(j=>{if(j==="x"&&oe&&!x.x||j==="y"&&re&&!x.y){const Te={anchor:{...P.anchor},origin:{...P.origin}},xe=j==="x"?B==="y"?Ao:Fo:B==="y"?Fo:Ao;Te.anchor=xe(Te.anchor),Te.origin=xe(Te.origin);const{overflows:Z}=A(Te);(Z[j].before<=U[j].before&&Z[j].after<=U[j].after||Z[j].before+Z[j].after<(U[j].before+U[j].after)/2)&&(P=Te,te=x[j]=!0)}}),te)continue}U.x.before&&(q+=U.x.before,v.x+=U.x.before),U.x.after&&(q-=U.x.after,v.x-=U.x.after),U.y.before&&(O+=U.y.before,v.y+=U.y.before),U.y.after&&(O-=U.y.after,v.y-=U.y.after);{const B=_c(v,T);I.x=T.width-B.x.before-B.x.after,I.y=T.height-B.y.before-B.y.after,q+=B.x.before,v.x+=B.x.before,O+=B.y.before,v.y+=B.y.before}break}const H=bc(P.anchor);return Object.assign(n.value,{"--v-overlay-anchor-origin":`${P.anchor.side} ${P.anchor.align}`,transformOrigin:`${P.origin.side} ${P.origin.align}`,top:se(No(O)),left:e.isRtl.value?void 0:se(No(q)),right:e.isRtl.value?se(No(-q)):void 0,minWidth:se(H==="y"?Math.min(o.value,y.width):o.value),maxWidth:se(Hc(hi(I.x,o.value===1/0?0:o.value,d.value))),maxHeight:se(Hc(hi(I.y,s.value===1/0?0:s.value,c.value)))}),{available:I,contentBox:v}}return fe(()=>[r.value,a.value,t.offset,t.minWidth,t.minHeight,t.maxWidth,t.maxHeight],()=>h()),pt(()=>{const y=h();if(!y)return;const{available:v,contentBox:R}=y;R.height>v.y&&requestAnimationFrame(()=>{h(),requestAnimationFrame(()=>{h()})})}),{updateLocation:h}}function No(e){return Math.round(e*devicePixelRatio)/devicePixelRatio}function Hc(e){return Math.ceil(e*devicePixelRatio)/devicePixelRatio}let zs=!0;const $a=[];function n0(e){!zs||$a.length?($a.push(e),Hs()):(zs=!1,e(),Hs())}let Gc=-1;function Hs(){cancelAnimationFrame(Gc),Gc=requestAnimationFrame(()=>{const e=$a.shift();e&&e(),$a.length?Hs():zs=!0})}const va={none:null,close:a0,block:o0,reposition:s0},i0=G({scrollStrategy:{type:[String,Function],default:"block",validator:e=>typeof e=="function"||e in va}},"VOverlay-scroll-strategies");function r0(e,t){if(!Me)return;let n;on(async()=>{n==null||n.stop(),t.isActive.value&&e.scrollStrategy&&(n=Wa(),await pt(),n.active&&n.run(()=>{var i;typeof e.scrollStrategy=="function"?e.scrollStrategy(t,e,n):(i=va[e.scrollStrategy])==null||i.call(va,t,e,n)}))}),Nt(()=>{n==null||n.stop()})}function a0(e){function t(n){e.isActive.value=!1}Of(e.targetEl.value??e.contentEl.value,t)}function o0(e,t){var o;const n=(o=e.root.value)==null?void 0:o.offsetParent,i=[...new Set([...Aa(e.targetEl.value,t.contained?n:void 0),...Aa(e.contentEl.value,t.contained?n:void 0)])].filter(s=>!s.classList.contains("v-overlay-scroll-blocked")),r=window.innerWidth-document.documentElement.offsetWidth,a=(s=>Fl(s)&&s)(n||document.documentElement);a&&e.root.value.classList.add("v-overlay--scroll-blocked"),i.forEach((s,d)=>{s.style.setProperty("--v-body-scroll-x",se(-s.scrollLeft)),s.style.setProperty("--v-body-scroll-y",se(-s.scrollTop)),s!==document.documentElement&&s.style.setProperty("--v-scrollbar-offset",se(r)),s.classList.add("v-overlay-scroll-blocked")}),Nt(()=>{i.forEach((s,d)=>{const c=parseFloat(s.style.getPropertyValue("--v-body-scroll-x")),u=parseFloat(s.style.getPropertyValue("--v-body-scroll-y")),p=s.style.scrollBehavior;s.style.scrollBehavior="auto",s.style.removeProperty("--v-body-scroll-x"),s.style.removeProperty("--v-body-scroll-y"),s.style.removeProperty("--v-scrollbar-offset"),s.classList.remove("v-overlay-scroll-blocked"),s.scrollLeft=-c,s.scrollTop=-u,s.style.scrollBehavior=p}),a&&e.root.value.classList.remove("v-overlay--scroll-blocked")})}function s0(e,t,n){let i=!1,r=-1,a=-1;function o(s){n0(()=>{var u,p;const d=performance.now();(p=(u=e.updateLocation).value)==null||p.call(u,s),i=(performance.now()-d)/(1e3/60)>2})}a=(typeof requestIdleCallback>"u"?s=>s():requestIdleCallback)(()=>{n.run(()=>{Of(e.targetEl.value??e.contentEl.value,s=>{i?(cancelAnimationFrame(r),r=requestAnimationFrame(()=>{r=requestAnimationFrame(()=>{o(s)})})):o(s)})})}),Nt(()=>{typeof cancelIdleCallback<"u"&&cancelIdleCallback(a),cancelAnimationFrame(r)})}function Of(e,t){const n=[document,...Aa(e)];n.forEach(i=>{i.addEventListener("scroll",t,{passive:!0})}),Nt(()=>{n.forEach(i=>{i.removeEventListener("scroll",t)})})}const l0=Symbol.for("vuetify:v-menu"),d0=G({closeDelay:[Number,String],openDelay:[Number,String]},"delay");function c0(e,t){let n=()=>{};function i(o){n==null||n();const s=Number(o?e.openDelay:e.closeDelay);return new Promise(d=>{n=Rv(s,()=>{t==null||t(o),d(o)})})}function r(){return i(!0)}function a(){return i(!1)}return{clearDelay:n,runOpenDelay:r,runCloseDelay:a}}const u0=G({target:[String,Object],activator:[String,Object],activatorProps:{type:Object,default:()=>({})},openOnClick:{type:Boolean,default:void 0},openOnHover:Boolean,openOnFocus:{type:Boolean,default:void 0},closeOnContentClick:Boolean,...d0()},"VOverlay-activator");function p0(e,t){let{isActive:n,isTop:i}=t;const r=Qe("useActivator"),a=we();let o=!1,s=!1,d=!0;const c=S(()=>e.openOnFocus||e.openOnFocus==null&&e.openOnHover),u=S(()=>e.openOnClick||e.openOnClick==null&&!e.openOnHover&&!c.value),{runOpenDelay:p,runCloseDelay:f}=c0(e,I=>{I===(e.openOnHover&&o||c.value&&s)&&!(e.openOnHover&&n.value&&!i.value)&&(n.value!==I&&(d=!0),n.value=I)}),h=we(),y={onClick:I=>{I.stopPropagation(),a.value=I.currentTarget||I.target,n.value||(h.value=[I.clientX,I.clientY]),n.value=!n.value},onMouseenter:I=>{var x;(x=I.sourceCapabilities)!=null&&x.firesTouchEvents||(o=!0,a.value=I.currentTarget||I.target,p())},onMouseleave:I=>{o=!1,f()},onFocus:I=>{Sv(I.target,":focus-visible")!==!1&&(s=!0,I.stopPropagation(),a.value=I.currentTarget||I.target,p())},onBlur:I=>{s=!1,I.stopPropagation(),f()}},v=S(()=>{const I={};return u.value&&(I.onClick=y.onClick),e.openOnHover&&(I.onMouseenter=y.onMouseenter,I.onMouseleave=y.onMouseleave),c.value&&(I.onFocus=y.onFocus,I.onBlur=y.onBlur),I}),R=S(()=>{const I={};if(e.openOnHover&&(I.onMouseenter=()=>{o=!0,p()},I.onMouseleave=()=>{o=!1,f()}),c.value&&(I.onFocusin=()=>{s=!0,p()},I.onFocusout=()=>{s=!1,f()}),e.closeOnContentClick){const x=Le(l0,null);I.onClick=()=>{n.value=!1,x==null||x.closeParents()}}return I}),C=S(()=>{const I={};return e.openOnHover&&(I.onMouseenter=()=>{d&&(o=!0,d=!1,p())},I.onMouseleave=()=>{o=!1,f()}),I});fe(i,I=>{I&&(e.openOnHover&&!o&&(!c.value||!s)||c.value&&!s&&(!e.openOnHover||!o))&&(n.value=!1)}),fe(n,I=>{I||setTimeout(()=>{h.value=void 0})},{flush:"post"});const T=we();on(()=>{T.value&&pt(()=>{a.value=Pa(T.value)})});const P=we(),A=S(()=>e.target==="cursor"&&h.value?h.value:P.value?Pa(P.value):If(e.target,r)||a.value),q=S(()=>Array.isArray(A.value)?void 0:A.value);let O;return fe(()=>!!e.activator,I=>{I&&Me?(O=Wa(),O.run(()=>{f0(e,r,{activatorEl:a,activatorEvents:v})})):O&&O.stop()},{flush:"post",immediate:!0}),Nt(()=>{O==null||O.stop()}),{activatorEl:a,activatorRef:T,target:A,targetEl:q,targetRef:P,activatorEvents:v,contentEvents:R,scrimEvents:C}}function f0(e,t,n){let{activatorEl:i,activatorEvents:r}=n;fe(()=>e.activator,(d,c)=>{if(c&&d!==c){const u=s(c);u&&o(u)}d&&pt(()=>a())},{immediate:!0}),fe(()=>e.activatorProps,()=>{a()}),Nt(()=>{o()});function a(){let d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:s(),c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e.activatorProps;d&&Tv(d,Ae(r.value,c))}function o(){let d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:s(),c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e.activatorProps;d&&kv(d,Ae(r.value,c))}function s(){let d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.activator;const c=If(d,t);return i.value=(c==null?void 0:c.nodeType)===Node.ELEMENT_NODE?c:void 0,i.value}}function If(e,t){var i,r;if(!e)return;let n;if(e==="parent"){let a=(r=(i=t==null?void 0:t.proxy)==null?void 0:i.$el)==null?void 0:r.parentNode;for(;a!=null&&a.hasAttribute("data-no-activator");)a=a.parentNode;n=a}else typeof e=="string"?n=document.querySelector(e):"$el"in e?n=e.$el:n=e;return n}const po=["sm","md","lg","xl","xxl"],Gs=Symbol.for("vuetify:display"),Kc={mobileBreakpoint:"lg",thresholds:{xs:0,sm:600,md:960,lg:1280,xl:1920,xxl:2560}},m0=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Kc;return bt(Kc,e)};function Wc(e){return Me&&!e?window.innerWidth:typeof e=="object"&&e.clientWidth||0}function Yc(e){return Me&&!e?window.innerHeight:typeof e=="object"&&e.clientHeight||0}function Zc(e){const t=Me&&!e?window.navigator.userAgent:"ssr";function n(y){return!!t.match(y)}const i=n(/android/i),r=n(/iphone|ipad|ipod/i),a=n(/cordova/i),o=n(/electron/i),s=n(/chrome/i),d=n(/edge/i),c=n(/firefox/i),u=n(/opera/i),p=n(/win/i),f=n(/mac/i),h=n(/linux/i);return{android:i,ios:r,cordova:a,electron:o,chrome:s,edge:d,firefox:c,opera:u,win:p,mac:f,linux:h,touch:gv,ssr:t==="ssr"}}function h0(e,t){const{thresholds:n,mobileBreakpoint:i}=m0(e),r=ve(Yc(t)),a=ve(Zc(t)),o=nt({}),s=ve(Wc(t));function d(){r.value=Yc(),s.value=Wc()}function c(){d(),a.value=Zc()}return on(()=>{const u=s.value=n.xxl,R=u?"xs":p?"sm":f?"md":h?"lg":y?"xl":"xxl",C=typeof i=="number"?i:n[i],T=s.value0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Wt();const n=Le(Gs);if(!n)throw new Error("Could not find Vuetify display injection");const i=S(()=>{if(!e.mobileBreakpoint)return n.mobile.value;const a=typeof e.mobileBreakpoint=="number"?e.mobileBreakpoint:n.thresholds.value[e.mobileBreakpoint];return n.width.valuet?{[`${t}--mobile`]:i.value}:{});return{...n,displayClasses:r,mobile:i}}function y0(){if(!Me)return ve(!1);const{ssr:e}=Pf();if(e){const t=ve(!1);return Pn(()=>{t.value=!0}),t}else return ve(!0)}const Gl=G({eager:Boolean},"lazy");function Ef(e,t){const n=ve(!1),i=S(()=>n.value||e.eager||t.value);fe(t,()=>n.value=!0);function r(){e.eager||(n.value=!1)}return{isBooted:n,hasContent:i,onAfterLeave:r}}function Kl(){const t=Qe("useScopeId").vnode.scopeId;return{scopeId:t?{[t]:""}:void 0}}const Xc=Symbol.for("vuetify:stack"),Fi=nt([]);function v0(e,t,n){const i=Qe("useStack"),r=!n,a=Le(Xc,void 0),o=nt({activeChildren:new Set});_t(Xc,o);const s=ve(+t.value);Yn(e,()=>{var p;const u=(p=Fi.at(-1))==null?void 0:p[1];s.value=u?u+10:+t.value,r&&Fi.push([i.uid,s.value]),a==null||a.activeChildren.add(i.uid),Nt(()=>{if(r){const f=_e(Fi).findIndex(h=>h[0]===i.uid);Fi.splice(f,1)}a==null||a.activeChildren.delete(i.uid)})});const d=ve(!0);r&&on(()=>{var p;const u=((p=Fi.at(-1))==null?void 0:p[0])===i.uid;setTimeout(()=>d.value=u)});const c=S(()=>!o.activeChildren.size);return{globalTop:Br(d),localTop:c,stackStyles:S(()=>({zIndex:s.value}))}}function w0(e){return{teleportTarget:S(()=>{const n=e.value;if(n===!0||!Me)return;const i=n===!1?document.body:typeof n=="string"?document.querySelector(n):n;if(i==null)return;let r=i.querySelector(":scope > .v-overlay-container");return r||(r=document.createElement("div"),r.className="v-overlay-container",i.appendChild(r)),r})}}function b0(){return!0}function xf(e,t,n){if(!e||Ff(e,n)===!1)return!1;const i=Yp(t);if(typeof ShadowRoot<"u"&&i instanceof ShadowRoot&&i.host===e.target)return!1;const r=(typeof n.value=="object"&&n.value.include||(()=>[]))();return r.push(t),!r.some(a=>a==null?void 0:a.contains(e.target))}function Ff(e,t){return(typeof t.value=="object"&&t.value.closeConditional||b0)(e)}function _0(e,t,n){const i=typeof n.value=="function"?n.value:n.value.handler;t._clickOutside.lastMousedownWasOutside&&xf(e,t,n)&&setTimeout(()=>{Ff(e,n)&&i&&i(e)},0)}function Qc(e,t){const n=Yp(e);t(document),typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&t(n)}const S0={mounted(e,t){const n=r=>_0(r,e,t),i=r=>{e._clickOutside.lastMousedownWasOutside=xf(r,e,t)};Qc(e,r=>{r.addEventListener("click",n,!0),r.addEventListener("mousedown",i,!0)}),e._clickOutside||(e._clickOutside={lastMousedownWasOutside:!1}),e._clickOutside[t.instance.$.uid]={onClick:n,onMousedown:i}},unmounted(e,t){e._clickOutside&&(Qc(e,n=>{var a;if(!n||!((a=e._clickOutside)!=null&&a[t.instance.$.uid]))return;const{onClick:i,onMousedown:r}=e._clickOutside[t.instance.$.uid];n.removeEventListener("click",i,!0),n.removeEventListener("mousedown",r,!0)}),delete e._clickOutside[t.instance.$.uid])}};function R0(e){const{modelValue:t,color:n,...i}=e;return m(nn,{name:"fade-transition",appear:!0},{default:()=>[e.modelValue&&m("div",Ae({class:["v-overlay__scrim",e.color.backgroundColorClasses.value],style:e.color.backgroundColorStyles.value},i),null)]})}const Wl=G({absolute:Boolean,attach:[Boolean,String,Object],closeOnBack:{type:Boolean,default:!0},contained:Boolean,contentClass:null,contentProps:null,disabled:Boolean,opacity:[Number,String],noClickAnimation:Boolean,modelValue:Boolean,persistent:Boolean,scrim:{type:[Boolean,String],default:!0},zIndex:{type:[Number,String],default:2e3},...u0(),...ge(),...zr(),...Gl(),...Xw(),...i0(),...Ye(),...so()},"VOverlay"),Ba=le()({name:"VOverlay",directives:{ClickOutside:S0},inheritAttrs:!1,props:{_disableGlobalStack:Boolean,...Wl()},emits:{"click:outside":e=>!0,"update:modelValue":e=>!0,afterLeave:()=>!0},setup(e,t){let{slots:n,attrs:i,emit:r}=t;const a=xt(e,"modelValue"),o=S({get:()=>a.value,set:ce=>{ce&&e.disabled||(a.value=ce)}}),{teleportTarget:s}=w0(S(()=>e.attach||e.contained)),{themeClasses:d}=je(e),{rtlClasses:c,isRtl:u}=Yt(),{hasContent:p,onAfterLeave:f}=Ef(e,o),h=Lt(S(()=>typeof e.scrim=="string"?e.scrim:null)),{globalTop:y,localTop:v,stackStyles:R}=v0(o,Se(e,"zIndex"),e._disableGlobalStack),{activatorEl:C,activatorRef:T,target:P,targetEl:A,targetRef:q,activatorEvents:O,contentEvents:I,scrimEvents:x}=p0(e,{isActive:o,isTop:v}),{dimensionStyles:N}=Hr(e),H=y0(),{scopeId:K}=Kl();fe(()=>e.disabled,ce=>{ce&&(o.value=!1)});const E=we(),U=we(),{contentStyles:B,updateLocation:oe}=Qw(e,{isRtl:u,contentEl:U,target:P,isActive:o});r0(e,{root:E,contentEl:U,targetEl:A,isActive:o,updateLocation:oe});function re(ce){r("click:outside",ce),e.persistent?Z():o.value=!1}function te(){return o.value&&y.value}Me&&fe(o,ce=>{ce?window.addEventListener("keydown",j):window.removeEventListener("keydown",j)},{immediate:!0}),qt(()=>{Me&&window.removeEventListener("keydown",j)});function j(ce){var ze,st;ce.key==="Escape"&&y.value&&(e.persistent?Z():(o.value=!1,(ze=U.value)!=null&&ze.contains(document.activeElement)&&((st=C.value)==null||st.focus())))}const Te=Lw();Yn(()=>e.closeOnBack,()=>{Nw(Te,ce=>{y.value&&o.value?(ce(!1),e.persistent?Z():o.value=!1):ce()})});const xe=we();fe(()=>o.value&&(e.absolute||e.contained)&&s.value==null,ce=>{if(ce){const ze=Zv(E.value);ze&&ze!==document.scrollingElement&&(xe.value=ze.scrollTop)}});function Z(){e.noClickAnimation||U.value&&oi(U.value,[{transformOrigin:"center"},{transform:"scale(1.03)"},{transformOrigin:"center"}],{duration:150,easing:Fa})}function ne(){f(),r("afterLeave")}return me(()=>{var ce;return m(Re,null,[(ce=n.activator)==null?void 0:ce.call(n,{isActive:o.value,props:Ae({ref:T,targetRef:q},O.value,e.activatorProps)}),H.value&&p.value&&m(mg,{disabled:!s.value,to:s.value},{default:()=>[m("div",Ae({class:["v-overlay",{"v-overlay--absolute":e.absolute||e.contained,"v-overlay--active":o.value,"v-overlay--contained":e.contained},d.value,c.value,e.class],style:[R.value,{"--v-overlay-opacity":e.opacity,top:se(xe.value)},e.style],ref:E},K,i),[m(R0,Ae({color:h,modelValue:o.value&&!!e.scrim},x.value),null),m(Mn,{appear:!0,persisted:!0,transition:e.transition,target:P.value,onAfterLeave:ne},{default:()=>{var ze;return[Pt(m("div",Ae({ref:U,class:["v-overlay__content",e.contentClass],style:[N.value,B.value]},I.value,e.contentProps),[(ze=n.default)==null?void 0:ze.call(n,{isActive:o})]),[[bi,o.value],[Qn("click-outside"),{handler:re,closeConditional:te,include:()=>[C.value]}]])]}})])]})])}),{activatorEl:C,target:P,animateClick:Z,contentEl:U,globalTop:y,localTop:v,updateLocation:oe}}}),qo=Symbol("Forwarded refs");function $o(e,t){let n=e;for(;n;){const i=Reflect.getOwnPropertyDescriptor(n,t);if(i)return i;n=Object.getPrototypeOf(n)}}function Yl(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i!0},setup(e,t){let{slots:n}=t;const i=xt(e,"modelValue"),{scopeId:r}=Kl(),a=we();function o(d){var p,f;const c=d.relatedTarget,u=d.target;if(c!==u&&((p=a.value)!=null&&p.contentEl)&&((f=a.value)!=null&&f.globalTop)&&![document,a.value.contentEl].includes(u)&&!a.value.contentEl.contains(u)){const h=Vp(a.value.contentEl);if(!h.length)return;const y=h[0],v=h[h.length-1];c===y?v.focus():y.focus()}}Me&&fe(()=>i.value&&e.retainFocus,d=>{d?document.addEventListener("focusin",o):document.removeEventListener("focusin",o)},{immediate:!0}),fe(i,async d=>{var c,u;await pt(),d?(c=a.value.contentEl)==null||c.focus({preventScroll:!0}):(u=a.value.activatorEl)==null||u.focus({preventScroll:!0})});const s=S(()=>Ae({"aria-haspopup":"dialog","aria-expanded":String(i.value)},e.activatorProps));return me(()=>{const d=Ba.filterProps(e);return m(Ba,Ae({ref:a,class:["v-dialog",{"v-dialog--fullscreen":e.fullscreen,"v-dialog--scrollable":e.scrollable},e.class],style:e.style},d,{modelValue:i.value,"onUpdate:modelValue":c=>i.value=c,"aria-modal":"true",activatorProps:s.value,role:"dialog"},r),{activator:n.activator,default:function(){for(var c=arguments.length,u=new Array(c),p=0;p{var f;return[(f=n.default)==null?void 0:f.call(n,...u)]}})}})}),Yl({},a)}}),T0=G({color:String,inset:Boolean,length:[Number,String],thickness:[Number,String],vertical:Boolean,...ge(),...Ye()},"VDivider"),k0=le()({name:"VDivider",props:T0(),setup(e,t){let{attrs:n}=t;const{themeClasses:i}=je(e),{textColorClasses:r,textColorStyles:a}=Wn(Se(e,"color")),o=S(()=>{const s={};return e.length&&(s[e.vertical?"maxHeight":"maxWidth"]=se(e.length)),e.thickness&&(s[e.vertical?"borderRightWidth":"borderTopWidth"]=se(e.thickness)),s});return me(()=>m("hr",{class:[{"v-divider":!0,"v-divider--inset":e.inset,"v-divider--vertical":e.vertical},i.value,r.value,e.class],style:[o.value,a.value,e.style],"aria-orientation":!n.role||n.role==="separator"?e.vertical?"vertical":"horizontal":void 0,role:`${n.role||"separator"}`},null)),{}}}),O0=G({active:Boolean,max:[Number,String],value:{type:[Number,String],default:0},...ge(),...so({transition:{component:Rf}})},"VCounter"),I0=le()({name:"VCounter",functional:!0,props:O0(),setup(e,t){let{slots:n}=t;const i=S(()=>e.max?`${e.value} / ${e.max}`:String(e.value));return me(()=>m(Mn,{transition:e.transition},{default:()=>[Pt(m("div",{class:["v-counter",e.class],style:e.style},[n.default?n.default({counter:i.value,max:e.max,value:e.value}):i.value]),[[bi,e.active]])]})),{}}}),P0=G({text:String,onClick:jt(),...ge(),...Ye()},"VLabel"),Df=le()({name:"VLabel",props:P0(),setup(e,t){let{slots:n}=t;return me(()=>{var i;return m("label",{class:["v-label",{"v-label--clickable":!!e.onClick},e.class],style:e.style,onClick:e.onClick},[e.text,(i=n.default)==null?void 0:i.call(n)])}),{}}}),E0=G({floating:Boolean,...ge()},"VFieldLabel"),da=le()({name:"VFieldLabel",props:E0(),setup(e,t){let{slots:n}=t;return me(()=>m(Df,{class:["v-field-label",{"v-field-label--floating":e.floating},e.class],style:e.style,"aria-hidden":e.floating||void 0},n)),{}}});function Uf(e){const{t}=$l();function n(i){let{name:r}=i;const a={prepend:"prependAction",prependInner:"prependAction",append:"appendAction",appendInner:"appendAction",clear:"clear"}[r],o=e[`onClick:${r}`],s=o&&a?t(`$vuetify.input.${a}`,e.label??""):void 0;return m(Je,{icon:e[`${r}Icon`],"aria-label":s,onClick:o},null)}return{InputIcon:n}}const Lf=G({focused:Boolean,"onUpdate:focused":jt()},"focus");function Nf(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Wt();const n=xt(e,"focused"),i=S(()=>({[`${t}--focused`]:n.value}));function r(){n.value=!0}function a(){n.value=!1}return{focusClasses:i,isFocused:n,focus:r,blur:a}}const x0=["underlined","outlined","filled","solo","solo-inverted","solo-filled","plain"],qf=G({appendInnerIcon:Ne,bgColor:String,clearable:Boolean,clearIcon:{type:Ne,default:"$clear"},active:Boolean,centerAffix:{type:Boolean,default:void 0},color:String,baseColor:String,dirty:Boolean,disabled:{type:Boolean,default:null},error:Boolean,flat:Boolean,label:String,persistentClear:Boolean,prependInnerIcon:Ne,reverse:Boolean,singleLine:Boolean,variant:{type:String,default:"filled",validator:e=>x0.includes(e)},"onClick:clear":jt(),"onClick:appendInner":jt(),"onClick:prependInner":jt(),...ge(),...Ml(),...St(),...Ye()},"VField"),$f=le()({name:"VField",inheritAttrs:!1,props:{id:String,...Lf(),...qf()},emits:{"update:focused":e=>!0,"update:modelValue":e=>!0},setup(e,t){let{attrs:n,emit:i,slots:r}=t;const{themeClasses:a}=je(e),{loaderClasses:o}=Jl(e),{focusClasses:s,isFocused:d,focus:c,blur:u}=Nf(e),{InputIcon:p}=Uf(e),{roundedClasses:f}=Et(e),{rtlClasses:h}=Yt(),y=S(()=>e.dirty||e.active),v=S(()=>!e.singleLine&&!!(e.label||r.label)),R=ln(),C=S(()=>e.id||`input-${R}`),T=S(()=>`${C.value}-messages`),P=we(),A=we(),q=we(),O=S(()=>["plain","underlined"].includes(e.variant)),{backgroundColorClasses:I,backgroundColorStyles:x}=Lt(Se(e,"bgColor")),{textColorClasses:N,textColorStyles:H}=Wn(S(()=>e.error||e.disabled?void 0:y.value&&d.value?e.color:e.baseColor));fe(y,U=>{if(v.value){const B=P.value.$el,oe=A.value.$el;requestAnimationFrame(()=>{const re=El(B),te=oe.getBoundingClientRect(),j=te.x-re.x,Te=te.y-re.y-(re.height/2-te.height/2),xe=te.width/.75,Z=Math.abs(xe-re.width)>1?{maxWidth:se(xe)}:void 0,ne=getComputedStyle(B),ce=getComputedStyle(oe),ze=parseFloat(ne.transitionDuration)*1e3||150,st=parseFloat(ce.getPropertyValue("--v-field-label-scale")),ke=ce.getPropertyValue("color");B.style.visibility="visible",oe.style.visibility="hidden",oi(B,{transform:`translate(${j}px, ${Te}px) scale(${st})`,color:ke,...Z},{duration:ze,easing:Fa,direction:U?"normal":"reverse"}).finished.then(()=>{B.style.removeProperty("visibility"),oe.style.removeProperty("visibility")})})}},{flush:"post"});const K=S(()=>({isActive:y,isFocused:d,controlRef:q,blur:u,focus:c}));function E(U){U.target!==document.activeElement&&U.preventDefault()}return me(()=>{var j,Te,xe;const U=e.variant==="outlined",B=r["prepend-inner"]||e.prependInnerIcon,oe=!!(e.clearable||r.clear),re=!!(r["append-inner"]||e.appendInnerIcon||oe),te=()=>r.label?r.label({...K.value,label:e.label,props:{for:C.value}}):e.label;return m("div",Ae({class:["v-field",{"v-field--active":y.value,"v-field--appended":re,"v-field--center-affix":e.centerAffix??!O.value,"v-field--disabled":e.disabled,"v-field--dirty":e.dirty,"v-field--error":e.error,"v-field--flat":e.flat,"v-field--has-background":!!e.bgColor,"v-field--persistent-clear":e.persistentClear,"v-field--prepended":B,"v-field--reverse":e.reverse,"v-field--single-line":e.singleLine,"v-field--no-label":!te(),[`v-field--variant-${e.variant}`]:!0},a.value,I.value,s.value,o.value,f.value,h.value,e.class],style:[x.value,e.style],onClick:E},n),[m("div",{class:"v-field__overlay"},null),m(lf,{name:"v-field",active:!!e.loading,color:e.error?"error":typeof e.loading=="string"?e.loading:e.color},{default:r.loader}),B&&m("div",{key:"prepend",class:"v-field__prepend-inner"},[e.prependInnerIcon&&m(p,{key:"prepend-icon",name:"prependInner"},null),(j=r["prepend-inner"])==null?void 0:j.call(r,K.value)]),m("div",{class:"v-field__field","data-no-activator":""},[["filled","solo","solo-inverted","solo-filled"].includes(e.variant)&&v.value&&m(da,{key:"floating-label",ref:A,class:[N.value],floating:!0,for:C.value,style:H.value},{default:()=>[te()]}),m(da,{ref:P,for:C.value},{default:()=>[te()]}),(Te=r.default)==null?void 0:Te.call(r,{...K.value,props:{id:C.value,class:"v-field__input","aria-describedby":T.value},focus:c,blur:u})]),oe&&m(Tf,{key:"clear"},{default:()=>[Pt(m("div",{class:"v-field__clearable",onMousedown:Z=>{Z.preventDefault(),Z.stopPropagation()}},[r.clear?r.clear():m(p,{name:"clear"},null)]),[[bi,e.dirty]])]}),re&&m("div",{key:"append",class:"v-field__append-inner"},[(xe=r["append-inner"])==null?void 0:xe.call(r,K.value),e.appendInnerIcon&&m(p,{key:"append-icon",name:"appendInner"},null)]),m("div",{class:["v-field__outline",N.value],style:H.value},[U&&m(Re,null,[m("div",{class:"v-field__outline__start"},null),v.value&&m("div",{class:"v-field__outline__notch"},[m(da,{ref:A,floating:!0,for:C.value},{default:()=>[te()]})]),m("div",{class:"v-field__outline__end"},null)]),O.value&&v.value&&m(da,{ref:A,floating:!0,for:C.value},{default:()=>[te()]})])])}),{controlRef:q}}});function F0(e){const t=Object.keys($f.props).filter(n=>!Il(n)&&n!=="class"&&n!=="style");return Lp(e,t)}const A0=G({active:Boolean,color:String,messages:{type:[Array,String],default:()=>[]},...ge(),...so({transition:{component:Rf,leaveAbsolute:!0,group:!0}})},"VMessages"),D0=le()({name:"VMessages",props:A0(),setup(e,t){let{slots:n}=t;const i=S(()=>Sr(e.messages)),{textColorClasses:r,textColorStyles:a}=Wn(S(()=>e.color));return me(()=>m(Mn,{transition:e.transition,tag:"div",class:["v-messages",r.value,e.class],style:[a.value,e.style],role:"alert","aria-live":"polite"},{default:()=>[e.active&&i.value.map((o,s)=>m("div",{class:"v-messages__message",key:`${s}-${i.value}`},[n.message?n.message({message:o}):o]))]})),{}}}),U0=Symbol.for("vuetify:form");function L0(){return Le(U0,null)}const N0=G({disabled:{type:Boolean,default:null},error:Boolean,errorMessages:{type:[Array,String],default:()=>[]},maxErrors:{type:[Number,String],default:1},name:String,label:String,readonly:{type:Boolean,default:null},rules:{type:Array,default:()=>[]},modelValue:null,validateOn:String,validationValue:null,...Lf()},"validation");function q0(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Wt(),n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:ln();const i=xt(e,"modelValue"),r=S(()=>e.validationValue===void 0?i.value:e.validationValue),a=L0(),o=we([]),s=ve(!0),d=S(()=>!!(Sr(i.value===""?null:i.value).length||Sr(r.value===""?null:r.value).length)),c=S(()=>!!(e.disabled??(a==null?void 0:a.isDisabled.value))),u=S(()=>!!(e.readonly??(a==null?void 0:a.isReadonly.value))),p=S(()=>{var A;return(A=e.errorMessages)!=null&&A.length?Sr(e.errorMessages).concat(o.value).slice(0,Math.max(0,+e.maxErrors)):o.value}),f=S(()=>{let A=(e.validateOn??(a==null?void 0:a.validateOn.value))||"input";A==="lazy"&&(A="input lazy");const q=new Set((A==null?void 0:A.split(" "))??[]);return{blur:q.has("blur")||q.has("input"),input:q.has("input"),submit:q.has("submit"),lazy:q.has("lazy")}}),h=S(()=>{var A;return e.error||(A=e.errorMessages)!=null&&A.length?!1:e.rules.length?s.value?o.value.length||f.value.lazy?null:!0:!o.value.length:!0}),y=ve(!1),v=S(()=>({[`${t}--error`]:h.value===!1,[`${t}--dirty`]:d.value,[`${t}--disabled`]:c.value,[`${t}--readonly`]:u.value})),R=S(()=>e.name??dt(n));vl(()=>{a==null||a.register({id:R.value,validate:P,reset:C,resetValidation:T})}),qt(()=>{a==null||a.unregister(R.value)}),Pn(async()=>{f.value.lazy||await P(!0),a==null||a.update(R.value,h.value,p.value)}),Yn(()=>f.value.input,()=>{fe(r,()=>{if(r.value!=null)P();else if(e.focused){const A=fe(()=>e.focused,q=>{q||P(),A()})}})}),Yn(()=>f.value.blur,()=>{fe(()=>e.focused,A=>{A||P()})}),fe([h,p],()=>{a==null||a.update(R.value,h.value,p.value)});function C(){i.value=null,pt(T)}function T(){s.value=!0,f.value.lazy?o.value=[]:P(!0)}async function P(){let A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;const q=[];y.value=!0;for(const O of e.rules){if(q.length>=+(e.maxErrors??1))break;const x=await(typeof O=="function"?O:()=>O)(r.value);if(x!==!0){if(x!==!1&&typeof x!="string"){console.warn(`${x} is not a valid value. Rule functions must return boolean true or a string.`);continue}q.push(x||"")}}return o.value=q,y.value=!1,s.value=A,o.value}return{errorMessages:p,isDirty:d,isDisabled:c,isReadonly:u,isPristine:s,isValid:h,isValidating:y,reset:C,resetValidation:T,validate:P,validationClasses:v}}const Bf=G({id:String,appendIcon:Ne,centerAffix:{type:Boolean,default:!0},prependIcon:Ne,hideDetails:[Boolean,String],hideSpinButtons:Boolean,hint:String,persistentHint:Boolean,messages:{type:[Array,String],default:()=>[]},direction:{type:String,default:"horizontal",validator:e=>["horizontal","vertical"].includes(e)},"onClick:prepend":jt(),"onClick:append":jt(),...ge(),...$t(),...N0()},"VInput"),jc=le()({name:"VInput",props:{...Bf()},emits:{"update:modelValue":e=>!0},setup(e,t){let{attrs:n,slots:i,emit:r}=t;const{densityClasses:a}=cn(e),{rtlClasses:o}=Yt(),{InputIcon:s}=Uf(e),d=ln(),c=S(()=>e.id||`input-${d}`),u=S(()=>`${c.value}-messages`),{errorMessages:p,isDirty:f,isDisabled:h,isReadonly:y,isPristine:v,isValid:R,isValidating:C,reset:T,resetValidation:P,validate:A,validationClasses:q}=q0(e,"v-input",c),O=S(()=>({id:c,messagesId:u,isDirty:f,isDisabled:h,isReadonly:y,isPristine:v,isValid:R,isValidating:C,reset:T,resetValidation:P,validate:A})),I=S(()=>{var x;return(x=e.errorMessages)!=null&&x.length||!v.value&&p.value.length?p.value:e.hint&&(e.persistentHint||e.focused)?e.hint:e.messages});return me(()=>{var E,U,B,oe;const x=!!(i.prepend||e.prependIcon),N=!!(i.append||e.appendIcon),H=I.value.length>0,K=!e.hideDetails||e.hideDetails==="auto"&&(H||!!i.details);return m("div",{class:["v-input",`v-input--${e.direction}`,{"v-input--center-affix":e.centerAffix,"v-input--hide-spin-buttons":e.hideSpinButtons},a.value,o.value,q.value,e.class],style:e.style},[x&&m("div",{key:"prepend",class:"v-input__prepend"},[(E=i.prepend)==null?void 0:E.call(i,O.value),e.prependIcon&&m(s,{key:"prepend-icon",name:"prepend"},null)]),i.default&&m("div",{class:"v-input__control"},[(U=i.default)==null?void 0:U.call(i,O.value)]),N&&m("div",{key:"append",class:"v-input__append"},[e.appendIcon&&m(s,{key:"append-icon",name:"append"},null),(B=i.append)==null?void 0:B.call(i,O.value)]),K&&m("div",{class:"v-input__details"},[m(D0,{id:u.value,active:H,messages:I.value},{message:i.message}),(oe=i.details)==null?void 0:oe.call(i,O.value)])])}),{reset:T,resetValidation:P,validate:A,isValid:R,errorMessages:p}}}),$0=["color","file","time","date","datetime-local","week","month"],B0=G({autofocus:Boolean,counter:[Boolean,Number,String],counterValue:[Number,Function],prefix:String,placeholder:String,persistentPlaceholder:Boolean,persistentCounter:Boolean,suffix:String,role:String,type:{type:String,default:"text"},modelModifiers:Object,...Bf(),...qf()},"VTextField"),Vf=le()({name:"VTextField",directives:{Intersect:ef},inheritAttrs:!1,props:B0(),emits:{"click:control":e=>!0,"mousedown:control":e=>!0,"update:focused":e=>!0,"update:modelValue":e=>!0},setup(e,t){let{attrs:n,emit:i,slots:r}=t;const a=xt(e,"modelValue"),{isFocused:o,focus:s,blur:d}=Nf(e),c=S(()=>typeof e.counterValue=="function"?e.counterValue(a.value):typeof e.counterValue=="number"?e.counterValue:(a.value??"").toString().length),u=S(()=>{if(n.maxlength)return n.maxlength;if(!(!e.counter||typeof e.counter!="number"&&typeof e.counter!="string"))return e.counter}),p=S(()=>["plain","underlined"].includes(e.variant));function f(O,I){var x,N;!e.autofocus||!O||(N=(x=I[0].target)==null?void 0:x.focus)==null||N.call(x)}const h=we(),y=we(),v=we(),R=S(()=>$0.includes(e.type)||e.persistentPlaceholder||o.value||e.active);function C(){var O;v.value!==document.activeElement&&((O=v.value)==null||O.focus()),o.value||s()}function T(O){i("mousedown:control",O),O.target!==v.value&&(C(),O.preventDefault())}function P(O){C(),i("click:control",O)}function A(O){O.stopPropagation(),C(),pt(()=>{a.value=null,_v(e["onClick:clear"],O)})}function q(O){var x;const I=O.target;if(a.value=I.value,(x=e.modelModifiers)!=null&&x.trim&&["text","search","password","tel","url"].includes(e.type)){const N=[I.selectionStart,I.selectionEnd];pt(()=>{I.selectionStart=N[0],I.selectionEnd=N[1]})}}return me(()=>{const O=!!(r.counter||e.counter!==!1&&e.counter!=null),I=!!(O||r.details),[x,N]=wv(n),{modelValue:H,...K}=jc.filterProps(e),E=F0(e);return m(jc,Ae({ref:h,modelValue:a.value,"onUpdate:modelValue":U=>a.value=U,class:["v-text-field",{"v-text-field--prefixed":e.prefix,"v-text-field--suffixed":e.suffix,"v-input--plain-underlined":p.value},e.class],style:e.style},x,K,{centerAffix:!p.value,focused:o.value}),{...r,default:U=>{let{id:B,isDisabled:oe,isDirty:re,isReadonly:te,isValid:j}=U;return m($f,Ae({ref:y,onMousedown:T,onClick:P,"onClick:clear":A,"onClick:prependInner":e["onClick:prependInner"],"onClick:appendInner":e["onClick:appendInner"],role:e.role},E,{id:B.value,active:R.value||re.value,dirty:re.value||e.dirty,disabled:oe.value,focused:o.value,error:j.value===!1}),{...r,default:Te=>{let{props:{class:xe,...Z}}=Te;const ne=Pt(m("input",Ae({ref:v,value:a.value,onInput:q,autofocus:e.autofocus,readonly:te.value,disabled:oe.value,name:e.name,placeholder:e.placeholder,size:1,type:e.type,onFocus:C,onBlur:d},Z,N),null),[[Qn("intersect"),{handler:f},null,{once:!0}]]);return m(Re,null,[e.prefix&&m("span",{class:"v-text-field__prefix"},[m("span",{class:"v-text-field__prefix__text"},[e.prefix])]),r.default?m("div",{class:xe,"data-no-activator":""},[r.default(),ne]):tn(ne,{class:xe}),e.suffix&&m("span",{class:"v-text-field__suffix"},[m("span",{class:"v-text-field__suffix__text"},[e.suffix])])])}})},details:I?U=>{var B;return m(Re,null,[(B=r.details)==null?void 0:B.call(r,U),O&&m(Re,null,[m("span",null,null),m(I0,{active:e.persistentCounter||o.value,value:c.value,max:u.value},r.counter)])])}:void 0})}),Yl({},h,y,v)}}),V0=Oe("i",{class:"fas fa-search mr-1"},null,-1);function M0(e,t,n,i,r,a){return he(),Ve(Af,{width:"90%","max-width":"800px",activator:"parent",modelValue:e.dialog,"onUpdate:modelValue":t[2]||(t[2]=o=>e.dialog=o),location:"id_dialog_anchor","location-strategy":"connected"},{activator:J(({props:o})=>[ip(e.$slots,"activator",{},()=>[m(tt,Ae(o,{size:"small",density:"default",variant:"outlined"}),{default:J(()=>[V0,Be(" Search")]),_:2},1040)])]),default:J(({isActive:o})=>[m(en,null,{default:J(()=>[m(rn,{class:"pb-0"},{default:J(()=>[m(Vf,{id:"id_global_search_input",modelValue:e.search_query,"onUpdate:modelValue":t[0]||(t[0]=s=>e.search_query=s),autocomplete:"off",clearable:"",placeholder:"Search","prepend-inner-icon":"fas fa-search",variant:"solo"},null,8,["modelValue"])]),_:1}),m(k0),m(rn,null,{default:J(()=>[(he(!0),rt(Re,null,wi(e.search_results,(s,d)=>(he(),Ve(en,{variant:e.cardVariant(d),hover:"",class:"mt-1",onClick:c=>e.selected_result=d},{default:J(()=>[m(Wr,{onClick:t[1]||(t[1]=c=>e.goToSelectedRecipe())},{default:J(()=>[s.image?(he(),Ve(Dr,{key:0,image:s.image},null,8,["image"])):wt("",!0),s.icon?(he(),Ve(Je,{key:1,icon:s.icon},null,8,["icon"])):wt("",!0),Be(" "+Pe(s.name),1)]),_:2},1024)]),_:2},1032,["variant","onClick"]))),256))]),_:1})]),_:1})]),_:3},8,["modelValue"])}const Mf=ft(hv,[["render",M0]]),J0=ot({components:{GlobalSearchDialog:Mf},mixins:[],data(){return{drawer:!0,rail:!0}},mounted(){},methods:{}}),z0="/static/vue3/assets/brand_logo-D4X97p3N.svg",Va=Symbol.for("vuetify:layout"),Jf=Symbol.for("vuetify:layout-item"),eu=1e3,H0=G({overlaps:{type:Array,default:()=>[]},fullHeight:Boolean},"layout"),zf=G({name:{type:String},order:{type:[Number,String],default:0},absolute:Boolean},"layout-item");function G0(){const e=Le(Va);if(!e)throw new Error("[Vuetify] Could not find injected layout");return{getLayoutItem:e.getLayoutItem,mainRect:e.mainRect,mainStyles:e.mainStyles}}function Hf(e){const t=Le(Va);if(!t)throw new Error("[Vuetify] Could not find injected layout");const n=e.id??`layout-item-${ln()}`,i=Qe("useLayoutItem");_t(Jf,{id:n});const r=ve(!1);ju(()=>r.value=!0),Qu(()=>r.value=!1);const{layoutItemStyles:a,layoutItemScrimStyles:o}=t.register(i,{...e,active:S(()=>r.value?!1:e.active.value),id:n});return qt(()=>t.unregister(n)),{layoutItemStyles:a,layoutRect:t.layoutRect,layoutItemScrimStyles:o}}const K0=(e,t,n,i)=>{let r={top:0,left:0,right:0,bottom:0};const a=[{id:"",layer:{...r}}];for(const o of e){const s=t.get(o),d=n.get(o),c=i.get(o);if(!s||!d||!c)continue;const u={...r,[s.value]:parseInt(r[s.value],10)+(c.value?parseInt(d.value,10):0)};a.push({id:o,layer:u}),r=u}return a};function W0(e){const t=Le(Va,null),n=S(()=>t?t.rootZIndex.value-100:eu),i=we([]),r=nt(new Map),a=nt(new Map),o=nt(new Map),s=nt(new Map),d=nt(new Map),{resizeRef:c,contentRect:u}=Ua(),p=S(()=>{const O=new Map,I=e.overlaps??[];for(const x of I.filter(N=>N.includes(":"))){const[N,H]=x.split(":");if(!i.value.includes(N)||!i.value.includes(H))continue;const K=r.get(N),E=r.get(H),U=a.get(N),B=a.get(H);!K||!E||!U||!B||(O.set(H,{position:K.value,amount:parseInt(U.value,10)}),O.set(N,{position:E.value,amount:-parseInt(B.value,10)}))}return O}),f=S(()=>{const O=[...new Set([...o.values()].map(x=>x.value))].sort((x,N)=>x-N),I=[];for(const x of O){const N=i.value.filter(H=>{var K;return((K=o.get(H))==null?void 0:K.value)===x});I.push(...N)}return K0(I,r,a,s)}),h=S(()=>!Array.from(d.values()).some(O=>O.value)),y=S(()=>f.value[f.value.length-1].layer),v=S(()=>({"--v-layout-left":se(y.value.left),"--v-layout-right":se(y.value.right),"--v-layout-top":se(y.value.top),"--v-layout-bottom":se(y.value.bottom),...h.value?void 0:{transition:"none"}})),R=S(()=>f.value.slice(1).map((O,I)=>{let{id:x}=O;const{layer:N}=f.value[I],H=a.get(x),K=r.get(x);return{id:x,...N,size:Number(H.value),position:K.value}})),C=O=>R.value.find(I=>I.id===O),T=Qe("createLayout"),P=ve(!1);Pn(()=>{P.value=!0}),_t(Va,{register:(O,I)=>{let{id:x,order:N,position:H,layoutSize:K,elementSize:E,active:U,disableTransitions:B,absolute:oe}=I;o.set(x,N),r.set(x,H),a.set(x,K),s.set(x,U),B&&d.set(x,B);const te=Rr(Jf,T==null?void 0:T.vnode).indexOf(O);te>-1?i.value.splice(te,0,x):i.value.push(x);const j=S(()=>R.value.findIndex(ne=>ne.id===x)),Te=S(()=>n.value+f.value.length*2-j.value*2),xe=S(()=>{const ne=H.value==="left"||H.value==="right",ce=H.value==="right",ze=H.value==="bottom",st={[H.value]:0,zIndex:Te.value,transform:`translate${ne?"X":"Y"}(${(U.value?0:-110)*(ce||ze?-1:1)}%)`,position:oe.value||n.value!==eu?"absolute":"fixed",...h.value?void 0:{transition:"none"}};if(!P.value)return st;const ke=R.value[j.value];if(!ke)throw new Error(`[Vuetify] Could not find layout item "${x}"`);const F=p.value.get(x);return F&&(ke[F.position]+=F.amount),{...st,height:ne?`calc(100% - ${ke.top}px - ${ke.bottom}px)`:E.value?`${E.value}px`:void 0,left:ce?void 0:`${ke.left}px`,right:ce?`${ke.right}px`:void 0,top:H.value!=="bottom"?`${ke.top}px`:void 0,bottom:H.value!=="top"?`${ke.bottom}px`:void 0,width:ne?E.value?`${E.value}px`:void 0:`calc(100% - ${ke.left}px - ${ke.right}px)`}}),Z=S(()=>({zIndex:Te.value-1}));return{layoutItemStyles:xe,layoutItemScrimStyles:Z,zIndex:Te}},unregister:O=>{o.delete(O),r.delete(O),a.delete(O),s.delete(O),d.delete(O),i.value=i.value.filter(I=>I!==O)},mainRect:y,mainStyles:v,getLayoutItem:C,items:R,layoutRect:u,rootZIndex:n});const A=S(()=>["v-layout",{"v-layout--full-height":e.fullHeight}]),q=S(()=>({zIndex:t?n.value:void 0,position:t?"relative":void 0,overflow:t?"hidden":void 0}));return{layoutClasses:A,layoutStyles:q,getLayoutItem:C,items:R,layoutRect:u,layoutRef:c}}const Y0=G({...ge(),...H0({fullHeight:!0}),...Ye()},"VApp"),Z0=le()({name:"VApp",props:Y0(),setup(e,t){let{slots:n}=t;const i=je(e),{layoutClasses:r,getLayoutItem:a,items:o,layoutRef:s}=W0(e),{rtlClasses:d}=Yt();return me(()=>{var c;return m("div",{ref:s,class:["v-application",i.themeClasses.value,r.value,d.value,e.class],style:[e.style]},[m("div",{class:"v-application__wrap"},[(c=n.default)==null?void 0:c.call(n)])])}),{getLayoutItem:a,items:o,theme:i}}}),X0=G({text:String,...ge(),...He()},"VToolbarTitle"),Q0=le()({name:"VToolbarTitle",props:X0(),setup(e,t){let{slots:n}=t;return me(()=>{const i=!!(n.default||n.text||e.text);return m(e.tag,{class:["v-toolbar-title",e.class],style:e.style},{default:()=>{var r;return[i&&m("div",{class:"v-toolbar-title__placeholder"},[n.text?n.text():e.text,(r=n.default)==null?void 0:r.call(n)])]}})}),{}}}),j0=[null,"prominent","default","comfortable","compact"],Gf=G({absolute:Boolean,collapse:Boolean,color:String,density:{type:String,default:"default",validator:e=>j0.includes(e)},extended:Boolean,extensionHeight:{type:[Number,String],default:48},flat:Boolean,floating:Boolean,height:{type:[Number,String],default:64},image:String,title:String,...Ci(),...ge(),...un(),...St(),...He({tag:"header"}),...Ye()},"VToolbar"),tu=le()({name:"VToolbar",props:Gf(),setup(e,t){var h;let{slots:n}=t;const{backgroundColorClasses:i,backgroundColorStyles:r}=Lt(Se(e,"color")),{borderClasses:a}=Ti(e),{elevationClasses:o}=xn(e),{roundedClasses:s}=Et(e),{themeClasses:d}=je(e),{rtlClasses:c}=Yt(),u=ve(!!(e.extended||(h=n.extension)!=null&&h.call(n))),p=S(()=>parseInt(Number(e.height)+(e.density==="prominent"?Number(e.height):0)-(e.density==="comfortable"?8:0)-(e.density==="compact"?16:0),10)),f=S(()=>u.value?parseInt(Number(e.extensionHeight)+(e.density==="prominent"?Number(e.extensionHeight):0)-(e.density==="comfortable"?4:0)-(e.density==="compact"?8:0),10):0);return dn({VBtn:{variant:"text"}}),me(()=>{var C;const y=!!(e.title||n.title),v=!!(n.image||e.image),R=(C=n.extension)==null?void 0:C.call(n);return u.value=!!(e.extended||R),m(e.tag,{class:["v-toolbar",{"v-toolbar--absolute":e.absolute,"v-toolbar--collapse":e.collapse,"v-toolbar--flat":e.flat,"v-toolbar--floating":e.floating,[`v-toolbar--density-${e.density}`]:!0},i.value,a.value,o.value,s.value,d.value,c.value,e.class],style:[r.value,e.style]},{default:()=>[v&&m("div",{key:"image",class:"v-toolbar__image"},[n.image?m(at,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},n.image):m(Si,{key:"image-img",cover:!0,src:e.image},null)]),m(at,{defaults:{VTabs:{height:se(p.value)}}},{default:()=>{var T,P,A;return[m("div",{class:"v-toolbar__content",style:{height:se(p.value)}},[n.prepend&&m("div",{class:"v-toolbar__prepend"},[(T=n.prepend)==null?void 0:T.call(n)]),y&&m(Q0,{key:"title",text:e.title},{text:n.title}),(P=n.default)==null?void 0:P.call(n),n.append&&m("div",{class:"v-toolbar__append"},[(A=n.append)==null?void 0:A.call(n)])])]}}),m(at,{defaults:{VTabs:{height:se(f.value)}}},{default:()=>[m(Cf,null,{default:()=>[u.value&&m("div",{class:"v-toolbar__extension",style:{height:se(f.value)}},[R])]})]})]})}),{contentHeight:p,extensionHeight:f}}}),eb=G({scrollTarget:{type:String},scrollThreshold:{type:[String,Number],default:300}},"scroll");function tb(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{canScroll:n}=t;let i=0;const r=we(null),a=ve(0),o=ve(0),s=ve(0),d=ve(!1),c=ve(!1),u=S(()=>Number(e.scrollThreshold)),p=S(()=>hi((u.value-a.value)/u.value||0)),f=()=>{const h=r.value;!h||n&&!n.value||(i=a.value,a.value="window"in h?h.pageYOffset:h.scrollTop,c.value=a.value{o.value=o.value||a.value}),fe(d,()=>{o.value=0}),Pn(()=>{fe(()=>e.scrollTarget,h=>{var v;const y=h?document.querySelector(h):window;y&&y!==r.value&&((v=r.value)==null||v.removeEventListener("scroll",f),r.value=y,r.value.addEventListener("scroll",f,{passive:!0}))},{immediate:!0})}),qt(()=>{var h;(h=r.value)==null||h.removeEventListener("scroll",f)}),n&&fe(n,f,{immediate:!0}),{scrollThreshold:u,currentScroll:a,currentThreshold:s,isScrollActive:d,scrollRatio:p,isScrollingUp:c,savedScroll:o}}function Zl(){const e=ve(!1);return Pn(()=>{window.requestAnimationFrame(()=>{e.value=!0})}),{ssrBootStyles:S(()=>e.value?void 0:{transition:"none !important"}),isBooted:Br(e)}}const nb=G({scrollBehavior:String,modelValue:{type:Boolean,default:!0},location:{type:String,default:"top",validator:e=>["top","bottom"].includes(e)},...Gf(),...zf(),...eb(),height:{type:[Number,String],default:64}},"VAppBar"),ib=le()({name:"VAppBar",props:nb(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const i=we(),r=xt(e,"modelValue"),a=S(()=>{var T;const C=new Set(((T=e.scrollBehavior)==null?void 0:T.split(" "))??[]);return{hide:C.has("hide"),inverted:C.has("inverted"),collapse:C.has("collapse"),elevate:C.has("elevate"),fadeImage:C.has("fade-image")}}),o=S(()=>{const C=a.value;return C.hide||C.inverted||C.collapse||C.elevate||C.fadeImage||!r.value}),{currentScroll:s,scrollThreshold:d,isScrollingUp:c,scrollRatio:u}=tb(e,{canScroll:o}),p=S(()=>e.collapse||a.value.collapse&&(a.value.inverted?u.value>0:u.value===0)),f=S(()=>e.flat||a.value.elevate&&(a.value.inverted?s.value>0:s.value===0)),h=S(()=>a.value.fadeImage?a.value.inverted?1-u.value:u.value:void 0),y=S(()=>{var P,A;if(a.value.hide&&a.value.inverted)return 0;const C=((P=i.value)==null?void 0:P.contentHeight)??0,T=((A=i.value)==null?void 0:A.extensionHeight)??0;return C+T});Yn(S(()=>!!e.scrollBehavior),()=>{on(()=>{a.value.hide?a.value.inverted?r.value=s.value>d.value:r.value=c.value||s.valueparseInt(e.order,10)),position:Se(e,"location"),layoutSize:y,elementSize:ve(void 0),active:r,absolute:Se(e,"absolute")});return me(()=>{const C=tu.filterProps(e);return m(tu,Ae({ref:i,class:["v-app-bar",{"v-app-bar--bottom":e.location==="bottom"},e.class],style:[{...R.value,"--v-toolbar-image-opacity":h.value,height:void 0,...v.value},e.style]},C,{collapse:p.value,flat:f.value}),n)}),{}}}),rb=G({bgColor:String,color:String,grow:Boolean,mode:{type:String,validator:e=>!e||["horizontal","shift"].includes(e)},height:{type:[Number,String],default:56},active:{type:Boolean,default:!0},...Ci(),...ge(),...$t(),...un(),...St(),...zf({name:"bottom-navigation"}),...He({tag:"header"}),...Gr({modelValue:!0,selectedClass:"v-btn--selected"}),...Ye()},"VBottomNavigation"),ab=le()({name:"VBottomNavigation",props:rb(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const{themeClasses:i}=pw(),{borderClasses:r}=Ti(e),{backgroundColorClasses:a,backgroundColorStyles:o}=Lt(Se(e,"bgColor")),{densityClasses:s}=cn(e),{elevationClasses:d}=xn(e),{roundedClasses:c}=Et(e),{ssrBootStyles:u}=Zl(),p=S(()=>Number(e.height)-(e.density==="comfortable"?8:0)-(e.density==="compact"?16:0)),f=Se(e,"active"),{layoutItemStyles:h}=Hf({id:e.name,order:S(()=>parseInt(e.order,10)),position:S(()=>"bottom"),layoutSize:S(()=>f.value?p.value:0),elementSize:p,active:f,absolute:Se(e,"absolute")});return Kr(e,ql),dn({VBtn:{color:Se(e,"color"),density:Se(e,"density"),stacked:S(()=>e.mode!=="horizontal"),variant:"text"}},{scoped:!0}),me(()=>m(e.tag,{class:["v-bottom-navigation",{"v-bottom-navigation--active":f.value,"v-bottom-navigation--grow":e.grow,"v-bottom-navigation--shift":e.mode==="shift"},i.value,a.value,r.value,s.value,d.value,c.value,e.class],style:[o.value,h.value,{height:se(p.value),transform:`translateY(${se(f.value?0:100,"%")})`},u.value,e.style]},{default:()=>[n.default&&m("div",{class:"v-bottom-navigation__content"},[n.default()])]})),{}}}),ob=G({fluid:{type:Boolean,default:!1},...ge(),...He()},"VContainer"),fo=le()({name:"VContainer",props:ob(),setup(e,t){let{slots:n}=t;const{rtlClasses:i}=Yt();return me(()=>m(e.tag,{class:["v-container",{"v-container--fluid":e.fluid},i.value,e.class],style:e.style},n)),{}}}),Kf=po.reduce((e,t)=>(e[t]={type:[Boolean,String,Number],default:!1},e),{}),Wf=po.reduce((e,t)=>{const n="offset"+an(t);return e[n]={type:[String,Number],default:null},e},{}),Yf=po.reduce((e,t)=>{const n="order"+an(t);return e[n]={type:[String,Number],default:null},e},{}),nu={col:Object.keys(Kf),offset:Object.keys(Wf),order:Object.keys(Yf)};function sb(e,t,n){let i=e;if(!(n==null||n===!1)){if(t){const r=t.replace(e,"");i+=`-${r}`}return e==="col"&&(i="v-"+i),e==="col"&&(n===""||n===!0)||(i+=`-${n}`),i.toLowerCase()}}const lb=["auto","start","end","center","baseline","stretch"],db=G({cols:{type:[Boolean,String,Number],default:!1},...Kf,offset:{type:[String,Number],default:null},...Wf,order:{type:[String,Number],default:null},...Yf,alignSelf:{type:String,default:null,validator:e=>lb.includes(e)},...ge(),...He()},"VCol"),Kn=le()({name:"VCol",props:db(),setup(e,t){let{slots:n}=t;const i=S(()=>{const r=[];let a;for(a in nu)nu[a].forEach(s=>{const d=e[s],c=sb(a,s,d);c&&r.push(c)});const o=r.some(s=>s.startsWith("v-col-"));return r.push({"v-col":!o||!e.cols,[`v-col-${e.cols}`]:e.cols,[`offset-${e.offset}`]:e.offset,[`order-${e.order}`]:e.order,[`align-self-${e.alignSelf}`]:e.alignSelf}),r});return()=>{var r;return Kt(e.tag,{class:[i.value,e.class],style:e.style},(r=n.default)==null?void 0:r.call(n))}}}),Xl=["start","end","center"],Zf=["space-between","space-around","space-evenly"];function Ql(e,t){return po.reduce((n,i)=>{const r=e+an(i);return n[r]=t(),n},{})}const cb=[...Xl,"baseline","stretch"],Xf=e=>cb.includes(e),Qf=Ql("align",()=>({type:String,default:null,validator:Xf})),ub=[...Xl,...Zf],jf=e=>ub.includes(e),em=Ql("justify",()=>({type:String,default:null,validator:jf})),pb=[...Xl,...Zf,"stretch"],tm=e=>pb.includes(e),nm=Ql("alignContent",()=>({type:String,default:null,validator:tm})),iu={align:Object.keys(Qf),justify:Object.keys(em),alignContent:Object.keys(nm)},fb={align:"align",justify:"justify",alignContent:"align-content"};function mb(e,t,n){let i=fb[e];if(n!=null){if(t){const r=t.replace(e,"");i+=`-${r}`}return i+=`-${n}`,i.toLowerCase()}}const hb=G({dense:Boolean,noGutters:Boolean,align:{type:String,default:null,validator:Xf},...Qf,justify:{type:String,default:null,validator:jf},...em,alignContent:{type:String,default:null,validator:tm},...nm,...ge(),...He()},"VRow"),Yr=le()({name:"VRow",props:hb(),setup(e,t){let{slots:n}=t;const i=S(()=>{const r=[];let a;for(a in iu)iu[a].forEach(o=>{const s=e[o],d=mb(a,o,s);d&&r.push(d)});return r.push({"v-row--no-gutters":e.noGutters,"v-row--dense":e.dense,[`align-${e.align}`]:e.align,[`justify-${e.justify}`]:e.justify,[`align-content-${e.alignContent}`]:e.alignContent}),r});return()=>{var r;return Kt(e.tag,{class:["v-row",i.value,e.class],style:e.style},(r=n.default)==null?void 0:r.call(n))}}}),gb=ao("v-spacer","div","VSpacer"),yb=G({scrollable:Boolean,...ge(),...He({tag:"main"})},"VMain"),vb=le()({name:"VMain",props:yb(),setup(e,t){let{slots:n}=t;const{mainStyles:i}=G0(),{ssrBootStyles:r}=Zl();return me(()=>m(e.tag,{class:["v-main",{"v-main--scrollable":e.scrollable},e.class],style:[i.value,r.value,e.style]},{default:()=>{var a,o;return[e.scrollable?m("div",{class:"v-main__scroller"},[(a=n.default)==null?void 0:a.call(n)]):(o=n.default)==null?void 0:o.call(n)]}})),{}}}),wb=Oe("span",null,"Recipes",-1),bb=Oe("span",null,"MealPlan",-1),_b=Oe("span",null,"Shopping",-1),Sb=Oe("span",null,"Books",-1);function Rb(e,t,n,i,r,a){const o=At("global-search-dialog"),s=At("router-view");return he(),Ve(Z0,null,{default:J(()=>[m(ib,{color:"tandoor",flat:"",density:"comfortable"},{default:J(()=>[m(Si,{class:"ms-2",src:z0}),m(o),m(gb),m(tt,{density:"compact",icon:"fas fa-ellipsis-v"})]),_:1}),m(vb,null,{default:J(()=>[m(fo,{class:"pa-0 ma-0 mb-2"},{default:J(()=>[m(s)]),_:1})]),_:1}),m(ab,null,{default:J(()=>[m(tt,{value:"recent",to:"/search"},{default:J(()=>[m(Je,{icon:"fas fa-book"}),wb]),_:1}),m(tt,{value:"favorites",to:"/mealplan"},{default:J(()=>[m(Je,{icon:"fas fa-calendar-alt"}),bb]),_:1}),m(tt,{value:"nearby",to:"/shopping"},{default:J(()=>[m(Je,{icon:"fas fa-shopping-cart"}),_b]),_:1}),m(tt,{value:"nearby",to:"/books"},{default:J(()=>[m(Je,{icon:"fas fa-book-open"}),Sb]),_:1})]),_:1})]),_:1})}const Cb=ft(J0,[["render",Rb]]);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const a of r)if(a.type==="childList")for(const o of a.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function n(r){const a={};return r.integrity&&(a.integrity=r.integrity),r.referrerPolicy&&(a.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?a.credentials="include":r.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function i(r){if(r.ep)return;r.ep=!0;const a=n(r);fetch(r.href,a)}})();const Tb={collapse:"fas fa-chevron-up",complete:"fas fa-check",cancel:"fas fa-times-circle",close:"fas fa-times",delete:"fas fa-times-circle",clear:"fas fa-times-circle",success:"fas fa-check-circle",info:"fas fa-info-circle",warning:"fas fa-exclamation",error:"fas fa-exclamation-triangle",prev:"fas fa-chevron-left",next:"fas fa-chevron-right",checkboxOn:"fas fa-check-square",checkboxOff:"far fa-square",checkboxIndeterminate:"fas fa-minus-square",delimiter:"fas fa-circle",sortAsc:"fas fa-arrow-up",sortDesc:"fas fa-arrow-down",expand:"fas fa-chevron-down",menu:"fas fa-bars",subgroup:"fas fa-caret-down",dropdown:"fas fa-caret-down",radioOn:"far fa-dot-circle",radioOff:"far fa-circle",edit:"fas fa-edit",ratingEmpty:"far fa-star",ratingFull:"fas fa-star",ratingHalf:"fas fa-star-half",loading:"fas fa-sync",first:"fas fa-step-backward",last:"fas fa-step-forward",unfold:"fas fa-arrows-alt-v",file:"fas fa-paperclip",plus:"fas fa-plus",minus:"fas fa-minus",calendar:"fas fa-calendar",eyeDropper:"fas fa-eye-dropper"},kb={component:Ul},Ks={"001":1,AD:1,AE:6,AF:6,AG:0,AI:1,AL:1,AM:1,AN:1,AR:1,AS:0,AT:1,AU:1,AX:1,AZ:1,BA:1,BD:0,BE:1,BG:1,BH:6,BM:1,BN:1,BR:0,BS:0,BT:0,BW:0,BY:1,BZ:0,CA:0,CH:1,CL:1,CM:1,CN:1,CO:0,CR:1,CY:1,CZ:1,DE:1,DJ:6,DK:1,DM:0,DO:0,DZ:6,EC:1,EE:1,EG:6,ES:1,ET:0,FI:1,FJ:1,FO:1,FR:1,GB:1,"GB-alt-variant":0,GE:1,GF:1,GP:1,GR:1,GT:0,GU:0,HK:0,HN:0,HR:1,HU:1,ID:0,IE:1,IL:0,IN:0,IQ:6,IR:6,IS:1,IT:1,JM:0,JO:6,JP:0,KE:0,KG:1,KH:0,KR:0,KW:6,KZ:1,LA:0,LB:1,LI:1,LK:1,LT:1,LU:1,LV:1,LY:6,MC:1,MD:1,ME:1,MH:0,MK:1,MM:0,MN:1,MO:0,MQ:1,MT:0,MV:5,MX:0,MY:1,MZ:0,NI:0,NL:1,NO:1,NP:0,NZ:1,OM:6,PA:0,PE:0,PH:0,PK:0,PL:1,PR:0,PT:0,PY:0,QA:6,RE:1,RO:1,RS:1,RU:1,SA:0,SD:6,SE:1,SG:0,SI:1,SK:1,SM:1,SV:0,SY:6,TH:0,TJ:1,TM:1,TR:1,TT:0,TW:0,UA:1,UM:0,US:0,UY:1,UZ:1,VA:1,VE:0,VI:0,VN:1,WS:0,XK:1,YE:0,ZA:0,ZW:0};function Ob(e,t){const n=[];let i=[];const r=im(e),a=rm(e),o=(r.getDay()-Ks[t.slice(-2).toUpperCase()]+7)%7,s=(a.getDay()-Ks[t.slice(-2).toUpperCase()]+7)%7;for(let d=0;d0&&n.push(i),n}function Ib(e){const t=new Date(e);for(;t.getDay()!==0;)t.setDate(t.getDate()-1);return t}function Pb(e){const t=new Date(e);for(;t.getDay()!==6;)t.setDate(t.getDate()+1);return t}function im(e){return new Date(e.getFullYear(),e.getMonth(),1)}function rm(e){return new Date(e.getFullYear(),e.getMonth()+1,0)}function Eb(e){const t=e.split("-").map(Number);return new Date(t[0],t[1]-1,t[2])}const xb=/^([12]\d{3}-([1-9]|0[1-9]|1[0-2])-([1-9]|0[1-9]|[12]\d|3[01]))$/;function am(e){if(e==null)return new Date;if(e instanceof Date)return e;if(typeof e=="string"){let t;if(xb.test(e))return Eb(e);if(t=Date.parse(e),!isNaN(t))return new Date(t)}return null}const ru=new Date(2e3,0,2);function Fb(e){const t=Ks[e.slice(-2).toUpperCase()];return Ol(7).map(n=>{const i=new Date(ru);return i.setDate(ru.getDate()+t+n),new Intl.DateTimeFormat(e,{weekday:"narrow"}).format(i)})}function Ab(e,t,n,i){const r=am(e)??new Date,a=i==null?void 0:i[t];if(typeof a=="function")return a(r,t,n);let o={};switch(t){case"fullDateWithWeekday":o={weekday:"long",day:"numeric",month:"long",year:"numeric"};break;case"hours12h":o={hour:"numeric",hour12:!0};break;case"normalDateWithWeekday":o={weekday:"short",day:"numeric",month:"short"};break;case"keyboardDate":o={day:"2-digit",month:"2-digit",year:"numeric"};break;case"monthAndDate":o={month:"long",day:"numeric"};break;case"monthAndYear":o={month:"long",year:"numeric"};break;case"month":o={month:"long"};break;case"monthShort":o={month:"short"};break;case"dayOfMonth":return new Intl.NumberFormat(n).format(r.getDate());case"shortDate":o={year:"2-digit",month:"numeric",day:"numeric"};break;case"weekdayShort":o={weekday:"short"};break;case"year":o={year:"numeric"};break;default:o=a??{timeZone:"UTC",timeZoneName:"short"}}return new Intl.DateTimeFormat(n,o).format(r)}function Db(e,t){const n=e.toJsDate(t),i=n.getFullYear(),r=gc(String(n.getMonth()+1),2,"0"),a=gc(String(n.getDate()),2,"0");return`${i}-${r}-${a}`}function Ub(e){const[t,n,i]=e.split("-").map(Number);return new Date(t,n-1,i)}function Lb(e,t){const n=new Date(e);return n.setMinutes(n.getMinutes()+t),n}function Nb(e,t){const n=new Date(e);return n.setHours(n.getHours()+t),n}function qb(e,t){const n=new Date(e);return n.setDate(n.getDate()+t),n}function $b(e,t){const n=new Date(e);return n.setDate(n.getDate()+t*7),n}function Bb(e,t){const n=new Date(e);return n.setMonth(n.getMonth()+t),n}function Vb(e){return e.getFullYear()}function Mb(e){return e.getMonth()}function Jb(e){return new Date(e.getFullYear(),e.getMonth()+1,1)}function zb(e){return e.getHours()}function Hb(e){return e.getMinutes()}function Gb(e){return new Date(e.getFullYear(),0,1)}function Kb(e){return new Date(e.getFullYear(),11,31)}function Wb(e,t){return Ws(e,t[0])&&Zb(e,t[1])}function Yb(e){const t=new Date(e);return t instanceof Date&&!isNaN(t.getTime())}function Ws(e,t){return e.getTime()>t.getTime()}function Zb(e,t){return e.getTime(){n.locale=e.locale[i]??i??n.locale}),n}const c_=Symbol.for("vuetify:goto");function u_(){return{container:void 0,duration:300,layout:!1,offset:0,easing:"easeInOutCubic",patterns:{linear:e=>e,easeInQuad:e=>e**2,easeOutQuad:e=>e*(2-e),easeInOutQuad:e=>e<.5?2*e**2:-1+(4-2*e)*e,easeInCubic:e=>e**3,easeOutCubic:e=>--e**3+1,easeInOutCubic:e=>e<.5?4*e**3:(e-1)*(2*e-2)*(2*e-2)+1,easeInQuart:e=>e**4,easeOutQuart:e=>1- --e**4,easeInOutQuart:e=>e<.5?8*e**4:1-8*--e**4,easeInQuint:e=>e**5,easeOutQuint:e=>1+--e**5,easeInOutQuint:e=>e<.5?16*e**5:1+16*--e**5}}}function p_(e,t){return{rtl:t.isRtl,options:bt(u_(),e)}}function om(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{blueprint:t,...n}=e,i=bt(t,n),{aliases:r={},components:a={},directives:o={}}=i,s=ew(i.defaults),d=h0(i.display,i.ssr),c=uw(i.theme),u=sw(i.icons),p=Pw(i.locale),f=l_(i.date,p),h=p_(i.goTo,p);return{install:v=>{for(const R in o)v.directive(R,o[R]);for(const R in a)v.component(R,a[R]);for(const R in r)v.component(R,Jr({...r[R],name:R,aliasName:r[R].name}));if(c.install(v),v.provide(gi,s),v.provide(Gs,d),v.provide(Ar,c),v.provide(Vs,u),v.provide(La,p),v.provide(s_,f.options),v.provide(ou,f.instance),v.provide(c_,h),Me&&i.ssr)if(v.$nuxt)v.$nuxt.hook("app:suspense:resolve",()=>{d.update()});else{const{mount:R}=v;v.mount=function(){const C=R(...arguments);return pt(()=>d.update()),v.mount=R,C}}ln.reset(),v.mixin({computed:{$vuetify(){return nt({defaults:ti.call(this,gi),display:ti.call(this,Gs),theme:ti.call(this,Ar),icons:ti.call(this,Vs),locale:ti.call(this,La),date:ti.call(this,ou)})}}})},defaults:s,display:d,theme:c,icons:u,locale:p,date:f,goTo:h}}const f_="3.5.4";om.version=f_;function ti(e){var i,r;const t=this.$,n=((i=t.parent)==null?void 0:i.provides)??((r=t.vnode.appContext)==null?void 0:r.provides);if(n&&e in n)return n[e]}const m_=om({theme:{defaultTheme:"light",themes:{light:{colors:{background:"#f5efea",tandoor:"#ddbf86",primary:"#b98766",secondary:"#b55e4f",success:"#82aa8b",info:"#385f84",warning:"#eaaa21",error:"#a7240e"}}}},icons:{defaultSet:"fa",aliases:Tb,sets:{fa:kb}}}),h_=ot({name:"ShoppingListPage"});function g_(e,t,n,i,r,a){return he(),rt("h2",null,"Shopping List")}const Bo=ft(h_,[["render",g_]]),y_={name:"KeywordsBar",mixins:[],props:{keywords:Array},computed:{},methods:{}};function su(e){const n=Math.abs(e);return Math.sign(e)*(n/((1/.501-2)*(1-n)+1))}function lu(e){let{selectedElement:t,containerSize:n,contentSize:i,isRtl:r,currentScrollOffset:a,isHorizontal:o}=e;const s=o?t.clientWidth:t.clientHeight,d=o?t.offsetLeft:t.offsetTop,c=r&&o?i-d-s:d,u=n+a,p=s+c,f=s*.4;return c<=a?a=Math.max(c-f,0):u<=p&&(a=Math.min(a-(u-p-f),i-n)),a}function v_(e){let{selectedElement:t,containerSize:n,contentSize:i,isRtl:r,isHorizontal:a}=e;const o=a?t.clientWidth:t.clientHeight,s=a?t.offsetLeft:t.offsetTop,d=r&&a?i-s-o/2-n/2:s+o/2-n/2;return Math.min(i-n,Math.max(0,d))}const w_=Symbol.for("vuetify:v-slide-group"),sm=G({centerActive:Boolean,direction:{type:String,default:"horizontal"},symbol:{type:null,default:w_},nextIcon:{type:Ne,default:"$next"},prevIcon:{type:Ne,default:"$prev"},showArrows:{type:[Boolean,String],validator:e=>typeof e=="boolean"||["always","desktop","mobile"].includes(e)},...ge(),...g0(),...He(),...Gr({selectedClass:"v-slide-group-item--active"})},"VSlideGroup"),du=le()({name:"VSlideGroup",props:sm(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const{isRtl:i}=Yt(),{displayClasses:r,mobile:a}=Pf(e),o=Kr(e,e.symbol),s=ve(!1),d=ve(0),c=ve(0),u=ve(0),p=S(()=>e.direction==="horizontal"),{resizeRef:f,contentRect:h}=Ua(),{resizeRef:y,contentRect:v}=Ua(),R=S(()=>o.selected.value.length?o.items.value.findIndex(Z=>Z.id===o.selected.value[0]):-1),C=S(()=>o.selected.value.length?o.items.value.findIndex(Z=>Z.id===o.selected.value[o.selected.value.length-1]):-1);if(Me){let Z=-1;fe(()=>[o.selected.value,h.value,v.value,p.value],()=>{cancelAnimationFrame(Z),Z=requestAnimationFrame(()=>{if(h.value&&v.value){const ne=p.value?"width":"height";c.value=h.value[ne],u.value=v.value[ne],s.value=c.value+1=0&&y.value){const ne=y.value.children[C.value];R.value===0||!s.value?d.value=0:e.centerActive?d.value=v_({selectedElement:ne,containerSize:c.value,contentSize:u.value,isRtl:i.value,isHorizontal:p.value}):s.value&&(d.value=lu({selectedElement:ne,containerSize:c.value,contentSize:u.value,isRtl:i.value,currentScrollOffset:d.value,isHorizontal:p.value}))}})})}const T=ve(!1);let P=0,A=0;function q(Z){const ne=p.value?"clientX":"clientY";A=(i.value&&p.value?-1:1)*d.value,P=Z.touches[0][ne],T.value=!0}function O(Z){if(!s.value)return;const ne=p.value?"clientX":"clientY",ce=i.value&&p.value?-1:1;d.value=ce*(A+P-Z.touches[0][ne])}function I(Z){const ne=u.value-c.value;d.value<0||!s.value?d.value=0:d.value>=ne&&(d.value=ne),T.value=!1}function x(){f.value&&(f.value[p.value?"scrollLeft":"scrollTop"]=0)}const N=ve(!1);function H(Z){if(N.value=!0,!(!s.value||!y.value)){for(const ne of Z.composedPath())for(const ce of y.value.children)if(ce===ne){d.value=lu({selectedElement:ce,containerSize:c.value,contentSize:u.value,isRtl:i.value,currentScrollOffset:d.value,isHorizontal:p.value});return}}}function K(Z){N.value=!1}function E(Z){var ne;!N.value&&!(Z.relatedTarget&&((ne=y.value)!=null&&ne.contains(Z.relatedTarget)))&&B()}function U(Z){y.value&&(p.value?Z.key==="ArrowRight"?B(i.value?"prev":"next"):Z.key==="ArrowLeft"&&B(i.value?"next":"prev"):Z.key==="ArrowDown"?B("next"):Z.key==="ArrowUp"&&B("prev"),Z.key==="Home"?B("first"):Z.key==="End"&&B("last"))}function B(Z){var ne,ce,ze,st,ke;if(y.value)if(!Z)(ne=Vp(y.value)[0])==null||ne.focus();else if(Z==="next"){const F=(ce=y.value.querySelector(":focus"))==null?void 0:ce.nextElementSibling;F?F.focus():B("first")}else if(Z==="prev"){const F=(ze=y.value.querySelector(":focus"))==null?void 0:ze.previousElementSibling;F?F.focus():B("last")}else Z==="first"?(st=y.value.firstElementChild)==null||st.focus():Z==="last"&&((ke=y.value.lastElementChild)==null||ke.focus())}function oe(Z){const ne=d.value+(Z==="prev"?-1:1)*c.value;d.value=hi(ne,0,u.value-c.value)}const re=S(()=>{let Z=d.value>u.value-c.value?-(u.value-c.value)+su(u.value-c.value-d.value):-d.value;d.value<=0&&(Z=su(-d.value));const ne=i.value&&p.value?-1:1;return{transform:`translate${p.value?"X":"Y"}(${ne*Z}px)`,transition:T.value?"none":"",willChange:T.value?"transform":""}}),te=S(()=>({next:o.next,prev:o.prev,select:o.select,isSelected:o.isSelected})),j=S(()=>{switch(e.showArrows){case"always":return!0;case"desktop":return!a.value;case!0:return s.value||Math.abs(d.value)>0;case"mobile":return a.value||s.value||Math.abs(d.value)>0;default:return!a.value&&(s.value||Math.abs(d.value)>0)}}),Te=S(()=>Math.abs(d.value)>0),xe=S(()=>u.value>Math.abs(d.value)+c.value);return me(()=>m(e.tag,{class:["v-slide-group",{"v-slide-group--vertical":!p.value,"v-slide-group--has-affixes":j.value,"v-slide-group--is-overflowing":s.value},r.value,e.class],style:e.style,tabindex:N.value||o.selected.value.length?-1:0,onFocus:E},{default:()=>{var Z,ne,ce;return[j.value&&m("div",{key:"prev",class:["v-slide-group__prev",{"v-slide-group__prev--disabled":!Te.value}],onClick:()=>Te.value&&oe("prev")},[((Z=n.prev)==null?void 0:Z.call(n,te.value))??m(Jc,null,{default:()=>[m(Je,{icon:i.value?e.nextIcon:e.prevIcon},null)]})]),m("div",{key:"container",ref:f,class:"v-slide-group__container",onScroll:x},[m("div",{ref:y,class:"v-slide-group__content",style:re.value,onTouchstartPassive:q,onTouchmovePassive:O,onTouchendPassive:I,onFocusin:H,onFocusout:K,onKeydown:U},[(ne=n.default)==null?void 0:ne.call(n,te.value)])]),j.value&&m("div",{key:"next",class:["v-slide-group__next",{"v-slide-group__next--disabled":!xe.value}],onClick:()=>xe.value&&oe("next")},[((ce=n.next)==null?void 0:ce.call(n,te.value))??m(Jc,null,{default:()=>[m(Je,{icon:i.value?e.prevIcon:e.nextIcon},null)]})])]}})),{selected:o.selected,scrollTo:oe,scrollOffset:d,focus:B}}}),lm=Symbol.for("vuetify:v-chip-group"),b_=G({column:Boolean,filter:Boolean,valueComparator:{type:Function,default:ro},...sm(),...ge(),...Gr({selectedClass:"v-chip--selected"}),...He(),...Ye(),...Ri({variant:"tonal"})},"VChipGroup");le()({name:"VChipGroup",props:b_(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const{themeClasses:i}=je(e),{isSelected:r,select:a,next:o,prev:s,selected:d}=Kr(e,lm);return dn({VChip:{color:Se(e,"color"),disabled:Se(e,"disabled"),filter:Se(e,"filter"),variant:Se(e,"variant")}}),me(()=>{const c=du.filterProps(e);return m(du,Ae(c,{class:["v-chip-group",{"v-chip-group--column":e.column},i.value,e.class],style:e.style}),{default:()=>{var u;return[(u=n.default)==null?void 0:u.call(n,{isSelected:r,select:a,next:o,prev:s,selected:d.value})]}})}),{}}});const __=G({activeClass:String,appendAvatar:String,appendIcon:Ne,closable:Boolean,closeIcon:{type:Ne,default:"$delete"},closeLabel:{type:String,default:"$vuetify.close"},draggable:Boolean,filter:Boolean,filterIcon:{type:String,default:"$complete"},label:Boolean,link:{type:Boolean,default:void 0},pill:Boolean,prependAvatar:String,prependIcon:Ne,ripple:{type:[Boolean,Object],default:!0},text:String,modelValue:{type:Boolean,default:!0},onClick:jt(),onClickOnce:jt(),...Ci(),...ge(),...$t(),...un(),...Ll(),...St(),...Hl(),...En(),...He({tag:"span"}),...Ye(),...Ri({variant:"tonal"})},"VChip"),wa=le()({name:"VChip",directives:{Ripple:uo},props:__(),emits:{"click:close":e=>!0,"update:modelValue":e=>!0,"group:selected":e=>!0,click:e=>!0},setup(e,t){let{attrs:n,emit:i,slots:r}=t;const{t:a}=$l(),{borderClasses:o}=Ti(e),{colorClasses:s,colorStyles:d,variantClasses:c}=co(e),{densityClasses:u}=cn(e),{elevationClasses:p}=xn(e),{roundedClasses:f}=Et(e),{sizeClasses:h}=_i(e),{themeClasses:y}=je(e),v=xt(e,"modelValue"),R=Nl(e,lm,!1),C=zl(e,n),T=S(()=>e.link!==!1&&C.isLink.value),P=S(()=>!e.disabled&&e.link!==!1&&(!!R||e.link||C.isClickable.value)),A=S(()=>({"aria-label":a(e.closeLabel),onClick(I){I.stopPropagation(),v.value=!1,i("click:close",I)}}));function q(I){var x;i("click",I),P.value&&((x=C.navigate)==null||x.call(C,I),R==null||R.toggle())}function O(I){(I.key==="Enter"||I.key===" ")&&(I.preventDefault(),q(I))}return()=>{const I=C.isLink.value?"a":e.tag,x=!!(e.appendIcon||e.appendAvatar),N=!!(x||r.append),H=!!(r.close||e.closable),K=!!(r.filter||e.filter)&&R,E=!!(e.prependIcon||e.prependAvatar),U=!!(E||r.prepend),B=!R||R.isSelected.value;return v.value&&Pt(m(I,{class:["v-chip",{"v-chip--disabled":e.disabled,"v-chip--label":e.label,"v-chip--link":P.value,"v-chip--filter":K,"v-chip--pill":e.pill},y.value,o.value,B?s.value:void 0,u.value,p.value,f.value,h.value,c.value,R==null?void 0:R.selectedClass.value,e.class],style:[B?d.value:void 0,e.style],disabled:e.disabled||void 0,draggable:e.draggable,href:C.href.value,tabindex:P.value?0:void 0,onClick:q,onKeydown:P.value&&!T.value&&O},{default:()=>{var oe;return[lo(P.value,"v-chip"),K&&m(Tf,{key:"filter"},{default:()=>[Pt(m("div",{class:"v-chip__filter"},[r.filter?m(at,{key:"filter-defaults",disabled:!e.filterIcon,defaults:{VIcon:{icon:e.filterIcon}}},r.filter):m(Je,{key:"filter-icon",icon:e.filterIcon},null)]),[[bi,R.isSelected.value]])]}),U&&m("div",{key:"prepend",class:"v-chip__prepend"},[r.prepend?m(at,{key:"prepend-defaults",disabled:!E,defaults:{VAvatar:{image:e.prependAvatar,start:!0},VIcon:{icon:e.prependIcon,start:!0}}},r.prepend):m(Re,null,[e.prependIcon&&m(Je,{key:"prepend-icon",icon:e.prependIcon,start:!0},null),e.prependAvatar&&m(Dr,{key:"prepend-avatar",image:e.prependAvatar,start:!0},null)])]),m("div",{class:"v-chip__content","data-no-activator":""},[((oe=r.default)==null?void 0:oe.call(r,{isSelected:R==null?void 0:R.isSelected.value,selectedClass:R==null?void 0:R.selectedClass.value,select:R==null?void 0:R.select,toggle:R==null?void 0:R.toggle,value:R==null?void 0:R.value.value,disabled:e.disabled}))??e.text]),N&&m("div",{key:"append",class:"v-chip__append"},[r.append?m(at,{key:"append-defaults",disabled:!x,defaults:{VAvatar:{end:!0,image:e.appendAvatar},VIcon:{end:!0,icon:e.appendIcon}}},r.append):m(Re,null,[e.appendIcon&&m(Je,{key:"append-icon",end:!0,icon:e.appendIcon},null),e.appendAvatar&&m(Dr,{key:"append-avatar",end:!0,image:e.appendAvatar},null)])]),H&&m("button",Ae({key:"close",class:"v-chip__close",type:"button"},A.value),[r.close?m(at,{key:"close-defaults",defaults:{VIcon:{icon:e.closeIcon,size:"x-small"}}},r.close):m(Je,{key:"close-icon",icon:e.closeIcon,size:"x-small"},null)])]}}),[[Qn("ripple"),P.value&&e.ripple,null]])}}});function S_(e,t,n,i,r,a){return he(!0),rt(Re,null,wi(n.keywords,o=>(he(),Ve(wa,{color:"info",size:"x-small"},{default:J(()=>[Be(Pe(o==null?void 0:o.label),1)]),_:2},1024))),256)}const jl=ft(y_,[["render",S_]]),R_=ot({name:"RecipeCard",components:{KeywordsComponent:jl},props:{recipe:{}}}),C_=G({name:String,itemAriaLabel:{type:String,default:"$vuetify.rating.ariaLabel.item"},activeColor:String,color:String,clearable:Boolean,disabled:Boolean,emptyIcon:{type:Ne,default:"$ratingEmpty"},fullIcon:{type:Ne,default:"$ratingFull"},halfIncrements:Boolean,hover:Boolean,length:{type:[Number,String],default:5},readonly:Boolean,modelValue:{type:[Number,String],default:0},itemLabels:Array,itemLabelPosition:{type:String,default:"top",validator:e=>["top","bottom"].includes(e)},ripple:Boolean,...ge(),...$t(),...En(),...He(),...Ye()},"VRating"),ed=le()({name:"VRating",props:C_(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const{t:i}=$l(),{themeClasses:r}=je(e),a=xt(e,"modelValue"),o=S(()=>hi(parseFloat(a.value),0,+e.length)),s=S(()=>Ol(Number(e.length),1)),d=S(()=>s.value.flatMap(v=>e.halfIncrements?[v-.5,v]:[v])),c=ve(-1),u=S(()=>d.value.map(v=>{const R=e.hover&&c.value>-1,C=o.value>=v,T=c.value>=v,A=(R?T:C)?e.fullIcon:e.emptyIcon,q=e.activeColor??e.color,O=C||T?q:e.color;return{isFilled:C,isHovered:T,icon:A,color:O}})),p=S(()=>[0,...d.value].map(v=>{function R(){c.value=v}function C(){c.value=-1}function T(){e.disabled||e.readonly||(a.value=o.value===v&&e.clearable?0:v)}return{onMouseenter:e.hover?R:void 0,onMouseleave:e.hover?C:void 0,onClick:T}})),f=S(()=>e.name??`v-rating-${ln()}`);function h(v){var x,N;let{value:R,index:C,showStar:T=!0}=v;const{onMouseenter:P,onMouseleave:A,onClick:q}=p.value[C+1],O=`${f.value}-${String(R).replace(".","-")}`,I={color:(x=u.value[C])==null?void 0:x.color,density:e.density,disabled:e.disabled,icon:(N=u.value[C])==null?void 0:N.icon,ripple:e.ripple,size:e.size,variant:"plain"};return m(Re,null,[m("label",{for:O,class:{"v-rating__item--half":e.halfIncrements&&R%1>0,"v-rating__item--full":e.halfIncrements&&R%1===0},onMouseenter:P,onMouseleave:A,onClick:q},[m("span",{class:"v-rating__hidden"},[i(e.itemAriaLabel,R,e.length)]),T?n.item?n.item({...u.value[C],props:I,value:R,index:C,rating:o.value}):m(tt,Ae({"aria-label":i(e.itemAriaLabel,R,e.length)},I),null):void 0]),m("input",{class:"v-rating__hidden",name:f.value,id:O,type:"radio",value:R,checked:o.value===R,tabindex:-1,readonly:e.readonly,disabled:e.disabled},null)])}function y(v){return n["item-label"]?n["item-label"](v):v.label?m("span",null,[v.label]):m("span",null,[Be(" ")])}return me(()=>{var R;const v=!!((R=e.itemLabels)!=null&&R.length)||n["item-label"];return m(e.tag,{class:["v-rating",{"v-rating--hover":e.hover,"v-rating--readonly":e.readonly},r.value,e.class],style:e.style},{default:()=>[m(h,{value:0,index:-1,showStar:!1},null),s.value.map((C,T)=>{var P,A;return m("div",{class:"v-rating__wrapper"},[v&&e.itemLabelPosition==="top"?y({value:C,index:T,label:(P=e.itemLabels)==null?void 0:P[T]}):void 0,m("div",{class:"v-rating__item"},[e.halfIncrements?m(Re,null,[m(h,{value:C-.5,index:T*2},null),m(h,{value:C,index:T*2+1},null)]):m(h,{value:C,index:T},null)]),v&&e.itemLabelPosition==="bottom"?y({value:C,index:T,label:(A=e.itemLabels)==null?void 0:A[T]}):void 0])})]})}),{}}}),T_={class:"text-grey ms-4"};function k_(e,t,n,i,r,a){const o=At("KeywordsComponent");return he(),Ve(en,{to:`/recipe/${e.recipe.id}`},{default:J(()=>[m(Si,{cover:"",height:"250",src:e.recipe.image},null,8,["src"]),m(bf,null,{default:J(()=>[m(Wr,null,{default:J(()=>[Be(Pe(e.recipe.name),1)]),_:1}),m(qa,null,{default:J(()=>[m(o,{keywords:e.recipe.keywords},null,8,["keywords"])]),_:1})]),_:1}),m(rn,null,{default:J(()=>[e.recipe.rating?(he(),Ve(Yr,{key:0,align:"center",class:"mx-0"},{default:J(()=>[m(ed,{"model-value":e.recipe.rating,color:"amber",density:"compact","half-increments":"",readonly:"",size:"small"},null,8,["model-value"]),Oe("div",T_,Pe(e.recipe.rating),1)]),_:1})):wt("",!0),Oe("div",null,Pe(e.recipe.description),1)]),_:1})]),_:1},8,["to"])}const O_=ft(R_,[["render",k_]]),I_=ot({name:"RecipeSearchPage",components:{GlobalSearchDialog:Mf,RecipeCardComponent:O_,KeywordsComponent:jl},computed:{},data(){return{recipes:[]}},mounted(){},methods:{}});function P_(e,t,n,i,r,a){return null}const E_=ft(I_,[["render",P_]]);let x_=typeof window<"u"?localStorage.getItem("BASE_PATH")||"":location.protocol+"//"+location.host;class F_{constructor(t={}){this.configuration=t}set config(t){this.configuration=t}get basePath(){return this.configuration.basePath!=null?this.configuration.basePath:x_}get fetchApi(){return this.configuration.fetchApi}get middleware(){return this.configuration.middleware||[]}get queryParamsStringify(){return this.configuration.queryParamsStringify||dm}get username(){return this.configuration.username}get password(){return this.configuration.password}get apiKey(){const t=this.configuration.apiKey;if(t)return typeof t=="function"?t:()=>t}get accessToken(){const t=this.configuration.accessToken;if(t)return typeof t=="function"?t:async()=>t}get headers(){return this.configuration.headers}get credentials(){return this.configuration.credentials}}const A_=new F_,za=class za{constructor(t=A_){Fn(this,"middleware");Fn(this,"fetchApi",async(t,n)=>{let i={url:t,init:n};for(const a of this.middleware)a.pre&&(i=await a.pre({fetch:this.fetchApi,...i})||i);let r;try{r=await(this.configuration.fetchApi||fetch)(i.url,i.init)}catch(a){for(const o of this.middleware)o.onError&&(r=await o.onError({fetch:this.fetchApi,url:i.url,init:i.init,error:a,response:r?r.clone():void 0})||r);if(r===void 0)throw a instanceof Error?new N_(a,"The request failed and the interceptors did not return an alternative response"):a}for(const a of this.middleware)a.post&&(r=await a.post({fetch:this.fetchApi,url:i.url,init:i.init,response:r.clone()})||r);return r});this.configuration=t,this.middleware=t.middleware}withMiddleware(...t){const n=this.clone();return n.middleware=n.middleware.concat(...t),n}withPreMiddleware(...t){const n=t.map(i=>({pre:i}));return this.withMiddleware(...n)}withPostMiddleware(...t){const n=t.map(i=>({post:i}));return this.withMiddleware(...n)}isJsonMime(t){return t?za.jsonRegex.test(t):!1}async request(t,n){const{url:i,init:r}=await this.createFetchParams(t,n),a=await this.fetchApi(i,r);if(a&&a.status>=200&&a.status<300)return a;throw new L_(a,"Response returned an error code")}getCookie(t){let n=null;if(document.cookie&&document.cookie!==""){const i=document.cookie.split(";");for(let r=0;rr[u]===void 0?delete r[u]:{});const a=typeof n=="function"?n:async()=>n,o={method:t.method,headers:r,body:t.body,credentials:this.configuration.credentials},s={...o,...await a({init:o,context:t})};let d;U_(s.body)||s.body instanceof URLSearchParams||D_(s.body)?d=s.body:this.isJsonMime(r["Content-Type"])?d=JSON.stringify(s.body):d=s.body;const c={...s,body:d};return{url:i,init:c}}clone(){const t=this.constructor,n=new t(this.configuration);return n.middleware=this.middleware.slice(),n}};Fn(za,"jsonRegex",new RegExp("^(:?application/json|[^;/ ]+/[^;/ ]+[+]json)[ ]*(:?;.*)?$","i"));let Ys=za;function D_(e){return typeof Blob<"u"&&e instanceof Blob}function U_(e){return typeof FormData<"u"&&e instanceof FormData}class L_ extends Error{constructor(n,i){super(i);Fn(this,"name","ResponseError");this.response=n}}class N_ extends Error{constructor(n,i){super(i);Fn(this,"name","FetchError");this.cause=n}}class _ extends Error{constructor(n,i){super(i);Fn(this,"name","RequiredError");this.field=n}}function l(e,t){const n=e[t];return n!=null}function dm(e,t=""){return Object.keys(e).map(n=>cm(n,e[n],t)).filter(n=>n.length>0).join("&")}function cm(e,t,n=""){const i=n+(n.length?`[${e}]`:e);if(t instanceof Array){const r=t.map(a=>encodeURIComponent(String(a))).join(`&${encodeURIComponent(i)}=`);return`${encodeURIComponent(i)}=${r}`}if(t instanceof Set){const r=Array.from(t);return cm(e,r,n)}return t instanceof Date?`${encodeURIComponent(i)}=${encodeURIComponent(t.toISOString())}`:t instanceof Object?dm(t,i):`${encodeURIComponent(i)}=${encodeURIComponent(String(t))}`}function ca(e){for(const t of e)if(t.contentType==="multipart/form-data")return!0;return!1}class w{constructor(t,n=i=>i){this.raw=t,this.transformer=n}async value(){return this.transformer(await this.raw.json())}}class ye{constructor(t){this.raw=t}async value(){}}class Nn{constructor(t){this.raw=t}async value(){return await this.raw.text()}}function Ai(e){return q_(e)}function q_(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,token:l(e,"token")?e.token:void 0,expires:new Date(e.expires),scope:l(e,"scope")?e.scope:void 0,created:l(e,"created")?new Date(e.created):void 0,updated:l(e,"updated")?new Date(e.updated):void 0}}function Vo(e){if(e!==void 0)return e===null?null:{expires:e.expires.toISOString(),scope:e.scope}}function Di(e){return $_(e)}function $_(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,type:e.type,name:l(e,"name")?e.name:void 0,description:l(e,"description")?e.description:void 0,param1:l(e,"param_1")?e.param_1:void 0,param2:l(e,"param_2")?e.param_2:void 0,param3:l(e,"param_3")?e.param_3:void 0,order:l(e,"order")?e.order:void 0,disabled:l(e,"disabled")?e.disabled:void 0,createdBy:l(e,"created_by")?e.created_by:void 0}}function Mo(e){if(e!==void 0)return e===null?null:{type:e.type,name:e.name,description:e.description,param_1:e.param1,param_2:e.param2,param_3:e.param3,order:e.order,disabled:e.disabled}}function ua(e){return B_(e)}function B_(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,url:l(e,"url")?e.url:void 0,html:e.html,createdBy:l(e,"created_by")?e.created_by:void 0,createdAt:l(e,"created_at")?new Date(e.created_at):void 0}}function Jo(e){if(e!==void 0)return e===null?null:{url:e.url,html:e.html}}function V_(e){return M_(e)}function M_(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,url:l(e,"url")?e.url:void 0,createdBy:l(e,"created_by")?e.created_by:void 0,createdAt:l(e,"created_at")?new Date(e.created_at):void 0}}function mo(e){return J_(e)}function J_(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,username:l(e,"username")?e.username:void 0,firstName:l(e,"first_name")?e.first_name:void 0,lastName:l(e,"last_name")?e.last_name:void 0,displayName:l(e,"display_name")?e.display_name:void 0}}function ho(e){if(e!==void 0)return e===null?null:{first_name:e.firstName,last_name:e.lastName}}function sr(e){return z_(e)}function z_(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,recipe:e.recipe,servings:l(e,"servings")?e.servings:void 0,rating:l(e,"rating")?e.rating:void 0,comment:l(e,"comment")?e.comment:void 0,createdBy:l(e,"created_by")?mo(e.created_by):void 0,createdAt:l(e,"created_at")?new Date(e.created_at):void 0,updatedAt:l(e,"updated_at")?new Date(e.updated_at):void 0}}function zo(e){if(e!==void 0)return e===null?null:{recipe:e.recipe,servings:e.servings,rating:e.rating,comment:e.comment,created_by:ho(e.createdBy),created_at:e.createdAt===void 0?void 0:e.createdAt.toISOString()}}function On(e){return H_(e)}function H_(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,username:l(e,"username")?e.username:void 0,firstName:l(e,"first_name")?e.first_name:void 0,lastName:l(e,"last_name")?e.last_name:void 0,displayName:l(e,"display_name")?e.display_name:void 0}}function In(e){if(e!==void 0)return e===null?null:{first_name:e.firstName,last_name:e.lastName}}function Ui(e){return G_(e)}function G_(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,search:e.search,shared:l(e,"shared")?e.shared.map(On):void 0,createdBy:l(e,"created_by")?e.created_by:void 0}}function Ho(e){if(e!==void 0)return e===null?null:{name:e.name,search:e.search,shared:e.shared===void 0?void 0:e.shared.map(In)}}function lr(e){return K_(e)}function K_(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,type:e.type,msg:l(e,"msg")?e.msg:void 0,running:l(e,"running")?e.running:void 0,totalRecipes:l(e,"total_recipes")?e.total_recipes:void 0,exportedRecipes:l(e,"exported_recipes")?e.exported_recipes:void 0,cacheDuration:l(e,"cache_duration")?e.cache_duration:void 0,possiblyNotExpired:l(e,"possibly_not_expired")?e.possibly_not_expired:void 0,createdBy:l(e,"created_by")?e.created_by:void 0,createdAt:l(e,"created_at")?new Date(e.created_at):void 0}}function Go(e){if(e!==void 0)return e===null?null:{type:e.type,msg:e.msg,running:e.running,total_recipes:e.totalRecipes,exported_recipes:e.exportedRecipes,cache_duration:e.cacheDuration,possibly_not_expired:e.possiblyNotExpired}}function Nr(e){return W_(e)}function W_(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:l(e,"name")?e.name:void 0,field:l(e,"field")?e.field:void 0}}function qr(e){if(e!==void 0)return e===null?null:{name:e.name,field:e.field}}function ki(e){return Y_(e)}function Y_(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,pluralName:l(e,"plural_name")?e.plural_name:void 0,description:l(e,"description")?e.description:void 0,baseUnit:l(e,"base_unit")?e.base_unit:void 0,openDataSlug:l(e,"open_data_slug")?e.open_data_slug:void 0}}function Oi(e){if(e!==void 0)return e===null?null:{name:e.name,plural_name:e.pluralName,description:e.description,base_unit:e.baseUnit,open_data_slug:e.openDataSlug}}function um(e){return Z_(e)}function Z_(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,unit:l(e,"unit")?e.unit:void 0,description:l(e,"description")?e.description:void 0,order:l(e,"order")?e.order:void 0,openDataSlug:l(e,"open_data_slug")?e.open_data_slug:void 0,fdcId:l(e,"fdc_id")?e.fdc_id:void 0}}function pm(e){if(e!==void 0)return e===null?null:{id:e.id,name:e.name,unit:e.unit,description:e.description,order:e.order,open_data_slug:e.openDataSlug,fdc_id:e.fdcId}}function td(e){return X_(e)}function X_(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,propertyAmount:e.property_amount,propertyType:um(e.property_type)}}function nd(e){if(e!==void 0)return e===null?null:{property_amount:e.propertyAmount,property_type:pm(e.propertyType)}}function fm(e){return Q_(e)}function Q_(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,url:l(e,"url")?e.url:void 0}}function mm(e){if(e!==void 0)return e===null?null:{name:e.name}}function hm(e){return j_(e)}function j_(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,pluralName:l(e,"plural_name")?e.plural_name:void 0}}function gm(e){if(e!==void 0)return e===null?null:{name:e.name,plural_name:e.pluralName}}function ym(e){return eS(e)}function eS(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,description:l(e,"description")?e.description:void 0}}function vm(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description}}function gn(e){return tS(e)}function tS(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,pluralName:l(e,"plural_name")?e.plural_name:void 0,description:l(e,"description")?e.description:void 0,shopping:l(e,"shopping")?e.shopping:void 0,recipe:l(e,"recipe")?fm(e.recipe):void 0,url:l(e,"url")?e.url:void 0,properties:l(e,"properties")?e.properties===null?null:e.properties.map(td):void 0,propertiesFoodAmount:l(e,"properties_food_amount")?e.properties_food_amount:void 0,propertiesFoodUnit:l(e,"properties_food_unit")?ki(e.properties_food_unit):void 0,fdcId:l(e,"fdc_id")?e.fdc_id:void 0,foodOnhand:l(e,"food_onhand")?e.food_onhand:void 0,supermarketCategory:l(e,"supermarket_category")?ym(e.supermarket_category):void 0,parent:l(e,"parent")?e.parent:void 0,numchild:l(e,"numchild")?e.numchild:void 0,inheritFields:l(e,"inherit_fields")?e.inherit_fields===null?null:e.inherit_fields.map(Nr):void 0,fullName:l(e,"full_name")?e.full_name:void 0,ignoreShopping:l(e,"ignore_shopping")?e.ignore_shopping:void 0,substitute:l(e,"substitute")?e.substitute===null?null:e.substitute.map(hm):void 0,substituteSiblings:l(e,"substitute_siblings")?e.substitute_siblings:void 0,substituteChildren:l(e,"substitute_children")?e.substitute_children:void 0,substituteOnhand:l(e,"substitute_onhand")?e.substitute_onhand:void 0,childInheritFields:l(e,"child_inherit_fields")?e.child_inherit_fields===null?null:e.child_inherit_fields.map(Nr):void 0,openDataSlug:l(e,"open_data_slug")?e.open_data_slug:void 0}}function ni(e){if(e!==void 0)return e===null?null:{name:e.name,plural_name:e.pluralName,description:e.description,recipe:mm(e.recipe),url:e.url,properties:e.properties===void 0?void 0:e.properties===null?null:e.properties.map(nd),properties_food_amount:e.propertiesFoodAmount,properties_food_unit:Oi(e.propertiesFoodUnit),fdc_id:e.fdcId,food_onhand:e.foodOnhand,supermarket_category:vm(e.supermarketCategory),inherit_fields:e.inheritFields===void 0?void 0:e.inheritFields===null?null:e.inheritFields.map(qr),ignore_shopping:e.ignoreShopping,substitute:e.substitute===void 0?void 0:e.substitute===null?null:e.substitute.map(gm),substitute_siblings:e.substituteSiblings,substitute_children:e.substituteChildren,child_inherit_fields:e.childInheritFields===void 0?void 0:e.childInheritFields===null?null:e.childInheritFields.map(qr),open_data_slug:e.openDataSlug}}function cu(e){return nS(e)}function nS(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:l(e,"name")?e.name:void 0,field:l(e,"field")?e.field:void 0}}function iS(e){return rS(e)}function rS(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,amount:l(e,"amount")?e.amount:void 0,unit:l(e,"unit")?e.unit:void 0,_delete:e.delete}}function aS(e){if(e!==void 0)return e===null?null:{amount:e.amount,unit:e.unit,delete:e._delete}}function uu(e){return oS(e)}function oS(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name}}function sS(e){return lS(e)}function lS(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,label:l(e,"label")?e.label:void 0,description:l(e,"description")?e.description:void 0,parent:l(e,"parent")?e.parent:void 0,numchild:l(e,"numchild")?e.numchild:void 0,createdAt:l(e,"created_at")?new Date(e.created_at):void 0,updatedAt:l(e,"updated_at")?new Date(e.updated_at):void 0,fullName:l(e,"full_name")?e.full_name:void 0}}function dS(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description}}function dr(e){return cS(e)}function cS(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,type:e.type,msg:l(e,"msg")?e.msg:void 0,running:l(e,"running")?e.running:void 0,keyword:l(e,"keyword")?sS(e.keyword):void 0,totalRecipes:l(e,"total_recipes")?e.total_recipes:void 0,importedRecipes:l(e,"imported_recipes")?e.imported_recipes:void 0,createdBy:l(e,"created_by")?e.created_by:void 0,createdAt:l(e,"created_at")?new Date(e.created_at):void 0}}function Ko(e){if(e!==void 0)return e===null?null:{type:e.type,msg:e.msg,running:e.running,keyword:dS(e.keyword),total_recipes:e.totalRecipes,imported_recipes:e.importedRecipes}}function Zr(e){return uS(e)}function uS(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,pluralName:l(e,"plural_name")?e.plural_name:void 0,description:l(e,"description")?e.description:void 0,shopping:l(e,"shopping")?e.shopping:void 0,recipe:l(e,"recipe")?fm(e.recipe):void 0,url:l(e,"url")?e.url:void 0,properties:l(e,"properties")?e.properties===null?null:e.properties.map(td):void 0,propertiesFoodAmount:l(e,"properties_food_amount")?e.properties_food_amount:void 0,propertiesFoodUnit:l(e,"properties_food_unit")?ki(e.properties_food_unit):void 0,fdcId:l(e,"fdc_id")?e.fdc_id:void 0,foodOnhand:l(e,"food_onhand")?e.food_onhand:void 0,supermarketCategory:l(e,"supermarket_category")?ym(e.supermarket_category):void 0,parent:l(e,"parent")?e.parent:void 0,numchild:l(e,"numchild")?e.numchild:void 0,inheritFields:l(e,"inherit_fields")?e.inherit_fields===null?null:e.inherit_fields.map(Nr):void 0,fullName:l(e,"full_name")?e.full_name:void 0,ignoreShopping:l(e,"ignore_shopping")?e.ignore_shopping:void 0,substitute:l(e,"substitute")?e.substitute===null?null:e.substitute.map(hm):void 0,substituteSiblings:l(e,"substitute_siblings")?e.substitute_siblings:void 0,substituteChildren:l(e,"substitute_children")?e.substitute_children:void 0,substituteOnhand:l(e,"substitute_onhand")?e.substitute_onhand:void 0,childInheritFields:l(e,"child_inherit_fields")?e.child_inherit_fields===null?null:e.child_inherit_fields.map(Nr):void 0,openDataSlug:l(e,"open_data_slug")?e.open_data_slug:void 0}}function Xr(e){if(e!==void 0)return e===null?null:{name:e.name,plural_name:e.pluralName,description:e.description,recipe:mm(e.recipe),url:e.url,properties:e.properties===void 0?void 0:e.properties===null?null:e.properties.map(nd),properties_food_amount:e.propertiesFoodAmount,properties_food_unit:Oi(e.propertiesFoodUnit),fdc_id:e.fdcId,food_onhand:e.foodOnhand,supermarket_category:vm(e.supermarketCategory),inherit_fields:e.inheritFields===void 0?void 0:e.inheritFields===null?null:e.inheritFields.map(qr),ignore_shopping:e.ignoreShopping,substitute:e.substitute===void 0?void 0:e.substitute===null?null:e.substitute.map(gm),substitute_siblings:e.substituteSiblings,substitute_children:e.substituteChildren,child_inherit_fields:e.childInheritFields===void 0?void 0:e.childInheritFields===null?null:e.childInheritFields.map(qr),open_data_slug:e.openDataSlug}}function cr(e){return pS(e)}function pS(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,food:Zr(e.food),unit:ki(e.unit),amount:e.amount,conversions:l(e,"conversions")?e.conversions:void 0,note:l(e,"note")?e.note:void 0,order:l(e,"order")?e.order:void 0,isHeader:l(e,"is_header")?e.is_header:void 0,noAmount:l(e,"no_amount")?e.no_amount:void 0,originalText:l(e,"original_text")?e.original_text:void 0,usedInRecipes:l(e,"used_in_recipes")?e.used_in_recipes:void 0,alwaysUsePluralUnit:l(e,"always_use_plural_unit")?e.always_use_plural_unit:void 0,alwaysUsePluralFood:l(e,"always_use_plural_food")?e.always_use_plural_food:void 0}}function Wo(e){if(e!==void 0)return e===null?null:{food:Xr(e.food),unit:Oi(e.unit),amount:e.amount,note:e.note,order:e.order,is_header:e.isHeader,no_amount:e.noAmount,original_text:e.originalText,always_use_plural_unit:e.alwaysUsePluralUnit,always_use_plural_food:e.alwaysUsePluralFood}}function wm(e){return fS(e)}function fS(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name}}function bm(e){if(e!==void 0)return e===null?null:{name:e.name}}function Li(e){return mS(e)}function mS(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,uuid:l(e,"uuid")?e.uuid:void 0,email:l(e,"email")?e.email:void 0,group:wm(e.group),validUntil:l(e,"valid_until")?new Date(e.valid_until):void 0,usedBy:l(e,"used_by")?e.used_by:void 0,reusable:l(e,"reusable")?e.reusable:void 0,internalNote:l(e,"internal_note")?e.internal_note:void 0,createdBy:l(e,"created_by")?e.created_by:void 0,createdAt:l(e,"created_at")?new Date(e.created_at):void 0}}function Yo(e){if(e!==void 0)return e===null?null:{email:e.email,group:bm(e.group),valid_until:e.validUntil===void 0?void 0:e.validUntil.toISOString().substring(0,10),used_by:e.usedBy,reusable:e.reusable,internal_note:e.internalNote}}function qn(e){return hS(e)}function hS(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,label:l(e,"label")?e.label:void 0,description:l(e,"description")?e.description:void 0,parent:l(e,"parent")?e.parent:void 0,numchild:l(e,"numchild")?e.numchild:void 0,createdAt:l(e,"created_at")?new Date(e.created_at):void 0,updatedAt:l(e,"updated_at")?new Date(e.updated_at):void 0,fullName:l(e,"full_name")?e.full_name:void 0}}function Ni(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description}}function gS(e){return yS(e)}function yS(e,t){return e==null?e:{count:l(e,"count")?e.count:void 0,next:l(e,"next")?e.next:void 0,previous:l(e,"previous")?e.previous:void 0,results:l(e,"results")?e.results.map(sr):void 0}}function vS(e){return wS(e)}function wS(e,t){return e==null?e:{count:l(e,"count")?e.count:void 0,next:l(e,"next")?e.next:void 0,previous:l(e,"previous")?e.previous:void 0,results:l(e,"results")?e.results.map(lr):void 0}}function bS(e){return _S(e)}function _S(e,t){return e==null?e:{count:l(e,"count")?e.count:void 0,next:l(e,"next")?e.next:void 0,previous:l(e,"previous")?e.previous:void 0,results:l(e,"results")?e.results.map(gn):void 0}}function SS(e){return RS(e)}function RS(e,t){return e==null?e:{count:l(e,"count")?e.count:void 0,next:l(e,"next")?e.next:void 0,previous:l(e,"previous")?e.previous:void 0,results:l(e,"results")?e.results.map(dr):void 0}}function CS(e){return TS(e)}function TS(e,t){return e==null?e:{count:l(e,"count")?e.count:void 0,next:l(e,"next")?e.next:void 0,previous:l(e,"previous")?e.previous:void 0,results:l(e,"results")?e.results.map(cr):void 0}}function kS(e){return OS(e)}function OS(e,t){return e==null?e:{count:l(e,"count")?e.count:void 0,next:l(e,"next")?e.next:void 0,previous:l(e,"previous")?e.previous:void 0,results:l(e,"results")?e.results.map(qn):void 0}}function _m(e){return IS(e)}function IS(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,label:l(e,"label")?e.label:void 0}}function PS(e){if(e!==void 0)return e===null?null:{}}function ES(e){return xS(e)}function xS(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,description:l(e,"description")?e.description:void 0,image:l(e,"image")?e.image:void 0,keywords:e.keywords.map(_m),workingTime:l(e,"working_time")?e.working_time:void 0,waitingTime:l(e,"waiting_time")?e.waiting_time:void 0,createdBy:l(e,"created_by")?e.created_by:void 0,createdAt:l(e,"created_at")?new Date(e.created_at):void 0,updatedAt:l(e,"updated_at")?new Date(e.updated_at):void 0,internal:l(e,"internal")?e.internal:void 0,servings:l(e,"servings")?e.servings:void 0,servingsText:l(e,"servings_text")?e.servings_text:void 0,rating:l(e,"rating")?e.rating:void 0,lastCooked:l(e,"last_cooked")?e.last_cooked===null?null:new Date(e.last_cooked):void 0,_new:l(e,"new")?e.new:void 0,recent:l(e,"recent")?e.recent:void 0}}function FS(e){return AS(e)}function AS(e,t){return e==null?e:{count:l(e,"count")?e.count:void 0,next:l(e,"next")?e.next:void 0,previous:l(e,"previous")?e.previous:void 0,results:l(e,"results")?e.results.map(ES):void 0}}function ht(e){return DS(e)}function DS(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,fileDownload:l(e,"file_download")?e.file_download:void 0,preview:l(e,"preview")?e.preview:void 0}}function gt(e){if(e!==void 0)return e===null?null:{name:e.name}}function Sm(e){return US(e)}function US(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,food:Zr(e.food),unit:ki(e.unit),amount:e.amount,conversions:l(e,"conversions")?e.conversions:void 0,note:l(e,"note")?e.note:void 0,order:l(e,"order")?e.order:void 0,isHeader:l(e,"is_header")?e.is_header:void 0,noAmount:l(e,"no_amount")?e.no_amount:void 0,originalText:l(e,"original_text")?e.original_text:void 0,usedInRecipes:l(e,"used_in_recipes")?e.used_in_recipes:void 0,alwaysUsePluralUnit:l(e,"always_use_plural_unit")?e.always_use_plural_unit:void 0,alwaysUsePluralFood:l(e,"always_use_plural_food")?e.always_use_plural_food:void 0}}function Rm(e){if(e!==void 0)return e===null?null:{food:Xr(e.food),unit:Oi(e.unit),amount:e.amount,note:e.note,order:e.order,is_header:e.isHeader,no_amount:e.noAmount,original_text:e.originalText,always_use_plural_unit:e.alwaysUsePluralUnit,always_use_plural_food:e.alwaysUsePluralFood}}function ur(e){return LS(e)}function LS(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:l(e,"name")?e.name:void 0,instruction:l(e,"instruction")?e.instruction:void 0,ingredients:e.ingredients.map(Sm),instructionsMarkdown:l(e,"instructions_markdown")?e.instructions_markdown:void 0,time:l(e,"time")?e.time:void 0,order:l(e,"order")?e.order:void 0,showAsHeader:l(e,"show_as_header")?e.show_as_header:void 0,file:l(e,"file")?ht(e.file):void 0,stepRecipe:l(e,"step_recipe")?e.step_recipe:void 0,stepRecipeData:l(e,"step_recipe_data")?e.step_recipe_data:void 0,numrecipe:l(e,"numrecipe")?e.numrecipe:void 0,showIngredientsTable:l(e,"show_ingredients_table")?e.show_ingredients_table:void 0}}function Zo(e){if(e!==void 0)return e===null?null:{name:e.name,instruction:e.instruction,ingredients:e.ingredients.map(Rm),time:e.time,order:e.order,show_as_header:e.showAsHeader,file:gt(e.file),step_recipe:e.stepRecipe,show_ingredients_table:e.showIngredientsTable}}function NS(e){return qS(e)}function qS(e,t){return e==null?e:{count:l(e,"count")?e.count:void 0,next:l(e,"next")?e.next:void 0,previous:l(e,"previous")?e.previous:void 0,results:l(e,"results")?e.results.map(ur):void 0}}function Cm(e){return $S(e)}function $S(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,description:l(e,"description")?e.description:void 0}}function BS(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description}}function pr(e){return VS(e)}function VS(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,category:Cm(e.category),supermarket:e.supermarket,order:l(e,"order")?e.order:void 0}}function Xo(e){if(e!==void 0)return e===null?null:{category:BS(e.category),supermarket:e.supermarket,order:e.order}}function MS(e){return JS(e)}function JS(e,t){return e==null?e:{count:l(e,"count")?e.count:void 0,next:l(e,"next")?e.next:void 0,previous:l(e,"previous")?e.previous:void 0,results:l(e,"results")?e.results.map(pr):void 0}}function Tm(e){return zS(e)}function zS(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,sync:e.sync,status:e.status,msg:l(e,"msg")?e.msg:void 0,createdAt:l(e,"created_at")?new Date(e.created_at):void 0}}function HS(e){return GS(e)}function GS(e,t){return e==null?e:{count:l(e,"count")?e.count:void 0,next:l(e,"next")?e.next:void 0,previous:l(e,"previous")?e.previous:void 0,results:l(e,"results")?e.results.map(Tm):void 0}}function ai(e){return KS(e)}function KS(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,pluralName:l(e,"plural_name")?e.plural_name:void 0,description:l(e,"description")?e.description:void 0,baseUnit:l(e,"base_unit")?e.base_unit:void 0,openDataSlug:l(e,"open_data_slug")?e.open_data_slug:void 0}}function pa(e){if(e!==void 0)return e===null?null:{name:e.name,plural_name:e.pluralName,description:e.description,base_unit:e.baseUnit,open_data_slug:e.openDataSlug}}function WS(e){return YS(e)}function YS(e,t){return e==null?e:{count:l(e,"count")?e.count:void 0,next:l(e,"next")?e.next:void 0,previous:l(e,"previous")?e.previous:void 0,results:l(e,"results")?e.results.map(ai):void 0}}function Zs(e){return ZS(e)}function ZS(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,user:l(e,"user")?mo(e.user):void 0,space:l(e,"space")?e.space:void 0,groups:e.groups.map(wm),active:l(e,"active")?e.active:void 0,internalNote:l(e,"internal_note")?e.internal_note:void 0,inviteLink:l(e,"invite_link")?e.invite_link:void 0,createdAt:l(e,"created_at")?new Date(e.created_at):void 0,updatedAt:l(e,"updated_at")?new Date(e.updated_at):void 0}}function XS(e){if(e!==void 0)return e===null?null:{user:ho(e.user),groups:e.groups.map(bm),active:e.active,internal_note:e.internalNote}}function QS(e){return jS(e)}function jS(e,t){return e==null?e:{count:l(e,"count")?e.count:void 0,next:l(e,"next")?e.next:void 0,previous:l(e,"previous")?e.previous:void 0,results:l(e,"results")?e.results.map(Zs):void 0}}function fr(e){return eR(e)}function eR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,recipe:e.recipe,createdBy:l(e,"created_by")?e.created_by:void 0,createdAt:l(e,"created_at")?new Date(e.created_at):void 0}}function Qo(e){if(e!==void 0)return e===null?null:{recipe:e.recipe}}function tR(e){return nR(e)}function nR(e,t){return e==null?e:{count:l(e,"count")?e.count:void 0,next:l(e,"next")?e.next:void 0,previous:l(e,"previous")?e.previous:void 0,results:l(e,"results")?e.results.map(fr):void 0}}function iR(e){return rR(e)}function rR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,order:l(e,"order")?e.order:void 0,color:l(e,"color")?e.color:void 0,_default:l(e,"default")?e.default:void 0,createdBy:l(e,"created_by")?e.created_by:void 0}}function aR(e){if(e!==void 0)return e===null?null:{name:e.name,order:e.order,color:e.color,default:e._default}}function oR(e){return sR(e)}function sR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,description:l(e,"description")?e.description:void 0,image:l(e,"image")?e.image:void 0,keywords:e.keywords.map(_m),workingTime:l(e,"working_time")?e.working_time:void 0,waitingTime:l(e,"waiting_time")?e.waiting_time:void 0,createdBy:l(e,"created_by")?e.created_by:void 0,createdAt:l(e,"created_at")?new Date(e.created_at):void 0,updatedAt:l(e,"updated_at")?new Date(e.updated_at):void 0,internal:l(e,"internal")?e.internal:void 0,servings:l(e,"servings")?e.servings:void 0,servingsText:l(e,"servings_text")?e.servings_text:void 0,rating:l(e,"rating")?e.rating:void 0,lastCooked:l(e,"last_cooked")?e.last_cooked===null?null:new Date(e.last_cooked):void 0,_new:l(e,"new")?e.new:void 0,recent:l(e,"recent")?e.recent:void 0}}function lR(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description,keywords:e.keywords.map(PS),working_time:e.workingTime,waiting_time:e.waitingTime,internal:e.internal,servings:e.servings,servings_text:e.servingsText,rating:e.rating,last_cooked:e.lastCooked===void 0?void 0:e.lastCooked===null?null:e.lastCooked.toISOString()}}function qi(e){return dR(e)}function dR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,title:l(e,"title")?e.title:void 0,recipe:l(e,"recipe")?oR(e.recipe):void 0,servings:e.servings,note:l(e,"note")?e.note:void 0,noteMarkdown:l(e,"note_markdown")?e.note_markdown:void 0,fromDate:new Date(e.from_date),toDate:l(e,"to_date")?new Date(e.to_date):void 0,mealType:iR(e.meal_type),createdBy:l(e,"created_by")?e.created_by:void 0,shared:l(e,"shared")?e.shared===null?null:e.shared.map(On):void 0,recipeName:l(e,"recipe_name")?e.recipe_name:void 0,mealTypeName:l(e,"meal_type_name")?e.meal_type_name:void 0,shopping:l(e,"shopping")?e.shopping:void 0}}function jo(e){if(e!==void 0)return e===null?null:{title:e.title,recipe:lR(e.recipe),servings:e.servings,note:e.note,from_date:e.fromDate.toISOString().substring(0,10),to_date:e.toDate===void 0?void 0:e.toDate.toISOString().substring(0,10),meal_type:aR(e.mealType),shared:e.shared===void 0?void 0:e.shared===null?null:e.shared.map(In)}}function $i(e){return cR(e)}function cR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,order:l(e,"order")?e.order:void 0,color:l(e,"color")?e.color:void 0,_default:l(e,"default")?e.default:void 0,createdBy:l(e,"created_by")?e.created_by:void 0}}function es(e){if(e!==void 0)return e===null?null:{name:e.name,order:e.order,color:e.color,default:e._default}}function Bt(e){return uR(e)}function uR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,code:e.code,comment:l(e,"comment")?e.comment:void 0}}function Vt(e){if(e!==void 0)return e===null?null:{name:e.name,code:e.code,comment:e.comment}}function Bi(e){return pR(e)}function pR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,version:Bt(e.version),slug:e.slug,name:e.name,description:l(e,"description")?e.description:void 0,comment:l(e,"comment")?e.comment:void 0,createdBy:l(e,"created_by")?e.created_by:void 0}}function ts(e){if(e!==void 0)return e===null?null:{version:Vt(e.version),slug:e.slug,name:e.name,description:e.description,comment:e.comment}}function Sn(e){return fR(e)}function fR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,version:Bt(e.version),slug:e.slug,name:e.name,pluralName:l(e,"plural_name")?e.plural_name:void 0,baseUnit:l(e,"base_unit")?e.base_unit:void 0,type:e.type,comment:l(e,"comment")?e.comment:void 0,createdBy:l(e,"created_by")?e.created_by:void 0}}function Rn(e){if(e!==void 0)return e===null?null:{version:Vt(e.version),slug:e.slug,name:e.name,plural_name:e.pluralName,base_unit:e.baseUnit,type:e.type,comment:e.comment}}function Ma(e){return mR(e)}function mR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,version:Bt(e.version),slug:e.slug,name:e.name,pluralName:l(e,"plural_name")?e.plural_name:void 0,baseUnit:l(e,"base_unit")?e.base_unit:void 0,type:e.type,comment:l(e,"comment")?e.comment:void 0,createdBy:l(e,"created_by")?e.created_by:void 0}}function Ja(e){if(e!==void 0)return e===null?null:{version:Vt(e.version),slug:e.slug,name:e.name,plural_name:e.pluralName,base_unit:e.baseUnit,type:e.type,comment:e.comment}}function hR(e){return gR(e)}function gR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,version:Bt(e.version),slug:e.slug,name:e.name,unit:l(e,"unit")?e.unit:void 0,fdcId:l(e,"fdc_id")?e.fdc_id:void 0,comment:l(e,"comment")?e.comment:void 0,createdBy:l(e,"created_by")?e.created_by:void 0}}function yR(e){if(e!==void 0)return e===null?null:{version:Vt(e.version),slug:e.slug,name:e.name,unit:e.unit,fdc_id:e.fdcId,comment:e.comment}}function km(e){return vR(e)}function vR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,property:hR(e.property),propertyAmount:e.property_amount}}function Om(e){if(e!==void 0)return e===null?null:{property:yR(e.property),property_amount:e.propertyAmount}}function id(e){return wR(e)}function wR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,version:Bt(e.version),slug:e.slug,name:e.name,description:l(e,"description")?e.description:void 0,comment:l(e,"comment")?e.comment:void 0,createdBy:l(e,"created_by")?e.created_by:void 0}}function rd(e){if(e!==void 0)return e===null?null:{version:Vt(e.version),slug:e.slug,name:e.name,description:e.description,comment:e.comment}}function bR(e){return _R(e)}function _R(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,version:Bt(e.version),slug:e.slug,name:e.name,pluralName:e.plural_name,storeCategory:id(e.store_category),preferredUnitMetric:l(e,"preferred_unit_metric")?Sn(e.preferred_unit_metric):void 0,preferredShoppingUnitMetric:l(e,"preferred_shopping_unit_metric")?Sn(e.preferred_shopping_unit_metric):void 0,preferredUnitImperial:l(e,"preferred_unit_imperial")?Sn(e.preferred_unit_imperial):void 0,preferredShoppingUnitImperial:l(e,"preferred_shopping_unit_imperial")?Sn(e.preferred_shopping_unit_imperial):void 0,properties:e.properties===null?null:e.properties.map(km),propertiesFoodAmount:l(e,"properties_food_amount")?e.properties_food_amount:void 0,propertiesFoodUnit:Ma(e.properties_food_unit),propertiesSource:l(e,"properties_source")?e.properties_source:void 0,fdcId:e.fdc_id,comment:l(e,"comment")?e.comment:void 0,createdBy:l(e,"created_by")?e.created_by:void 0}}function SR(e){if(e!==void 0)return e===null?null:{version:Vt(e.version),slug:e.slug,name:e.name,plural_name:e.pluralName,store_category:rd(e.storeCategory),preferred_unit_metric:Rn(e.preferredUnitMetric),preferred_shopping_unit_metric:Rn(e.preferredShoppingUnitMetric),preferred_unit_imperial:Rn(e.preferredUnitImperial),preferred_shopping_unit_imperial:Rn(e.preferredShoppingUnitImperial),properties:e.properties===null?null:e.properties.map(Om),properties_food_amount:e.propertiesFoodAmount,properties_food_unit:Ja(e.propertiesFoodUnit),properties_source:e.propertiesSource,fdc_id:e.fdcId,comment:e.comment}}function Vi(e){return RR(e)}function RR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,version:Bt(e.version),slug:e.slug,food:bR(e.food),baseAmount:e.base_amount,baseUnit:Ma(e.base_unit),convertedAmount:e.converted_amount,convertedUnit:Ma(e.converted_unit),source:e.source,comment:l(e,"comment")?e.comment:void 0,createdBy:l(e,"created_by")?e.created_by:void 0}}function ns(e){if(e!==void 0)return e===null?null:{version:Vt(e.version),slug:e.slug,food:SR(e.food),base_amount:e.baseAmount,base_unit:Ja(e.baseUnit),converted_amount:e.convertedAmount,converted_unit:Ja(e.convertedUnit),source:e.source,comment:e.comment}}function Mi(e){return CR(e)}function CR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,version:Bt(e.version),slug:e.slug,name:e.name,pluralName:e.plural_name,storeCategory:id(e.store_category),preferredUnitMetric:l(e,"preferred_unit_metric")?Sn(e.preferred_unit_metric):void 0,preferredShoppingUnitMetric:l(e,"preferred_shopping_unit_metric")?Sn(e.preferred_shopping_unit_metric):void 0,preferredUnitImperial:l(e,"preferred_unit_imperial")?Sn(e.preferred_unit_imperial):void 0,preferredShoppingUnitImperial:l(e,"preferred_shopping_unit_imperial")?Sn(e.preferred_shopping_unit_imperial):void 0,properties:e.properties===null?null:e.properties.map(km),propertiesFoodAmount:l(e,"properties_food_amount")?e.properties_food_amount:void 0,propertiesFoodUnit:Ma(e.properties_food_unit),propertiesSource:l(e,"properties_source")?e.properties_source:void 0,fdcId:e.fdc_id,comment:l(e,"comment")?e.comment:void 0,createdBy:l(e,"created_by")?e.created_by:void 0}}function is(e){if(e!==void 0)return e===null?null:{version:Vt(e.version),slug:e.slug,name:e.name,plural_name:e.pluralName,store_category:rd(e.storeCategory),preferred_unit_metric:Rn(e.preferredUnitMetric),preferred_shopping_unit_metric:Rn(e.preferredShoppingUnitMetric),preferred_unit_imperial:Rn(e.preferredUnitImperial),preferred_shopping_unit_imperial:Rn(e.preferredShoppingUnitImperial),properties:e.properties===null?null:e.properties.map(Om),properties_food_amount:e.propertiesFoodAmount,properties_food_unit:Ja(e.propertiesFoodUnit),properties_source:e.propertiesSource,fdc_id:e.fdcId,comment:e.comment}}function Ji(e){return TR(e)}function TR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,version:Bt(e.version),slug:e.slug,name:e.name,unit:l(e,"unit")?e.unit:void 0,fdcId:l(e,"fdc_id")?e.fdc_id:void 0,comment:l(e,"comment")?e.comment:void 0,createdBy:l(e,"created_by")?e.created_by:void 0}}function rs(e){if(e!==void 0)return e===null?null:{version:Vt(e.version),slug:e.slug,name:e.name,unit:e.unit,fdc_id:e.fdcId,comment:e.comment}}function kR(e){return OR(e)}function OR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,category:id(e.category),store:e.store,order:l(e,"order")?e.order:void 0}}function IR(e){if(e!==void 0)return e===null?null:{category:rd(e.category),store:e.store,order:e.order}}function zi(e){return PR(e)}function PR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,version:Bt(e.version),slug:e.slug,name:e.name,categoryToStore:e.category_to_store===null?null:e.category_to_store.map(kR),comment:l(e,"comment")?e.comment:void 0,createdBy:l(e,"created_by")?e.created_by:void 0}}function as(e){if(e!==void 0)return e===null?null:{version:Vt(e.version),slug:e.slug,name:e.name,category_to_store:e.categoryToStore===null?null:e.categoryToStore.map(IR),comment:e.comment}}function Hi(e){return ER(e)}function ER(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,version:Bt(e.version),slug:e.slug,name:e.name,pluralName:l(e,"plural_name")?e.plural_name:void 0,baseUnit:l(e,"base_unit")?e.base_unit:void 0,type:e.type,comment:l(e,"comment")?e.comment:void 0,createdBy:l(e,"created_by")?e.created_by:void 0}}function os(e){if(e!==void 0)return e===null?null:{version:Vt(e.version),slug:e.slug,name:e.name,plural_name:e.pluralName,base_unit:e.baseUnit,type:e.type,comment:e.comment}}function Gi(e){return xR(e)}function xR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,code:e.code,comment:l(e,"comment")?e.comment:void 0}}function ss(e){if(e!==void 0)return e===null?null:{name:e.name,code:e.code,comment:e.comment}}function Ki(e){return FR(e)}function FR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,propertyAmount:e.property_amount,propertyType:um(e.property_type)}}function ls(e){if(e!==void 0)return e===null?null:{property_amount:e.propertyAmount,property_type:pm(e.propertyType)}}function Wi(e){return AR(e)}function AR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,unit:l(e,"unit")?e.unit:void 0,description:l(e,"description")?e.description:void 0,order:l(e,"order")?e.order:void 0,openDataSlug:l(e,"open_data_slug")?e.open_data_slug:void 0,fdcId:l(e,"fdc_id")?e.fdc_id:void 0}}function ds(e){if(e!==void 0)return e===null?null:{id:e.id,name:e.name,unit:e.unit,description:e.description,order:e.order,open_data_slug:e.openDataSlug,fdc_id:e.fdcId}}function DR(e){return UR(e)}function UR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,label:l(e,"label")?e.label:void 0,description:l(e,"description")?e.description:void 0,parent:l(e,"parent")?e.parent:void 0,numchild:l(e,"numchild")?e.numchild:void 0,createdAt:l(e,"created_at")?new Date(e.created_at):void 0,updatedAt:l(e,"updated_at")?new Date(e.updated_at):void 0,fullName:l(e,"full_name")?e.full_name:void 0}}function LR(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description}}function NR(e){return qR(e)}function qR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,carbohydrates:e.carbohydrates,fats:e.fats,proteins:e.proteins,calories:e.calories,source:l(e,"source")?e.source:void 0}}function $R(e){if(e!==void 0)return e===null?null:{carbohydrates:e.carbohydrates,fats:e.fats,proteins:e.proteins,calories:e.calories,source:e.source}}function BR(e){return VR(e)}function VR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:l(e,"name")?e.name:void 0,instruction:l(e,"instruction")?e.instruction:void 0,ingredients:e.ingredients.map(Sm),instructionsMarkdown:l(e,"instructions_markdown")?e.instructions_markdown:void 0,time:l(e,"time")?e.time:void 0,order:l(e,"order")?e.order:void 0,showAsHeader:l(e,"show_as_header")?e.show_as_header:void 0,file:l(e,"file")?ht(e.file):void 0,stepRecipe:l(e,"step_recipe")?e.step_recipe:void 0,stepRecipeData:l(e,"step_recipe_data")?e.step_recipe_data:void 0,numrecipe:l(e,"numrecipe")?e.numrecipe:void 0,showIngredientsTable:l(e,"show_ingredients_table")?e.show_ingredients_table:void 0}}function MR(e){if(e!==void 0)return e===null?null:{name:e.name,instruction:e.instruction,ingredients:e.ingredients.map(Rm),time:e.time,order:e.order,show_as_header:e.showAsHeader,file:gt(e.file),step_recipe:e.stepRecipe,show_ingredients_table:e.showIngredientsTable}}function Yi(e){return JR(e)}function JR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,description:l(e,"description")?e.description:void 0,image:l(e,"image")?e.image:void 0,keywords:e.keywords.map(DR),steps:e.steps.map(BR),workingTime:l(e,"working_time")?e.working_time:void 0,waitingTime:l(e,"waiting_time")?e.waiting_time:void 0,createdBy:l(e,"created_by")?e.created_by:void 0,createdAt:l(e,"created_at")?new Date(e.created_at):void 0,updatedAt:l(e,"updated_at")?new Date(e.updated_at):void 0,sourceUrl:l(e,"source_url")?e.source_url:void 0,internal:l(e,"internal")?e.internal:void 0,showIngredientOverview:l(e,"show_ingredient_overview")?e.show_ingredient_overview:void 0,nutrition:l(e,"nutrition")?NR(e.nutrition):void 0,properties:l(e,"properties")?e.properties.map(td):void 0,foodProperties:l(e,"food_properties")?e.food_properties:void 0,servings:l(e,"servings")?e.servings:void 0,filePath:l(e,"file_path")?e.file_path:void 0,servingsText:l(e,"servings_text")?e.servings_text:void 0,rating:l(e,"rating")?e.rating:void 0,lastCooked:l(e,"last_cooked")?e.last_cooked===null?null:new Date(e.last_cooked):void 0,_private:l(e,"private")?e.private:void 0,shared:l(e,"shared")?e.shared.map(On):void 0}}function cs(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description,keywords:e.keywords.map(LR),steps:e.steps.map(MR),working_time:e.workingTime,waiting_time:e.waitingTime,source_url:e.sourceUrl,internal:e.internal,show_ingredient_overview:e.showIngredientOverview,nutrition:$R(e.nutrition),properties:e.properties===void 0?void 0:e.properties.map(nd),servings:e.servings,file_path:e.filePath,servings_text:e.servingsText,private:e._private,shared:e.shared===void 0?void 0:e.shared.map(In)}}function zR(e){return HR(e)}function HR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,search:e.search,shared:l(e,"shared")?e.shared.map(On):void 0,createdBy:l(e,"created_by")?e.created_by:void 0}}function GR(e){if(e!==void 0)return e===null?null:{name:e.name,search:e.search,shared:e.shared===void 0?void 0:e.shared.map(In)}}function Zi(e){return KR(e)}function KR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,description:l(e,"description")?e.description:void 0,shared:e.shared.map(On),createdBy:l(e,"created_by")?e.created_by:void 0,filter:l(e,"filter")?zR(e.filter):void 0,order:l(e,"order")?e.order:void 0}}function us(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description,shared:e.shared.map(In),filter:GR(e.filter),order:e.order}}function Xi(e){return WR(e)}function WR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,book:e.book,bookContent:l(e,"book_content")?e.book_content:void 0,recipe:e.recipe,recipeContent:l(e,"recipe_content")?e.recipe_content:void 0}}function ps(e){if(e!==void 0)return e===null?null:{book:e.book,recipe:e.recipe}}function YR(e){return ZR(e)}function ZR(e,t){return e==null?e:{image:l(e,"image")?e.image:void 0,imageUrl:l(e,"image_url")?e.image_url:void 0}}function XR(e){return QR(e)}function QR(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,listRecipe:l(e,"list_recipe")?e.list_recipe:void 0,ingredients:l(e,"ingredients")?e.ingredients:void 0,servings:l(e,"servings")?e.servings:void 0}}function jR(e){if(e!==void 0)return e===null?null:{list_recipe:e.listRecipe,ingredients:e.ingredients,servings:e.servings}}function eC(e){return tC(e)}function tC(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,url:l(e,"url")?e.url:void 0}}function Im(e){return nC(e)}function nC(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,recipeName:l(e,"recipe_name")?e.recipe_name:void 0,name:l(e,"name")?e.name:void 0,recipe:l(e,"recipe")?e.recipe:void 0,mealplan:l(e,"mealplan")?e.mealplan:void 0,servings:e.servings,mealplanNote:l(e,"mealplan_note")?e.mealplan_note:void 0,mealplanFromDate:l(e,"mealplan_from_date")?e.mealplan_from_date:void 0,mealplanType:l(e,"mealplan_type")?e.mealplan_type:void 0}}function Pm(e){if(e!==void 0)return e===null?null:{recipe:e.recipe,mealplan:e.mealplan,servings:e.servings}}function iC(e){return rC(e)}function rC(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,listRecipe:l(e,"list_recipe")?e.list_recipe:void 0,food:Zr(e.food),unit:l(e,"unit")?ki(e.unit):void 0,amount:e.amount,order:l(e,"order")?e.order:void 0,checked:l(e,"checked")?e.checked:void 0,recipeMealplan:l(e,"recipe_mealplan")?Im(e.recipe_mealplan):void 0,createdBy:l(e,"created_by")?mo(e.created_by):void 0,createdAt:l(e,"created_at")?new Date(e.created_at):void 0,updatedAt:l(e,"updated_at")?new Date(e.updated_at):void 0,completedAt:l(e,"completed_at")?e.completed_at===null?null:new Date(e.completed_at):void 0,delayUntil:l(e,"delay_until")?e.delay_until===null?null:new Date(e.delay_until):void 0}}function aC(e){if(e!==void 0)return e===null?null:{list_recipe:e.listRecipe,food:Xr(e.food),unit:Oi(e.unit),amount:e.amount,order:e.order,checked:e.checked,recipe_mealplan:Pm(e.recipeMealplan),created_by:ho(e.createdBy),completed_at:e.completedAt===void 0?void 0:e.completedAt===null?null:e.completedAt.toISOString(),delay_until:e.delayUntil===void 0?void 0:e.delayUntil===null?null:e.delayUntil.toISOString()}}function oC(e){return sC(e)}function sC(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,recipeName:l(e,"recipe_name")?e.recipe_name:void 0,name:l(e,"name")?e.name:void 0,recipe:l(e,"recipe")?e.recipe:void 0,mealplan:l(e,"mealplan")?e.mealplan:void 0,servings:e.servings,mealplanNote:l(e,"mealplan_note")?e.mealplan_note:void 0,mealplanFromDate:l(e,"mealplan_from_date")?e.mealplan_from_date:void 0,mealplanType:l(e,"mealplan_type")?e.mealplan_type:void 0}}function lC(e){if(e!==void 0)return e===null?null:{recipe:e.recipe,mealplan:e.mealplan,servings:e.servings}}function Em(e){return dC(e)}function dC(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,category:Cm(e.category),supermarket:e.supermarket,order:l(e,"order")?e.order:void 0}}function cC(e){return uC(e)}function uC(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,description:l(e,"description")?e.description:void 0,categoryToSupermarket:l(e,"category_to_supermarket")?e.category_to_supermarket.map(Em):void 0,openDataSlug:l(e,"open_data_slug")?e.open_data_slug:void 0}}function pC(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description,open_data_slug:e.openDataSlug}}function Qi(e){return fC(e)}function fC(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,uuid:l(e,"uuid")?e.uuid:void 0,note:l(e,"note")?e.note:void 0,recipes:e.recipes===null?null:e.recipes.map(oC),entries:e.entries===null?null:e.entries.map(iC),shared:e.shared.map(On),finished:l(e,"finished")?e.finished:void 0,supermarket:cC(e.supermarket),createdBy:l(e,"created_by")?e.created_by:void 0,createdAt:l(e,"created_at")?new Date(e.created_at):void 0}}function fs(e){if(e!==void 0)return e===null?null:{uuid:e.uuid,note:e.note,recipes:e.recipes===null?null:e.recipes.map(lC),entries:e.entries===null?null:e.entries.map(aC),shared:e.shared.map(In),finished:e.finished,supermarket:pC(e.supermarket)}}function ji(e){return mC(e)}function mC(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,listRecipe:l(e,"list_recipe")?e.list_recipe:void 0,food:Zr(e.food),unit:l(e,"unit")?ki(e.unit):void 0,amount:e.amount,order:l(e,"order")?e.order:void 0,checked:l(e,"checked")?e.checked:void 0,recipeMealplan:l(e,"recipe_mealplan")?Im(e.recipe_mealplan):void 0,createdBy:l(e,"created_by")?mo(e.created_by):void 0,createdAt:l(e,"created_at")?new Date(e.created_at):void 0,updatedAt:l(e,"updated_at")?new Date(e.updated_at):void 0,completedAt:l(e,"completed_at")?e.completed_at===null?null:new Date(e.completed_at):void 0,delayUntil:l(e,"delay_until")?e.delay_until===null?null:new Date(e.delay_until):void 0}}function ms(e){if(e!==void 0)return e===null?null:{list_recipe:e.listRecipe,food:Xr(e.food),unit:Oi(e.unit),amount:e.amount,order:e.order,checked:e.checked,recipe_mealplan:Pm(e.recipeMealplan),created_by:ho(e.createdBy),completed_at:e.completedAt===void 0?void 0:e.completedAt===null?null:e.completedAt.toISOString(),delay_until:e.delayUntil===void 0?void 0:e.delayUntil===null?null:e.delayUntil.toISOString()}}function hC(e){return gC(e)}function gC(e,t){return e==null?e:{ids:e.ids,checked:e.checked}}function yC(e){if(e!==void 0)return e===null?null:{ids:e.ids,checked:e.checked}}function er(e){return vC(e)}function vC(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,recipeName:l(e,"recipe_name")?e.recipe_name:void 0,name:l(e,"name")?e.name:void 0,recipe:l(e,"recipe")?e.recipe:void 0,mealplan:l(e,"mealplan")?e.mealplan:void 0,servings:e.servings,mealplanNote:l(e,"mealplan_note")?e.mealplan_note:void 0,mealplanFromDate:l(e,"mealplan_from_date")?e.mealplan_from_date:void 0,mealplanType:l(e,"mealplan_type")?e.mealplan_type:void 0}}function hs(e){if(e!==void 0)return e===null?null:{recipe:e.recipe,mealplan:e.mealplan,servings:e.servings}}function gs(e){return wC(e)}function wC(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:l(e,"name")?e.name:void 0,createdBy:l(e,"created_by")?e.created_by:void 0,createdAt:l(e,"created_at")?new Date(e.created_at):void 0,message:l(e,"message")?e.message:void 0,maxRecipes:l(e,"max_recipes")?e.max_recipes:void 0,maxFileStorageMb:l(e,"max_file_storage_mb")?e.max_file_storage_mb:void 0,maxUsers:l(e,"max_users")?e.max_users:void 0,allowSharing:l(e,"allow_sharing")?e.allow_sharing:void 0,demo:l(e,"demo")?e.demo:void 0,foodInherit:e.food_inherit.map(Nr),userCount:l(e,"user_count")?e.user_count:void 0,recipeCount:l(e,"recipe_count")?e.recipe_count:void 0,fileSizeMb:l(e,"file_size_mb")?e.file_size_mb:void 0,image:l(e,"image")?ht(e.image):void 0,navLogo:l(e,"nav_logo")?ht(e.nav_logo):void 0,spaceTheme:l(e,"space_theme")?e.space_theme:void 0,customSpaceTheme:l(e,"custom_space_theme")?ht(e.custom_space_theme):void 0,navBgColor:l(e,"nav_bg_color")?e.nav_bg_color:void 0,navTextColor:l(e,"nav_text_color")?e.nav_text_color:void 0,logoColor32:l(e,"logo_color_32")?ht(e.logo_color_32):void 0,logoColor128:l(e,"logo_color_128")?ht(e.logo_color_128):void 0,logoColor144:l(e,"logo_color_144")?ht(e.logo_color_144):void 0,logoColor180:l(e,"logo_color_180")?ht(e.logo_color_180):void 0,logoColor192:l(e,"logo_color_192")?ht(e.logo_color_192):void 0,logoColor512:l(e,"logo_color_512")?ht(e.logo_color_512):void 0,logoColorSvg:l(e,"logo_color_svg")?ht(e.logo_color_svg):void 0}}function bC(e){if(e!==void 0)return e===null?null:{name:e.name,message:e.message,food_inherit:e.foodInherit.map(qr),image:gt(e.image),nav_logo:gt(e.navLogo),space_theme:e.spaceTheme,custom_space_theme:gt(e.customSpaceTheme),nav_bg_color:e.navBgColor,nav_text_color:e.navTextColor,logo_color_32:gt(e.logoColor32),logo_color_128:gt(e.logoColor128),logo_color_144:gt(e.logoColor144),logo_color_180:gt(e.logoColor180),logo_color_192:gt(e.logoColor192),logo_color_512:gt(e.logoColor512),logo_color_svg:gt(e.logoColorSvg)}}function tr(e){return _C(e)}function _C(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,method:l(e,"method")?e.method:void 0,username:l(e,"username")?e.username:void 0,password:l(e,"password")?e.password:void 0,token:l(e,"token")?e.token:void 0,createdBy:l(e,"created_by")?e.created_by:void 0}}function ys(e){if(e!==void 0)return e===null?null:{name:e.name,method:e.method,username:e.username,password:e.password,token:e.token}}function nr(e){return SC(e)}function SC(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,description:l(e,"description")?e.description:void 0,categoryToSupermarket:l(e,"category_to_supermarket")?e.category_to_supermarket.map(Em):void 0,openDataSlug:l(e,"open_data_slug")?e.open_data_slug:void 0}}function vs(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description,open_data_slug:e.openDataSlug}}function ii(e){return RC(e)}function RC(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,description:l(e,"description")?e.description:void 0}}function fa(e){if(e!==void 0)return e===null?null:{name:e.name,description:e.description}}function ir(e){return CC(e)}function CC(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,storage:e.storage,path:l(e,"path")?e.path:void 0,active:l(e,"active")?e.active:void 0,lastChecked:l(e,"last_checked")?e.last_checked===null?null:new Date(e.last_checked):void 0,createdAt:l(e,"created_at")?new Date(e.created_at):void 0,updatedAt:l(e,"updated_at")?new Date(e.updated_at):void 0}}function ws(e){if(e!==void 0)return e===null?null:{storage:e.storage,path:e.path,active:e.active,last_checked:e.lastChecked===void 0?void 0:e.lastChecked===null?null:e.lastChecked.toISOString()}}function pu(e){return TC(e)}function TC(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,pluralName:l(e,"plural_name")?e.plural_name:void 0,description:l(e,"description")?e.description:void 0,baseUnit:l(e,"base_unit")?e.base_unit:void 0,openDataSlug:l(e,"open_data_slug")?e.open_data_slug:void 0}}function fu(e){if(e!==void 0)return e===null?null:{name:e.name,plural_name:e.pluralName,description:e.description,base_unit:e.baseUnit,open_data_slug:e.openDataSlug}}function rr(e){return kC(e)}function kC(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:l(e,"name")?e.name:void 0,baseAmount:e.base_amount,baseUnit:pu(e.base_unit),convertedAmount:e.converted_amount,convertedUnit:pu(e.converted_unit),food:l(e,"food")?Zr(e.food):void 0,openDataSlug:l(e,"open_data_slug")?e.open_data_slug:void 0}}function bs(e){if(e!==void 0)return e===null?null:{base_amount:e.baseAmount,base_unit:fu(e.baseUnit),converted_amount:e.convertedAmount,converted_unit:fu(e.convertedUnit),food:Xr(e.food),open_data_slug:e.openDataSlug}}function _s(e){return OC(e)}function OC(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,username:l(e,"username")?e.username:void 0,firstName:l(e,"first_name")?e.first_name:void 0,lastName:l(e,"last_name")?e.last_name:void 0,displayName:l(e,"display_name")?e.display_name:void 0}}function IC(e){if(e!==void 0)return e===null?null:{first_name:e.firstName,last_name:e.lastName}}function ar(e){return PC(e)}function PC(e,t){return e==null?e:{id:l(e,"id")?e.id:void 0,name:e.name,file:e.file,fileDownload:l(e,"file_download")?e.file_download:void 0,preview:l(e,"preview")?e.preview:void 0,fileSizeKb:l(e,"file_size_kb")?e.file_size_kb:void 0}}function Ss(e){return EC(e)}function EC(e,t){return e==null?e:{user:e.user,image:l(e,"image")?ht(e.image):void 0,theme:l(e,"theme")?e.theme:void 0,navBgColor:l(e,"nav_bg_color")?e.nav_bg_color:void 0,navTextColor:l(e,"nav_text_color")?e.nav_text_color:void 0,navShowLogo:l(e,"nav_show_logo")?e.nav_show_logo:void 0,defaultUnit:l(e,"default_unit")?e.default_unit:void 0,defaultPage:l(e,"default_page")?e.default_page:void 0,useFractions:l(e,"use_fractions")?e.use_fractions:void 0,useKj:l(e,"use_kj")?e.use_kj:void 0,planShare:l(e,"plan_share")?e.plan_share===null?null:e.plan_share.map(On):void 0,navSticky:l(e,"nav_sticky")?e.nav_sticky:void 0,ingredientDecimals:l(e,"ingredient_decimals")?e.ingredient_decimals:void 0,comments:l(e,"comments")?e.comments:void 0,shoppingAutoSync:l(e,"shopping_auto_sync")?e.shopping_auto_sync:void 0,mealplanAutoaddShopping:l(e,"mealplan_autoadd_shopping")?e.mealplan_autoadd_shopping:void 0,foodInheritDefault:l(e,"food_inherit_default")?e.food_inherit_default:void 0,defaultDelay:l(e,"default_delay")?e.default_delay:void 0,mealplanAutoincludeRelated:l(e,"mealplan_autoinclude_related")?e.mealplan_autoinclude_related:void 0,mealplanAutoexcludeOnhand:l(e,"mealplan_autoexclude_onhand")?e.mealplan_autoexclude_onhand:void 0,shoppingShare:l(e,"shopping_share")?e.shopping_share===null?null:e.shopping_share.map(On):void 0,shoppingRecentDays:l(e,"shopping_recent_days")?e.shopping_recent_days:void 0,csvDelim:l(e,"csv_delim")?e.csv_delim:void 0,csvPrefix:l(e,"csv_prefix")?e.csv_prefix:void 0,filterToSupermarket:l(e,"filter_to_supermarket")?e.filter_to_supermarket:void 0,shoppingAddOnhand:l(e,"shopping_add_onhand")?e.shopping_add_onhand:void 0,leftHanded:l(e,"left_handed")?e.left_handed:void 0,showStepIngredients:l(e,"show_step_ingredients")?e.show_step_ingredients:void 0,foodChildrenExist:l(e,"food_children_exist")?e.food_children_exist:void 0}}function xC(e){if(e!==void 0)return e===null?null:{user:e.user,image:gt(e.image),theme:e.theme,nav_bg_color:e.navBgColor,nav_text_color:e.navTextColor,nav_show_logo:e.navShowLogo,default_unit:e.defaultUnit,default_page:e.defaultPage,use_fractions:e.useFractions,use_kj:e.useKj,plan_share:e.planShare===void 0?void 0:e.planShare===null?null:e.planShare.map(In),nav_sticky:e.navSticky,ingredient_decimals:e.ingredientDecimals,comments:e.comments,shopping_auto_sync:e.shoppingAutoSync,mealplan_autoadd_shopping:e.mealplanAutoaddShopping,default_delay:e.defaultDelay,mealplan_autoinclude_related:e.mealplanAutoincludeRelated,mealplan_autoexclude_onhand:e.mealplanAutoexcludeOnhand,shopping_share:e.shoppingShare===void 0?void 0:e.shoppingShare===null?null:e.shoppingShare.map(In),shopping_recent_days:e.shoppingRecentDays,csv_delim:e.csvDelim,csv_prefix:e.csvPrefix,filter_to_supermarket:e.filterToSupermarket,shopping_add_onhand:e.shoppingAddOnhand,left_handed:e.leftHanded,show_step_ingredients:e.showStepIngredients}}class xm extends Ys{async bulkShoppingListEntryRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/shopping-list-entry/bulk/",method:"POST",headers:r,query:i,body:yC(t.shoppingListEntryBulk)},n);return new w(a,o=>hC(o))}async bulkShoppingListEntry(t={},n){return await(await this.bulkShoppingListEntryRaw(t,n)).value()}async createAccessTokenRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/access-token/",method:"POST",headers:r,query:i,body:Vo(t.accessToken)},n);return new w(a,o=>Ai(o))}async createAccessToken(t={},n){return await(await this.createAccessTokenRaw(t,n)).value()}async createAutoPlanViewSetRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/auto-plan/",method:"POST",headers:r,query:i,body:t.body},n);return this.isJsonMime(a.headers.get("content-type"))?new w(a):new Nn(a)}async createAutoPlanViewSet(t={},n){return await(await this.createAutoPlanViewSetRaw(t,n)).value()}async createAutomationRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/automation/",method:"POST",headers:r,query:i,body:Mo(t.automation)},n);return new w(a,o=>Di(o))}async createAutomation(t={},n){return await(await this.createAutomationRaw(t,n)).value()}async createBookmarkletImportRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/bookmarklet-import/",method:"POST",headers:r,query:i,body:Jo(t.bookmarkletImport)},n);return new w(a,o=>ua(o))}async createBookmarkletImport(t={},n){return await(await this.createBookmarkletImportRaw(t,n)).value()}async createCookLogRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/cook-log/",method:"POST",headers:r,query:i,body:zo(t.cookLog)},n);return new w(a,o=>sr(o))}async createCookLog(t={},n){return await(await this.createCookLogRaw(t,n)).value()}async createCustomFilterRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/custom-filter/",method:"POST",headers:r,query:i,body:Ho(t.customFilter)},n);return new w(a,o=>Ui(o))}async createCustomFilter(t={},n){return await(await this.createCustomFilterRaw(t,n)).value()}async createExportLogRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/export-log/",method:"POST",headers:r,query:i,body:Go(t.exportLog)},n);return new w(a,o=>lr(o))}async createExportLog(t={},n){return await(await this.createExportLogRaw(t,n)).value()}async createFoodRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/food/",method:"POST",headers:r,query:i,body:ni(t.food)},n);return new w(a,o=>gn(o))}async createFood(t={},n){return await(await this.createFoodRaw(t,n)).value()}async createImportLogRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/import-log/",method:"POST",headers:r,query:i,body:Ko(t.importLog)},n);return new w(a,o=>dr(o))}async createImportLog(t={},n){return await(await this.createImportLogRaw(t,n)).value()}async createIngredientRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/ingredient/",method:"POST",headers:r,query:i,body:Wo(t.ingredient)},n);return new w(a,o=>cr(o))}async createIngredient(t={},n){return await(await this.createIngredientRaw(t,n)).value()}async createInviteLinkRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/invite-link/",method:"POST",headers:r,query:i,body:Yo(t.inviteLink)},n);return new w(a,o=>Li(o))}async createInviteLink(t={},n){return await(await this.createInviteLinkRaw(t,n)).value()}async createKeywordRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/keyword/",method:"POST",headers:r,query:i,body:Ni(t.keyword)},n);return new w(a,o=>qn(o))}async createKeyword(t={},n){return await(await this.createKeywordRaw(t,n)).value()}async createMealPlanRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/meal-plan/",method:"POST",headers:r,query:i,body:jo(t.mealPlan)},n);return new w(a,o=>qi(o))}async createMealPlan(t={},n){return await(await this.createMealPlanRaw(t,n)).value()}async createMealTypeRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/meal-type/",method:"POST",headers:r,query:i,body:es(t.mealType)},n);return new w(a,o=>$i(o))}async createMealType(t={},n){return await(await this.createMealTypeRaw(t,n)).value()}async createOpenDataCategoryRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/open-data-category/",method:"POST",headers:r,query:i,body:ts(t.openDataCategory)},n);return new w(a,o=>Bi(o))}async createOpenDataCategory(t={},n){return await(await this.createOpenDataCategoryRaw(t,n)).value()}async createOpenDataConversionRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/open-data-conversion/",method:"POST",headers:r,query:i,body:ns(t.openDataConversion)},n);return new w(a,o=>Vi(o))}async createOpenDataConversion(t={},n){return await(await this.createOpenDataConversionRaw(t,n)).value()}async createOpenDataFoodRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/open-data-food/",method:"POST",headers:r,query:i,body:is(t.openDataFood)},n);return new w(a,o=>Mi(o))}async createOpenDataFood(t={},n){return await(await this.createOpenDataFoodRaw(t,n)).value()}async createOpenDataPropertyRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/open-data-property/",method:"POST",headers:r,query:i,body:rs(t.openDataProperty)},n);return new w(a,o=>Ji(o))}async createOpenDataProperty(t={},n){return await(await this.createOpenDataPropertyRaw(t,n)).value()}async createOpenDataStoreRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/open-data-store/",method:"POST",headers:r,query:i,body:as(t.openDataStore)},n);return new w(a,o=>zi(o))}async createOpenDataStore(t={},n){return await(await this.createOpenDataStoreRaw(t,n)).value()}async createOpenDataUnitRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/open-data-unit/",method:"POST",headers:r,query:i,body:os(t.openDataUnit)},n);return new w(a,o=>Hi(o))}async createOpenDataUnit(t={},n){return await(await this.createOpenDataUnitRaw(t,n)).value()}async createOpenDataVersionRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/open-data-version/",method:"POST",headers:r,query:i,body:ss(t.openDataVersion)},n);return new w(a,o=>Gi(o))}async createOpenDataVersion(t={},n){return await(await this.createOpenDataVersionRaw(t,n)).value()}async createPropertyRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/food-property/",method:"POST",headers:r,query:i,body:ls(t.property)},n);return new w(a,o=>Ki(o))}async createProperty(t={},n){return await(await this.createPropertyRaw(t,n)).value()}async createPropertyTypeRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/food-property-type/",method:"POST",headers:r,query:i,body:ds(t.propertyType)},n);return new w(a,o=>Wi(o))}async createPropertyType(t={},n){return await(await this.createPropertyTypeRaw(t,n)).value()}async createRecipeRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/recipe/",method:"POST",headers:r,query:i,body:cs(t.recipe)},n);return new w(a,o=>Yi(o))}async createRecipe(t={},n){return await(await this.createRecipeRaw(t,n)).value()}async createRecipeBookRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/recipe-book/",method:"POST",headers:r,query:i,body:us(t.recipeBook)},n);return new w(a,o=>Zi(o))}async createRecipeBook(t={},n){return await(await this.createRecipeBookRaw(t,n)).value()}async createRecipeBookEntryRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/recipe-book-entry/",method:"POST",headers:r,query:i,body:ps(t.recipeBookEntry)},n);return new w(a,o=>Xi(o))}async createRecipeBookEntry(t={},n){return await(await this.createRecipeBookEntryRaw(t,n)).value()}async createRecipeUrlImportRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/recipe-from-source/",method:"POST",headers:r,query:i,body:t.body},n);return this.isJsonMime(a.headers.get("content-type"))?new w(a):new Nn(a)}async createRecipeUrlImport(t={},n){return await(await this.createRecipeUrlImportRaw(t,n)).value()}async createShoppingListRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/shopping-list/",method:"POST",headers:r,query:i,body:fs(t.shoppingList)},n);return new w(a,o=>Qi(o))}async createShoppingList(t={},n){return await(await this.createShoppingListRaw(t,n)).value()}async createShoppingListEntryRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/shopping-list-entry/",method:"POST",headers:r,query:i,body:ms(t.shoppingListEntry)},n);return new w(a,o=>ji(o))}async createShoppingListEntry(t={},n){return await(await this.createShoppingListEntryRaw(t,n)).value()}async createShoppingListRecipeRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/shopping-list-recipe/",method:"POST",headers:r,query:i,body:hs(t.shoppingListRecipe)},n);return new w(a,o=>er(o))}async createShoppingListRecipe(t={},n){return await(await this.createShoppingListRecipeRaw(t,n)).value()}async createStepRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/step/",method:"POST",headers:r,query:i,body:Zo(t.step)},n);return new w(a,o=>ur(o))}async createStep(t={},n){return await(await this.createStepRaw(t,n)).value()}async createStorageRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/storage/",method:"POST",headers:r,query:i,body:ys(t.storage)},n);return new w(a,o=>tr(o))}async createStorage(t={},n){return await(await this.createStorageRaw(t,n)).value()}async createSupermarketRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/supermarket/",method:"POST",headers:r,query:i,body:vs(t.supermarket)},n);return new w(a,o=>nr(o))}async createSupermarket(t={},n){return await(await this.createSupermarketRaw(t,n)).value()}async createSupermarketCategoryRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/supermarket-category/",method:"POST",headers:r,query:i,body:fa(t.supermarketCategory)},n);return new w(a,o=>ii(o))}async createSupermarketCategory(t={},n){return await(await this.createSupermarketCategoryRaw(t,n)).value()}async createSupermarketCategoryRelationRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/supermarket-category-relation/",method:"POST",headers:r,query:i,body:Xo(t.supermarketCategoryRelation)},n);return new w(a,o=>pr(o))}async createSupermarketCategoryRelation(t={},n){return await(await this.createSupermarketCategoryRelationRaw(t,n)).value()}async createSyncRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/sync/",method:"POST",headers:r,query:i,body:ws(t.sync)},n);return new w(a,o=>ir(o))}async createSync(t={},n){return await(await this.createSyncRaw(t,n)).value()}async createUnitRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/unit/",method:"POST",headers:r,query:i,body:pa(t.unit)},n);return new w(a,o=>ai(o))}async createUnit(t={},n){return await(await this.createUnitRaw(t,n)).value()}async createUnitConversionRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/unit-conversion/",method:"POST",headers:r,query:i,body:bs(t.unitConversion)},n);return new w(a,o=>rr(o))}async createUnitConversion(t={},n){return await(await this.createUnitConversionRaw(t,n)).value()}async createUserFileRaw(t,n){if(t.name===null||t.name===void 0)throw new _("name","Required parameter requestParameters.name was null or undefined when calling createUserFile.");if(t.file===null||t.file===void 0)throw new _("file","Required parameter requestParameters.file was null or undefined when calling createUserFile.");const i={},r={},o=ca([{contentType:"multipart/form-data"}]);let s,d=!1;d=o,d?s=new FormData:s=new URLSearchParams,t.id!==void 0&&s.append("id",t.id),t.name!==void 0&&s.append("name",t.name),t.file!==void 0&&s.append("file",t.file),t.fileDownload!==void 0&&s.append("file_download",t.fileDownload),t.preview!==void 0&&s.append("preview",t.preview),t.fileSizeKb!==void 0&&s.append("file_size_kb",t.fileSizeKb);const c=await this.request({path:"/api/user-file/",method:"POST",headers:r,query:i,body:s},n);return new w(c,u=>ar(u))}async createUserFile(t,n){return await(await this.createUserFileRaw(t,n)).value()}async createViewLogRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/view-log/",method:"POST",headers:r,query:i,body:Qo(t.viewLog)},n);return new w(a,o=>fr(o))}async createViewLog(t={},n){return await(await this.createViewLogRaw(t,n)).value()}async createimportFilesRaw(t,n){const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/import/",method:"POST",headers:r,query:i,body:t.body},n);return this.isJsonMime(a.headers.get("content-type"))?new w(a):new Nn(a)}async createimportFiles(t={},n){return await(await this.createimportFilesRaw(t,n)).value()}async destroyAccessTokenRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyAccessToken.");const i={},r={},a=await this.request({path:"/api/access-token/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyAccessToken(t,n){await this.destroyAccessTokenRaw(t,n)}async destroyAutomationRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyAutomation.");const i={},r={},a=await this.request({path:"/api/automation/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyAutomation(t,n){await this.destroyAutomationRaw(t,n)}async destroyBookmarkletImportRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyBookmarkletImport.");const i={},r={},a=await this.request({path:"/api/bookmarklet-import/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyBookmarkletImport(t,n){await this.destroyBookmarkletImportRaw(t,n)}async destroyCookLogRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyCookLog.");const i={},r={},a=await this.request({path:"/api/cook-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyCookLog(t,n){await this.destroyCookLogRaw(t,n)}async destroyCustomFilterRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyCustomFilter.");const i={},r={},a=await this.request({path:"/api/custom-filter/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyCustomFilter(t,n){await this.destroyCustomFilterRaw(t,n)}async destroyExportLogRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyExportLog.");const i={},r={},a=await this.request({path:"/api/export-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyExportLog(t,n){await this.destroyExportLogRaw(t,n)}async destroyFoodRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyFood.");const i={},r={},a=await this.request({path:"/api/food/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyFood(t,n){await this.destroyFoodRaw(t,n)}async destroyImportLogRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyImportLog.");const i={},r={},a=await this.request({path:"/api/import-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyImportLog(t,n){await this.destroyImportLogRaw(t,n)}async destroyIngredientRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyIngredient.");const i={},r={},a=await this.request({path:"/api/ingredient/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyIngredient(t,n){await this.destroyIngredientRaw(t,n)}async destroyInviteLinkRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyInviteLink.");const i={},r={},a=await this.request({path:"/api/invite-link/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyInviteLink(t,n){await this.destroyInviteLinkRaw(t,n)}async destroyKeywordRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyKeyword.");const i={},r={},a=await this.request({path:"/api/keyword/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyKeyword(t,n){await this.destroyKeywordRaw(t,n)}async destroyMealPlanRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyMealPlan.");const i={},r={},a=await this.request({path:"/api/meal-plan/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyMealPlan(t,n){await this.destroyMealPlanRaw(t,n)}async destroyMealTypeRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyMealType.");const i={},r={},a=await this.request({path:"/api/meal-type/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyMealType(t,n){await this.destroyMealTypeRaw(t,n)}async destroyOpenDataCategoryRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyOpenDataCategory.");const i={},r={},a=await this.request({path:"/api/open-data-category/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyOpenDataCategory(t,n){await this.destroyOpenDataCategoryRaw(t,n)}async destroyOpenDataConversionRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyOpenDataConversion.");const i={},r={},a=await this.request({path:"/api/open-data-conversion/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyOpenDataConversion(t,n){await this.destroyOpenDataConversionRaw(t,n)}async destroyOpenDataFoodRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyOpenDataFood.");const i={},r={},a=await this.request({path:"/api/open-data-food/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyOpenDataFood(t,n){await this.destroyOpenDataFoodRaw(t,n)}async destroyOpenDataPropertyRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyOpenDataProperty.");const i={},r={},a=await this.request({path:"/api/open-data-property/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyOpenDataProperty(t,n){await this.destroyOpenDataPropertyRaw(t,n)}async destroyOpenDataStoreRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyOpenDataStore.");const i={},r={},a=await this.request({path:"/api/open-data-store/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyOpenDataStore(t,n){await this.destroyOpenDataStoreRaw(t,n)}async destroyOpenDataUnitRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyOpenDataUnit.");const i={},r={},a=await this.request({path:"/api/open-data-unit/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyOpenDataUnit(t,n){await this.destroyOpenDataUnitRaw(t,n)}async destroyOpenDataVersionRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyOpenDataVersion.");const i={},r={},a=await this.request({path:"/api/open-data-version/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyOpenDataVersion(t,n){await this.destroyOpenDataVersionRaw(t,n)}async destroyPropertyRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyProperty.");const i={},r={},a=await this.request({path:"/api/food-property/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyProperty(t,n){await this.destroyPropertyRaw(t,n)}async destroyPropertyTypeRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyPropertyType.");const i={},r={},a=await this.request({path:"/api/food-property-type/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyPropertyType(t,n){await this.destroyPropertyTypeRaw(t,n)}async destroyRecipeRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyRecipe.");const i={},r={},a=await this.request({path:"/api/recipe/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyRecipe(t,n){await this.destroyRecipeRaw(t,n)}async destroyRecipeBookRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyRecipeBook.");const i={},r={},a=await this.request({path:"/api/recipe-book/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyRecipeBook(t,n){await this.destroyRecipeBookRaw(t,n)}async destroyRecipeBookEntryRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyRecipeBookEntry.");const i={},r={},a=await this.request({path:"/api/recipe-book-entry/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyRecipeBookEntry(t,n){await this.destroyRecipeBookEntryRaw(t,n)}async destroyShoppingListRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyShoppingList.");const i={},r={},a=await this.request({path:"/api/shopping-list/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyShoppingList(t,n){await this.destroyShoppingListRaw(t,n)}async destroyShoppingListEntryRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyShoppingListEntry.");const i={},r={},a=await this.request({path:"/api/shopping-list-entry/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyShoppingListEntry(t,n){await this.destroyShoppingListEntryRaw(t,n)}async destroyShoppingListRecipeRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyShoppingListRecipe.");const i={},r={},a=await this.request({path:"/api/shopping-list-recipe/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyShoppingListRecipe(t,n){await this.destroyShoppingListRecipeRaw(t,n)}async destroyStepRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyStep.");const i={},r={},a=await this.request({path:"/api/step/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyStep(t,n){await this.destroyStepRaw(t,n)}async destroyStorageRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyStorage.");const i={},r={},a=await this.request({path:"/api/storage/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyStorage(t,n){await this.destroyStorageRaw(t,n)}async destroySupermarketRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroySupermarket.");const i={},r={},a=await this.request({path:"/api/supermarket/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroySupermarket(t,n){await this.destroySupermarketRaw(t,n)}async destroySupermarketCategoryRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroySupermarketCategory.");const i={},r={},a=await this.request({path:"/api/supermarket-category/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroySupermarketCategory(t,n){await this.destroySupermarketCategoryRaw(t,n)}async destroySupermarketCategoryRelationRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroySupermarketCategoryRelation.");const i={},r={},a=await this.request({path:"/api/supermarket-category-relation/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroySupermarketCategoryRelation(t,n){await this.destroySupermarketCategoryRelationRaw(t,n)}async destroySyncRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroySync.");const i={},r={},a=await this.request({path:"/api/sync/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroySync(t,n){await this.destroySyncRaw(t,n)}async destroyUnitRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyUnit.");const i={},r={},a=await this.request({path:"/api/unit/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyUnit(t,n){await this.destroyUnitRaw(t,n)}async destroyUnitConversionRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyUnitConversion.");const i={},r={},a=await this.request({path:"/api/unit-conversion/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyUnitConversion(t,n){await this.destroyUnitConversionRaw(t,n)}async destroyUserFileRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyUserFile.");const i={},r={},a=await this.request({path:"/api/user-file/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyUserFile(t,n){await this.destroyUserFileRaw(t,n)}async destroyUserSpaceRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyUserSpace.");const i={},r={},a=await this.request({path:"/api/user-space/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyUserSpace(t,n){await this.destroyUserSpaceRaw(t,n)}async destroyViewLogRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling destroyViewLog.");const i={},r={},a=await this.request({path:"/api/view-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"DELETE",headers:r,query:i},n);return new ye(a)}async destroyViewLog(t,n){await this.destroyViewLogRaw(t,n)}async fdcFoodRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling fdcFood.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/food/{id}/fdc/".replace("{id}",encodeURIComponent(String(t.id))),method:"POST",headers:r,query:i,body:ni(t.food)},n);return new w(a,o=>gn(o))}async fdcFood(t,n){return await(await this.fdcFoodRaw(t,n)).value()}async flatRecipeRaw(t){const n={},i={},r=await this.request({path:"/api/recipe/flat/",method:"GET",headers:i,query:n},t);return new w(r,a=>Yi(a))}async flatRecipe(t){return await(await this.flatRecipeRaw(t)).value()}async imageRecipeRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling imageRecipe.");const i={},r={},o=ca([{contentType:"multipart/form-data"}]);let s,d=!1;d=o,d?s=new FormData:s=new URLSearchParams,t.image!==void 0&&s.append("image",t.image),t.imageUrl!==void 0&&s.append("image_url",t.imageUrl);const c=await this.request({path:"/api/recipe/{id}/image/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:s},n);return new w(c,u=>YR(u))}async imageRecipe(t,n){return await(await this.imageRecipeRaw(t,n)).value()}async listAccessTokensRaw(t){const n={},i={},r=await this.request({path:"/api/access-token/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(Ai))}async listAccessTokens(t){return await(await this.listAccessTokensRaw(t)).value()}async listAutomationsRaw(t){const n={},i={},r=await this.request({path:"/api/automation/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(Di))}async listAutomations(t){return await(await this.listAutomationsRaw(t)).value()}async listBookmarkletImportsRaw(t){const n={},i={},r=await this.request({path:"/api/bookmarklet-import/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(V_))}async listBookmarkletImports(t){return await(await this.listBookmarkletImportsRaw(t)).value()}async listCookLogsRaw(t,n){const i={};t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={},a=await this.request({path:"/api/cook-log/",method:"GET",headers:r,query:i},n);return new w(a,o=>gS(o))}async listCookLogs(t={},n){return await(await this.listCookLogsRaw(t,n)).value()}async listCustomFiltersRaw(t){const n={},i={},r=await this.request({path:"/api/custom-filter/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(Ui))}async listCustomFilters(t){return await(await this.listCustomFiltersRaw(t)).value()}async listExportLogsRaw(t,n){const i={};t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={},a=await this.request({path:"/api/export-log/",method:"GET",headers:r,query:i},n);return new w(a,o=>vS(o))}async listExportLogs(t={},n){return await(await this.listExportLogsRaw(t,n)).value()}async listFoodInheritFieldsRaw(t){const n={},i={},r=await this.request({path:"/api/food-inherit-field/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(cu))}async listFoodInheritFields(t){return await(await this.listFoodInheritFieldsRaw(t)).value()}async listFoodsRaw(t,n){const i={};t.query!==void 0&&(i.query=t.query),t.root!==void 0&&(i.root=t.root),t.tree!==void 0&&(i.tree=t.tree),t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={},a=await this.request({path:"/api/food/",method:"GET",headers:r,query:i},n);return new w(a,o=>bS(o))}async listFoods(t={},n){return await(await this.listFoodsRaw(t,n)).value()}async listGroupsRaw(t){const n={},i={},r=await this.request({path:"/api/group/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(uu))}async listGroups(t){return await(await this.listGroupsRaw(t)).value()}async listImportLogsRaw(t,n){const i={};t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={},a=await this.request({path:"/api/import-log/",method:"GET",headers:r,query:i},n);return new w(a,o=>SS(o))}async listImportLogs(t={},n){return await(await this.listImportLogsRaw(t,n)).value()}async listIngredientsRaw(t,n){const i={};t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={},a=await this.request({path:"/api/ingredient/",method:"GET",headers:r,query:i},n);return new w(a,o=>CS(o))}async listIngredients(t={},n){return await(await this.listIngredientsRaw(t,n)).value()}async listInviteLinksRaw(t){const n={},i={},r=await this.request({path:"/api/invite-link/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(Li))}async listInviteLinks(t){return await(await this.listInviteLinksRaw(t)).value()}async listKeywordsRaw(t,n){const i={};t.query!==void 0&&(i.query=t.query),t.root!==void 0&&(i.root=t.root),t.tree!==void 0&&(i.tree=t.tree),t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={},a=await this.request({path:"/api/keyword/",method:"GET",headers:r,query:i},n);return new w(a,o=>kS(o))}async listKeywords(t={},n){return await(await this.listKeywordsRaw(t,n)).value()}async listMealPlansRaw(t,n){const i={};t.fromDate!==void 0&&(i.from_date=t.fromDate),t.toDate!==void 0&&(i.to_date=t.toDate),t.mealType!==void 0&&(i.meal_type=t.mealType);const r={},a=await this.request({path:"/api/meal-plan/",method:"GET",headers:r,query:i},n);return new w(a,o=>o.map(qi))}async listMealPlans(t={},n){return await(await this.listMealPlansRaw(t,n)).value()}async listMealTypesRaw(t){const n={},i={},r=await this.request({path:"/api/meal-type/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map($i))}async listMealTypes(t){return await(await this.listMealTypesRaw(t)).value()}async listOpenDataCategorysRaw(t){const n={},i={},r=await this.request({path:"/api/open-data-category/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(Bi))}async listOpenDataCategorys(t){return await(await this.listOpenDataCategorysRaw(t)).value()}async listOpenDataConversionsRaw(t){const n={},i={},r=await this.request({path:"/api/open-data-conversion/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(Vi))}async listOpenDataConversions(t){return await(await this.listOpenDataConversionsRaw(t)).value()}async listOpenDataFoodsRaw(t){const n={},i={},r=await this.request({path:"/api/open-data-food/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(Mi))}async listOpenDataFoods(t){return await(await this.listOpenDataFoodsRaw(t)).value()}async listOpenDataPropertysRaw(t){const n={},i={},r=await this.request({path:"/api/open-data-property/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(Ji))}async listOpenDataPropertys(t){return await(await this.listOpenDataPropertysRaw(t)).value()}async listOpenDataStatisticsViewSetsRaw(t){const n={},i={},r=await this.request({path:"/api/open-data-stats/",method:"GET",headers:i,query:n},t);return new w(r)}async listOpenDataStatisticsViewSets(t){return await(await this.listOpenDataStatisticsViewSetsRaw(t)).value()}async listOpenDataStoresRaw(t){const n={},i={},r=await this.request({path:"/api/open-data-store/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(zi))}async listOpenDataStores(t){return await(await this.listOpenDataStoresRaw(t)).value()}async listOpenDataUnitsRaw(t){const n={},i={},r=await this.request({path:"/api/open-data-unit/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(Hi))}async listOpenDataUnits(t){return await(await this.listOpenDataUnitsRaw(t)).value()}async listOpenDataVersionsRaw(t){const n={},i={},r=await this.request({path:"/api/open-data-version/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(Gi))}async listOpenDataVersions(t){return await(await this.listOpenDataVersionsRaw(t)).value()}async listPropertyTypesRaw(t){const n={},i={},r=await this.request({path:"/api/food-property-type/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(Wi))}async listPropertyTypes(t){return await(await this.listPropertyTypesRaw(t)).value()}async listPropertysRaw(t){const n={},i={},r=await this.request({path:"/api/food-property/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(Ki))}async listPropertys(t){return await(await this.listPropertysRaw(t)).value()}async listRecipeBookEntrysRaw(t){const n={},i={},r=await this.request({path:"/api/recipe-book-entry/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(Xi))}async listRecipeBookEntrys(t){return await(await this.listRecipeBookEntrysRaw(t)).value()}async listRecipeBooksRaw(t){const n={},i={},r=await this.request({path:"/api/recipe-book/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(Zi))}async listRecipeBooks(t){return await(await this.listRecipeBooksRaw(t)).value()}async listRecipesRaw(t,n){const i={};t.query!==void 0&&(i.query=t.query),t.keywords!==void 0&&(i.keywords=t.keywords),t.keywordsOr!==void 0&&(i.keywords_or=t.keywordsOr),t.keywordsAnd!==void 0&&(i.keywords_and=t.keywordsAnd),t.keywordsOrNot!==void 0&&(i.keywords_or_not=t.keywordsOrNot),t.keywordsAndNot!==void 0&&(i.keywords_and_not=t.keywordsAndNot),t.foods!==void 0&&(i.foods=t.foods),t.foodsOr!==void 0&&(i.foods_or=t.foodsOr),t.foodsAnd!==void 0&&(i.foods_and=t.foodsAnd),t.foodsOrNot!==void 0&&(i.foods_or_not=t.foodsOrNot),t.foodsAndNot!==void 0&&(i.foods_and_not=t.foodsAndNot),t.units!==void 0&&(i.units=t.units),t.rating!==void 0&&(i.rating=t.rating),t.books!==void 0&&(i.books=t.books),t.booksOr!==void 0&&(i.books_or=t.booksOr),t.booksAnd!==void 0&&(i.books_and=t.booksAnd),t.booksOrNot!==void 0&&(i.books_or_not=t.booksOrNot),t.booksAndNot!==void 0&&(i.books_and_not=t.booksAndNot),t.internal!==void 0&&(i.internal=t.internal),t.random!==void 0&&(i.random=t.random),t._new!==void 0&&(i.new=t._new),t.timescooked!==void 0&&(i.timescooked=t.timescooked),t.cookedon!==void 0&&(i.cookedon=t.cookedon),t.createdon!==void 0&&(i.createdon=t.createdon),t.updatedon!==void 0&&(i.updatedon=t.updatedon),t.viewedon!==void 0&&(i.viewedon=t.viewedon),t.makenow!==void 0&&(i.makenow=t.makenow),t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={},a=await this.request({path:"/api/recipe/",method:"GET",headers:r,query:i},n);return new w(a,o=>FS(o))}async listRecipes(t={},n){return await(await this.listRecipesRaw(t,n)).value()}async listShoppingListEntrysRaw(t,n){const i={};t.id!==void 0&&(i.id=t.id),t.checked!==void 0&&(i.checked=t.checked),t.supermarket!==void 0&&(i.supermarket=t.supermarket);const r={},a=await this.request({path:"/api/shopping-list-entry/",method:"GET",headers:r,query:i},n);return new w(a,o=>o.map(ji))}async listShoppingListEntrys(t={},n){return await(await this.listShoppingListEntrysRaw(t,n)).value()}async listShoppingListRecipesRaw(t){const n={},i={},r=await this.request({path:"/api/shopping-list-recipe/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(er))}async listShoppingListRecipes(t){return await(await this.listShoppingListRecipesRaw(t)).value()}async listShoppingListsRaw(t){const n={},i={},r=await this.request({path:"/api/shopping-list/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(Qi))}async listShoppingLists(t){return await(await this.listShoppingListsRaw(t)).value()}async listSpacesRaw(t){const n={},i={},r=await this.request({path:"/api/space/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(gs))}async listSpaces(t){return await(await this.listSpacesRaw(t)).value()}async listStepsRaw(t,n){const i={};t.recipe!==void 0&&(i.recipe=t.recipe),t.query!==void 0&&(i.query=t.query),t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={},a=await this.request({path:"/api/step/",method:"GET",headers:r,query:i},n);return new w(a,o=>NS(o))}async listSteps(t={},n){return await(await this.listStepsRaw(t,n)).value()}async listStoragesRaw(t){const n={},i={},r=await this.request({path:"/api/storage/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(tr))}async listStorages(t){return await(await this.listStoragesRaw(t)).value()}async listSupermarketCategoryRelationsRaw(t,n){const i={};t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={},a=await this.request({path:"/api/supermarket-category-relation/",method:"GET",headers:r,query:i},n);return new w(a,o=>MS(o))}async listSupermarketCategoryRelations(t={},n){return await(await this.listSupermarketCategoryRelationsRaw(t,n)).value()}async listSupermarketCategorysRaw(t,n){const i={};t.query!==void 0&&(i.query=t.query);const r={},a=await this.request({path:"/api/supermarket-category/",method:"GET",headers:r,query:i},n);return new w(a,o=>o.map(ii))}async listSupermarketCategorys(t={},n){return await(await this.listSupermarketCategorysRaw(t,n)).value()}async listSupermarketsRaw(t,n){const i={};t.query!==void 0&&(i.query=t.query);const r={},a=await this.request({path:"/api/supermarket/",method:"GET",headers:r,query:i},n);return new w(a,o=>o.map(nr))}async listSupermarkets(t={},n){return await(await this.listSupermarketsRaw(t,n)).value()}async listSyncLogsRaw(t,n){const i={};t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={},a=await this.request({path:"/api/sync-log/",method:"GET",headers:r,query:i},n);return new w(a,o=>HS(o))}async listSyncLogs(t={},n){return await(await this.listSyncLogsRaw(t,n)).value()}async listSyncsRaw(t){const n={},i={},r=await this.request({path:"/api/sync/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(ir))}async listSyncs(t){return await(await this.listSyncsRaw(t)).value()}async listUnitConversionsRaw(t,n){const i={};t.foodId!==void 0&&(i.food_id=t.foodId);const r={},a=await this.request({path:"/api/unit-conversion/",method:"GET",headers:r,query:i},n);return new w(a,o=>o.map(rr))}async listUnitConversions(t={},n){return await(await this.listUnitConversionsRaw(t,n)).value()}async listUnitsRaw(t,n){const i={};t.query!==void 0&&(i.query=t.query),t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={},a=await this.request({path:"/api/unit/",method:"GET",headers:r,query:i},n);return new w(a,o=>WS(o))}async listUnits(t={},n){return await(await this.listUnitsRaw(t,n)).value()}async listUserFilesRaw(t,n){const i={};t.query!==void 0&&(i.query=t.query);const r={},a=await this.request({path:"/api/user-file/",method:"GET",headers:r,query:i},n);return new w(a,o=>o.map(ar))}async listUserFiles(t={},n){return await(await this.listUserFilesRaw(t,n)).value()}async listUserPreferencesRaw(t){const n={},i={},r=await this.request({path:"/api/user-preference/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(Ss))}async listUserPreferences(t){return await(await this.listUserPreferencesRaw(t)).value()}async listUserSpacesRaw(t,n){const i={};t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={},a=await this.request({path:"/api/user-space/",method:"GET",headers:r,query:i},n);return new w(a,o=>QS(o))}async listUserSpaces(t={},n){return await(await this.listUserSpacesRaw(t,n)).value()}async listUsersRaw(t){const n={},i={},r=await this.request({path:"/api/user/",method:"GET",headers:i,query:n},t);return new w(r,a=>a.map(_s))}async listUsers(t){return await(await this.listUsersRaw(t)).value()}async listViewLogsRaw(t,n){const i={};t.page!==void 0&&(i.page=t.page),t.pageSize!==void 0&&(i.page_size=t.pageSize);const r={},a=await this.request({path:"/api/view-log/",method:"GET",headers:r,query:i},n);return new w(a,o=>tR(o))}async listViewLogs(t={},n){return await(await this.listViewLogsRaw(t,n)).value()}async listresetFoodInheritancesRaw(t){const n={},i={},r=await this.request({path:"/api/reset-food-inheritance/",method:"GET",headers:i,query:n},t);return new w(r)}async listresetFoodInheritances(t){return await(await this.listresetFoodInheritancesRaw(t)).value()}async mergeFoodRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling mergeFood.");if(t.target===null||t.target===void 0)throw new _("target","Required parameter requestParameters.target was null or undefined when calling mergeFood.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/food/{id}/merge/{target}/".replace("{id}",encodeURIComponent(String(t.id))).replace("{target}",encodeURIComponent(String(t.target))),method:"PUT",headers:r,query:i,body:ni(t.food)},n);return new w(a,o=>gn(o))}async mergeFood(t,n){return await(await this.mergeFoodRaw(t,n)).value()}async mergeKeywordRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling mergeKeyword.");if(t.target===null||t.target===void 0)throw new _("target","Required parameter requestParameters.target was null or undefined when calling mergeKeyword.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/keyword/{id}/merge/{target}/".replace("{id}",encodeURIComponent(String(t.id))).replace("{target}",encodeURIComponent(String(t.target))),method:"PUT",headers:r,query:i,body:Ni(t.keyword)},n);return new w(a,o=>qn(o))}async mergeKeyword(t,n){return await(await this.mergeKeywordRaw(t,n)).value()}async mergeSupermarketCategoryRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling mergeSupermarketCategory.");if(t.target===null||t.target===void 0)throw new _("target","Required parameter requestParameters.target was null or undefined when calling mergeSupermarketCategory.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/supermarket-category/{id}/merge/{target}/".replace("{id}",encodeURIComponent(String(t.id))).replace("{target}",encodeURIComponent(String(t.target))),method:"PUT",headers:r,query:i,body:fa(t.supermarketCategory)},n);return new w(a,o=>ii(o))}async mergeSupermarketCategory(t,n){return await(await this.mergeSupermarketCategoryRaw(t,n)).value()}async mergeUnitRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling mergeUnit.");if(t.target===null||t.target===void 0)throw new _("target","Required parameter requestParameters.target was null or undefined when calling mergeUnit.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/unit/{id}/merge/{target}/".replace("{id}",encodeURIComponent(String(t.id))).replace("{target}",encodeURIComponent(String(t.target))),method:"PUT",headers:r,query:i,body:pa(t.unit)},n);return new w(a,o=>ai(o))}async mergeUnit(t,n){return await(await this.mergeUnitRaw(t,n)).value()}async moveFoodRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling moveFood.");if(t.parent===null||t.parent===void 0)throw new _("parent","Required parameter requestParameters.parent was null or undefined when calling moveFood.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/food/{id}/move/{parent}/".replace("{id}",encodeURIComponent(String(t.id))).replace("{parent}",encodeURIComponent(String(t.parent))),method:"PUT",headers:r,query:i,body:ni(t.food)},n);return new w(a,o=>gn(o))}async moveFood(t,n){return await(await this.moveFoodRaw(t,n)).value()}async moveKeywordRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling moveKeyword.");if(t.parent===null||t.parent===void 0)throw new _("parent","Required parameter requestParameters.parent was null or undefined when calling moveKeyword.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/keyword/{id}/move/{parent}/".replace("{id}",encodeURIComponent(String(t.id))).replace("{parent}",encodeURIComponent(String(t.parent))),method:"PUT",headers:r,query:i,body:Ni(t.keyword)},n);return new w(a,o=>qn(o))}async moveKeyword(t,n){return await(await this.moveKeywordRaw(t,n)).value()}async partialUpdateAccessTokenRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateAccessToken.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/access-token/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:Vo(t.accessToken)},n);return new w(a,o=>Ai(o))}async partialUpdateAccessToken(t,n){return await(await this.partialUpdateAccessTokenRaw(t,n)).value()}async partialUpdateAutomationRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateAutomation.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/automation/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:Mo(t.automation)},n);return new w(a,o=>Di(o))}async partialUpdateAutomation(t,n){return await(await this.partialUpdateAutomationRaw(t,n)).value()}async partialUpdateBookmarkletImportRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateBookmarkletImport.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/bookmarklet-import/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:Jo(t.bookmarkletImport)},n);return new w(a,o=>ua(o))}async partialUpdateBookmarkletImport(t,n){return await(await this.partialUpdateBookmarkletImportRaw(t,n)).value()}async partialUpdateCookLogRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateCookLog.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/cook-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:zo(t.cookLog)},n);return new w(a,o=>sr(o))}async partialUpdateCookLog(t,n){return await(await this.partialUpdateCookLogRaw(t,n)).value()}async partialUpdateCustomFilterRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateCustomFilter.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/custom-filter/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:Ho(t.customFilter)},n);return new w(a,o=>Ui(o))}async partialUpdateCustomFilter(t,n){return await(await this.partialUpdateCustomFilterRaw(t,n)).value()}async partialUpdateExportLogRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateExportLog.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/export-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:Go(t.exportLog)},n);return new w(a,o=>lr(o))}async partialUpdateExportLog(t,n){return await(await this.partialUpdateExportLogRaw(t,n)).value()}async partialUpdateFoodRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateFood.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/food/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:ni(t.food)},n);return new w(a,o=>gn(o))}async partialUpdateFood(t,n){return await(await this.partialUpdateFoodRaw(t,n)).value()}async partialUpdateImportLogRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateImportLog.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/import-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:Ko(t.importLog)},n);return new w(a,o=>dr(o))}async partialUpdateImportLog(t,n){return await(await this.partialUpdateImportLogRaw(t,n)).value()}async partialUpdateIngredientRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateIngredient.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/ingredient/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:Wo(t.ingredient)},n);return new w(a,o=>cr(o))}async partialUpdateIngredient(t,n){return await(await this.partialUpdateIngredientRaw(t,n)).value()}async partialUpdateInviteLinkRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateInviteLink.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/invite-link/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:Yo(t.inviteLink)},n);return new w(a,o=>Li(o))}async partialUpdateInviteLink(t,n){return await(await this.partialUpdateInviteLinkRaw(t,n)).value()}async partialUpdateKeywordRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateKeyword.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/keyword/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:Ni(t.keyword)},n);return new w(a,o=>qn(o))}async partialUpdateKeyword(t,n){return await(await this.partialUpdateKeywordRaw(t,n)).value()}async partialUpdateMealPlanRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateMealPlan.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/meal-plan/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:jo(t.mealPlan)},n);return new w(a,o=>qi(o))}async partialUpdateMealPlan(t,n){return await(await this.partialUpdateMealPlanRaw(t,n)).value()}async partialUpdateMealTypeRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateMealType.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/meal-type/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:es(t.mealType)},n);return new w(a,o=>$i(o))}async partialUpdateMealType(t,n){return await(await this.partialUpdateMealTypeRaw(t,n)).value()}async partialUpdateOpenDataCategoryRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateOpenDataCategory.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/open-data-category/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:ts(t.openDataCategory)},n);return new w(a,o=>Bi(o))}async partialUpdateOpenDataCategory(t,n){return await(await this.partialUpdateOpenDataCategoryRaw(t,n)).value()}async partialUpdateOpenDataConversionRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateOpenDataConversion.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/open-data-conversion/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:ns(t.openDataConversion)},n);return new w(a,o=>Vi(o))}async partialUpdateOpenDataConversion(t,n){return await(await this.partialUpdateOpenDataConversionRaw(t,n)).value()}async partialUpdateOpenDataFoodRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateOpenDataFood.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/open-data-food/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:is(t.openDataFood)},n);return new w(a,o=>Mi(o))}async partialUpdateOpenDataFood(t,n){return await(await this.partialUpdateOpenDataFoodRaw(t,n)).value()}async partialUpdateOpenDataPropertyRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateOpenDataProperty.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/open-data-property/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:rs(t.openDataProperty)},n);return new w(a,o=>Ji(o))}async partialUpdateOpenDataProperty(t,n){return await(await this.partialUpdateOpenDataPropertyRaw(t,n)).value()}async partialUpdateOpenDataStoreRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateOpenDataStore.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/open-data-store/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:as(t.openDataStore)},n);return new w(a,o=>zi(o))}async partialUpdateOpenDataStore(t,n){return await(await this.partialUpdateOpenDataStoreRaw(t,n)).value()}async partialUpdateOpenDataUnitRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateOpenDataUnit.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/open-data-unit/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:os(t.openDataUnit)},n);return new w(a,o=>Hi(o))}async partialUpdateOpenDataUnit(t,n){return await(await this.partialUpdateOpenDataUnitRaw(t,n)).value()}async partialUpdateOpenDataVersionRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateOpenDataVersion.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/open-data-version/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:ss(t.openDataVersion)},n);return new w(a,o=>Gi(o))}async partialUpdateOpenDataVersion(t,n){return await(await this.partialUpdateOpenDataVersionRaw(t,n)).value()}async partialUpdatePropertyRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateProperty.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/food-property/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:ls(t.property)},n);return new w(a,o=>Ki(o))}async partialUpdateProperty(t,n){return await(await this.partialUpdatePropertyRaw(t,n)).value()}async partialUpdatePropertyTypeRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdatePropertyType.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/food-property-type/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:ds(t.propertyType)},n);return new w(a,o=>Wi(o))}async partialUpdatePropertyType(t,n){return await(await this.partialUpdatePropertyTypeRaw(t,n)).value()}async partialUpdateRecipeRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateRecipe.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/recipe/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:cs(t.recipe)},n);return new w(a,o=>Yi(o))}async partialUpdateRecipe(t,n){return await(await this.partialUpdateRecipeRaw(t,n)).value()}async partialUpdateRecipeBookRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateRecipeBook.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/recipe-book/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:us(t.recipeBook)},n);return new w(a,o=>Zi(o))}async partialUpdateRecipeBook(t,n){return await(await this.partialUpdateRecipeBookRaw(t,n)).value()}async partialUpdateRecipeBookEntryRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateRecipeBookEntry.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/recipe-book-entry/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:ps(t.recipeBookEntry)},n);return new w(a,o=>Xi(o))}async partialUpdateRecipeBookEntry(t,n){return await(await this.partialUpdateRecipeBookEntryRaw(t,n)).value()}async partialUpdateShoppingListRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateShoppingList.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/shopping-list/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:fs(t.shoppingList)},n);return new w(a,o=>Qi(o))}async partialUpdateShoppingList(t,n){return await(await this.partialUpdateShoppingListRaw(t,n)).value()}async partialUpdateShoppingListEntryRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateShoppingListEntry.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/shopping-list-entry/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:ms(t.shoppingListEntry)},n);return new w(a,o=>ji(o))}async partialUpdateShoppingListEntry(t,n){return await(await this.partialUpdateShoppingListEntryRaw(t,n)).value()}async partialUpdateShoppingListRecipeRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateShoppingListRecipe.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/shopping-list-recipe/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:hs(t.shoppingListRecipe)},n);return new w(a,o=>er(o))}async partialUpdateShoppingListRecipe(t,n){return await(await this.partialUpdateShoppingListRecipeRaw(t,n)).value()}async partialUpdateSpaceRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateSpace.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/space/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:bC(t.space)},n);return new w(a,o=>gs(o))}async partialUpdateSpace(t,n){return await(await this.partialUpdateSpaceRaw(t,n)).value()}async partialUpdateStepRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateStep.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/step/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:Zo(t.step)},n);return new w(a,o=>ur(o))}async partialUpdateStep(t,n){return await(await this.partialUpdateStepRaw(t,n)).value()}async partialUpdateStorageRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateStorage.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/storage/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:ys(t.storage)},n);return new w(a,o=>tr(o))}async partialUpdateStorage(t,n){return await(await this.partialUpdateStorageRaw(t,n)).value()}async partialUpdateSupermarketRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateSupermarket.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/supermarket/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:vs(t.supermarket)},n);return new w(a,o=>nr(o))}async partialUpdateSupermarket(t,n){return await(await this.partialUpdateSupermarketRaw(t,n)).value()}async partialUpdateSupermarketCategoryRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateSupermarketCategory.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/supermarket-category/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:fa(t.supermarketCategory)},n);return new w(a,o=>ii(o))}async partialUpdateSupermarketCategory(t,n){return await(await this.partialUpdateSupermarketCategoryRaw(t,n)).value()}async partialUpdateSupermarketCategoryRelationRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateSupermarketCategoryRelation.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/supermarket-category-relation/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:Xo(t.supermarketCategoryRelation)},n);return new w(a,o=>pr(o))}async partialUpdateSupermarketCategoryRelation(t,n){return await(await this.partialUpdateSupermarketCategoryRelationRaw(t,n)).value()}async partialUpdateSyncRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateSync.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/sync/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:ws(t.sync)},n);return new w(a,o=>ir(o))}async partialUpdateSync(t,n){return await(await this.partialUpdateSyncRaw(t,n)).value()}async partialUpdateUnitRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateUnit.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/unit/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:pa(t.unit)},n);return new w(a,o=>ai(o))}async partialUpdateUnit(t,n){return await(await this.partialUpdateUnitRaw(t,n)).value()}async partialUpdateUnitConversionRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateUnitConversion.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/unit-conversion/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:bs(t.unitConversion)},n);return new w(a,o=>rr(o))}async partialUpdateUnitConversion(t,n){return await(await this.partialUpdateUnitConversionRaw(t,n)).value()}async partialUpdateUserRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateUser.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/user/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:IC(t.user)},n);return new w(a,o=>_s(o))}async partialUpdateUser(t,n){return await(await this.partialUpdateUserRaw(t,n)).value()}async partialUpdateUserFileRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateUserFile.");if(t.name===null||t.name===void 0)throw new _("name","Required parameter requestParameters.name was null or undefined when calling partialUpdateUserFile.");if(t.file===null||t.file===void 0)throw new _("file","Required parameter requestParameters.file was null or undefined when calling partialUpdateUserFile.");const i={},r={},o=ca([{contentType:"multipart/form-data"}]);let s,d=!1;d=o,d?s=new FormData:s=new URLSearchParams,t.id2!==void 0&&s.append("id",t.id2),t.name!==void 0&&s.append("name",t.name),t.file!==void 0&&s.append("file",t.file),t.fileDownload!==void 0&&s.append("file_download",t.fileDownload),t.preview!==void 0&&s.append("preview",t.preview),t.fileSizeKb!==void 0&&s.append("file_size_kb",t.fileSizeKb);const c=await this.request({path:"/api/user-file/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:s},n);return new w(c,u=>ar(u))}async partialUpdateUserFile(t,n){return await(await this.partialUpdateUserFileRaw(t,n)).value()}async partialUpdateUserPreferenceRaw(t,n){if(t.user===null||t.user===void 0)throw new _("user","Required parameter requestParameters.user was null or undefined when calling partialUpdateUserPreference.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/user-preference/{user}/".replace("{user}",encodeURIComponent(String(t.user))),method:"PATCH",headers:r,query:i,body:xC(t.userPreference)},n);return new w(a,o=>Ss(o))}async partialUpdateUserPreference(t,n){return await(await this.partialUpdateUserPreferenceRaw(t,n)).value()}async partialUpdateUserSpaceRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateUserSpace.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/user-space/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:XS(t.userSpace)},n);return new w(a,o=>Zs(o))}async partialUpdateUserSpace(t,n){return await(await this.partialUpdateUserSpaceRaw(t,n)).value()}async partialUpdateViewLogRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling partialUpdateViewLog.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/view-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PATCH",headers:r,query:i,body:Qo(t.viewLog)},n);return new w(a,o=>fr(o))}async partialUpdateViewLog(t,n){return await(await this.partialUpdateViewLogRaw(t,n)).value()}async relatedRecipeRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling relatedRecipe.");const i={},r={},a=await this.request({path:"/api/recipe/{id}/related/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>eC(o))}async relatedRecipe(t,n){return await(await this.relatedRecipeRaw(t,n)).value()}async retrieveAccessTokenRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveAccessToken.");const i={},r={},a=await this.request({path:"/api/access-token/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>Ai(o))}async retrieveAccessToken(t,n){return await(await this.retrieveAccessTokenRaw(t,n)).value()}async retrieveAutomationRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveAutomation.");const i={},r={},a=await this.request({path:"/api/automation/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>Di(o))}async retrieveAutomation(t,n){return await(await this.retrieveAutomationRaw(t,n)).value()}async retrieveBookmarkletImportRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveBookmarkletImport.");const i={},r={},a=await this.request({path:"/api/bookmarklet-import/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>ua(o))}async retrieveBookmarkletImport(t,n){return await(await this.retrieveBookmarkletImportRaw(t,n)).value()}async retrieveCookLogRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveCookLog.");const i={},r={},a=await this.request({path:"/api/cook-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>sr(o))}async retrieveCookLog(t,n){return await(await this.retrieveCookLogRaw(t,n)).value()}async retrieveCustomFilterRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveCustomFilter.");const i={},r={},a=await this.request({path:"/api/custom-filter/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>Ui(o))}async retrieveCustomFilter(t,n){return await(await this.retrieveCustomFilterRaw(t,n)).value()}async retrieveExportLogRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveExportLog.");const i={},r={},a=await this.request({path:"/api/export-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>lr(o))}async retrieveExportLog(t,n){return await(await this.retrieveExportLogRaw(t,n)).value()}async retrieveFDCViewSetRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveFDCViewSet.");const i={},r={},a=await this.request({path:"/api/open-data-FDC/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return this.isJsonMime(a.headers.get("content-type"))?new w(a):new Nn(a)}async retrieveFDCViewSet(t,n){return await(await this.retrieveFDCViewSetRaw(t,n)).value()}async retrieveFoodRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveFood.");const i={},r={},a=await this.request({path:"/api/food/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>gn(o))}async retrieveFood(t,n){return await(await this.retrieveFoodRaw(t,n)).value()}async retrieveFoodInheritFieldRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveFoodInheritField.");const i={},r={},a=await this.request({path:"/api/food-inherit-field/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>cu(o))}async retrieveFoodInheritField(t,n){return await(await this.retrieveFoodInheritFieldRaw(t,n)).value()}async retrieveGroupRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveGroup.");const i={},r={},a=await this.request({path:"/api/group/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>uu(o))}async retrieveGroup(t,n){return await(await this.retrieveGroupRaw(t,n)).value()}async retrieveImportLogRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveImportLog.");const i={},r={},a=await this.request({path:"/api/import-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>dr(o))}async retrieveImportLog(t,n){return await(await this.retrieveImportLogRaw(t,n)).value()}async retrieveIngredientRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveIngredient.");const i={},r={},a=await this.request({path:"/api/ingredient/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>cr(o))}async retrieveIngredient(t,n){return await(await this.retrieveIngredientRaw(t,n)).value()}async retrieveInviteLinkRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveInviteLink.");const i={},r={},a=await this.request({path:"/api/invite-link/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>Li(o))}async retrieveInviteLink(t,n){return await(await this.retrieveInviteLinkRaw(t,n)).value()}async retrieveKeywordRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveKeyword.");const i={},r={},a=await this.request({path:"/api/keyword/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>qn(o))}async retrieveKeyword(t,n){return await(await this.retrieveKeywordRaw(t,n)).value()}async retrieveMealPlanRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveMealPlan.");const i={},r={},a=await this.request({path:"/api/meal-plan/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>qi(o))}async retrieveMealPlan(t,n){return await(await this.retrieveMealPlanRaw(t,n)).value()}async retrieveMealTypeRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveMealType.");const i={},r={},a=await this.request({path:"/api/meal-type/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>$i(o))}async retrieveMealType(t,n){return await(await this.retrieveMealTypeRaw(t,n)).value()}async retrieveOpenDataCategoryRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveOpenDataCategory.");const i={},r={},a=await this.request({path:"/api/open-data-category/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>Bi(o))}async retrieveOpenDataCategory(t,n){return await(await this.retrieveOpenDataCategoryRaw(t,n)).value()}async retrieveOpenDataConversionRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveOpenDataConversion.");const i={},r={},a=await this.request({path:"/api/open-data-conversion/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>Vi(o))}async retrieveOpenDataConversion(t,n){return await(await this.retrieveOpenDataConversionRaw(t,n)).value()}async retrieveOpenDataFoodRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveOpenDataFood.");const i={},r={},a=await this.request({path:"/api/open-data-food/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>Mi(o))}async retrieveOpenDataFood(t,n){return await(await this.retrieveOpenDataFoodRaw(t,n)).value()}async retrieveOpenDataPropertyRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveOpenDataProperty.");const i={},r={},a=await this.request({path:"/api/open-data-property/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>Ji(o))}async retrieveOpenDataProperty(t,n){return await(await this.retrieveOpenDataPropertyRaw(t,n)).value()}async retrieveOpenDataStoreRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveOpenDataStore.");const i={},r={},a=await this.request({path:"/api/open-data-store/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>zi(o))}async retrieveOpenDataStore(t,n){return await(await this.retrieveOpenDataStoreRaw(t,n)).value()}async retrieveOpenDataUnitRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveOpenDataUnit.");const i={},r={},a=await this.request({path:"/api/open-data-unit/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>Hi(o))}async retrieveOpenDataUnit(t,n){return await(await this.retrieveOpenDataUnitRaw(t,n)).value()}async retrieveOpenDataVersionRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveOpenDataVersion.");const i={},r={},a=await this.request({path:"/api/open-data-version/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>Gi(o))}async retrieveOpenDataVersion(t,n){return await(await this.retrieveOpenDataVersionRaw(t,n)).value()}async retrievePropertyRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveProperty.");const i={},r={},a=await this.request({path:"/api/food-property/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>Ki(o))}async retrieveProperty(t,n){return await(await this.retrievePropertyRaw(t,n)).value()}async retrievePropertyTypeRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrievePropertyType.");const i={},r={},a=await this.request({path:"/api/food-property-type/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>Wi(o))}async retrievePropertyType(t,n){return await(await this.retrievePropertyTypeRaw(t,n)).value()}async retrieveRecipeRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveRecipe.");const i={},r={},a=await this.request({path:"/api/recipe/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>Yi(o))}async retrieveRecipe(t,n){return await(await this.retrieveRecipeRaw(t,n)).value()}async retrieveRecipeBookRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveRecipeBook.");const i={},r={},a=await this.request({path:"/api/recipe-book/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>Zi(o))}async retrieveRecipeBook(t,n){return await(await this.retrieveRecipeBookRaw(t,n)).value()}async retrieveRecipeBookEntryRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveRecipeBookEntry.");const i={},r={},a=await this.request({path:"/api/recipe-book-entry/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>Xi(o))}async retrieveRecipeBookEntry(t,n){return await(await this.retrieveRecipeBookEntryRaw(t,n)).value()}async retrieveShoppingListRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveShoppingList.");const i={},r={},a=await this.request({path:"/api/shopping-list/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>Qi(o))}async retrieveShoppingList(t,n){return await(await this.retrieveShoppingListRaw(t,n)).value()}async retrieveShoppingListEntryRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveShoppingListEntry.");const i={},r={},a=await this.request({path:"/api/shopping-list-entry/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>ji(o))}async retrieveShoppingListEntry(t,n){return await(await this.retrieveShoppingListEntryRaw(t,n)).value()}async retrieveShoppingListRecipeRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveShoppingListRecipe.");const i={},r={},a=await this.request({path:"/api/shopping-list-recipe/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>er(o))}async retrieveShoppingListRecipe(t,n){return await(await this.retrieveShoppingListRecipeRaw(t,n)).value()}async retrieveSpaceRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveSpace.");const i={},r={},a=await this.request({path:"/api/space/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>gs(o))}async retrieveSpace(t,n){return await(await this.retrieveSpaceRaw(t,n)).value()}async retrieveStepRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveStep.");const i={},r={},a=await this.request({path:"/api/step/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>ur(o))}async retrieveStep(t,n){return await(await this.retrieveStepRaw(t,n)).value()}async retrieveStorageRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveStorage.");const i={},r={},a=await this.request({path:"/api/storage/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>tr(o))}async retrieveStorage(t,n){return await(await this.retrieveStorageRaw(t,n)).value()}async retrieveSupermarketRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveSupermarket.");const i={},r={},a=await this.request({path:"/api/supermarket/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>nr(o))}async retrieveSupermarket(t,n){return await(await this.retrieveSupermarketRaw(t,n)).value()}async retrieveSupermarketCategoryRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveSupermarketCategory.");const i={},r={},a=await this.request({path:"/api/supermarket-category/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>ii(o))}async retrieveSupermarketCategory(t,n){return await(await this.retrieveSupermarketCategoryRaw(t,n)).value()}async retrieveSupermarketCategoryRelationRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveSupermarketCategoryRelation.");const i={},r={},a=await this.request({path:"/api/supermarket-category-relation/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>pr(o))}async retrieveSupermarketCategoryRelation(t,n){return await(await this.retrieveSupermarketCategoryRelationRaw(t,n)).value()}async retrieveSyncRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveSync.");const i={},r={},a=await this.request({path:"/api/sync/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>ir(o))}async retrieveSync(t,n){return await(await this.retrieveSyncRaw(t,n)).value()}async retrieveSyncLogRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveSyncLog.");const i={},r={},a=await this.request({path:"/api/sync-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>Tm(o))}async retrieveSyncLog(t,n){return await(await this.retrieveSyncLogRaw(t,n)).value()}async retrieveUnitRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveUnit.");const i={},r={},a=await this.request({path:"/api/unit/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>ai(o))}async retrieveUnit(t,n){return await(await this.retrieveUnitRaw(t,n)).value()}async retrieveUnitConversionRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveUnitConversion.");const i={},r={},a=await this.request({path:"/api/unit-conversion/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>rr(o))}async retrieveUnitConversion(t,n){return await(await this.retrieveUnitConversionRaw(t,n)).value()}async retrieveUserRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveUser.");const i={},r={},a=await this.request({path:"/api/user/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>_s(o))}async retrieveUser(t,n){return await(await this.retrieveUserRaw(t,n)).value()}async retrieveUserFileRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveUserFile.");const i={},r={},a=await this.request({path:"/api/user-file/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>ar(o))}async retrieveUserFile(t,n){return await(await this.retrieveUserFileRaw(t,n)).value()}async retrieveUserPreferenceRaw(t,n){if(t.user===null||t.user===void 0)throw new _("user","Required parameter requestParameters.user was null or undefined when calling retrieveUserPreference.");const i={},r={},a=await this.request({path:"/api/user-preference/{user}/".replace("{user}",encodeURIComponent(String(t.user))),method:"GET",headers:r,query:i},n);return new w(a,o=>Ss(o))}async retrieveUserPreference(t,n){return await(await this.retrieveUserPreferenceRaw(t,n)).value()}async retrieveUserSpaceRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveUserSpace.");const i={},r={},a=await this.request({path:"/api/user-space/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>Zs(o))}async retrieveUserSpace(t,n){return await(await this.retrieveUserSpaceRaw(t,n)).value()}async retrieveViewLogRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveViewLog.");const i={},r={},a=await this.request({path:"/api/view-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return new w(a,o=>fr(o))}async retrieveViewLog(t,n){return await(await this.retrieveViewLogRaw(t,n)).value()}async retrievedownloadFileRaw(t,n){if(t.fileId===null||t.fileId===void 0)throw new _("fileId","Required parameter requestParameters.fileId was null or undefined when calling retrievedownloadFile.");const i={},r={},a=await this.request({path:"/api/download-file/{file_id}/".replace("{file_id}",encodeURIComponent(String(t.fileId))),method:"GET",headers:r,query:i},n);return this.isJsonMime(a.headers.get("content-type"))?new w(a):new Nn(a)}async retrievedownloadFile(t,n){return await(await this.retrievedownloadFileRaw(t,n)).value()}async retrieveshareLinkRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling retrieveshareLink.");const i={},r={},a=await this.request({path:"/api/share-link/{id}".replace("{id}",encodeURIComponent(String(t.id))),method:"GET",headers:r,query:i},n);return this.isJsonMime(a.headers.get("content-type"))?new w(a):new Nn(a)}async retrieveshareLink(t,n){return await(await this.retrieveshareLinkRaw(t,n)).value()}async retrieveswitchActiveSpaceRaw(t,n){if(t.spaceId===null||t.spaceId===void 0)throw new _("spaceId","Required parameter requestParameters.spaceId was null or undefined when calling retrieveswitchActiveSpace.");const i={},r={},a=await this.request({path:"/api/switch-active-space/{space_id}/".replace("{space_id}",encodeURIComponent(String(t.spaceId))),method:"GET",headers:r,query:i},n);return this.isJsonMime(a.headers.get("content-type"))?new w(a):new Nn(a)}async retrieveswitchActiveSpace(t,n){return await(await this.retrieveswitchActiveSpaceRaw(t,n)).value()}async shoppingFoodRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling shoppingFood.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/food/{id}/shopping/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:aS(t.foodShoppingUpdate)},n);return new w(a,o=>iS(o))}async shoppingFood(t,n){return await(await this.shoppingFoodRaw(t,n)).value()}async shoppingRecipeRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling shoppingRecipe.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/recipe/{id}/shopping/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:jR(t.recipeShoppingUpdate)},n);return new w(a,o=>XR(o))}async shoppingRecipe(t,n){return await(await this.shoppingRecipeRaw(t,n)).value()}async updateAccessTokenRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateAccessToken.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/access-token/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Vo(t.accessToken)},n);return new w(a,o=>Ai(o))}async updateAccessToken(t,n){return await(await this.updateAccessTokenRaw(t,n)).value()}async updateAutomationRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateAutomation.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/automation/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Mo(t.automation)},n);return new w(a,o=>Di(o))}async updateAutomation(t,n){return await(await this.updateAutomationRaw(t,n)).value()}async updateBookmarkletImportRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateBookmarkletImport.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/bookmarklet-import/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Jo(t.bookmarkletImport)},n);return new w(a,o=>ua(o))}async updateBookmarkletImport(t,n){return await(await this.updateBookmarkletImportRaw(t,n)).value()}async updateCookLogRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateCookLog.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/cook-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:zo(t.cookLog)},n);return new w(a,o=>sr(o))}async updateCookLog(t,n){return await(await this.updateCookLogRaw(t,n)).value()}async updateCustomFilterRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateCustomFilter.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/custom-filter/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Ho(t.customFilter)},n);return new w(a,o=>Ui(o))}async updateCustomFilter(t,n){return await(await this.updateCustomFilterRaw(t,n)).value()}async updateExportLogRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateExportLog.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/export-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Go(t.exportLog)},n);return new w(a,o=>lr(o))}async updateExportLog(t,n){return await(await this.updateExportLogRaw(t,n)).value()}async updateFoodRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateFood.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/food/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:ni(t.food)},n);return new w(a,o=>gn(o))}async updateFood(t,n){return await(await this.updateFoodRaw(t,n)).value()}async updateImportLogRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateImportLog.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/import-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Ko(t.importLog)},n);return new w(a,o=>dr(o))}async updateImportLog(t,n){return await(await this.updateImportLogRaw(t,n)).value()}async updateIngredientRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateIngredient.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/ingredient/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Wo(t.ingredient)},n);return new w(a,o=>cr(o))}async updateIngredient(t,n){return await(await this.updateIngredientRaw(t,n)).value()}async updateInviteLinkRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateInviteLink.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/invite-link/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Yo(t.inviteLink)},n);return new w(a,o=>Li(o))}async updateInviteLink(t,n){return await(await this.updateInviteLinkRaw(t,n)).value()}async updateKeywordRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateKeyword.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/keyword/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Ni(t.keyword)},n);return new w(a,o=>qn(o))}async updateKeyword(t,n){return await(await this.updateKeywordRaw(t,n)).value()}async updateMealPlanRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateMealPlan.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/meal-plan/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:jo(t.mealPlan)},n);return new w(a,o=>qi(o))}async updateMealPlan(t,n){return await(await this.updateMealPlanRaw(t,n)).value()}async updateMealTypeRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateMealType.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/meal-type/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:es(t.mealType)},n);return new w(a,o=>$i(o))}async updateMealType(t,n){return await(await this.updateMealTypeRaw(t,n)).value()}async updateOpenDataCategoryRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateOpenDataCategory.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/open-data-category/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:ts(t.openDataCategory)},n);return new w(a,o=>Bi(o))}async updateOpenDataCategory(t,n){return await(await this.updateOpenDataCategoryRaw(t,n)).value()}async updateOpenDataConversionRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateOpenDataConversion.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/open-data-conversion/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:ns(t.openDataConversion)},n);return new w(a,o=>Vi(o))}async updateOpenDataConversion(t,n){return await(await this.updateOpenDataConversionRaw(t,n)).value()}async updateOpenDataFoodRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateOpenDataFood.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/open-data-food/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:is(t.openDataFood)},n);return new w(a,o=>Mi(o))}async updateOpenDataFood(t,n){return await(await this.updateOpenDataFoodRaw(t,n)).value()}async updateOpenDataPropertyRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateOpenDataProperty.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/open-data-property/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:rs(t.openDataProperty)},n);return new w(a,o=>Ji(o))}async updateOpenDataProperty(t,n){return await(await this.updateOpenDataPropertyRaw(t,n)).value()}async updateOpenDataStoreRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateOpenDataStore.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/open-data-store/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:as(t.openDataStore)},n);return new w(a,o=>zi(o))}async updateOpenDataStore(t,n){return await(await this.updateOpenDataStoreRaw(t,n)).value()}async updateOpenDataUnitRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateOpenDataUnit.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/open-data-unit/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:os(t.openDataUnit)},n);return new w(a,o=>Hi(o))}async updateOpenDataUnit(t,n){return await(await this.updateOpenDataUnitRaw(t,n)).value()}async updateOpenDataVersionRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateOpenDataVersion.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/open-data-version/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:ss(t.openDataVersion)},n);return new w(a,o=>Gi(o))}async updateOpenDataVersion(t,n){return await(await this.updateOpenDataVersionRaw(t,n)).value()}async updatePropertyRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateProperty.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/food-property/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:ls(t.property)},n);return new w(a,o=>Ki(o))}async updateProperty(t,n){return await(await this.updatePropertyRaw(t,n)).value()}async updatePropertyTypeRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updatePropertyType.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/food-property-type/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:ds(t.propertyType)},n);return new w(a,o=>Wi(o))}async updatePropertyType(t,n){return await(await this.updatePropertyTypeRaw(t,n)).value()}async updateRecipeRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateRecipe.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/recipe/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:cs(t.recipe)},n);return new w(a,o=>Yi(o))}async updateRecipe(t,n){return await(await this.updateRecipeRaw(t,n)).value()}async updateRecipeBookRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateRecipeBook.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/recipe-book/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:us(t.recipeBook)},n);return new w(a,o=>Zi(o))}async updateRecipeBook(t,n){return await(await this.updateRecipeBookRaw(t,n)).value()}async updateRecipeBookEntryRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateRecipeBookEntry.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/recipe-book-entry/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:ps(t.recipeBookEntry)},n);return new w(a,o=>Xi(o))}async updateRecipeBookEntry(t,n){return await(await this.updateRecipeBookEntryRaw(t,n)).value()}async updateShoppingListRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateShoppingList.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/shopping-list/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:fs(t.shoppingList)},n);return new w(a,o=>Qi(o))}async updateShoppingList(t,n){return await(await this.updateShoppingListRaw(t,n)).value()}async updateShoppingListEntryRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateShoppingListEntry.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/shopping-list-entry/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:ms(t.shoppingListEntry)},n);return new w(a,o=>ji(o))}async updateShoppingListEntry(t,n){return await(await this.updateShoppingListEntryRaw(t,n)).value()}async updateShoppingListRecipeRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateShoppingListRecipe.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/shopping-list-recipe/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:hs(t.shoppingListRecipe)},n);return new w(a,o=>er(o))}async updateShoppingListRecipe(t,n){return await(await this.updateShoppingListRecipeRaw(t,n)).value()}async updateStepRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateStep.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/step/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Zo(t.step)},n);return new w(a,o=>ur(o))}async updateStep(t,n){return await(await this.updateStepRaw(t,n)).value()}async updateStorageRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateStorage.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/storage/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:ys(t.storage)},n);return new w(a,o=>tr(o))}async updateStorage(t,n){return await(await this.updateStorageRaw(t,n)).value()}async updateSupermarketRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateSupermarket.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/supermarket/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:vs(t.supermarket)},n);return new w(a,o=>nr(o))}async updateSupermarket(t,n){return await(await this.updateSupermarketRaw(t,n)).value()}async updateSupermarketCategoryRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateSupermarketCategory.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/supermarket-category/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:fa(t.supermarketCategory)},n);return new w(a,o=>ii(o))}async updateSupermarketCategory(t,n){return await(await this.updateSupermarketCategoryRaw(t,n)).value()}async updateSupermarketCategoryRelationRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateSupermarketCategoryRelation.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/supermarket-category-relation/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Xo(t.supermarketCategoryRelation)},n);return new w(a,o=>pr(o))}async updateSupermarketCategoryRelation(t,n){return await(await this.updateSupermarketCategoryRelationRaw(t,n)).value()}async updateSyncRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateSync.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/sync/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:ws(t.sync)},n);return new w(a,o=>ir(o))}async updateSync(t,n){return await(await this.updateSyncRaw(t,n)).value()}async updateUnitRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateUnit.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/unit/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:pa(t.unit)},n);return new w(a,o=>ai(o))}async updateUnit(t,n){return await(await this.updateUnitRaw(t,n)).value()}async updateUnitConversionRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateUnitConversion.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/unit-conversion/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:bs(t.unitConversion)},n);return new w(a,o=>rr(o))}async updateUnitConversion(t,n){return await(await this.updateUnitConversionRaw(t,n)).value()}async updateUserFileRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateUserFile.");if(t.name===null||t.name===void 0)throw new _("name","Required parameter requestParameters.name was null or undefined when calling updateUserFile.");if(t.file===null||t.file===void 0)throw new _("file","Required parameter requestParameters.file was null or undefined when calling updateUserFile.");const i={},r={},o=ca([{contentType:"multipart/form-data"}]);let s,d=!1;d=o,d?s=new FormData:s=new URLSearchParams,t.id2!==void 0&&s.append("id",t.id2),t.name!==void 0&&s.append("name",t.name),t.file!==void 0&&s.append("file",t.file),t.fileDownload!==void 0&&s.append("file_download",t.fileDownload),t.preview!==void 0&&s.append("preview",t.preview),t.fileSizeKb!==void 0&&s.append("file_size_kb",t.fileSizeKb);const c=await this.request({path:"/api/user-file/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:s},n);return new w(c,u=>ar(u))}async updateUserFile(t,n){return await(await this.updateUserFileRaw(t,n)).value()}async updateViewLogRaw(t,n){if(t.id===null||t.id===void 0)throw new _("id","Required parameter requestParameters.id was null or undefined when calling updateViewLog.");const i={},r={};r["Content-Type"]="application/json";const a=await this.request({path:"/api/view-log/{id}/".replace("{id}",encodeURIComponent(String(t.id))),method:"PUT",headers:r,query:i,body:Qo(t.viewLog)},n);return new w(a,o=>fr(o))}async updateViewLog(t,n){return await(await this.updateViewLogRaw(t,n)).value()}}const FC=ot({name:"NumberScalerDialog",emits:{change(e){return e}},props:{number:{type:Number,default:0},title:{type:String,default:"Number"}},data(){return{dialog:!1,mutable_number:0}},watch:{number:function(e){this.mutable_number=e}},mounted(){this.mutable_number=this.number},methods:{updateNumber:function(e){e==="half"&&(this.mutable_number=this.number/2),e==="double"&&(this.mutable_number=this.number*2),e==="add"&&(this.mutable_number=this.number+1),e==="sub"&&(this.mutable_number=this.number-1),this.$emit("change",{number:this.mutable_number})}}}),AC=Oe("i",{class:"fas fa-divide"},null,-1),DC=Oe("i",{class:"fas fa-minus"},null,-1),UC=Oe("i",{class:"fas fa-plus"},null,-1),LC=Oe("i",{class:"fas fa-times"},null,-1);function NC(e,t,n,i,r,a){return he(),Ve(Af,{width:"500",activator:"parent",modelValue:e.dialog,"onUpdate:modelValue":t[8]||(t[8]=o=>e.dialog=o)},{activator:J(({props:o})=>[ip(e.$slots,"activator",{},()=>[m(tt,Ae(o,{text:"Open Dialog"}),null,16)])]),default:J(({isActive:o})=>[m(en,{title:e.title},{default:J(()=>[m(rn,null,{default:J(()=>[Be(" Change Number ")]),_:1}),m(rn,null,{default:J(()=>[m(Da,{divided:"",color:"primary"},{default:J(()=>[m(tt,{onClick:t[0]||(t[0]=s=>e.updateNumber("half"))},{default:J(()=>[AC,Be(" 2 ")]),_:1}),m(tt,{onClick:t[1]||(t[1]=s=>e.updateNumber("sub"))},{default:J(()=>[DC]),_:1}),m(tt,{onClick:t[2]||(t[2]=s=>e.updateNumber("prompt"))},{default:J(()=>[Be(Pe(e.mutable_number),1)]),_:1}),m(tt,{onClick:t[3]||(t[3]=s=>e.updateNumber("add"))},{default:J(()=>[UC]),_:1}),m(tt,{onClick:t[4]||(t[4]=s=>e.updateNumber("double"))},{default:J(()=>[LC,Be(" 2 ")]),_:1})]),_:1}),m(Vf,{type:"number",modelValue:e.mutable_number,"onUpdate:modelValue":t[5]||(t[5]=s=>e.mutable_number=s),modelModifiers:{number:!0},onChange:t[6]||(t[6]=s=>e.updateNumber("set"))},null,8,["modelValue"])]),_:1}),m(wf,null,{default:J(()=>[m(tt,{rounded:"",variant:"outlined",onClick:t[7]||(t[7]=s=>e.dialog=!1)},{default:J(()=>[Be("Close")]),_:1})]),_:1})]),_:1},8,["title"])]),_:3},8,["modelValue"])}const qC=ft(FC,[["render",NC]]),$C=ot({name:"IngredientsTableRow",props:{ingredient:{type:{},required:!0}},data(){return{show_tooltip:!1}}}),BC=G({id:String,text:String,...Np(Wl({closeOnBack:!1,location:"end",locationStrategy:"connected",eager:!0,minWidth:0,offset:10,openOnClick:!1,openOnHover:!0,origin:"auto",scrim:!1,scrollStrategy:"reposition",transition:!1}),["absolute","persistent"])},"VTooltip"),VC=le()({name:"VTooltip",props:BC(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const i=xt(e,"modelValue"),{scopeId:r}=Kl(),a=ln(),o=S(()=>e.id||`v-tooltip-${a}`),s=we(),d=S(()=>e.location.split(" ").length>1?e.location:e.location+" center"),c=S(()=>e.origin==="auto"||e.origin==="overlap"||e.origin.split(" ").length>1||e.location.split(" ").length>1?e.origin:e.origin+" center"),u=S(()=>e.transition?e.transition:i.value?"scale-transition":"fade-transition"),p=S(()=>Ae({"aria-describedby":o.value},e.activatorProps));return me(()=>{const f=Ba.filterProps(e);return m(Ba,Ae({ref:s,class:["v-tooltip",e.class],style:e.style,id:o.value},f,{modelValue:i.value,"onUpdate:modelValue":h=>i.value=h,transition:u.value,absolute:!0,location:d.value,origin:c.value,persistent:!0,role:"tooltip",activatorProps:p.value,_disableGlobalStack:!0},r),{activator:n.activator,default:function(){var R;for(var h=arguments.length,y=new Array(h),v=0;ve.show_tooltip=!e.show_tooltip)},{default:J(()=>[m(VC,{modelValue:e.show_tooltip,"onUpdate:modelValue":t[0]||(t[0]=o=>e.show_tooltip=o),activator:"parent",location:"start"},{default:J(()=>[Be(Pe(e.ingredient.note),1)]),_:1},8,["modelValue"])]),_:1})):wt("",!0)])])}const Fm=ft($C,[["render",HC]]),GC=ot({name:"IngredientsTable",components:{IngredientsTableRow:Fm},props:{ingredients:{type:Array,default:[]}},mounted(){}}),KC=G({fixedHeader:Boolean,fixedFooter:Boolean,height:[Number,String],hover:Boolean,...ge(),...$t(),...He(),...Ye()},"VTable"),WC=le()({name:"VTable",props:KC(),setup(e,t){let{slots:n,emit:i}=t;const{themeClasses:r}=je(e),{densityClasses:a}=cn(e);return me(()=>m(e.tag,{class:["v-table",{"v-table--fixed-height":!!e.height,"v-table--fixed-header":e.fixedHeader,"v-table--fixed-footer":e.fixedFooter,"v-table--has-top":!!n.top,"v-table--has-bottom":!!n.bottom,"v-table--hover":e.hover},r.value,a.value,e.class],style:e.style},{default:()=>{var o,s,d;return[(o=n.top)==null?void 0:o.call(n),n.default?m("div",{class:"v-table__wrapper",style:{height:se(e.height)}},[m("table",null,[n.default()])]):(s=n.wrapper)==null?void 0:s.call(n),(d=n.bottom)==null?void 0:d.call(n)]}})),{}}});function YC(e,t,n,i,r,a){const o=At("IngredientsTableRow");return e.ingredients.length>0?(he(),Ve(WC,{key:0,density:"compact"},{default:J(()=>[Oe("tbody",null,[(he(!0),rt(Re,null,wi(e.ingredients,s=>(he(),Ve(o,{ingredient:s,key:s.id},null,8,["ingredient"]))),128))])]),_:1})):wt("",!0)}const ad=ft(GC,[["render",YC]]),ZC=ot({name:"StepsOverview",components:{IngredientsTable:ad,IngredientsTableRow:Fm},props:{steps:{type:Array,default:[]}}}),$r=Symbol.for("vuetify:v-expansion-panel"),XC=["default","accordion","inset","popout"],QC=G({color:String,static:Boolean,variant:{type:String,default:"default",validator:e=>XC.includes(e)},readonly:Boolean,...ge(),...Gr(),...He(),...Ye()},"VExpansionPanels"),jC=le()({name:"VExpansionPanels",props:QC(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;Kr(e,$r);const{themeClasses:i}=je(e),r=S(()=>e.variant&&`v-expansion-panels--variant-${e.variant}`);return dn({VExpansionPanel:{color:Se(e,"color"),readonly:Se(e,"readonly"),static:Se(e,"static")}}),me(()=>m(e.tag,{class:["v-expansion-panels",i.value,r.value,e.class],style:e.style},n)),{}}}),e1=G({...ge(),...Gl()},"VExpansionPanelText"),Am=le()({name:"VExpansionPanelText",props:e1(),setup(e,t){let{slots:n}=t;const i=Le($r);if(!i)throw new Error("[Vuetify] v-expansion-panel-text needs to be placed inside v-expansion-panel");const{hasContent:r,onAfterLeave:a}=Ef(e,i.isSelected);return me(()=>m(Cf,{onAfterLeave:a},{default:()=>{var o;return[Pt(m("div",{class:["v-expansion-panel-text",e.class],style:e.style},[n.default&&r.value&&m("div",{class:"v-expansion-panel-text__wrapper"},[(o=n.default)==null?void 0:o.call(n)])]),[[bi,i.isSelected.value]])]}})),{}}}),Dm=G({color:String,expandIcon:{type:Ne,default:"$expand"},collapseIcon:{type:Ne,default:"$collapse"},hideActions:Boolean,static:Boolean,ripple:{type:[Boolean,Object],default:!1},readonly:Boolean,...ge()},"VExpansionPanelTitle"),t1=le()({name:"VExpansionPanelTitle",directives:{Ripple:uo},props:Dm(),setup(e,t){let{slots:n}=t;const i=Le($r);if(!i)throw new Error("[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel");const{backgroundColorClasses:r,backgroundColorStyles:a}=Lt(e,"color"),o=S(()=>({collapseIcon:e.collapseIcon,disabled:i.disabled.value,expanded:i.isSelected.value,expandIcon:e.expandIcon,readonly:e.readonly}));return me(()=>{var s;return Pt(m("button",{class:["v-expansion-panel-title",{"v-expansion-panel-title--active":i.isSelected.value,"v-expansion-panel-title--static":e.static},r.value,e.class],style:[a.value,e.style],type:"button",tabindex:i.disabled.value?-1:void 0,disabled:i.disabled.value,"aria-expanded":i.isSelected.value,onClick:e.readonly?void 0:i.toggle},[m("span",{class:"v-expansion-panel-title__overlay"},null),(s=n.default)==null?void 0:s.call(n,o.value),!e.hideActions&&m("span",{class:"v-expansion-panel-title__icon"},[n.actions?n.actions(o.value):m(Je,{icon:i.isSelected.value?e.collapseIcon:e.expandIcon},null)])]),[[Qn("ripple"),e.ripple]])}),{}}}),n1=G({title:String,text:String,bgColor:String,...ge(),...un(),...Ll(),...Gl(),...St(),...He(),...Dm()},"VExpansionPanel"),i1=le()({name:"VExpansionPanel",props:n1(),emits:{"group:selected":e=>!0},setup(e,t){let{slots:n}=t;const i=Nl(e,$r),{backgroundColorClasses:r,backgroundColorStyles:a}=Lt(e,"bgColor"),{elevationClasses:o}=xn(e),{roundedClasses:s}=Et(e),d=S(()=>(i==null?void 0:i.disabled.value)||e.disabled),c=S(()=>i.group.items.value.reduce((f,h,y)=>(i.group.selected.value.includes(h.id)&&f.push(y),f),[])),u=S(()=>{const f=i.group.items.value.findIndex(h=>h.id===i.id);return!i.isSelected.value&&c.value.some(h=>h-f===1)}),p=S(()=>{const f=i.group.items.value.findIndex(h=>h.id===i.id);return!i.isSelected.value&&c.value.some(h=>h-f===-1)});return _t($r,i),dn({VExpansionPanelText:{eager:Se(e,"eager")},VExpansionPanelTitle:{readonly:Se(e,"readonly")}}),me(()=>{const f=!!(n.text||e.text),h=!!(n.title||e.title);return m(e.tag,{class:["v-expansion-panel",{"v-expansion-panel--active":i.isSelected.value,"v-expansion-panel--before-active":u.value,"v-expansion-panel--after-active":p.value,"v-expansion-panel--disabled":d.value},s.value,r.value,e.class],style:[a.value,e.style]},{default:()=>{var y;return[m("div",{class:["v-expansion-panel__shadow",...o.value]},null),h&&m(t1,{key:"title",collapseIcon:e.collapseIcon,color:e.color,expandIcon:e.expandIcon,hideActions:e.hideActions,ripple:e.ripple},{default:()=>[n.title?n.title():e.title]}),f&&m(Am,{key:"text"},{default:()=>[n.text?n.text():e.text]}),(y=n.default)==null?void 0:y.call(n)]}})}),{}}}),r1={key:0};function a1(e,t,n,i,r,a){const o=At("IngredientsTable");return he(),Ve(jC,null,{default:J(()=>[m(i1,{title:"Steps Overview"},{default:J(()=>[m(Am,null,{default:J(()=>[m(fo,null,{default:J(()=>[(he(!0),rt(Re,null,wi(e.steps,(s,d)=>(he(),Ve(Yr,null,{default:J(()=>[m(Kn,{class:"pa-1"},{default:J(()=>[s.showAsHeader?(he(),rt("b",r1,Pe(d+1)+". "+Pe(s.name),1)):wt("",!0),m(o,{ingredients:s.ingredients},null,8,["ingredients"])]),_:2},1024)]),_:2},1024))),256))]),_:1})]),_:1})]),_:1})]),_:1})}const o1=ft(ZC,[["render",a1]]),s1=ot({name:"Step",components:{IngredientsTable:ad},props:{step:{type:{},required:!0}}}),l1=Oe("i",{class:"fas fa-stopwatch mr-1"},null,-1),d1=Oe("i",{class:"fas fa-check"},null,-1);function c1(e,t,n,i,r,a){const o=At("IngredientsTable");return he(),Ve(en,null,{default:J(()=>{var s;return[m(Wr,null,{default:J(()=>[m(Yr,null,{default:J(()=>[m(Kn,null,{default:J(()=>[Be(Pe(e.step.name),1)]),_:1}),m(Kn,{class:"text-right"},{default:J(()=>[m(Da,{density:"compact",variant:"tonal"},{default:J(()=>[e.step.time>0?(he(),Ve(tt,{key:0,size:"small",color:"info"},{default:J(()=>[l1,Be(" "+Pe(e.step.time),1)]),_:1})):wt("",!0),m(tt,{size:"small",color:"success"},{default:J(()=>[d1]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),m(o,{ingredients:e.step.ingredients},null,8,["ingredients"]),((s=e.step.instruction)==null?void 0:s.length)>0?(he(),Ve(rn,{key:0},{default:J(()=>[Be(Pe(e.step.instruction),1)]),_:1})):wt("",!0)]}),_:1})}const u1=ft(s1,[["render",c1]]),p1=ot({name:"RecipeActivity",props:{recipe:{type:Object,required:!0}},data(){return{cook_logs:[]}},mounted(){new xm().listCookLogs({recipe:this.recipe.id}).then(t=>{this.cook_logs=t.results})}}),f1=G({align:{type:String,default:"center",validator:e=>["center","start"].includes(e)},direction:{type:String,default:"vertical",validator:e=>["vertical","horizontal"].includes(e)},justify:{type:String,default:"auto",validator:e=>["auto","center"].includes(e)},side:{type:String,validator:e=>e==null||["start","end"].includes(e)},lineInset:{type:[String,Number],default:0},lineThickness:{type:[String,Number],default:2},lineColor:String,truncateLine:{type:String,validator:e=>["start","end","both"].includes(e)},...ge(),...$t(),...He(),...Ye()},"VTimeline"),m1=le()({name:"VTimeline",props:f1(),setup(e,t){let{slots:n}=t;const{themeClasses:i}=je(e),{densityClasses:r}=cn(e),{rtlClasses:a}=Yt();dn({VTimelineDivider:{lineColor:Se(e,"lineColor")},VTimelineItem:{density:Se(e,"density"),lineInset:Se(e,"lineInset")}});const o=S(()=>{const d=e.side?e.side:e.density!=="default"?"end":null;return d&&`v-timeline--side-${d}`}),s=S(()=>{const d=["v-timeline--truncate-line-start","v-timeline--truncate-line-end"];switch(e.truncateLine){case"both":return d;case"start":return d[0];case"end":return d[1];default:return null}});return me(()=>m(e.tag,{class:["v-timeline",`v-timeline--${e.direction}`,`v-timeline--align-${e.align}`,`v-timeline--justify-${e.justify}`,s.value,{"v-timeline--inset-line":!!e.lineInset},i.value,r.value,o.value,a.value,e.class],style:[{"--v-timeline-line-thickness":se(e.lineThickness)},e.style]},n)),{}}}),h1=G({dotColor:String,fillDot:Boolean,hideDot:Boolean,icon:Ne,iconColor:String,lineColor:String,...ge(),...St(),...En(),...un()},"VTimelineDivider"),g1=le()({name:"VTimelineDivider",props:h1(),setup(e,t){let{slots:n}=t;const{sizeClasses:i,sizeStyles:r}=_i(e,"v-timeline-divider__dot"),{backgroundColorStyles:a,backgroundColorClasses:o}=Lt(Se(e,"dotColor")),{roundedClasses:s}=Et(e,"v-timeline-divider__dot"),{elevationClasses:d}=xn(e),{backgroundColorClasses:c,backgroundColorStyles:u}=Lt(Se(e,"lineColor"));return me(()=>m("div",{class:["v-timeline-divider",{"v-timeline-divider--fill-dot":e.fillDot},e.class],style:e.style},[m("div",{class:["v-timeline-divider__before",c.value],style:u.value},null),!e.hideDot&&m("div",{key:"dot",class:["v-timeline-divider__dot",d.value,s.value,i.value],style:r.value},[m("div",{class:["v-timeline-divider__inner-dot",o.value,s.value],style:a.value},[n.default?m(at,{key:"icon-defaults",disabled:!e.icon,defaults:{VIcon:{color:e.iconColor,icon:e.icon,size:e.size}}},n.default):m(Je,{key:"icon",color:e.iconColor,icon:e.icon,size:e.size},null)])]),m("div",{class:["v-timeline-divider__after",c.value],style:u.value},null)])),{}}}),y1=G({density:String,dotColor:String,fillDot:Boolean,hideDot:Boolean,hideOpposite:{type:Boolean,default:void 0},icon:Ne,iconColor:String,lineInset:[Number,String],...ge(),...zr(),...un(),...St(),...En(),...He()},"VTimelineItem"),v1=le()({name:"VTimelineItem",props:y1(),setup(e,t){let{slots:n}=t;const{dimensionStyles:i}=Hr(e),r=ve(0),a=we();return fe(a,o=>{var s;o&&(r.value=((s=o.$el.querySelector(".v-timeline-divider__dot"))==null?void 0:s.getBoundingClientRect().width)??0)},{flush:"post"}),me(()=>{var o,s;return m("div",{class:["v-timeline-item",{"v-timeline-item--fill-dot":e.fillDot},e.class],style:[{"--v-timeline-dot-size":se(r.value),"--v-timeline-line-inset":e.lineInset?`calc(var(--v-timeline-dot-size) / 2 + ${se(e.lineInset)})`:se(0)},e.style]},[m("div",{class:"v-timeline-item__body",style:i.value},[(o=n.default)==null?void 0:o.call(n)]),m(g1,{ref:a,hideDot:e.hideDot,icon:e.icon,iconColor:e.iconColor,size:e.size,elevation:e.elevation,dotColor:e.dotColor,fillDot:e.fillDot,rounded:e.rounded},{default:n.icon}),e.density!=="compact"&&m("div",{class:"v-timeline-item__opposite"},[!e.hideOpposite&&((s=n.opposite)==null?void 0:s.call(n))])])}),{}}}),w1=Oe("h2",null,"Activity",-1),b1={key:0};function _1(e,t,n,i,r,a){return he(),Ve(fo,null,{default:J(()=>[m(Yr,null,{default:J(()=>[m(Kn,null,{default:J(()=>[w1,m(m1,{side:"end",align:"start"},{default:J(()=>[(he(!0),rt(Re,null,wi(e.cook_logs,o=>(he(),Ve(v1,{"dot-color":"grey",size:"xsmall",key:o.id},{default:J(()=>[m(en,null,{default:J(()=>[m(rn,{class:"bg-primary"},{default:J(()=>[Oe("small",null,Pe(o.createdAt)+" by "+Pe(o.createdBy.displayName),1)]),_:2},1024),m(ed,{density:"compact",size:"small",color:"tandoor",modelValue:o.rating,"onUpdate:modelValue":s=>o.rating=s},null,8,["modelValue","onUpdate:modelValue"]),o.servings!=null&&o.servings>0?(he(),rt("span",b1,Pe(o.servings)+" "+Pe(e.recipe.servingsText),1)):wt("",!0),Oe("p",null,Pe(o.comment),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1})]),_:1})}const S1=ft(p1,[["render",_1]]),R1=ot({name:"RecipeView",components:{RecipeActivity:S1,Step:u1,StepsOverview:o1,IngredientsTable:ad,NumberScalerDialog:qC,KeywordsBar:jl},computed:{},data(){return{}},props:{recipe:{type:Object,required:!0}},mounted(){},methods:{}}),C1=Oe("i",{class:"fas fa-cogs"},null,-1),T1=Oe("br",null,null,-1),k1=Oe("i",{class:"fas fa-hourglass-half"},null,-1),O1=Oe("div",{class:"text-grey"},"Waiting Time",-1),I1=Oe("i",{class:"fas fa-calendar-alt"},null,-1),P1=Oe("br",null,null,-1),E1={class:"text-grey"},x1={key:0},F1={key:1};function A1(e,t,n,i,r,a){const o=At("NumberScalerDialog"),s=At("KeywordsBar"),d=At("StepsOverview"),c=At("Step");return he(),rt(Re,null,[m(Si,{cover:"",lazy:"",src:e.recipe.image},null,8,["src"]),m(en,null,{default:J(()=>{var u;return[m(Wr,null,{default:J(()=>[Be(Pe(e.recipe.name),1)]),_:1}),m(fo,null,{default:J(()=>[m(Yr,{class:"text-center text-body-2"},{default:J(()=>[m(Kn,{class:"pt-1 pb-1"},{default:J(()=>[C1,Be(" "+Pe(e.recipe.workingTime)+" min",1),T1,m(Df,null,{default:J(()=>[Be("Working Time")]),_:1})]),_:1}),m(Kn,{class:"pt-1 pb-1"},{default:J(()=>[Oe("div",null,[k1,Be(" "+Pe(e.recipe.waitingTime)+" min",1)]),O1]),_:1}),m(Kn,{class:"pt-1 pb-1"},{default:J(()=>[m(o,{number:e.recipe.servings,onChange:t[0]||(t[0]=p=>e.recipe.servings=p.number),title:"Servings"},{activator:J(()=>{var p;return[I1,Be(" "+Pe(e.recipe.servings)+" ",1),P1,Oe("div",E1,[(p=e.recipe)!=null&&p.servingsText?(he(),rt("span",x1,Pe(e.recipe.servingsText),1)):(he(),rt("span",F1,"Servings"))])]}),_:1},8,["number"])]),_:1})]),_:1})]),_:1}),(u=e.recipe)!=null&&u.description?(he(),Ve(qa,{key:0},{default:J(()=>[Be(Pe(e.recipe.description),1)]),_:1})):wt("",!0),m(qa,null,{default:J(()=>{var p;return[m(s,{keywords:(p=e.recipe)==null?void 0:p.keywords},null,8,["keywords"])]}),_:1}),m(rn,null,{default:J(()=>[m(wa,{size:"small",color:"primary",label:""},{default:J(()=>[m(Je,{icon:"fa fa-clock",class:"mr-2"}),Be(" "+Pe(e.recipe.workingTime)+" min ",1)]),_:1}),m(wa,{size:"small",color:"primary",label:""},{default:J(()=>[m(Je,{icon:"fas fa-hourglass-half",class:"mr-2"}),Be(" "+Pe(e.recipe.waitingTime)+" min ",1)]),_:1}),m(wa,{size:"small",color:"primary",label:""},{default:J(()=>[m(Je,{icon:"fas fa-calendar",class:"mr-2"}),Be(" "+Pe(e.recipe.lastCooked),1)]),_:1}),m(ed,{modelValue:e.recipe.rating,"onUpdate:modelValue":t[1]||(t[1]=p=>e.recipe.rating=p),color:"tandoor"},null,8,["modelValue"])]),_:1})]}),_:1}),m(en,{class:"mt-1"},{default:J(()=>[m(d,{steps:e.recipe.steps},null,8,["steps"])]),_:1}),(he(!0),rt(Re,null,wi(e.recipe.steps,u=>(he(),Ve(en,{class:"mt-1",key:u.id},{default:J(()=>[m(c,{step:u},null,8,["step"])]),_:2},1024))),128))],64)}const D1=ft(R1,[["render",A1]]),U1=ot({name:"RecipeSearchPage",components:{RecipeView:D1},watch:{id:function(e){this.refreshData(e)}},props:{id:{type:String,required:!0}},data(){return{recipe:{}}},mounted(){this.refreshData(this.id)},methods:{refreshData(e){new xm().retrieveRecipe({id:e}).then(n=>{this.recipe=n})}}});function L1(e,t,n,i,r,a){const o=At("RecipeView");return he(),Ve(o,{recipe:e.recipe},null,8,["recipe"])}const mu=ft(U1,[["render",L1]]),N1=[{path:"/",redirect:"/search",name:"index"},{path:"/search",component:E_,name:"view_search"},{path:"/shopping",component:Bo,name:"view_shopping"},{path:"/mealplan",component:Bo,name:"view_mealplan"},{path:"/books",component:Bo,name:"view_books"},{path:"/recipe/:id",component:mu,name:"view_recipe",props:!0},{path:"/recipe/edit/:id",component:mu,name:"edit_recipe",props:!0}],q1=cv({history:ky(),routes:N1}),go=ay(Cb);go.use(mv());go.use(m_);go.use(q1);go.mount("#app"); diff --git a/cookbook/static/vue3/manifest.json b/cookbook/static/vue3/manifest.json new file mode 100644 index 000000000..f31b84a15 --- /dev/null +++ b/cookbook/static/vue3/manifest.json @@ -0,0 +1,57 @@ +{ + "node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf": { + "file": "assets/fa-brands-400-DtZKBM2a.ttf", + "src": "node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf" + }, + "node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2": { + "file": "assets/fa-brands-400-C99Yv4gD.woff2", + "src": "node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2" + }, + "node_modules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf": { + "file": "assets/fa-regular-400-BMFokQJ2.ttf", + "src": "node_modules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf" + }, + "node_modules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2": { + "file": "assets/fa-regular-400-OOsPf1xj.woff2", + "src": "node_modules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2" + }, + "node_modules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf": { + "file": "assets/fa-solid-900-DM0teJdg.ttf", + "src": "node_modules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf" + }, + "node_modules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2": { + "file": "assets/fa-solid-900-DAI24fNt.woff2", + "src": "node_modules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2" + }, + "node_modules/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.ttf": { + "file": "assets/fa-v4compatibility-F0dlVTLQ.ttf", + "src": "node_modules/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.ttf" + }, + "node_modules/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.woff2": { + "file": "assets/fa-v4compatibility-aR9vOKaP.woff2", + "src": "node_modules/@fortawesome/fontawesome-free/webfonts/fa-v4compatibility.woff2" + }, + "src/apps/tandoor/main.ts": { + "file": "assets/main-Dn7LZ1Sm.js", + "src": "src/apps/tandoor/main.ts", + "isEntry": true, + "css": [ + "assets/main-C0cQ5WeY.css" + ], + "assets": [ + "assets/brand_logo-D4X97p3N.svg", + "assets/fa-brands-400-C99Yv4gD.woff2", + "assets/fa-brands-400-DtZKBM2a.ttf", + "assets/fa-regular-400-OOsPf1xj.woff2", + "assets/fa-regular-400-BMFokQJ2.ttf", + "assets/fa-solid-900-DAI24fNt.woff2", + "assets/fa-solid-900-DM0teJdg.ttf", + "assets/fa-v4compatibility-aR9vOKaP.woff2", + "assets/fa-v4compatibility-F0dlVTLQ.ttf" + ] + }, + "src/assets/brand_logo.svg": { + "file": "assets/brand_logo-D4X97p3N.svg", + "src": "src/assets/brand_logo.svg" + } +} \ No newline at end of file diff --git a/cookbook/templates/frontend/tandoor.html b/cookbook/templates/frontend/tandoor.html new file mode 100644 index 000000000..dc0599358 --- /dev/null +++ b/cookbook/templates/frontend/tandoor.html @@ -0,0 +1,22 @@ +{% load django_vite %} + + + + + Tandoor + + + + + + + +
+ +{% vite_hmr_client %} +{% vite_asset 'src/apps/tandoor/main.ts' %} + + + + + diff --git a/cookbook/urls.py b/cookbook/urls.py index 0d1920851..b09a7c4af 100644 --- a/cookbook/urls.py +++ b/cookbook/urls.py @@ -2,6 +2,7 @@ from pydoc import locate from django.urls import include, path from django.views.generic import TemplateView +from drf_spectacular.views import SpectacularAPIView, SpectacularRedocView from rest_framework import permissions, routers from rest_framework.schemas import get_schema_view @@ -74,6 +75,7 @@ for p in PLUGINS: urlpatterns = [ path('', views.index, name='index'), + path('v3/', views.vue3, name='vue3'), path('setup/', views.setup, name='view_setup'), path('no-group', views.no_groups, name='view_no_group'), path('space-overview', views.space_overview, name='view_space_overview'), @@ -135,8 +137,10 @@ urlpatterns = [ path('telegram/hook//', telegram.hook, name='telegram_hook'), path('docs/markdown/', views.markdown_info, name='docs_markdown'), path('docs/search/', views.search_info, name='docs_search'), - path('docs/api/', views.api_info, name='docs_api'), - path('openapi/', get_schema_view(title="Django Recipes", version=TANDOOR_VERSION, public=True, permission_classes=(permissions.AllowAny,)), name='openapi-schema'), + path('docs/api/', SpectacularRedocView.as_view(url_name='openapi-schema'), name='docs_api'), + + path('openapi/', SpectacularAPIView.as_view(api_version=TANDOOR_VERSION), name='openapi-schema'), + path('api/', include((router.urls, 'api'))), path('api-auth/', include('rest_framework.urls', namespace='rest_framework')), path('api-token-auth/', CustomAuthToken.as_view()), diff --git a/cookbook/views/api.py b/cookbook/views/api.py index dc982c49e..f95716095 100644 --- a/cookbook/views/api.py +++ b/cookbook/views/api.py @@ -33,6 +33,7 @@ from django.urls import reverse from django.utils import timezone from django.utils.translation import gettext as _ from django_scopes import scopes_disabled +from drf_spectacular.utils import extend_schema, OpenApiParameter, extend_schema_view from icalendar import Calendar, Event from oauth2_provider.models import AccessToken from recipe_scrapers import scrape_me @@ -97,13 +98,23 @@ from cookbook.serializer import (AccessTokenSerializer, AutomationSerializer, SyncLogSerializer, SyncSerializer, UnitConversionSerializer, UnitSerializer, UserFileSerializer, UserPreferenceSerializer, UserSerializer, UserSpaceSerializer, ViewLogSerializer, - ShoppingListEntryBulkSerializer, ConnectorConfigConfigSerializer) + ShoppingListEntryBulkSerializer, ConnectorConfigConfigSerializer, RecipeFlatSerializer) from cookbook.views.import_export import get_integration from recipes import settings from recipes.settings import DRF_THROTTLE_RECIPE_URL_IMPORT, FDC_API_KEY -class StandardFilterMixin(ViewSetMixin): +@extend_schema_view( + list=extend_schema( + parameters=[ + OpenApiParameter(name='query', description='lookup if query string is contained within the name, case insensitive', type=str), + OpenApiParameter(name='updated_at', description='if model has an updated_at timestamp, filter only models updated at or after datetime', type=str), # TODO format hint + OpenApiParameter(name='limit', description='limit number of entries to return', type=str), + OpenApiParameter(name='random', description='randomly orders entries (only works together with limit)', type=str), + ] + ) +) +class StandardFilterModelViewSet(viewsets.ModelViewSet): def get_queryset(self): queryset = self.queryset @@ -171,8 +182,14 @@ class ExtendedRecipeMixin(): return queryset +# @extend_schema_view( +# list=extend_schema( +# parameters=[ +# OpenApiParameter(name='query', description='Match name field against against parameter', type=str) +# ] +# ) +# ) class FuzzyFilterMixin(ViewSetMixin, ExtendedRecipeMixin): - schema = FilterSchema() def get_queryset(self): self.queryset = self.queryset.filter(space=self.request.space).order_by(Lower('name').asc()) @@ -186,9 +203,9 @@ class FuzzyFilterMixin(ViewSetMixin, ExtendedRecipeMixin): if query is not None and query not in ["''", '']: if fuzzy and (settings.DATABASES['default']['ENGINE'] == 'django.db.backends.postgresql'): if self.request.user.is_authenticated and any( - [self.model.__name__.lower() in x for x in self.request.user.searchpreference.unaccent.values_list('field', flat=True)] - ): - self.queryset = self.queryset.annotate(trigram=TrigramSimilarity('name__unaccent', query)) + [self.model.__name__.lower() in x for x in self.request.user.searchpreference.unaccent.values_list('field', flat=True)] + ): + self.queryset = self.queryset.annotate(trigram=TrigramSimilarity('name__unaccent', query)) else: self.queryset = self.queryset.annotate(trigram=TrigramSimilarity('name', query)) self.queryset = self.queryset.order_by('-trigram') @@ -296,7 +313,7 @@ class MergeMixin(ViewSetMixin): class TreeMixin(MergeMixin, FuzzyFilterMixin, ExtendedRecipeMixin): - schema = TreeSchema() + # schema = TreeSchema() model = None def get_queryset(self): @@ -485,8 +502,7 @@ class SyncLogViewSet(viewsets.ReadOnlyModelViewSet): return self.queryset.filter(sync__space=self.request.space) -class SupermarketViewSet(viewsets.ModelViewSet, StandardFilterMixin): - schema = FilterSchema() +class SupermarketViewSet(StandardFilterModelViewSet): queryset = Supermarket.objects serializer_class = SupermarketSerializer permission_classes = [CustomIsUser & CustomTokenHasReadWriteScope] @@ -507,7 +523,7 @@ class SupermarketCategoryViewSet(viewsets.ModelViewSet, FuzzyFilterMixin, MergeM return super().get_queryset() -class SupermarketCategoryRelationViewSet(viewsets.ModelViewSet, StandardFilterMixin): +class SupermarketCategoryRelationViewSet(StandardFilterModelViewSet): queryset = SupermarketCategoryRelation.objects serializer_class = SupermarketCategoryRelationSerializer permission_classes = [CustomIsUser & CustomTokenHasReadWriteScope] @@ -518,6 +534,17 @@ class SupermarketCategoryRelationViewSet(viewsets.ModelViewSet, StandardFilterMi return super().get_queryset() +# TODO make TreeMixin a view type and move schema to view type +@extend_schema_view( + list=extend_schema( + parameters=[ + OpenApiParameter(name='query', description='lookup if query string is contained within the name, case insensitive', type=str), + OpenApiParameter(name='updated_at', description='if model has an updated_at timestamp, filter only models updated at or after datetime', type=str), # TODO format hint + OpenApiParameter(name='limit', description='limit number of entries to return', type=str), + OpenApiParameter(name='random', description='randomly orders entries (only works together with limit)', type=str), + ] + ) +) class KeywordViewSet(viewsets.ModelViewSet, TreeMixin): queryset = Keyword.objects model = Keyword @@ -526,7 +553,7 @@ class KeywordViewSet(viewsets.ModelViewSet, TreeMixin): pagination_class = DefaultPagination -class UnitViewSet(viewsets.ModelViewSet, MergeMixin, FuzzyFilterMixin): +class UnitViewSet(StandardFilterModelViewSet, MergeMixin): queryset = Unit.objects model = Unit serializer_class = UnitSerializer @@ -545,6 +572,17 @@ class FoodInheritFieldViewSet(viewsets.ReadOnlyModelViewSet): return super().get_queryset() +# TODO make TreeMixin a view type and move schema to view type +@extend_schema_view( + list=extend_schema( + parameters=[ + OpenApiParameter(name='query', description='lookup if query string is contained within the name, case insensitive', type=str), + OpenApiParameter(name='updated_at', description='if model has an updated_at timestamp, filter only models updated at or after datetime', type=str), # TODO format hint + OpenApiParameter(name='limit', description='limit number of entries to return', type=str), + OpenApiParameter(name='random', description='randomly orders entries (only works together with limit)', type=str), + ] + ) +) class FoodViewSet(viewsets.ModelViewSet, TreeMixin): queryset = Food.objects model = Food @@ -577,25 +615,26 @@ class FoodViewSet(viewsets.ModelViewSet, TreeMixin): return FoodSimpleSerializer return self.serializer_class - @decorators.action(detail=True, methods=['PUT'], serializer_class=FoodShoppingUpdateSerializer, ) - # TODO DRF only allows one action in a decorator action without overriding get_operation_id_base() this should be PUT and DELETE probably - def shopping(self, request, pk): - if self.request.space.demo: - raise PermissionDenied(detail='Not available in demo', code=None) - obj = self.get_object() - shared_users = list(self.request.user.get_shopping_share()) - shared_users.append(request.user) - if request.data.get('_delete', False) == 'true': - ShoppingListEntry.objects.filter(food=obj, checked=False, space=request.space, created_by__in=shared_users).delete() - content = {'msg': _(f'{obj.name} was removed from the shopping list.')} - return Response(content, status=status.HTTP_204_NO_CONTENT) - - amount = request.data.get('amount', 1) - unit = request.data.get('unit', None) - content = {'msg': _(f'{obj.name} was added to the shopping list.')} - - ShoppingListEntry.objects.create(food=obj, amount=amount, unit=unit, space=request.space, created_by=request.user) - return Response(content, status=status.HTTP_204_NO_CONTENT) + # TODO I could not find any usage of this and it causes schema generation issues, so commenting it for now + # @decorators.action(detail=True, methods=['PUT'], serializer_class=FoodShoppingUpdateSerializer, ) + # # TODO DRF only allows one action in a decorator action without overriding get_operation_id_base() this should be PUT and DELETE probably + # def shopping(self, request, pk): + # if self.request.space.demo: + # raise PermissionDenied(detail='Not available in demo', code=None) + # obj = self.get_object() + # shared_users = list(self.request.user.get_shopping_share()) + # shared_users.append(request.user) + # if request.data.get('_delete', False) == 'true': + # ShoppingListEntry.objects.filter(food=obj, checked=False, space=request.space, created_by__in=shared_users).delete() + # content = {'msg': _(f'{obj.name} was removed from the shopping list.')} + # return Response(content, status=status.HTTP_204_NO_CONTENT) + # + # amount = request.data.get('amount', 1) + # unit = request.data.get('unit', None) + # content = {'msg': _(f'{obj.name} was added to the shopping list.')} + # + # ShoppingListEntry.objects.create(food=obj, amount=amount, unit=unit, space=request.space, created_by=request.user) + # return Response(content, status=status.HTTP_204_NO_CONTENT) @decorators.action(detail=True, methods=['POST'], ) def fdc(self, request, pk): @@ -612,8 +651,8 @@ class FoodViewSet(viewsets.ModelViewSet, TreeMixin): return JsonResponse( { 'msg': - 'API Key Rate Limit reached/exceeded, see https://api.data.gov/docs/rate-limits/ for more information. \ - Configure your key in Tandoor using environment FDC_API_KEY variable.' + 'API Key Rate Limit reached/exceeded, see https://api.data.gov/docs/rate-limits/ for more information. \ + Configure your key in Tandoor using environment FDC_API_KEY variable.' }, status=429, json_dumps_params={'indent': 4}) @@ -682,7 +721,7 @@ class FoodViewSet(viewsets.ModelViewSet, TreeMixin): return Response(content, status=status.HTTP_403_FORBIDDEN) -class RecipeBookViewSet(viewsets.ModelViewSet, StandardFilterMixin): +class RecipeBookViewSet(StandardFilterModelViewSet): queryset = RecipeBook.objects serializer_class = RecipeBookSerializer permission_classes = [(CustomIsOwner | CustomIsShared) & CustomTokenHasReadWriteScope] @@ -726,11 +765,15 @@ class RecipeBookEntryViewSet(viewsets.ModelViewSet, viewsets.GenericViewSet): return queryset -class MealPlanAutoSchema(QueryParamAutoSchema): - def is_query(self, path, method): - return self.view.action == 'ical' or super().is_query(path, method) - - +@extend_schema_view( + list=extend_schema( + parameters=[ + OpenApiParameter(name='from_date', description=_('Filter meal plans from date (inclusive) in the format of YYYY-MM-DD.'), type=str), + OpenApiParameter(name='to_date', description=_('Filter meal plans to date (inclusive) in the format of YYYY-MM-DD.'), type=str), + OpenApiParameter(name='meal_type', description=_('Filter meal plans with MealType ID. For multiple repeat parameter.'), type=str), + ] + ) +) class MealPlanViewSet(viewsets.ModelViewSet): """ list: @@ -744,12 +787,6 @@ class MealPlanViewSet(viewsets.ModelViewSet): queryset = MealPlan.objects serializer_class = MealPlanSerializer permission_classes = [(CustomIsOwner | CustomIsShared) & CustomTokenHasReadWriteScope] - query_params = [ - QueryParam(name='from_date', description=_('Filter meal plans from date (inclusive) in the format of YYYY-MM-DD.'), qtype='string'), - QueryParam(name='to_date', description=_('Filter meal plans to date (inclusive) in the format of YYYY-MM-DD.'), qtype='string'), - QueryParam(name='meal_type', description=_('Filter meal plans with MealType ID. For multiple repeat parameter.'), qtype='integer'), - ] - schema = MealPlanAutoSchema() def get_queryset(self): queryset = self.queryset.filter(Q(created_by=self.request.user) | Q(shared=self.request.user)).filter(space=self.request.space).distinct().all() @@ -876,16 +913,19 @@ class IngredientViewSet(viewsets.ModelViewSet): return queryset +@extend_schema_view( + list=extend_schema( + parameters=[ + OpenApiParameter(name='recipe', description=_('ID of recipe a step is part of. For multiple repeat parameter.'), type=int), + OpenApiParameter(name='query', description=_('Query string matched (fuzzy) against object name.'), type=str), + ] + ) +) class StepViewSet(viewsets.ModelViewSet): queryset = Step.objects serializer_class = StepSerializer permission_classes = [CustomIsUser & CustomTokenHasReadWriteScope] pagination_class = DefaultPagination - query_params = [ - QueryParam(name='recipe', description=_('ID of recipe a step is part of. For multiple repeat parameter.'), qtype='integer'), - QueryParam(name='query', description=_('Query string matched (fuzzy) against object name.'), qtype='string'), - ] - schema = QueryParamAutoSchema() def get_queryset(self): recipes = self.request.query_params.getlist('recipe', []) @@ -911,6 +951,39 @@ class RecipePagination(PageNumberPagination): return Response(OrderedDict([('count', self.page.paginator.count), ('next', self.get_next_link()), ('previous', self.get_previous_link()), ('results', data), ])) +@extend_schema_view( + list=extend_schema( + parameters=[ + OpenApiParameter(name='query', description=_('Query string matched (fuzzy) against recipe name. In the future also fulltext search.')), + OpenApiParameter(name='keywords', description=_('ID of keyword a recipe should have. For multiple repeat parameter. Equivalent to keywords_or'), type=int), + OpenApiParameter(name='keywords_or', description=_('Keyword IDs, repeat for multiple. Return recipes with any of the keywords'), type=int), + OpenApiParameter(name='keywords_and', description=_('Keyword IDs, repeat for multiple. Return recipes with all of the keywords.'), type=int), + OpenApiParameter(name='keywords_or_not', description=_('Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords.'), type=int), + OpenApiParameter(name='keywords_and_not', description=_('Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords.'), type=int), + OpenApiParameter(name='foods', description=_('ID of food a recipe should have. For multiple repeat parameter.'), type=int), + OpenApiParameter(name='foods_or', description=_('Food IDs, repeat for multiple. Return recipes with any of the foods'), type=int), + OpenApiParameter(name='foods_and', description=_('Food IDs, repeat for multiple. Return recipes with all of the foods.'), type=int), + OpenApiParameter(name='foods_or_not', description=_('Food IDs, repeat for multiple. Exclude recipes with any of the foods.'), type=int), + OpenApiParameter(name='foods_and_not', description=_('Food IDs, repeat for multiple. Exclude recipes with all of the foods.'), type=int), + OpenApiParameter(name='units', description=_('ID of unit a recipe should have.'), type=int), + OpenApiParameter(name='rating', description=_('Rating a recipe should have or greater. [0 - 5] Negative value filters rating less than.'), type=int), + OpenApiParameter(name='books', description=_('ID of book a recipe should be in. For multiple repeat parameter.')), + OpenApiParameter(name='books_or', description=_('Book IDs, repeat for multiple. Return recipes with any of the books'), type=int), + OpenApiParameter(name='books_and', description=_('Book IDs, repeat for multiple. Return recipes with all of the books.'), type=int), + OpenApiParameter(name='books_or_not', description=_('Book IDs, repeat for multiple. Exclude recipes with any of the books.'), type=int), + OpenApiParameter(name='books_and_not', description=_('Book IDs, repeat for multiple. Exclude recipes with all of the books.'), type=int), + OpenApiParameter(name='internal', description=_('If only internal recipes should be returned. [''true''/''false'']')), + OpenApiParameter(name='random', description=_('Returns the results in randomized order. [''true''/''false'']')), + OpenApiParameter(name='new', description=_('Returns new results first in search results. [''true''/''false'']')), + OpenApiParameter(name='timescooked', description=_('Filter recipes cooked X times or more. Negative values returns cooked less than X times'), type=int), + OpenApiParameter(name='cookedon', description=_('Filter recipes last cooked on or after YYYY-MM-DD. Prepending ''-'' filters on or before date.')), + OpenApiParameter(name='createdon', description=_('Filter recipes created on or after YYYY-MM-DD. Prepending ''-'' filters on or before date.')), + OpenApiParameter(name='updatedon', description=_('Filter recipes updated on or after YYYY-MM-DD. Prepending ''-'' filters on or before date.')), + OpenApiParameter(name='viewedon', description=_('Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending ''-'' filters on or before date.')), + OpenApiParameter(name='makenow', description=_('Filter recipes that can be made with OnHand food. [''true''/''false'']')), + ] + ) +) class RecipeViewSet(viewsets.ModelViewSet): queryset = Recipe.objects serializer_class = RecipeSerializer @@ -918,37 +991,6 @@ class RecipeViewSet(viewsets.ModelViewSet): permission_classes = [CustomRecipePermission & CustomTokenHasReadWriteScope] pagination_class = RecipePagination - query_params = [ - QueryParam(name='query', description=_('Query string matched (fuzzy) against recipe name. In the future also fulltext search.')), - QueryParam(name='keywords', description=_('ID of keyword a recipe should have. For multiple repeat parameter. Equivalent to keywords_or'), qtype='integer'), - QueryParam(name='keywords_or', description=_('Keyword IDs, repeat for multiple. Return recipes with any of the keywords'), qtype='integer'), - QueryParam(name='keywords_and', description=_('Keyword IDs, repeat for multiple. Return recipes with all of the keywords.'), qtype='integer'), - QueryParam(name='keywords_or_not', description=_('Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords.'), qtype='integer'), - QueryParam(name='keywords_and_not', description=_('Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords.'), qtype='integer'), - QueryParam(name='foods', description=_('ID of food a recipe should have. For multiple repeat parameter.'), qtype='integer'), - QueryParam(name='foods_or', description=_('Food IDs, repeat for multiple. Return recipes with any of the foods'), qtype='integer'), - QueryParam(name='foods_and', description=_('Food IDs, repeat for multiple. Return recipes with all of the foods.'), qtype='integer'), - QueryParam(name='foods_or_not', description=_('Food IDs, repeat for multiple. Exclude recipes with any of the foods.'), qtype='integer'), - QueryParam(name='foods_and_not', description=_('Food IDs, repeat for multiple. Exclude recipes with all of the foods.'), qtype='integer'), - QueryParam(name='units', description=_('ID of unit a recipe should have.'), qtype='integer'), - QueryParam(name='rating', description=_('Rating a recipe should have or greater. [0 - 5] Negative value filters rating less than.'), qtype='integer'), - QueryParam(name='books', description=_('ID of book a recipe should be in. For multiple repeat parameter.')), - QueryParam(name='books_or', description=_('Book IDs, repeat for multiple. Return recipes with any of the books'), qtype='integer'), - QueryParam(name='books_and', description=_('Book IDs, repeat for multiple. Return recipes with all of the books.'), qtype='integer'), - QueryParam(name='books_or_not', description=_('Book IDs, repeat for multiple. Exclude recipes with any of the books.'), qtype='integer'), - QueryParam(name='books_and_not', description=_('Book IDs, repeat for multiple. Exclude recipes with all of the books.'), qtype='integer'), - QueryParam(name='internal', description=_('If only internal recipes should be returned. [''true''/''false'']')), - QueryParam(name='random', description=_('Returns the results in randomized order. [''true''/''false'']')), - QueryParam(name='new', description=_('Returns new results first in search results. [''true''/''false'']')), - QueryParam(name='timescooked', description=_('Filter recipes cooked X times or more. Negative values returns cooked less than X times'), qtype='integer'), - QueryParam(name='cookedon', description=_('Filter recipes last cooked on or after YYYY-MM-DD. Prepending ''-'' filters on or before date.')), - QueryParam(name='createdon', description=_('Filter recipes created on or after YYYY-MM-DD. Prepending ''-'' filters on or before date.')), - QueryParam(name='updatedon', description=_('Filter recipes updated on or after YYYY-MM-DD. Prepending ''-'' filters on or before date.')), - QueryParam(name='viewedon', description=_('Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending ''-'' filters on or before date.')), - QueryParam(name='makenow', description=_('Filter recipes that can be made with OnHand food. [''true''/''false'']')), - ] - schema = QueryParamAutoSchema() - def get_queryset(self): share = self.request.query_params.get('share', None) @@ -1077,15 +1119,33 @@ class RecipeViewSet(viewsets.ModelViewSet): qs = obj.get_related_recipes(levels=levels) # TODO: make levels a user setting, included in request data?, keep solely in the backend? return Response(self.serializer_class(qs, many=True).data) + @extend_schema( + responses=RecipeFlatSerializer(many=True) + ) + @decorators.action( + detail=False, + pagination_class=None, + methods=['GET'], + serializer_class=RecipeFlatSerializer, + ) + def flat(self, request): + qs = Recipe.objects.filter( + space=request.space).filter(Q(private=False) | (Q(private=True) & (Q(created_by=self.request.user) | Q(shared=self.request.user)))).all() # TODO limit fields retrieved but .values() kills image + return Response(self.serializer_class(qs, many=True).data) + + +@extend_schema_view( + list=extend_schema( + parameters=[ + OpenApiParameter(name='food_id', description='ID of food to filter for', type=int), + ] + ) +) class UnitConversionViewSet(viewsets.ModelViewSet): queryset = UnitConversion.objects serializer_class = UnitConversionSerializer permission_classes = [CustomIsUser & CustomTokenHasReadWriteScope] - query_params = [ - QueryParam(name='food_id', description='ID of food to filter for', qtype='integer'), - ] - schema = QueryParamAutoSchema() def get_queryset(self): food_id = self.request.query_params.get('food_id', None) @@ -1124,23 +1184,26 @@ class ShoppingListRecipeViewSet(viewsets.ModelViewSet): Q(entries__isnull=True) | Q(entries__created_by=self.request.user) | Q(entries__created_by__in=list(self.request.user.get_shopping_share())) - ).distinct().all() + ).distinct().all() +@extend_schema_view( + list=extend_schema( + parameters=[ + OpenApiParameter(name='id', description=_('Returns the shopping list entry with a primary key of id. Multiple values allowed.'), type=int), + OpenApiParameter( + name='checked', + description=_('Filter shopping list entries on checked. [''true'', ''false'', ''both'', ''recent'']
\ + - ''recent'' includes unchecked items and recently completed items.') + ), + OpenApiParameter(name='supermarket', description=_('Returns the shopping list entries sorted by supermarket category order.'), type=int), + ] + ) +) class ShoppingListEntryViewSet(viewsets.ModelViewSet): queryset = ShoppingListEntry.objects serializer_class = ShoppingListEntrySerializer permission_classes = [(CustomIsOwner | CustomIsShared) & CustomTokenHasReadWriteScope] - query_params = [ - QueryParam(name='id', description=_('Returns the shopping list entry with a primary key of id. Multiple values allowed.'), qtype='integer'), - QueryParam( - name='checked', - description=_('Filter shopping list entries on checked. [''true'', ''false'', ''both'', ''recent'']
\ - - ''recent'' includes unchecked items and recently completed items.') - ), - QueryParam(name='supermarket', description=_('Returns the shopping list entries sorted by supermarket category order.'), qtype='integer'), - ] - schema = QueryParamAutoSchema() def get_queryset(self): self.queryset = self.queryset.filter(space=self.request.space) @@ -1252,8 +1315,7 @@ class BookmarkletImportViewSet(viewsets.ModelViewSet): return self.queryset.filter(space=self.request.space).all() -class UserFileViewSet(viewsets.ModelViewSet, StandardFilterMixin): - schema = FilterSchema() +class UserFileViewSet(StandardFilterModelViewSet): queryset = UserFile.objects serializer_class = UserFileSerializer permission_classes = [CustomIsUser & CustomTokenHasReadWriteScope] @@ -1264,7 +1326,7 @@ class UserFileViewSet(viewsets.ModelViewSet, StandardFilterMixin): return super().get_queryset() -class AutomationViewSet(viewsets.ModelViewSet, StandardFilterMixin): +class AutomationViewSet(StandardFilterModelViewSet): """ list: optional parameters @@ -1289,11 +1351,6 @@ class AutomationViewSet(viewsets.ModelViewSet, StandardFilterMixin): permission_classes = [CustomIsUser & CustomTokenHasReadWriteScope] pagination_class = DefaultPagination - query_params = [ - QueryParam(name='automation_type', description=_('Return the Automations matching the automation type. Multiple values allowed.'), qtype='string'), - ] - schema = QueryParamAutoSchema() - auto_type = { 'FS': 'FOOD_ALIAS', 'UA': 'UNIT_ALIAS', @@ -1307,6 +1364,14 @@ class AutomationViewSet(viewsets.ModelViewSet, StandardFilterMixin): 'NR': 'NAME_REPLACE' } + @extend_schema( + parameters=[ + OpenApiParameter(name='automation_type', description=_('Return the Automations matching the automation type. Multiple values allowed.'), type=str) + ] + ) + def list(self, request, *args, **kwargs): + return super().list(request, *args, **kwargs) + def get_queryset(self): automation_type = self.request.query_params.getlist('automation_type', []) if automation_type: @@ -1315,7 +1380,7 @@ class AutomationViewSet(viewsets.ModelViewSet, StandardFilterMixin): return super().get_queryset() -class InviteLinkViewSet(viewsets.ModelViewSet, StandardFilterMixin): +class InviteLinkViewSet(StandardFilterModelViewSet): queryset = InviteLink.objects serializer_class = InviteLinkSerializer permission_classes = [CustomIsSpaceOwner & CustomIsAdmin & CustomTokenHasReadWriteScope] @@ -1333,7 +1398,7 @@ class InviteLinkViewSet(viewsets.ModelViewSet, StandardFilterMixin): return None -class CustomFilterViewSet(viewsets.ModelViewSet, StandardFilterMixin): +class CustomFilterViewSet(StandardFilterModelViewSet): queryset = CustomFilter.objects serializer_class = CustomFilterSerializer permission_classes = [CustomIsOwner & CustomTokenHasReadWriteScope] @@ -1466,7 +1531,7 @@ class RecipeUrlImportView(APIView): 'recipe_json': helper.get_from_scraper(scrape, request), 'recipe_images': list(dict.fromkeys(get_images_from_soup(scrape.soup, url))), }, - status=status.HTTP_200_OK) + status=status.HTTP_200_OK) else: return Response({'error': True, 'msg': _('No usable data could be found.')}, status=status.HTTP_400_BAD_REQUEST) @@ -1677,7 +1742,7 @@ def sync_all(request): # @schema(AutoSchema()) #TODO add proper schema @permission_classes([CustomIsUser & CustomTokenHasReadWriteScope]) def share_link(request, pk): - if request.space.allow_sharing and has_group_permission(request.user, ('user', )): + if request.space.allow_sharing and has_group_permission(request.user, ('user',)): recipe = get_object_or_404(Recipe, pk=pk, space=request.space) link = ShareLink.objects.create(recipe=recipe, created_by=request.user, space=request.space) return JsonResponse({'pk': pk, 'share': link.uuid, 'link': request.build_absolute_uri(reverse('view_recipe', args=[pk, link.uuid]))}) diff --git a/cookbook/views/views.py b/cookbook/views/views.py index fd4f8e476..dd89638d0 100644 --- a/cookbook/views/views.py +++ b/cookbook/views/views.py @@ -494,6 +494,11 @@ def test2(request): return HttpResponseRedirect(reverse('index')) +@group_required('admin') +def vue3(request): + return render(request, 'frontend/tandoor.html', {}) + + def get_orphan_files(delete_orphans=False): # Get list of all image files in media folder media_dir = settings.MEDIA_ROOT diff --git a/package.json b/package.json new file mode 100644 index 000000000..20c3a9bda --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "@vueuse/core": "^10.9.0" + } +} diff --git a/recipes/settings.py b/recipes/settings.py index a62428818..576f74b28 100644 --- a/recipes/settings.py +++ b/recipes/settings.py @@ -16,6 +16,7 @@ import os import re import sys import traceback +import socket from django.contrib import messages from django.utils.translation import gettext_lazy as _ @@ -104,10 +105,34 @@ MESSAGE_TAGS = {messages.ERROR: 'danger'} # Application definition INSTALLED_APPS = [ - 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', - 'django.contrib.sites', 'django.contrib.staticfiles', 'django.contrib.postgres', 'oauth2_provider', 'django_prometheus', 'django_tables2', 'corsheaders', 'crispy_forms', - 'crispy_bootstrap4', 'rest_framework', 'rest_framework.authtoken', 'django_cleanup.apps.CleanupConfig', 'webpack_loader', 'django_js_reverse', 'hcaptcha', 'allauth', - 'allauth.account', 'allauth.socialaccount', 'cookbook.apps.CookbookConfig', 'treebeard', + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.sites', + 'django.contrib.staticfiles', + 'django.contrib.postgres', + 'oauth2_provider', + 'django_prometheus', + 'django_tables2', + 'corsheaders', + 'crispy_forms', + 'crispy_bootstrap4', + 'rest_framework', + 'rest_framework.authtoken', + 'drf_spectacular', + 'drf_spectacular_sidecar', + 'django_cleanup.apps.CleanupConfig', + 'webpack_loader', + 'django_vite', + 'django_js_reverse', + 'hcaptcha', + 'allauth', + 'allauth.account', + 'allauth.socialaccount', + 'cookbook.apps.CookbookConfig', + 'treebeard', ] PLUGINS_DIRECTORY = os.path.join(BASE_DIR, 'recipes', 'plugins') @@ -184,14 +209,14 @@ MIDDLEWARE = [ ] if DEBUG_TOOLBAR: - MIDDLEWARE += ('debug_toolbar.middleware.DebugToolbarMiddleware', ) - INSTALLED_APPS += ('debug_toolbar', ) + MIDDLEWARE += ('debug_toolbar.middleware.DebugToolbarMiddleware',) + INSTALLED_APPS += ('debug_toolbar',) SORT_TREE_BY_NAME = bool(int(os.getenv('SORT_TREE_BY_NAME', False))) DISABLE_TREE_FIX_STARTUP = bool(int(os.getenv('DISABLE_TREE_FIX_STARTUP', False))) if bool(int(os.getenv('SQL_DEBUG', False))): - MIDDLEWARE += ('recipes.middleware.SqlPrintingMiddleware', ) + MIDDLEWARE += ('recipes.middleware.SqlPrintingMiddleware',) if ENABLE_METRICS: MIDDLEWARE += 'django_prometheus.middleware.PrometheusAfterMiddleware', @@ -269,9 +294,18 @@ WRITE_SCOPE = 'write' REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': - ('rest_framework.authentication.SessionAuthentication', 'oauth2_provider.contrib.rest_framework.OAuth2Authentication', 'rest_framework.authentication.BasicAuthentication', - ), + ('rest_framework.authentication.SessionAuthentication', 'oauth2_provider.contrib.rest_framework.OAuth2Authentication', 'rest_framework.authentication.BasicAuthentication', + ), 'DEFAULT_PERMISSION_CLASSES': ['rest_framework.permissions.IsAuthenticated', ], + 'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema', + 'COERCE_DECIMAL_TO_STRING': False, +} + +SPECTACULAR_SETTINGS = { + 'TITLE': 'Tandoor', + 'DESCRIPTION': 'Tandoor API Docs', + 'SERVE_INCLUDE_SCHEMA': False, + 'ENUM_ADD_EXPLICIT_BLANK_NULL_CHOICE': False, } ROOT_URLCONF = 'recipes.urls' @@ -382,6 +416,25 @@ for p in PLUGINS: 'IGNORE': [r'.+\.hot-update.js', r'.+\.map'], } +DJANGO_VITE = { + "default": { + "dev_mode": False, + "static_url_prefix": 'vue3', + "dev_server_port": 5173, + "dev_server_host": os.getenv('DJANGO_VITE_DEV_SERVER_HOST', 'localhost'), + }, +} + +with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: + s.settimeout(0.001) + try: + s.connect((DJANGO_VITE['default']['dev_server_host'], DJANGO_VITE['default']['dev_server_port'])) + if DEBUG: + print("Vite Dev Server is running") + DJANGO_VITE['default']['dev_mode'] = True + except: + print("Running django-vite in production mode (no HMR)") + # Internationalization # https://docs.djangoproject.com/en/2.0/topics/i18n/ @@ -474,4 +527,19 @@ ACCOUNT_RATE_LIMITS = {"change_password": "1/m/user", "reset_password": "1/m/ip, DISABLE_EXTERNAL_CONNECTORS = bool(int(os.getenv('DISABLE_EXTERNAL_CONNECTORS', False))) EXTERNAL_CONNECTORS_QUEUE_SIZE = int(os.getenv('EXTERNAL_CONNECTORS_QUEUE_SIZE', 100)) +# ACCOUNT_SIGNUP_FORM_CLASS = 'cookbook.forms.AllAuthSignupForm' +ACCOUNT_FORMS = { + 'signup': 'cookbook.forms.AllAuthSignupForm', + 'reset_password': 'cookbook.forms.CustomPasswordResetForm' +} + +ACCOUNT_EMAIL_UNKNOWN_ACCOUNTS = False +ACCOUNT_RATE_LIMITS = { + "change_password": "1/m/user", + "reset_password": "1/m/ip,1/m/key", + "reset_password_from_key": "1/m/ip", + "signup": "5/m/ip", + "login": "5/m/ip", +} + mimetypes.add_type("text/javascript", ".js", True) diff --git a/requirements.txt b/requirements.txt index 1f6319ed6..fd0ba45c4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,6 +7,8 @@ crispy-bootstrap4==2022.1 django-tables2==2.7.0 djangorestframework==3.14.0 drf-writable-nested==0.7.0 +drf-spectacular==0.27.1 +drf-spectacular-sidecar==2024.2.1 django-oauth-toolkit==2.3.0 django-debug-toolbar==4.2.0 bleach==6.0.0 @@ -44,6 +46,7 @@ pyppeteer==2.0.0 validators==0.20.0 pytube==15.0.0 homeassistant-api==4.1.1.post2 +django-vite==3.0.3 # Development pytest==8.0.0 diff --git a/vue/src/utils/openapi/api.ts b/vue/src/utils/openapi/api.ts index 9f25a3273..14ac4b2fc 100644 --- a/vue/src/utils/openapi/api.ts +++ b/vue/src/utils/openapi/api.ts @@ -242,6 +242,73 @@ export interface BookmarkletImportList { */ created_at?: string; } +/** + * + * @export + * @interface ConnectorConfigConfig + */ +export interface ConnectorConfigConfig { + /** + * + * @type {number} + * @memberof ConnectorConfigConfig + */ + id?: number; + /** + * + * @type {string} + * @memberof ConnectorConfigConfig + */ + name: string; + /** + * + * @type {string} + * @memberof ConnectorConfigConfig + */ + url?: string | null; + /** + * + * @type {string} + * @memberof ConnectorConfigConfig + */ + token?: string | null; + /** + * + * @type {string} + * @memberof ConnectorConfigConfig + */ + todo_entity?: string | null; + /** + * Is Connector Enabled + * @type {boolean} + * @memberof ConnectorConfigConfig + */ + enabled?: boolean; + /** + * + * @type {boolean} + * @memberof ConnectorConfigConfig + */ + on_shopping_list_entry_created_enabled?: boolean; + /** + * + * @type {boolean} + * @memberof ConnectorConfigConfig + */ + on_shopping_list_entry_updated_enabled?: boolean; + /** + * + * @type {boolean} + * @memberof ConnectorConfigConfig + */ + on_shopping_list_entry_deleted_enabled?: boolean; + /** + * + * @type {string} + * @memberof ConnectorConfigConfig + */ + created_by?: string; +} /** * * @export @@ -265,7 +332,7 @@ export interface CookLog { * @type {number} * @memberof CookLog */ - servings?: number; + servings?: number | null; /** * * @type {number} @@ -277,13 +344,62 @@ export interface CookLog { * @type {string} * @memberof CookLog */ - created_by?: string; + comment?: string | null; + /** + * + * @type {CookLogCreatedBy} + * @memberof CookLog + */ + created_by?: CookLogCreatedBy; /** * * @type {string} * @memberof CookLog */ created_at?: string; + /** + * + * @type {string} + * @memberof CookLog + */ + updated_at?: string; +} +/** + * + * @export + * @interface CookLogCreatedBy + */ +export interface CookLogCreatedBy { + /** + * + * @type {number} + * @memberof CookLogCreatedBy + */ + id?: number; + /** + * Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. + * @type {string} + * @memberof CookLogCreatedBy + */ + username?: string; + /** + * + * @type {string} + * @memberof CookLogCreatedBy + */ + first_name?: string; + /** + * + * @type {string} + * @memberof CookLogCreatedBy + */ + last_name?: string; + /** + * + * @type {string} + * @memberof CookLogCreatedBy + */ + display_name?: string; } /** * @@ -2153,6 +2269,957 @@ export interface MealType { */ created_by?: string; } +/** + * + * @export + * @interface OpenDataCategory + */ +export interface OpenDataCategory { + /** + * + * @type {number} + * @memberof OpenDataCategory + */ + id?: number; + /** + * + * @type {OpenDataUnitVersion} + * @memberof OpenDataCategory + */ + version: OpenDataUnitVersion; + /** + * + * @type {string} + * @memberof OpenDataCategory + */ + slug: string; + /** + * + * @type {string} + * @memberof OpenDataCategory + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataCategory + */ + description?: string; + /** + * + * @type {string} + * @memberof OpenDataCategory + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataCategory + */ + created_by?: string; +} +/** + * + * @export + * @interface OpenDataConversion + */ +export interface OpenDataConversion { + /** + * + * @type {number} + * @memberof OpenDataConversion + */ + id?: number; + /** + * + * @type {OpenDataUnitVersion} + * @memberof OpenDataConversion + */ + version: OpenDataUnitVersion; + /** + * + * @type {string} + * @memberof OpenDataConversion + */ + slug: string; + /** + * + * @type {OpenDataConversionFood} + * @memberof OpenDataConversion + */ + food: OpenDataConversionFood; + /** + * + * @type {string} + * @memberof OpenDataConversion + */ + base_amount: string; + /** + * + * @type {OpenDataConversionFoodPropertiesFoodUnit} + * @memberof OpenDataConversion + */ + base_unit: OpenDataConversionFoodPropertiesFoodUnit; + /** + * + * @type {string} + * @memberof OpenDataConversion + */ + converted_amount: string; + /** + * + * @type {OpenDataConversionFoodPropertiesFoodUnit} + * @memberof OpenDataConversion + */ + converted_unit: OpenDataConversionFoodPropertiesFoodUnit; + /** + * + * @type {string} + * @memberof OpenDataConversion + */ + source: string; + /** + * + * @type {string} + * @memberof OpenDataConversion + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataConversion + */ + created_by?: string; +} +/** + * + * @export + * @interface OpenDataConversionFood + */ +export interface OpenDataConversionFood { + /** + * + * @type {number} + * @memberof OpenDataConversionFood + */ + id?: number; + /** + * + * @type {OpenDataUnitVersion} + * @memberof OpenDataConversionFood + */ + version: OpenDataUnitVersion; + /** + * + * @type {string} + * @memberof OpenDataConversionFood + */ + slug: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFood + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFood + */ + plural_name: string; + /** + * + * @type {OpenDataStoreCategory} + * @memberof OpenDataConversionFood + */ + store_category: OpenDataStoreCategory; + /** + * + * @type {OpenDataConversionFoodPreferredUnitMetric} + * @memberof OpenDataConversionFood + */ + preferred_unit_metric?: OpenDataConversionFoodPreferredUnitMetric | null; + /** + * + * @type {OpenDataConversionFoodPreferredUnitMetric} + * @memberof OpenDataConversionFood + */ + preferred_shopping_unit_metric?: OpenDataConversionFoodPreferredUnitMetric | null; + /** + * + * @type {OpenDataConversionFoodPreferredUnitMetric} + * @memberof OpenDataConversionFood + */ + preferred_unit_imperial?: OpenDataConversionFoodPreferredUnitMetric | null; + /** + * + * @type {OpenDataConversionFoodPreferredUnitMetric} + * @memberof OpenDataConversionFood + */ + preferred_shopping_unit_imperial?: OpenDataConversionFoodPreferredUnitMetric | null; + /** + * + * @type {Array} + * @memberof OpenDataConversionFood + */ + properties: Array | null; + /** + * + * @type {number} + * @memberof OpenDataConversionFood + */ + properties_food_amount?: number; + /** + * + * @type {OpenDataConversionFoodPropertiesFoodUnit} + * @memberof OpenDataConversionFood + */ + properties_food_unit: OpenDataConversionFoodPropertiesFoodUnit; + /** + * + * @type {string} + * @memberof OpenDataConversionFood + */ + properties_source?: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFood + */ + fdc_id: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFood + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFood + */ + created_by?: string; +} +/** + * + * @export + * @interface OpenDataConversionFoodPreferredUnitMetric + */ +export interface OpenDataConversionFoodPreferredUnitMetric { + /** + * + * @type {number} + * @memberof OpenDataConversionFoodPreferredUnitMetric + */ + id?: number; + /** + * + * @type {OpenDataUnitVersion} + * @memberof OpenDataConversionFoodPreferredUnitMetric + */ + version: OpenDataUnitVersion; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPreferredUnitMetric + */ + slug: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPreferredUnitMetric + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPreferredUnitMetric + */ + plural_name?: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPreferredUnitMetric + */ + base_unit?: OpenDataConversionFoodPreferredUnitMetricBaseUnitEnum; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPreferredUnitMetric + */ + type: OpenDataConversionFoodPreferredUnitMetricTypeEnum; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPreferredUnitMetric + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPreferredUnitMetric + */ + created_by?: string; +} + +/** + * @export + * @enum {string} + */ +export enum OpenDataConversionFoodPreferredUnitMetricBaseUnitEnum { + G = 'G', + Kg = 'KG', + Ml = 'ML', + L = 'L', + Ounce = 'OUNCE', + Pound = 'POUND', + FluidOunce = 'FLUID_OUNCE', + Tsp = 'TSP', + Tbsp = 'TBSP', + Cup = 'CUP', + Pint = 'PINT', + Quart = 'QUART', + Gallon = 'GALLON', + ImperialFluidOunce = 'IMPERIAL_FLUID_OUNCE', + ImperialPint = 'IMPERIAL_PINT', + ImperialQuart = 'IMPERIAL_QUART', + ImperialGallon = 'IMPERIAL_GALLON' +} +/** + * @export + * @enum {string} + */ +export enum OpenDataConversionFoodPreferredUnitMetricTypeEnum { + Weight = 'WEIGHT', + Volume = 'VOLUME', + Other = 'OTHER' +} + +/** + * + * @export + * @interface OpenDataConversionFoodProperties + */ +export interface OpenDataConversionFoodProperties { + /** + * + * @type {number} + * @memberof OpenDataConversionFoodProperties + */ + id?: number; + /** + * + * @type {OpenDataConversionFoodProperty} + * @memberof OpenDataConversionFoodProperties + */ + property: OpenDataConversionFoodProperty; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodProperties + */ + property_amount: string; +} +/** + * + * @export + * @interface OpenDataConversionFoodPropertiesFoodUnit + */ +export interface OpenDataConversionFoodPropertiesFoodUnit { + /** + * + * @type {number} + * @memberof OpenDataConversionFoodPropertiesFoodUnit + */ + id?: number; + /** + * + * @type {OpenDataUnitVersion} + * @memberof OpenDataConversionFoodPropertiesFoodUnit + */ + version: OpenDataUnitVersion; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPropertiesFoodUnit + */ + slug: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPropertiesFoodUnit + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPropertiesFoodUnit + */ + plural_name?: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPropertiesFoodUnit + */ + base_unit?: OpenDataConversionFoodPropertiesFoodUnitBaseUnitEnum; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPropertiesFoodUnit + */ + type: OpenDataConversionFoodPropertiesFoodUnitTypeEnum; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPropertiesFoodUnit + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPropertiesFoodUnit + */ + created_by?: string; +} + +/** + * @export + * @enum {string} + */ +export enum OpenDataConversionFoodPropertiesFoodUnitBaseUnitEnum { + G = 'G', + Kg = 'KG', + Ml = 'ML', + L = 'L', + Ounce = 'OUNCE', + Pound = 'POUND', + FluidOunce = 'FLUID_OUNCE', + Tsp = 'TSP', + Tbsp = 'TBSP', + Cup = 'CUP', + Pint = 'PINT', + Quart = 'QUART', + Gallon = 'GALLON', + ImperialFluidOunce = 'IMPERIAL_FLUID_OUNCE', + ImperialPint = 'IMPERIAL_PINT', + ImperialQuart = 'IMPERIAL_QUART', + ImperialGallon = 'IMPERIAL_GALLON' +} +/** + * @export + * @enum {string} + */ +export enum OpenDataConversionFoodPropertiesFoodUnitTypeEnum { + Weight = 'WEIGHT', + Volume = 'VOLUME', + Other = 'OTHER' +} + +/** + * + * @export + * @interface OpenDataConversionFoodProperty + */ +export interface OpenDataConversionFoodProperty { + /** + * + * @type {number} + * @memberof OpenDataConversionFoodProperty + */ + id?: number; + /** + * + * @type {OpenDataUnitVersion} + * @memberof OpenDataConversionFoodProperty + */ + version: OpenDataUnitVersion; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodProperty + */ + slug: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodProperty + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodProperty + */ + unit?: string; + /** + * + * @type {number} + * @memberof OpenDataConversionFoodProperty + */ + fdc_id?: number | null; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodProperty + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodProperty + */ + created_by?: string; +} +/** + * + * @export + * @interface OpenDataFood + */ +export interface OpenDataFood { + /** + * + * @type {number} + * @memberof OpenDataFood + */ + id?: number; + /** + * + * @type {OpenDataUnitVersion} + * @memberof OpenDataFood + */ + version: OpenDataUnitVersion; + /** + * + * @type {string} + * @memberof OpenDataFood + */ + slug: string; + /** + * + * @type {string} + * @memberof OpenDataFood + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataFood + */ + plural_name: string; + /** + * + * @type {OpenDataStoreCategory} + * @memberof OpenDataFood + */ + store_category: OpenDataStoreCategory; + /** + * + * @type {OpenDataConversionFoodPreferredUnitMetric} + * @memberof OpenDataFood + */ + preferred_unit_metric?: OpenDataConversionFoodPreferredUnitMetric | null; + /** + * + * @type {OpenDataConversionFoodPreferredUnitMetric} + * @memberof OpenDataFood + */ + preferred_shopping_unit_metric?: OpenDataConversionFoodPreferredUnitMetric | null; + /** + * + * @type {OpenDataConversionFoodPreferredUnitMetric} + * @memberof OpenDataFood + */ + preferred_unit_imperial?: OpenDataConversionFoodPreferredUnitMetric | null; + /** + * + * @type {OpenDataConversionFoodPreferredUnitMetric} + * @memberof OpenDataFood + */ + preferred_shopping_unit_imperial?: OpenDataConversionFoodPreferredUnitMetric | null; + /** + * + * @type {Array} + * @memberof OpenDataFood + */ + properties: Array | null; + /** + * + * @type {number} + * @memberof OpenDataFood + */ + properties_food_amount?: number; + /** + * + * @type {OpenDataConversionFoodPropertiesFoodUnit} + * @memberof OpenDataFood + */ + properties_food_unit: OpenDataConversionFoodPropertiesFoodUnit; + /** + * + * @type {string} + * @memberof OpenDataFood + */ + properties_source?: string; + /** + * + * @type {string} + * @memberof OpenDataFood + */ + fdc_id: string; + /** + * + * @type {string} + * @memberof OpenDataFood + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataFood + */ + created_by?: string; +} +/** + * + * @export + * @interface OpenDataProperty + */ +export interface OpenDataProperty { + /** + * + * @type {number} + * @memberof OpenDataProperty + */ + id?: number; + /** + * + * @type {OpenDataUnitVersion} + * @memberof OpenDataProperty + */ + version: OpenDataUnitVersion; + /** + * + * @type {string} + * @memberof OpenDataProperty + */ + slug: string; + /** + * + * @type {string} + * @memberof OpenDataProperty + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataProperty + */ + unit?: string; + /** + * + * @type {number} + * @memberof OpenDataProperty + */ + fdc_id?: number | null; + /** + * + * @type {string} + * @memberof OpenDataProperty + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataProperty + */ + created_by?: string; +} +/** + * + * @export + * @interface OpenDataStore + */ +export interface OpenDataStore { + /** + * + * @type {number} + * @memberof OpenDataStore + */ + id?: number; + /** + * + * @type {OpenDataUnitVersion} + * @memberof OpenDataStore + */ + version: OpenDataUnitVersion; + /** + * + * @type {string} + * @memberof OpenDataStore + */ + slug: string; + /** + * + * @type {string} + * @memberof OpenDataStore + */ + name: string; + /** + * + * @type {Array} + * @memberof OpenDataStore + */ + category_to_store: Array | null; + /** + * + * @type {string} + * @memberof OpenDataStore + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataStore + */ + created_by?: string; +} +/** + * + * @export + * @interface OpenDataStoreCategory + */ +export interface OpenDataStoreCategory { + /** + * + * @type {number} + * @memberof OpenDataStoreCategory + */ + id?: number; + /** + * + * @type {OpenDataUnitVersion} + * @memberof OpenDataStoreCategory + */ + version: OpenDataUnitVersion; + /** + * + * @type {string} + * @memberof OpenDataStoreCategory + */ + slug: string; + /** + * + * @type {string} + * @memberof OpenDataStoreCategory + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataStoreCategory + */ + description?: string; + /** + * + * @type {string} + * @memberof OpenDataStoreCategory + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataStoreCategory + */ + created_by?: string; +} +/** + * + * @export + * @interface OpenDataStoreCategoryToStore + */ +export interface OpenDataStoreCategoryToStore { + /** + * + * @type {number} + * @memberof OpenDataStoreCategoryToStore + */ + id?: number; + /** + * + * @type {OpenDataStoreCategory} + * @memberof OpenDataStoreCategoryToStore + */ + category: OpenDataStoreCategory; + /** + * + * @type {number} + * @memberof OpenDataStoreCategoryToStore + */ + store: number; + /** + * + * @type {number} + * @memberof OpenDataStoreCategoryToStore + */ + order?: number; +} +/** + * + * @export + * @interface OpenDataUnit + */ +export interface OpenDataUnit { + /** + * + * @type {number} + * @memberof OpenDataUnit + */ + id?: number; + /** + * + * @type {OpenDataUnitVersion} + * @memberof OpenDataUnit + */ + version: OpenDataUnitVersion; + /** + * + * @type {string} + * @memberof OpenDataUnit + */ + slug: string; + /** + * + * @type {string} + * @memberof OpenDataUnit + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataUnit + */ + plural_name?: string; + /** + * + * @type {string} + * @memberof OpenDataUnit + */ + base_unit?: OpenDataUnitBaseUnitEnum; + /** + * + * @type {string} + * @memberof OpenDataUnit + */ + type: OpenDataUnitTypeEnum; + /** + * + * @type {string} + * @memberof OpenDataUnit + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataUnit + */ + created_by?: string; +} + +/** + * @export + * @enum {string} + */ +export enum OpenDataUnitBaseUnitEnum { + G = 'G', + Kg = 'KG', + Ml = 'ML', + L = 'L', + Ounce = 'OUNCE', + Pound = 'POUND', + FluidOunce = 'FLUID_OUNCE', + Tsp = 'TSP', + Tbsp = 'TBSP', + Cup = 'CUP', + Pint = 'PINT', + Quart = 'QUART', + Gallon = 'GALLON', + ImperialFluidOunce = 'IMPERIAL_FLUID_OUNCE', + ImperialPint = 'IMPERIAL_PINT', + ImperialQuart = 'IMPERIAL_QUART', + ImperialGallon = 'IMPERIAL_GALLON' +} +/** + * @export + * @enum {string} + */ +export enum OpenDataUnitTypeEnum { + Weight = 'WEIGHT', + Volume = 'VOLUME', + Other = 'OTHER' +} + +/** + * + * @export + * @interface OpenDataUnitVersion + */ +export interface OpenDataUnitVersion { + /** + * + * @type {number} + * @memberof OpenDataUnitVersion + */ + id?: number; + /** + * + * @type {string} + * @memberof OpenDataUnitVersion + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataUnitVersion + */ + code: string; + /** + * + * @type {string} + * @memberof OpenDataUnitVersion + */ + comment?: string; +} +/** + * + * @export + * @interface OpenDataVersion + */ +export interface OpenDataVersion { + /** + * + * @type {number} + * @memberof OpenDataVersion + */ + id?: number; + /** + * + * @type {string} + * @memberof OpenDataVersion + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataVersion + */ + code: string; + /** + * + * @type {string} + * @memberof OpenDataVersion + */ + comment?: string; +} /** * * @export @@ -2532,6 +3599,31 @@ export interface RecipeFile { */ preview?: string; } +/** + * + * @export + * @interface RecipeFlat + */ +export interface RecipeFlat { + /** + * + * @type {number} + * @memberof RecipeFlat + */ + id?: number; + /** + * + * @type {string} + * @memberof RecipeFlat + */ + name: string; + /** + * + * @type {any} + * @memberof RecipeFlat + */ + image?: any | null; +} /** * * @export @@ -2941,12 +4033,6 @@ export interface RecipeSteps { * @memberof RecipeSteps */ instructions_markdown?: string; - /** - * - * @type {string} - * @memberof RecipeSteps - */ - ingredients_vue?: string; /** * * @type {number} @@ -3063,43 +4149,6 @@ export interface ShoppingList { */ created_at?: string; } -/** - * - * @export - * @interface ShoppingListCreatedBy - */ -export interface ShoppingListCreatedBy { - /** - * - * @type {number} - * @memberof ShoppingListCreatedBy - */ - id?: number; - /** - * Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. - * @type {string} - * @memberof ShoppingListCreatedBy - */ - username?: string; - /** - * - * @type {string} - * @memberof ShoppingListCreatedBy - */ - first_name?: string; - /** - * - * @type {string} - * @memberof ShoppingListCreatedBy - */ - last_name?: string; - /** - * - * @type {string} - * @memberof ShoppingListCreatedBy - */ - display_name?: string; -} /** * * @export @@ -3156,10 +4205,10 @@ export interface ShoppingListEntries { recipe_mealplan?: ShoppingListRecipeMealplan; /** * - * @type {ShoppingListCreatedBy} + * @type {CookLogCreatedBy} * @memberof ShoppingListEntries */ - created_by?: ShoppingListCreatedBy; + created_by?: CookLogCreatedBy; /** * * @type {string} @@ -3241,10 +4290,10 @@ export interface ShoppingListEntry { recipe_mealplan?: ShoppingListRecipeMealplan; /** * - * @type {ShoppingListCreatedBy} + * @type {CookLogCreatedBy} * @memberof ShoppingListEntry */ - created_by?: ShoppingListCreatedBy; + created_by?: CookLogCreatedBy; /** * * @type {string} @@ -3794,12 +4843,6 @@ export interface Step { * @memberof Step */ instructions_markdown?: string; - /** - * - * @type {string} - * @memberof Step - */ - ingredients_vue?: string; /** * * @type {number} @@ -4535,10 +5578,10 @@ export interface UserSpace { id?: number; /** * - * @type {ShoppingListCreatedBy} + * @type {CookLogCreatedBy} * @memberof UserSpace */ - user?: ShoppingListCreatedBy; + user?: CookLogCreatedBy; /** * * @type {string} @@ -4785,6 +5828,39 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) options: localVarRequestOptions, }; }, + /** + * + * @param {ConnectorConfigConfig} [connectorConfigConfig] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createConnectorConfig: async (connectorConfigConfig?: ConnectorConfigConfig, options: any = {}): Promise => { + const localVarPath = `/api/connector-config/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(connectorConfigConfig, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, /** * * @param {CookLog} [cookLog] @@ -5115,6 +6191,237 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) options: localVarRequestOptions, }; }, + /** + * + * @param {OpenDataCategory} [openDataCategory] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createOpenDataCategory: async (openDataCategory?: OpenDataCategory, options: any = {}): Promise => { + const localVarPath = `/api/open-data-category/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(openDataCategory, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {OpenDataConversion} [openDataConversion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createOpenDataConversion: async (openDataConversion?: OpenDataConversion, options: any = {}): Promise => { + const localVarPath = `/api/open-data-conversion/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(openDataConversion, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {OpenDataFood} [openDataFood] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createOpenDataFood: async (openDataFood?: OpenDataFood, options: any = {}): Promise => { + const localVarPath = `/api/open-data-food/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(openDataFood, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {OpenDataProperty} [openDataProperty] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createOpenDataProperty: async (openDataProperty?: OpenDataProperty, options: any = {}): Promise => { + const localVarPath = `/api/open-data-property/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(openDataProperty, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {OpenDataStore} [openDataStore] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createOpenDataStore: async (openDataStore?: OpenDataStore, options: any = {}): Promise => { + const localVarPath = `/api/open-data-store/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(openDataStore, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {OpenDataUnit} [openDataUnit] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createOpenDataUnit: async (openDataUnit?: OpenDataUnit, options: any = {}): Promise => { + const localVarPath = `/api/open-data-unit/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(openDataUnit, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {OpenDataVersion} [openDataVersion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createOpenDataVersion: async (openDataVersion?: OpenDataVersion, options: any = {}): Promise => { + const localVarPath = `/api/open-data-version/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(openDataVersion, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, /** * * @param {Property} [property] @@ -5899,6 +7206,39 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this connector config. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + destroyConnectorConfig: async (id: string, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('destroyConnectorConfig', 'id', id) + const localVarPath = `/api/connector-config/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; @@ -6229,6 +7569,237 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data category. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + destroyOpenDataCategory: async (id: string, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('destroyOpenDataCategory', 'id', id) + const localVarPath = `/api/open-data-category/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data conversion. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + destroyOpenDataConversion: async (id: string, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('destroyOpenDataConversion', 'id', id) + const localVarPath = `/api/open-data-conversion/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data food. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + destroyOpenDataFood: async (id: string, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('destroyOpenDataFood', 'id', id) + const localVarPath = `/api/open-data-food/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data property. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + destroyOpenDataProperty: async (id: string, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('destroyOpenDataProperty', 'id', id) + const localVarPath = `/api/open-data-property/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data store. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + destroyOpenDataStore: async (id: string, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('destroyOpenDataStore', 'id', id) + const localVarPath = `/api/open-data-store/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data unit. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + destroyOpenDataUnit: async (id: string, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('destroyOpenDataUnit', 'id', id) + const localVarPath = `/api/open-data-unit/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data version. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + destroyOpenDataVersion: async (id: string, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('destroyOpenDataVersion', 'id', id) + const localVarPath = `/api/open-data-version/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; @@ -6902,6 +8473,35 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) options: localVarRequestOptions, }; }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + flatRecipe: async (options: any = {}): Promise => { + const localVarPath = `/api/recipe/flat/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, /** * * @param {string} id A unique integer value identifying this recipe. @@ -7042,6 +8642,35 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listConnectorConfigs: async (options: any = {}): Promise => { + const localVarPath = `/api/connector-config/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; @@ -7505,6 +9134,238 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listOpenDataCategorys: async (options: any = {}): Promise => { + const localVarPath = `/api/open-data-category/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listOpenDataConversions: async (options: any = {}): Promise => { + const localVarPath = `/api/open-data-conversion/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listOpenDataFoods: async (options: any = {}): Promise => { + const localVarPath = `/api/open-data-food/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listOpenDataPropertys: async (options: any = {}): Promise => { + const localVarPath = `/api/open-data-property/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listOpenDataStatisticsViewSets: async (options: any = {}): Promise => { + const localVarPath = `/api/open-data-stats/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listOpenDataStores: async (options: any = {}): Promise => { + const localVarPath = `/api/open-data-store/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listOpenDataUnits: async (options: any = {}): Promise => { + const localVarPath = `/api/open-data-unit/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listOpenDataVersions: async (options: any = {}): Promise => { + const localVarPath = `/api/open-data-version/`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; @@ -8822,6 +10683,43 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) options: localVarRequestOptions, }; }, + /** + * + * @param {string} id A unique integer value identifying this connector config. + * @param {ConnectorConfigConfig} [connectorConfigConfig] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + partialUpdateConnectorConfig: async (id: string, connectorConfigConfig?: ConnectorConfigConfig, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('partialUpdateConnectorConfig', 'id', id) + const localVarPath = `/api/connector-config/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(connectorConfigConfig, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, /** * * @param {string} id A unique integer value identifying this cook log. @@ -9192,6 +11090,265 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) options: localVarRequestOptions, }; }, + /** + * + * @param {string} id A unique integer value identifying this open data category. + * @param {OpenDataCategory} [openDataCategory] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + partialUpdateOpenDataCategory: async (id: string, openDataCategory?: OpenDataCategory, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('partialUpdateOpenDataCategory', 'id', id) + const localVarPath = `/api/open-data-category/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(openDataCategory, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data conversion. + * @param {OpenDataConversion} [openDataConversion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + partialUpdateOpenDataConversion: async (id: string, openDataConversion?: OpenDataConversion, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('partialUpdateOpenDataConversion', 'id', id) + const localVarPath = `/api/open-data-conversion/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(openDataConversion, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data food. + * @param {OpenDataFood} [openDataFood] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + partialUpdateOpenDataFood: async (id: string, openDataFood?: OpenDataFood, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('partialUpdateOpenDataFood', 'id', id) + const localVarPath = `/api/open-data-food/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(openDataFood, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data property. + * @param {OpenDataProperty} [openDataProperty] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + partialUpdateOpenDataProperty: async (id: string, openDataProperty?: OpenDataProperty, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('partialUpdateOpenDataProperty', 'id', id) + const localVarPath = `/api/open-data-property/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(openDataProperty, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data store. + * @param {OpenDataStore} [openDataStore] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + partialUpdateOpenDataStore: async (id: string, openDataStore?: OpenDataStore, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('partialUpdateOpenDataStore', 'id', id) + const localVarPath = `/api/open-data-store/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(openDataStore, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data unit. + * @param {OpenDataUnit} [openDataUnit] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + partialUpdateOpenDataUnit: async (id: string, openDataUnit?: OpenDataUnit, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('partialUpdateOpenDataUnit', 'id', id) + const localVarPath = `/api/open-data-unit/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(openDataUnit, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data version. + * @param {OpenDataVersion} [openDataVersion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + partialUpdateOpenDataVersion: async (id: string, openDataVersion?: OpenDataVersion, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('partialUpdateOpenDataVersion', 'id', id) + const localVarPath = `/api/open-data-version/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(openDataVersion, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, /** * * @param {string} id A unique integer value identifying this property. @@ -10163,6 +12320,39 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this connector config. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveConnectorConfig: async (id: string, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('retrieveConnectorConfig', 'id', id) + const localVarPath = `/api/connector-config/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; @@ -10262,6 +12452,39 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveFDCViewSet: async (id: string, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('retrieveFDCViewSet', 'id', id) + const localVarPath = `/api/open-data-FDC/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; @@ -10559,6 +12782,237 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data category. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveOpenDataCategory: async (id: string, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('retrieveOpenDataCategory', 'id', id) + const localVarPath = `/api/open-data-category/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data conversion. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveOpenDataConversion: async (id: string, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('retrieveOpenDataConversion', 'id', id) + const localVarPath = `/api/open-data-conversion/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data food. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveOpenDataFood: async (id: string, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('retrieveOpenDataFood', 'id', id) + const localVarPath = `/api/open-data-food/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data property. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveOpenDataProperty: async (id: string, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('retrieveOpenDataProperty', 'id', id) + const localVarPath = `/api/open-data-property/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data store. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveOpenDataStore: async (id: string, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('retrieveOpenDataStore', 'id', id) + const localVarPath = `/api/open-data-store/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data unit. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveOpenDataUnit: async (id: string, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('retrieveOpenDataUnit', 'id', id) + const localVarPath = `/api/open-data-unit/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data version. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveOpenDataVersion: async (id: string, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('retrieveOpenDataVersion', 'id', id) + const localVarPath = `/api/open-data-version/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; @@ -11611,6 +14065,43 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) options: localVarRequestOptions, }; }, + /** + * + * @param {string} id A unique integer value identifying this connector config. + * @param {ConnectorConfigConfig} [connectorConfigConfig] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateConnectorConfig: async (id: string, connectorConfigConfig?: ConnectorConfigConfig, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('updateConnectorConfig', 'id', id) + const localVarPath = `/api/connector-config/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(connectorConfigConfig, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, /** * * @param {string} id A unique integer value identifying this cook log. @@ -11981,6 +14472,265 @@ export const ApiApiAxiosParamCreator = function (configuration?: Configuration) options: localVarRequestOptions, }; }, + /** + * + * @param {string} id A unique integer value identifying this open data category. + * @param {OpenDataCategory} [openDataCategory] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateOpenDataCategory: async (id: string, openDataCategory?: OpenDataCategory, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('updateOpenDataCategory', 'id', id) + const localVarPath = `/api/open-data-category/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(openDataCategory, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data conversion. + * @param {OpenDataConversion} [openDataConversion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateOpenDataConversion: async (id: string, openDataConversion?: OpenDataConversion, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('updateOpenDataConversion', 'id', id) + const localVarPath = `/api/open-data-conversion/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(openDataConversion, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data food. + * @param {OpenDataFood} [openDataFood] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateOpenDataFood: async (id: string, openDataFood?: OpenDataFood, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('updateOpenDataFood', 'id', id) + const localVarPath = `/api/open-data-food/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(openDataFood, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data property. + * @param {OpenDataProperty} [openDataProperty] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateOpenDataProperty: async (id: string, openDataProperty?: OpenDataProperty, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('updateOpenDataProperty', 'id', id) + const localVarPath = `/api/open-data-property/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(openDataProperty, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data store. + * @param {OpenDataStore} [openDataStore] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateOpenDataStore: async (id: string, openDataStore?: OpenDataStore, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('updateOpenDataStore', 'id', id) + const localVarPath = `/api/open-data-store/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(openDataStore, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data unit. + * @param {OpenDataUnit} [openDataUnit] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateOpenDataUnit: async (id: string, openDataUnit?: OpenDataUnit, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('updateOpenDataUnit', 'id', id) + const localVarPath = `/api/open-data-unit/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(openDataUnit, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @param {string} id A unique integer value identifying this open data version. + * @param {OpenDataVersion} [openDataVersion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateOpenDataVersion: async (id: string, openDataVersion?: OpenDataVersion, options: any = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('updateOpenDataVersion', 'id', id) + const localVarPath = `/api/open-data-version/{id}/` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + + + localVarHeaderParameter['Content-Type'] = 'application/json'; + + setSearchParams(localVarUrlObj, localVarQueryParameter, options.query); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + localVarRequestOptions.data = serializeDataIfNeeded(openDataVersion, localVarRequestOptions, configuration) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, /** * * @param {string} id A unique integer value identifying this property. @@ -12741,6 +15491,16 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.createBookmarkletImport(bookmarkletImport, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {ConnectorConfigConfig} [connectorConfigConfig] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async createConnectorConfig(connectorConfigConfig?: ConnectorConfigConfig, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.createConnectorConfig(connectorConfigConfig, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {CookLog} [cookLog] @@ -12841,6 +15601,76 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.createMealType(mealType, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {OpenDataCategory} [openDataCategory] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async createOpenDataCategory(openDataCategory?: OpenDataCategory, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.createOpenDataCategory(openDataCategory, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {OpenDataConversion} [openDataConversion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async createOpenDataConversion(openDataConversion?: OpenDataConversion, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.createOpenDataConversion(openDataConversion, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {OpenDataFood} [openDataFood] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async createOpenDataFood(openDataFood?: OpenDataFood, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.createOpenDataFood(openDataFood, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {OpenDataProperty} [openDataProperty] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async createOpenDataProperty(openDataProperty?: OpenDataProperty, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.createOpenDataProperty(openDataProperty, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {OpenDataStore} [openDataStore] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async createOpenDataStore(openDataStore?: OpenDataStore, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.createOpenDataStore(openDataStore, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {OpenDataUnit} [openDataUnit] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async createOpenDataUnit(openDataUnit?: OpenDataUnit, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.createOpenDataUnit(openDataUnit, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {OpenDataVersion} [openDataVersion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async createOpenDataVersion(openDataVersion?: OpenDataVersion, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.createOpenDataVersion(openDataVersion, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {Property} [property] @@ -13076,6 +15906,16 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.destroyBookmarkletImport(id, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {string} id A unique integer value identifying this connector config. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async destroyConnectorConfig(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.destroyConnectorConfig(id, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {string} id A unique integer value identifying this cook log. @@ -13176,6 +16016,76 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.destroyMealType(id, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {string} id A unique integer value identifying this open data category. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async destroyOpenDataCategory(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.destroyOpenDataCategory(id, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data conversion. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async destroyOpenDataConversion(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.destroyOpenDataConversion(id, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data food. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async destroyOpenDataFood(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.destroyOpenDataFood(id, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data property. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async destroyOpenDataProperty(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.destroyOpenDataProperty(id, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data store. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async destroyOpenDataStore(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.destroyOpenDataStore(id, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data unit. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async destroyOpenDataUnit(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.destroyOpenDataUnit(id, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data version. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async destroyOpenDataVersion(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.destroyOpenDataVersion(id, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {string} id A unique integer value identifying this property. @@ -13377,6 +16287,15 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.fdcFood(id, food, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async flatRecipe(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.flatRecipe(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {string} id A unique integer value identifying this recipe. @@ -13419,6 +16338,15 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.listBookmarkletImports(options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listConnectorConfigs(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listConnectorConfigs(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {number} [page] A page number within the paginated result set. @@ -13550,6 +16478,78 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.listMealTypes(options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listOpenDataCategorys(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listOpenDataCategorys(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listOpenDataConversions(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listOpenDataConversions(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listOpenDataFoods(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listOpenDataFoods(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listOpenDataPropertys(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listOpenDataPropertys(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listOpenDataStatisticsViewSets(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listOpenDataStatisticsViewSets(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listOpenDataStores(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listOpenDataStores(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listOpenDataUnits(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listOpenDataUnits(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async listOpenDataVersions(options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise>> { + const localVarAxiosArgs = await localVarAxiosParamCreator.listOpenDataVersions(options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {*} [options] Override http request option. @@ -13922,6 +16922,17 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.partialUpdateBookmarkletImport(id, bookmarkletImport, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {string} id A unique integer value identifying this connector config. + * @param {ConnectorConfigConfig} [connectorConfigConfig] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async partialUpdateConnectorConfig(id: string, connectorConfigConfig?: ConnectorConfigConfig, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.partialUpdateConnectorConfig(id, connectorConfigConfig, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {string} id A unique integer value identifying this cook log. @@ -14032,6 +17043,83 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.partialUpdateMealType(id, mealType, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {string} id A unique integer value identifying this open data category. + * @param {OpenDataCategory} [openDataCategory] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async partialUpdateOpenDataCategory(id: string, openDataCategory?: OpenDataCategory, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.partialUpdateOpenDataCategory(id, openDataCategory, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data conversion. + * @param {OpenDataConversion} [openDataConversion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async partialUpdateOpenDataConversion(id: string, openDataConversion?: OpenDataConversion, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.partialUpdateOpenDataConversion(id, openDataConversion, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data food. + * @param {OpenDataFood} [openDataFood] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async partialUpdateOpenDataFood(id: string, openDataFood?: OpenDataFood, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.partialUpdateOpenDataFood(id, openDataFood, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data property. + * @param {OpenDataProperty} [openDataProperty] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async partialUpdateOpenDataProperty(id: string, openDataProperty?: OpenDataProperty, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.partialUpdateOpenDataProperty(id, openDataProperty, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data store. + * @param {OpenDataStore} [openDataStore] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async partialUpdateOpenDataStore(id: string, openDataStore?: OpenDataStore, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.partialUpdateOpenDataStore(id, openDataStore, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data unit. + * @param {OpenDataUnit} [openDataUnit] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async partialUpdateOpenDataUnit(id: string, openDataUnit?: OpenDataUnit, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.partialUpdateOpenDataUnit(id, openDataUnit, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data version. + * @param {OpenDataVersion} [openDataVersion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async partialUpdateOpenDataVersion(id: string, openDataVersion?: OpenDataVersion, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.partialUpdateOpenDataVersion(id, openDataVersion, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {string} id A unique integer value identifying this property. @@ -14319,6 +17407,16 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.retrieveBookmarkletImport(id, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {string} id A unique integer value identifying this connector config. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async retrieveConnectorConfig(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.retrieveConnectorConfig(id, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {string} id A unique integer value identifying this cook log. @@ -14349,6 +17447,16 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.retrieveExportLog(id, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {string} id + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async retrieveFDCViewSet(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.retrieveFDCViewSet(id, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {string} id A unique integer value identifying this food. @@ -14439,6 +17547,76 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.retrieveMealType(id, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {string} id A unique integer value identifying this open data category. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async retrieveOpenDataCategory(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.retrieveOpenDataCategory(id, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data conversion. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async retrieveOpenDataConversion(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.retrieveOpenDataConversion(id, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data food. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async retrieveOpenDataFood(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.retrieveOpenDataFood(id, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data property. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async retrieveOpenDataProperty(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.retrieveOpenDataProperty(id, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data store. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async retrieveOpenDataStore(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.retrieveOpenDataStore(id, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data unit. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async retrieveOpenDataUnit(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.retrieveOpenDataUnit(id, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data version. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async retrieveOpenDataVersion(id: string, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.retrieveOpenDataVersion(id, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {string} id A unique integer value identifying this property. @@ -14754,6 +17932,17 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.updateBookmarkletImport(id, bookmarkletImport, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {string} id A unique integer value identifying this connector config. + * @param {ConnectorConfigConfig} [connectorConfigConfig] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async updateConnectorConfig(id: string, connectorConfigConfig?: ConnectorConfigConfig, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.updateConnectorConfig(id, connectorConfigConfig, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {string} id A unique integer value identifying this cook log. @@ -14864,6 +18053,83 @@ export const ApiApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.updateMealType(id, mealType, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * + * @param {string} id A unique integer value identifying this open data category. + * @param {OpenDataCategory} [openDataCategory] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async updateOpenDataCategory(id: string, openDataCategory?: OpenDataCategory, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.updateOpenDataCategory(id, openDataCategory, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data conversion. + * @param {OpenDataConversion} [openDataConversion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async updateOpenDataConversion(id: string, openDataConversion?: OpenDataConversion, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.updateOpenDataConversion(id, openDataConversion, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data food. + * @param {OpenDataFood} [openDataFood] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async updateOpenDataFood(id: string, openDataFood?: OpenDataFood, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.updateOpenDataFood(id, openDataFood, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data property. + * @param {OpenDataProperty} [openDataProperty] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async updateOpenDataProperty(id: string, openDataProperty?: OpenDataProperty, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.updateOpenDataProperty(id, openDataProperty, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data store. + * @param {OpenDataStore} [openDataStore] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async updateOpenDataStore(id: string, openDataStore?: OpenDataStore, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.updateOpenDataStore(id, openDataStore, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data unit. + * @param {OpenDataUnit} [openDataUnit] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async updateOpenDataUnit(id: string, openDataUnit?: OpenDataUnit, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.updateOpenDataUnit(id, openDataUnit, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, + /** + * + * @param {string} id A unique integer value identifying this open data version. + * @param {OpenDataVersion} [openDataVersion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async updateOpenDataVersion(id: string, openDataVersion?: OpenDataVersion, options?: any): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.updateOpenDataVersion(id, openDataVersion, options); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * * @param {string} id A unique integer value identifying this property. @@ -15122,6 +18388,15 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: createBookmarkletImport(bookmarkletImport?: BookmarkletImport, options?: any): AxiosPromise { return localVarFp.createBookmarkletImport(bookmarkletImport, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {ConnectorConfigConfig} [connectorConfigConfig] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createConnectorConfig(connectorConfigConfig?: ConnectorConfigConfig, options?: any): AxiosPromise { + return localVarFp.createConnectorConfig(connectorConfigConfig, options).then((request) => request(axios, basePath)); + }, /** * * @param {CookLog} [cookLog] @@ -15212,6 +18487,69 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: createMealType(mealType?: MealType, options?: any): AxiosPromise { return localVarFp.createMealType(mealType, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {OpenDataCategory} [openDataCategory] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createOpenDataCategory(openDataCategory?: OpenDataCategory, options?: any): AxiosPromise { + return localVarFp.createOpenDataCategory(openDataCategory, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {OpenDataConversion} [openDataConversion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createOpenDataConversion(openDataConversion?: OpenDataConversion, options?: any): AxiosPromise { + return localVarFp.createOpenDataConversion(openDataConversion, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {OpenDataFood} [openDataFood] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createOpenDataFood(openDataFood?: OpenDataFood, options?: any): AxiosPromise { + return localVarFp.createOpenDataFood(openDataFood, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {OpenDataProperty} [openDataProperty] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createOpenDataProperty(openDataProperty?: OpenDataProperty, options?: any): AxiosPromise { + return localVarFp.createOpenDataProperty(openDataProperty, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {OpenDataStore} [openDataStore] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createOpenDataStore(openDataStore?: OpenDataStore, options?: any): AxiosPromise { + return localVarFp.createOpenDataStore(openDataStore, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {OpenDataUnit} [openDataUnit] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createOpenDataUnit(openDataUnit?: OpenDataUnit, options?: any): AxiosPromise { + return localVarFp.createOpenDataUnit(openDataUnit, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {OpenDataVersion} [openDataVersion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createOpenDataVersion(openDataVersion?: OpenDataVersion, options?: any): AxiosPromise { + return localVarFp.createOpenDataVersion(openDataVersion, options).then((request) => request(axios, basePath)); + }, /** * * @param {Property} [property] @@ -15424,6 +18762,15 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: destroyBookmarkletImport(id: string, options?: any): AxiosPromise { return localVarFp.destroyBookmarkletImport(id, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {string} id A unique integer value identifying this connector config. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + destroyConnectorConfig(id: string, options?: any): AxiosPromise { + return localVarFp.destroyConnectorConfig(id, options).then((request) => request(axios, basePath)); + }, /** * * @param {string} id A unique integer value identifying this cook log. @@ -15514,6 +18861,69 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: destroyMealType(id: string, options?: any): AxiosPromise { return localVarFp.destroyMealType(id, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {string} id A unique integer value identifying this open data category. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + destroyOpenDataCategory(id: string, options?: any): AxiosPromise { + return localVarFp.destroyOpenDataCategory(id, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data conversion. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + destroyOpenDataConversion(id: string, options?: any): AxiosPromise { + return localVarFp.destroyOpenDataConversion(id, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data food. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + destroyOpenDataFood(id: string, options?: any): AxiosPromise { + return localVarFp.destroyOpenDataFood(id, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data property. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + destroyOpenDataProperty(id: string, options?: any): AxiosPromise { + return localVarFp.destroyOpenDataProperty(id, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data store. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + destroyOpenDataStore(id: string, options?: any): AxiosPromise { + return localVarFp.destroyOpenDataStore(id, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data unit. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + destroyOpenDataUnit(id: string, options?: any): AxiosPromise { + return localVarFp.destroyOpenDataUnit(id, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data version. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + destroyOpenDataVersion(id: string, options?: any): AxiosPromise { + return localVarFp.destroyOpenDataVersion(id, options).then((request) => request(axios, basePath)); + }, /** * * @param {string} id A unique integer value identifying this property. @@ -15695,6 +19105,14 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: fdcFood(id: string, food?: Food, options?: any): AxiosPromise { return localVarFp.fdcFood(id, food, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + flatRecipe(options?: any): AxiosPromise { + return localVarFp.flatRecipe(options).then((request) => request(axios, basePath)); + }, /** * * @param {string} id A unique integer value identifying this recipe. @@ -15733,6 +19151,14 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: listBookmarkletImports(options?: any): AxiosPromise> { return localVarFp.listBookmarkletImports(options).then((request) => request(axios, basePath)); }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listConnectorConfigs(options?: any): AxiosPromise> { + return localVarFp.listConnectorConfigs(options).then((request) => request(axios, basePath)); + }, /** * * @param {number} [page] A page number within the paginated result set. @@ -15852,6 +19278,70 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: listMealTypes(options?: any): AxiosPromise> { return localVarFp.listMealTypes(options).then((request) => request(axios, basePath)); }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listOpenDataCategorys(options?: any): AxiosPromise> { + return localVarFp.listOpenDataCategorys(options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listOpenDataConversions(options?: any): AxiosPromise> { + return localVarFp.listOpenDataConversions(options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listOpenDataFoods(options?: any): AxiosPromise> { + return localVarFp.listOpenDataFoods(options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listOpenDataPropertys(options?: any): AxiosPromise> { + return localVarFp.listOpenDataPropertys(options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listOpenDataStatisticsViewSets(options?: any): AxiosPromise> { + return localVarFp.listOpenDataStatisticsViewSets(options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listOpenDataStores(options?: any): AxiosPromise> { + return localVarFp.listOpenDataStores(options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listOpenDataUnits(options?: any): AxiosPromise> { + return localVarFp.listOpenDataUnits(options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + listOpenDataVersions(options?: any): AxiosPromise> { + return localVarFp.listOpenDataVersions(options).then((request) => request(axios, basePath)); + }, /** * * @param {*} [options] Override http request option. @@ -16191,6 +19681,16 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: partialUpdateBookmarkletImport(id: string, bookmarkletImport?: BookmarkletImport, options?: any): AxiosPromise { return localVarFp.partialUpdateBookmarkletImport(id, bookmarkletImport, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {string} id A unique integer value identifying this connector config. + * @param {ConnectorConfigConfig} [connectorConfigConfig] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + partialUpdateConnectorConfig(id: string, connectorConfigConfig?: ConnectorConfigConfig, options?: any): AxiosPromise { + return localVarFp.partialUpdateConnectorConfig(id, connectorConfigConfig, options).then((request) => request(axios, basePath)); + }, /** * * @param {string} id A unique integer value identifying this cook log. @@ -16291,6 +19791,76 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: partialUpdateMealType(id: string, mealType?: MealType, options?: any): AxiosPromise { return localVarFp.partialUpdateMealType(id, mealType, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {string} id A unique integer value identifying this open data category. + * @param {OpenDataCategory} [openDataCategory] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + partialUpdateOpenDataCategory(id: string, openDataCategory?: OpenDataCategory, options?: any): AxiosPromise { + return localVarFp.partialUpdateOpenDataCategory(id, openDataCategory, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data conversion. + * @param {OpenDataConversion} [openDataConversion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + partialUpdateOpenDataConversion(id: string, openDataConversion?: OpenDataConversion, options?: any): AxiosPromise { + return localVarFp.partialUpdateOpenDataConversion(id, openDataConversion, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data food. + * @param {OpenDataFood} [openDataFood] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + partialUpdateOpenDataFood(id: string, openDataFood?: OpenDataFood, options?: any): AxiosPromise { + return localVarFp.partialUpdateOpenDataFood(id, openDataFood, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data property. + * @param {OpenDataProperty} [openDataProperty] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + partialUpdateOpenDataProperty(id: string, openDataProperty?: OpenDataProperty, options?: any): AxiosPromise { + return localVarFp.partialUpdateOpenDataProperty(id, openDataProperty, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data store. + * @param {OpenDataStore} [openDataStore] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + partialUpdateOpenDataStore(id: string, openDataStore?: OpenDataStore, options?: any): AxiosPromise { + return localVarFp.partialUpdateOpenDataStore(id, openDataStore, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data unit. + * @param {OpenDataUnit} [openDataUnit] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + partialUpdateOpenDataUnit(id: string, openDataUnit?: OpenDataUnit, options?: any): AxiosPromise { + return localVarFp.partialUpdateOpenDataUnit(id, openDataUnit, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data version. + * @param {OpenDataVersion} [openDataVersion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + partialUpdateOpenDataVersion(id: string, openDataVersion?: OpenDataVersion, options?: any): AxiosPromise { + return localVarFp.partialUpdateOpenDataVersion(id, openDataVersion, options).then((request) => request(axios, basePath)); + }, /** * * @param {string} id A unique integer value identifying this property. @@ -16552,6 +20122,15 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: retrieveBookmarkletImport(id: string, options?: any): AxiosPromise { return localVarFp.retrieveBookmarkletImport(id, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {string} id A unique integer value identifying this connector config. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveConnectorConfig(id: string, options?: any): AxiosPromise { + return localVarFp.retrieveConnectorConfig(id, options).then((request) => request(axios, basePath)); + }, /** * * @param {string} id A unique integer value identifying this cook log. @@ -16579,6 +20158,15 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: retrieveExportLog(id: string, options?: any): AxiosPromise { return localVarFp.retrieveExportLog(id, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {string} id + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveFDCViewSet(id: string, options?: any): AxiosPromise { + return localVarFp.retrieveFDCViewSet(id, options).then((request) => request(axios, basePath)); + }, /** * * @param {string} id A unique integer value identifying this food. @@ -16660,6 +20248,69 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: retrieveMealType(id: string, options?: any): AxiosPromise { return localVarFp.retrieveMealType(id, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {string} id A unique integer value identifying this open data category. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveOpenDataCategory(id: string, options?: any): AxiosPromise { + return localVarFp.retrieveOpenDataCategory(id, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data conversion. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveOpenDataConversion(id: string, options?: any): AxiosPromise { + return localVarFp.retrieveOpenDataConversion(id, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data food. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveOpenDataFood(id: string, options?: any): AxiosPromise { + return localVarFp.retrieveOpenDataFood(id, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data property. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveOpenDataProperty(id: string, options?: any): AxiosPromise { + return localVarFp.retrieveOpenDataProperty(id, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data store. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveOpenDataStore(id: string, options?: any): AxiosPromise { + return localVarFp.retrieveOpenDataStore(id, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data unit. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveOpenDataUnit(id: string, options?: any): AxiosPromise { + return localVarFp.retrieveOpenDataUnit(id, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data version. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + retrieveOpenDataVersion(id: string, options?: any): AxiosPromise { + return localVarFp.retrieveOpenDataVersion(id, options).then((request) => request(axios, basePath)); + }, /** * * @param {string} id A unique integer value identifying this property. @@ -16944,6 +20595,16 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: updateBookmarkletImport(id: string, bookmarkletImport?: BookmarkletImport, options?: any): AxiosPromise { return localVarFp.updateBookmarkletImport(id, bookmarkletImport, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {string} id A unique integer value identifying this connector config. + * @param {ConnectorConfigConfig} [connectorConfigConfig] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateConnectorConfig(id: string, connectorConfigConfig?: ConnectorConfigConfig, options?: any): AxiosPromise { + return localVarFp.updateConnectorConfig(id, connectorConfigConfig, options).then((request) => request(axios, basePath)); + }, /** * * @param {string} id A unique integer value identifying this cook log. @@ -17044,6 +20705,76 @@ export const ApiApiFactory = function (configuration?: Configuration, basePath?: updateMealType(id: string, mealType?: MealType, options?: any): AxiosPromise { return localVarFp.updateMealType(id, mealType, options).then((request) => request(axios, basePath)); }, + /** + * + * @param {string} id A unique integer value identifying this open data category. + * @param {OpenDataCategory} [openDataCategory] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateOpenDataCategory(id: string, openDataCategory?: OpenDataCategory, options?: any): AxiosPromise { + return localVarFp.updateOpenDataCategory(id, openDataCategory, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data conversion. + * @param {OpenDataConversion} [openDataConversion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateOpenDataConversion(id: string, openDataConversion?: OpenDataConversion, options?: any): AxiosPromise { + return localVarFp.updateOpenDataConversion(id, openDataConversion, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data food. + * @param {OpenDataFood} [openDataFood] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateOpenDataFood(id: string, openDataFood?: OpenDataFood, options?: any): AxiosPromise { + return localVarFp.updateOpenDataFood(id, openDataFood, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data property. + * @param {OpenDataProperty} [openDataProperty] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateOpenDataProperty(id: string, openDataProperty?: OpenDataProperty, options?: any): AxiosPromise { + return localVarFp.updateOpenDataProperty(id, openDataProperty, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data store. + * @param {OpenDataStore} [openDataStore] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateOpenDataStore(id: string, openDataStore?: OpenDataStore, options?: any): AxiosPromise { + return localVarFp.updateOpenDataStore(id, openDataStore, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data unit. + * @param {OpenDataUnit} [openDataUnit] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateOpenDataUnit(id: string, openDataUnit?: OpenDataUnit, options?: any): AxiosPromise { + return localVarFp.updateOpenDataUnit(id, openDataUnit, options).then((request) => request(axios, basePath)); + }, + /** + * + * @param {string} id A unique integer value identifying this open data version. + * @param {OpenDataVersion} [openDataVersion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updateOpenDataVersion(id: string, openDataVersion?: OpenDataVersion, options?: any): AxiosPromise { + return localVarFp.updateOpenDataVersion(id, openDataVersion, options).then((request) => request(axios, basePath)); + }, /** * * @param {string} id A unique integer value identifying this property. @@ -17294,6 +21025,17 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).createBookmarkletImport(bookmarkletImport, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {ConnectorConfigConfig} [connectorConfigConfig] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public createConnectorConfig(connectorConfigConfig?: ConnectorConfigConfig, options?: any) { + return ApiApiFp(this.configuration).createConnectorConfig(connectorConfigConfig, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {CookLog} [cookLog] @@ -17404,6 +21146,83 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).createMealType(mealType, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {OpenDataCategory} [openDataCategory] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public createOpenDataCategory(openDataCategory?: OpenDataCategory, options?: any) { + return ApiApiFp(this.configuration).createOpenDataCategory(openDataCategory, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {OpenDataConversion} [openDataConversion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public createOpenDataConversion(openDataConversion?: OpenDataConversion, options?: any) { + return ApiApiFp(this.configuration).createOpenDataConversion(openDataConversion, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {OpenDataFood} [openDataFood] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public createOpenDataFood(openDataFood?: OpenDataFood, options?: any) { + return ApiApiFp(this.configuration).createOpenDataFood(openDataFood, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {OpenDataProperty} [openDataProperty] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public createOpenDataProperty(openDataProperty?: OpenDataProperty, options?: any) { + return ApiApiFp(this.configuration).createOpenDataProperty(openDataProperty, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {OpenDataStore} [openDataStore] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public createOpenDataStore(openDataStore?: OpenDataStore, options?: any) { + return ApiApiFp(this.configuration).createOpenDataStore(openDataStore, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {OpenDataUnit} [openDataUnit] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public createOpenDataUnit(openDataUnit?: OpenDataUnit, options?: any) { + return ApiApiFp(this.configuration).createOpenDataUnit(openDataUnit, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {OpenDataVersion} [openDataVersion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public createOpenDataVersion(openDataVersion?: OpenDataVersion, options?: any) { + return ApiApiFp(this.configuration).createOpenDataVersion(openDataVersion, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {Property} [property] @@ -17662,6 +21481,17 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).destroyBookmarkletImport(id, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {string} id A unique integer value identifying this connector config. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public destroyConnectorConfig(id: string, options?: any) { + return ApiApiFp(this.configuration).destroyConnectorConfig(id, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {string} id A unique integer value identifying this cook log. @@ -17772,6 +21602,83 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).destroyMealType(id, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {string} id A unique integer value identifying this open data category. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public destroyOpenDataCategory(id: string, options?: any) { + return ApiApiFp(this.configuration).destroyOpenDataCategory(id, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data conversion. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public destroyOpenDataConversion(id: string, options?: any) { + return ApiApiFp(this.configuration).destroyOpenDataConversion(id, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data food. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public destroyOpenDataFood(id: string, options?: any) { + return ApiApiFp(this.configuration).destroyOpenDataFood(id, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data property. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public destroyOpenDataProperty(id: string, options?: any) { + return ApiApiFp(this.configuration).destroyOpenDataProperty(id, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data store. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public destroyOpenDataStore(id: string, options?: any) { + return ApiApiFp(this.configuration).destroyOpenDataStore(id, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data unit. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public destroyOpenDataUnit(id: string, options?: any) { + return ApiApiFp(this.configuration).destroyOpenDataUnit(id, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data version. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public destroyOpenDataVersion(id: string, options?: any) { + return ApiApiFp(this.configuration).destroyOpenDataVersion(id, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {string} id A unique integer value identifying this property. @@ -17993,6 +21900,16 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).fdcFood(id, food, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public flatRecipe(options?: any) { + return ApiApiFp(this.configuration).flatRecipe(options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {string} id A unique integer value identifying this recipe. @@ -18039,6 +21956,16 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).listBookmarkletImports(options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public listConnectorConfigs(options?: any) { + return ApiApiFp(this.configuration).listConnectorConfigs(options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {number} [page] A page number within the paginated result set. @@ -18182,6 +22109,86 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).listMealTypes(options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public listOpenDataCategorys(options?: any) { + return ApiApiFp(this.configuration).listOpenDataCategorys(options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public listOpenDataConversions(options?: any) { + return ApiApiFp(this.configuration).listOpenDataConversions(options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public listOpenDataFoods(options?: any) { + return ApiApiFp(this.configuration).listOpenDataFoods(options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public listOpenDataPropertys(options?: any) { + return ApiApiFp(this.configuration).listOpenDataPropertys(options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public listOpenDataStatisticsViewSets(options?: any) { + return ApiApiFp(this.configuration).listOpenDataStatisticsViewSets(options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public listOpenDataStores(options?: any) { + return ApiApiFp(this.configuration).listOpenDataStores(options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public listOpenDataUnits(options?: any) { + return ApiApiFp(this.configuration).listOpenDataUnits(options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public listOpenDataVersions(options?: any) { + return ApiApiFp(this.configuration).listOpenDataVersions(options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {*} [options] Override http request option. @@ -18587,6 +22594,18 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).partialUpdateBookmarkletImport(id, bookmarkletImport, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {string} id A unique integer value identifying this connector config. + * @param {ConnectorConfigConfig} [connectorConfigConfig] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public partialUpdateConnectorConfig(id: string, connectorConfigConfig?: ConnectorConfigConfig, options?: any) { + return ApiApiFp(this.configuration).partialUpdateConnectorConfig(id, connectorConfigConfig, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {string} id A unique integer value identifying this cook log. @@ -18707,6 +22726,90 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).partialUpdateMealType(id, mealType, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {string} id A unique integer value identifying this open data category. + * @param {OpenDataCategory} [openDataCategory] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public partialUpdateOpenDataCategory(id: string, openDataCategory?: OpenDataCategory, options?: any) { + return ApiApiFp(this.configuration).partialUpdateOpenDataCategory(id, openDataCategory, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data conversion. + * @param {OpenDataConversion} [openDataConversion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public partialUpdateOpenDataConversion(id: string, openDataConversion?: OpenDataConversion, options?: any) { + return ApiApiFp(this.configuration).partialUpdateOpenDataConversion(id, openDataConversion, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data food. + * @param {OpenDataFood} [openDataFood] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public partialUpdateOpenDataFood(id: string, openDataFood?: OpenDataFood, options?: any) { + return ApiApiFp(this.configuration).partialUpdateOpenDataFood(id, openDataFood, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data property. + * @param {OpenDataProperty} [openDataProperty] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public partialUpdateOpenDataProperty(id: string, openDataProperty?: OpenDataProperty, options?: any) { + return ApiApiFp(this.configuration).partialUpdateOpenDataProperty(id, openDataProperty, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data store. + * @param {OpenDataStore} [openDataStore] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public partialUpdateOpenDataStore(id: string, openDataStore?: OpenDataStore, options?: any) { + return ApiApiFp(this.configuration).partialUpdateOpenDataStore(id, openDataStore, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data unit. + * @param {OpenDataUnit} [openDataUnit] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public partialUpdateOpenDataUnit(id: string, openDataUnit?: OpenDataUnit, options?: any) { + return ApiApiFp(this.configuration).partialUpdateOpenDataUnit(id, openDataUnit, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data version. + * @param {OpenDataVersion} [openDataVersion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public partialUpdateOpenDataVersion(id: string, openDataVersion?: OpenDataVersion, options?: any) { + return ApiApiFp(this.configuration).partialUpdateOpenDataVersion(id, openDataVersion, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {string} id A unique integer value identifying this property. @@ -19020,6 +23123,17 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).retrieveBookmarkletImport(id, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {string} id A unique integer value identifying this connector config. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public retrieveConnectorConfig(id: string, options?: any) { + return ApiApiFp(this.configuration).retrieveConnectorConfig(id, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {string} id A unique integer value identifying this cook log. @@ -19053,6 +23167,17 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).retrieveExportLog(id, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {string} id + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public retrieveFDCViewSet(id: string, options?: any) { + return ApiApiFp(this.configuration).retrieveFDCViewSet(id, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {string} id A unique integer value identifying this food. @@ -19152,6 +23277,83 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).retrieveMealType(id, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {string} id A unique integer value identifying this open data category. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public retrieveOpenDataCategory(id: string, options?: any) { + return ApiApiFp(this.configuration).retrieveOpenDataCategory(id, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data conversion. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public retrieveOpenDataConversion(id: string, options?: any) { + return ApiApiFp(this.configuration).retrieveOpenDataConversion(id, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data food. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public retrieveOpenDataFood(id: string, options?: any) { + return ApiApiFp(this.configuration).retrieveOpenDataFood(id, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data property. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public retrieveOpenDataProperty(id: string, options?: any) { + return ApiApiFp(this.configuration).retrieveOpenDataProperty(id, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data store. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public retrieveOpenDataStore(id: string, options?: any) { + return ApiApiFp(this.configuration).retrieveOpenDataStore(id, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data unit. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public retrieveOpenDataUnit(id: string, options?: any) { + return ApiApiFp(this.configuration).retrieveOpenDataUnit(id, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data version. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public retrieveOpenDataVersion(id: string, options?: any) { + return ApiApiFp(this.configuration).retrieveOpenDataVersion(id, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {string} id A unique integer value identifying this property. @@ -19498,6 +23700,18 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).updateBookmarkletImport(id, bookmarkletImport, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {string} id A unique integer value identifying this connector config. + * @param {ConnectorConfigConfig} [connectorConfigConfig] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public updateConnectorConfig(id: string, connectorConfigConfig?: ConnectorConfigConfig, options?: any) { + return ApiApiFp(this.configuration).updateConnectorConfig(id, connectorConfigConfig, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {string} id A unique integer value identifying this cook log. @@ -19618,6 +23832,90 @@ export class ApiApi extends BaseAPI { return ApiApiFp(this.configuration).updateMealType(id, mealType, options).then((request) => request(this.axios, this.basePath)); } + /** + * + * @param {string} id A unique integer value identifying this open data category. + * @param {OpenDataCategory} [openDataCategory] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public updateOpenDataCategory(id: string, openDataCategory?: OpenDataCategory, options?: any) { + return ApiApiFp(this.configuration).updateOpenDataCategory(id, openDataCategory, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data conversion. + * @param {OpenDataConversion} [openDataConversion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public updateOpenDataConversion(id: string, openDataConversion?: OpenDataConversion, options?: any) { + return ApiApiFp(this.configuration).updateOpenDataConversion(id, openDataConversion, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data food. + * @param {OpenDataFood} [openDataFood] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public updateOpenDataFood(id: string, openDataFood?: OpenDataFood, options?: any) { + return ApiApiFp(this.configuration).updateOpenDataFood(id, openDataFood, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data property. + * @param {OpenDataProperty} [openDataProperty] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public updateOpenDataProperty(id: string, openDataProperty?: OpenDataProperty, options?: any) { + return ApiApiFp(this.configuration).updateOpenDataProperty(id, openDataProperty, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data store. + * @param {OpenDataStore} [openDataStore] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public updateOpenDataStore(id: string, openDataStore?: OpenDataStore, options?: any) { + return ApiApiFp(this.configuration).updateOpenDataStore(id, openDataStore, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data unit. + * @param {OpenDataUnit} [openDataUnit] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public updateOpenDataUnit(id: string, openDataUnit?: OpenDataUnit, options?: any) { + return ApiApiFp(this.configuration).updateOpenDataUnit(id, openDataUnit, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @param {string} id A unique integer value identifying this open data version. + * @param {OpenDataVersion} [openDataVersion] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof ApiApi + */ + public updateOpenDataVersion(id: string, openDataVersion?: OpenDataVersion, options?: any) { + return ApiApiFp(this.configuration).updateOpenDataVersion(id, openDataVersion, options).then((request) => request(this.axios, this.basePath)); + } + /** * * @param {string} id A unique integer value identifying this property. diff --git a/vue3/.vite/deps/_metadata.json b/vue3/.vite/deps/_metadata.json new file mode 100644 index 000000000..220e786eb --- /dev/null +++ b/vue3/.vite/deps/_metadata.json @@ -0,0 +1,8 @@ +{ + "hash": "07ff001c", + "configHash": "9d5c5d47", + "lockfileHash": "04d75623", + "browserHash": "e755c4e4", + "optimized": {}, + "chunks": {} +} \ No newline at end of file diff --git a/vue3/.vite/deps/package.json b/vue3/.vite/deps/package.json new file mode 100644 index 000000000..3dbc1ca59 --- /dev/null +++ b/vue3/.vite/deps/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/vue3/package.json b/vue3/package.json new file mode 100644 index 000000000..953ba59d2 --- /dev/null +++ b/vue3/package.json @@ -0,0 +1,37 @@ +{ + "name": "vue3", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "@mdi/font": "7.2.96", + "@types/luxon": "^3.4.2", + "@vueuse/core": "^10.9.0", + "luxon": "^3.4.4", + "mavon-editor": "^3.0.1", + "pinia": "^2.1.7", + "vue": "^3.4.15", + "vue-multiselect": "^3.0.0-beta.3", + "vue-router": "4", + "vuedraggable": "^4.1.0", + "vuetify": "^3.5.8" + }, + "devDependencies": { + "@fortawesome/fontawesome-free": "^6.5.1", + "@tsconfig/node18": "^18.2.0", + "@types/jsdom": "^21.1.1", + "@types/node": "^18.17.5", + "@vitejs/plugin-vue": "^5.0.3", + "@vue/tsconfig": "^0.4.0", + "jsdom": "^22.1.0", + "typescript": "^5.2.2", + "vite": "^5.1.0", + "vite-plugin-vuetify": "^2.0.1", + "vue-tsc": "^1.8.27" + } +} diff --git a/vue3/src/apps/tandoor/Tandoor.vue b/vue3/src/apps/tandoor/Tandoor.vue new file mode 100644 index 000000000..be2a618f6 --- /dev/null +++ b/vue3/src/apps/tandoor/Tandoor.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/vue3/src/apps/tandoor/main.ts b/vue3/src/apps/tandoor/main.ts new file mode 100644 index 000000000..b10d3d5ba --- /dev/null +++ b/vue3/src/apps/tandoor/main.ts @@ -0,0 +1,42 @@ +import {createApp} from "vue"; +import {createRouter, createWebHashHistory} from 'vue-router' +import {createPinia} from 'pinia' +// @ts-ignore +import App from './Tandoor.vue' + +import mavonEditor from 'mavon-editor' +import 'vite/modulepreload-polyfill'; +import vuetify from "@/vuetify"; +import ShoppingListPage from "@/pages/ShoppingListPage.vue"; +import RecipeSearchPage from "@/pages/RecipeSearchPage.vue"; +import RecipeViewPage from "@/pages/RecipeViewPage.vue"; +import luxonPlugin from "@/plugins/luxonPlugin"; +import RecipeEditPage from "@/pages/RecipeEditPage.vue"; +import MealPlanPage from "@/pages/MealPlanPage.vue"; + +const routes = [ + {path: '/', redirect: '/search', name: 'index'}, + {path: '/search', component: RecipeSearchPage, name: 'view_search'}, + {path: '/shopping', component: ShoppingListPage, name: 'view_shopping'}, + {path: '/mealplan', component: MealPlanPage, name: 'view_mealplan'}, + {path: '/books', component: ShoppingListPage, name: 'view_books'}, + {path: '/recipe/:id', component: RecipeViewPage, name: 'view_recipe', props: true}, + {path: '/recipe/edit/:recipe_id', component: RecipeEditPage, name: 'edit_recipe', props: true}, +] + +const router = createRouter({ + // 4. Provide the history implementation to use. We + // are using the hash history for simplicity here. + history: createWebHashHistory(), + routes, +}) + +const app = createApp(App) + +app.use(createPinia()) +app.use(vuetify) +app.use(router) +app.use(luxonPlugin) +app.use(mavonEditor) // TODO only use on pages that need it + +app.mount('#app') diff --git a/vue3/src/assets/brand_logo.svg b/vue3/src/assets/brand_logo.svg new file mode 100644 index 000000000..54c073f2c --- /dev/null +++ b/vue3/src/assets/brand_logo.svg @@ -0,0 +1,164 @@ + +image/svg+xml + + + + +Tandoor diff --git a/vue3/src/assets/logo_color.svg b/vue3/src/assets/logo_color.svg new file mode 100644 index 000000000..01c93f04c --- /dev/null +++ b/vue3/src/assets/logo_color.svg @@ -0,0 +1,43 @@ + + + + + + + + diff --git a/vue3/src/assets/recipe_no_image.svg b/vue3/src/assets/recipe_no_image.svg new file mode 100644 index 000000000..1128e2ca0 --- /dev/null +++ b/vue3/src/assets/recipe_no_image.svg @@ -0,0 +1,59 @@ + + diff --git a/vue3/src/components/display/HorizontalMealPlanWindow.vue b/vue3/src/components/display/HorizontalMealPlanWindow.vue new file mode 100644 index 000000000..ebd4b5180 --- /dev/null +++ b/vue3/src/components/display/HorizontalMealPlanWindow.vue @@ -0,0 +1,138 @@ + + + + + + + \ No newline at end of file diff --git a/vue3/src/components/display/HorizontalRecipeWindow.vue b/vue3/src/components/display/HorizontalRecipeWindow.vue new file mode 100644 index 000000000..9451b6486 --- /dev/null +++ b/vue3/src/components/display/HorizontalRecipeWindow.vue @@ -0,0 +1,92 @@ + + + + + + + \ No newline at end of file diff --git a/vue3/src/components/display/IngredientsTable.vue b/vue3/src/components/display/IngredientsTable.vue new file mode 100644 index 000000000..052769516 --- /dev/null +++ b/vue3/src/components/display/IngredientsTable.vue @@ -0,0 +1,47 @@ + + + + + + \ No newline at end of file diff --git a/vue3/src/components/display/IngredientsTableRow.vue b/vue3/src/components/display/IngredientsTableRow.vue new file mode 100644 index 000000000..d48dd4686 --- /dev/null +++ b/vue3/src/components/display/IngredientsTableRow.vue @@ -0,0 +1,53 @@ + + + + + \ No newline at end of file diff --git a/vue3/src/components/display/Instructions.vue b/vue3/src/components/display/Instructions.vue new file mode 100644 index 000000000..f1f69ac76 --- /dev/null +++ b/vue3/src/components/display/Instructions.vue @@ -0,0 +1,42 @@ + + + + diff --git a/vue3/src/components/display/KeywordsBar.vue b/vue3/src/components/display/KeywordsBar.vue new file mode 100644 index 000000000..a0d134e6a --- /dev/null +++ b/vue3/src/components/display/KeywordsBar.vue @@ -0,0 +1,21 @@ + + + diff --git a/vue3/src/components/display/RecipeActivity.vue b/vue3/src/components/display/RecipeActivity.vue new file mode 100644 index 000000000..4b8733ecb --- /dev/null +++ b/vue3/src/components/display/RecipeActivity.vue @@ -0,0 +1,57 @@ + + + + + \ No newline at end of file diff --git a/vue3/src/components/display/RecipeCard.vue b/vue3/src/components/display/RecipeCard.vue new file mode 100644 index 000000000..067ac8411 --- /dev/null +++ b/vue3/src/components/display/RecipeCard.vue @@ -0,0 +1,75 @@ + + + + + \ No newline at end of file diff --git a/vue3/src/components/display/RecipeView.vue b/vue3/src/components/display/RecipeView.vue new file mode 100644 index 000000000..440c2ad04 --- /dev/null +++ b/vue3/src/components/display/RecipeView.vue @@ -0,0 +1,105 @@ + + + + + \ No newline at end of file diff --git a/vue3/src/components/display/ScalableNumber.vue b/vue3/src/components/display/ScalableNumber.vue new file mode 100644 index 000000000..fae8092ad --- /dev/null +++ b/vue3/src/components/display/ScalableNumber.vue @@ -0,0 +1,25 @@ + + + diff --git a/vue3/src/components/display/Step.vue b/vue3/src/components/display/Step.vue new file mode 100644 index 000000000..84581dfe6 --- /dev/null +++ b/vue3/src/components/display/Step.vue @@ -0,0 +1,96 @@ + + + + + \ No newline at end of file diff --git a/vue3/src/components/display/StepsOverview.vue b/vue3/src/components/display/StepsOverview.vue new file mode 100644 index 000000000..2d247c6f4 --- /dev/null +++ b/vue3/src/components/display/StepsOverview.vue @@ -0,0 +1,41 @@ + + + + + + \ No newline at end of file diff --git a/vue3/src/components/inputs/GlobalSearchDialog.vue b/vue3/src/components/inputs/GlobalSearchDialog.vue new file mode 100644 index 000000000..cb190fd6d --- /dev/null +++ b/vue3/src/components/inputs/GlobalSearchDialog.vue @@ -0,0 +1,182 @@ + + + + + + \ No newline at end of file diff --git a/vue3/src/components/inputs/ModelSelect.vue b/vue3/src/components/inputs/ModelSelect.vue new file mode 100644 index 000000000..019c918b0 --- /dev/null +++ b/vue3/src/components/inputs/ModelSelect.vue @@ -0,0 +1,157 @@ + + + + + + \ No newline at end of file diff --git a/vue3/src/components/inputs/ModelSelectVuetify.vue b/vue3/src/components/inputs/ModelSelectVuetify.vue new file mode 100644 index 000000000..6b32e4fd3 --- /dev/null +++ b/vue3/src/components/inputs/ModelSelectVuetify.vue @@ -0,0 +1,184 @@ + + + + + + + + \ No newline at end of file diff --git a/vue3/src/components/inputs/NumberScalerDialog.vue b/vue3/src/components/inputs/NumberScalerDialog.vue new file mode 100644 index 000000000..d4af62032 --- /dev/null +++ b/vue3/src/components/inputs/NumberScalerDialog.vue @@ -0,0 +1,98 @@ + + + + + + \ No newline at end of file diff --git a/vue3/src/components/inputs/RecipeContextMenu.vue b/vue3/src/components/inputs/RecipeContextMenu.vue new file mode 100644 index 000000000..8a4206dbc --- /dev/null +++ b/vue3/src/components/inputs/RecipeContextMenu.vue @@ -0,0 +1,37 @@ + + + + + + \ No newline at end of file diff --git a/vue3/src/components/inputs/StepEditor.vue b/vue3/src/components/inputs/StepEditor.vue new file mode 100644 index 000000000..566ef0acf --- /dev/null +++ b/vue3/src/components/inputs/StepEditor.vue @@ -0,0 +1,143 @@ + + + + + + \ No newline at end of file diff --git a/vue3/src/components/inputs/StepMarkdownEditor.vue b/vue3/src/components/inputs/StepMarkdownEditor.vue new file mode 100644 index 000000000..1abfa18b5 --- /dev/null +++ b/vue3/src/components/inputs/StepMarkdownEditor.vue @@ -0,0 +1,84 @@ + + + + + + \ No newline at end of file diff --git a/vue3/src/openapi/.openapi-generator-ignore b/vue3/src/openapi/.openapi-generator-ignore new file mode 100644 index 000000000..19b75531e --- /dev/null +++ b/vue3/src/openapi/.openapi-generator-ignore @@ -0,0 +1,25 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md + +runtime.ts \ No newline at end of file diff --git a/vue3/src/openapi/.openapi-generator/FILES b/vue3/src/openapi/.openapi-generator/FILES new file mode 100644 index 000000000..2944fbe55 --- /dev/null +++ b/vue3/src/openapi/.openapi-generator/FILES @@ -0,0 +1,130 @@ +apis/ApiApi.ts +apis/ApiImportOpenDataApi.ts +apis/ApiTokenAuthApi.ts +apis/index.ts +index.ts +models/AccessToken.ts +models/AuthToken.ts +models/Automation.ts +models/AutomationTypeEnum.ts +models/BaseUnitEnum.ts +models/BookmarkletImport.ts +models/BookmarkletImportList.ts +models/ConnectorConfigConfig.ts +models/CookLog.ts +models/CustomFilter.ts +models/DefaultPageEnum.ts +models/ExportLog.ts +models/Food.ts +models/FoodInheritField.ts +models/FoodSimple.ts +models/Group.ts +models/ImportLog.ts +models/Ingredient.ts +models/InviteLink.ts +models/Keyword.ts +models/KeywordLabel.ts +models/MealPlan.ts +models/MealType.ts +models/MethodEnum.ts +models/NutritionInformation.ts +models/OpenDataCategory.ts +models/OpenDataConversion.ts +models/OpenDataFood.ts +models/OpenDataFoodProperty.ts +models/OpenDataProperty.ts +models/OpenDataStore.ts +models/OpenDataStoreCategory.ts +models/OpenDataUnit.ts +models/OpenDataUnitTypeEnum.ts +models/OpenDataVersion.ts +models/PaginatedAutomationList.ts +models/PaginatedCookLogList.ts +models/PaginatedCustomFilterList.ts +models/PaginatedExportLogList.ts +models/PaginatedFoodList.ts +models/PaginatedImportLogList.ts +models/PaginatedIngredientList.ts +models/PaginatedKeywordList.ts +models/PaginatedRecipeOverviewList.ts +models/PaginatedStepList.ts +models/PaginatedSupermarketCategoryRelationList.ts +models/PaginatedSyncLogList.ts +models/PaginatedUnitList.ts +models/PaginatedUserSpaceList.ts +models/PaginatedViewLogList.ts +models/PatchedAccessToken.ts +models/PatchedAutomation.ts +models/PatchedBookmarkletImport.ts +models/PatchedConnectorConfigConfig.ts +models/PatchedCookLog.ts +models/PatchedCustomFilter.ts +models/PatchedExportLog.ts +models/PatchedFood.ts +models/PatchedImportLog.ts +models/PatchedIngredient.ts +models/PatchedInviteLink.ts +models/PatchedKeyword.ts +models/PatchedMealPlan.ts +models/PatchedMealType.ts +models/PatchedOpenDataCategory.ts +models/PatchedOpenDataConversion.ts +models/PatchedOpenDataFood.ts +models/PatchedOpenDataProperty.ts +models/PatchedOpenDataStore.ts +models/PatchedOpenDataUnit.ts +models/PatchedOpenDataVersion.ts +models/PatchedProperty.ts +models/PatchedPropertyType.ts +models/PatchedRecipe.ts +models/PatchedRecipeBook.ts +models/PatchedRecipeBookEntry.ts +models/PatchedShoppingListEntry.ts +models/PatchedShoppingListRecipe.ts +models/PatchedSpace.ts +models/PatchedStep.ts +models/PatchedStorage.ts +models/PatchedSupermarket.ts +models/PatchedSupermarketCategory.ts +models/PatchedSupermarketCategoryRelation.ts +models/PatchedSync.ts +models/PatchedUnit.ts +models/PatchedUnitConversion.ts +models/PatchedUser.ts +models/PatchedUserPreference.ts +models/PatchedUserSpace.ts +models/PatchedViewLog.ts +models/Property.ts +models/PropertyType.ts +models/Recipe.ts +models/RecipeBook.ts +models/RecipeBookEntry.ts +models/RecipeFlat.ts +models/RecipeImage.ts +models/RecipeOverview.ts +models/RecipeShoppingUpdate.ts +models/RecipeSimple.ts +models/ShoppingListEntry.ts +models/ShoppingListEntryBulk.ts +models/ShoppingListRecipe.ts +models/Space.ts +models/SpaceNavTextColorEnum.ts +models/SpaceThemeEnum.ts +models/Step.ts +models/Storage.ts +models/Supermarket.ts +models/SupermarketCategory.ts +models/SupermarketCategoryRelation.ts +models/Sync.ts +models/SyncLog.ts +models/ThemeEnum.ts +models/Unit.ts +models/UnitConversion.ts +models/User.ts +models/UserFile.ts +models/UserFileView.ts +models/UserPreference.ts +models/UserPreferenceNavTextColorEnum.ts +models/UserSpace.ts +models/ViewLog.ts +models/index.ts diff --git a/vue3/src/openapi/.openapi-generator/VERSION b/vue3/src/openapi/.openapi-generator/VERSION new file mode 100644 index 000000000..ba7f754d0 --- /dev/null +++ b/vue3/src/openapi/.openapi-generator/VERSION @@ -0,0 +1 @@ +7.4.0 diff --git a/vue3/src/openapi/apis/ApiApi.ts b/vue3/src/openapi/apis/ApiApi.ts new file mode 100644 index 000000000..8c9bfb70e --- /dev/null +++ b/vue3/src/openapi/apis/ApiApi.ts @@ -0,0 +1,11665 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; +import type { + AccessToken, + Automation, + BookmarkletImport, + BookmarkletImportList, + ConnectorConfigConfig, + CookLog, + CustomFilter, + ExportLog, + Food, + FoodInheritField, + Group, + ImportLog, + Ingredient, + InviteLink, + Keyword, + MealPlan, + MealType, + OpenDataCategory, + OpenDataConversion, + OpenDataFood, + OpenDataProperty, + OpenDataStore, + OpenDataUnit, + OpenDataVersion, + PaginatedAutomationList, + PaginatedCookLogList, + PaginatedCustomFilterList, + PaginatedExportLogList, + PaginatedFoodList, + PaginatedImportLogList, + PaginatedIngredientList, + PaginatedKeywordList, + PaginatedRecipeOverviewList, + PaginatedStepList, + PaginatedSupermarketCategoryRelationList, + PaginatedSyncLogList, + PaginatedUnitList, + PaginatedUserSpaceList, + PaginatedViewLogList, + PatchedAccessToken, + PatchedAutomation, + PatchedBookmarkletImport, + PatchedConnectorConfigConfig, + PatchedCookLog, + PatchedCustomFilter, + PatchedExportLog, + PatchedFood, + PatchedImportLog, + PatchedIngredient, + PatchedInviteLink, + PatchedKeyword, + PatchedMealPlan, + PatchedMealType, + PatchedOpenDataCategory, + PatchedOpenDataConversion, + PatchedOpenDataFood, + PatchedOpenDataProperty, + PatchedOpenDataStore, + PatchedOpenDataUnit, + PatchedOpenDataVersion, + PatchedProperty, + PatchedPropertyType, + PatchedRecipe, + PatchedRecipeBook, + PatchedRecipeBookEntry, + PatchedShoppingListEntry, + PatchedShoppingListRecipe, + PatchedSpace, + PatchedStep, + PatchedStorage, + PatchedSupermarket, + PatchedSupermarketCategory, + PatchedSupermarketCategoryRelation, + PatchedSync, + PatchedUnit, + PatchedUnitConversion, + PatchedUser, + PatchedUserPreference, + PatchedUserSpace, + PatchedViewLog, + Property, + PropertyType, + Recipe, + RecipeBook, + RecipeBookEntry, + RecipeFlat, + RecipeImage, + RecipeShoppingUpdate, + RecipeSimple, + ShoppingListEntry, + ShoppingListEntryBulk, + ShoppingListRecipe, + Space, + Step, + Storage, + Supermarket, + SupermarketCategory, + SupermarketCategoryRelation, + Sync, + SyncLog, + Unit, + UnitConversion, + User, + UserFile, + UserPreference, + UserSpace, + ViewLog, +} from '../models/index'; +import { + AccessTokenFromJSON, + AccessTokenToJSON, + AutomationFromJSON, + AutomationToJSON, + BookmarkletImportFromJSON, + BookmarkletImportToJSON, + BookmarkletImportListFromJSON, + BookmarkletImportListToJSON, + ConnectorConfigConfigFromJSON, + ConnectorConfigConfigToJSON, + CookLogFromJSON, + CookLogToJSON, + CustomFilterFromJSON, + CustomFilterToJSON, + ExportLogFromJSON, + ExportLogToJSON, + FoodFromJSON, + FoodToJSON, + FoodInheritFieldFromJSON, + FoodInheritFieldToJSON, + GroupFromJSON, + GroupToJSON, + ImportLogFromJSON, + ImportLogToJSON, + IngredientFromJSON, + IngredientToJSON, + InviteLinkFromJSON, + InviteLinkToJSON, + KeywordFromJSON, + KeywordToJSON, + MealPlanFromJSON, + MealPlanToJSON, + MealTypeFromJSON, + MealTypeToJSON, + OpenDataCategoryFromJSON, + OpenDataCategoryToJSON, + OpenDataConversionFromJSON, + OpenDataConversionToJSON, + OpenDataFoodFromJSON, + OpenDataFoodToJSON, + OpenDataPropertyFromJSON, + OpenDataPropertyToJSON, + OpenDataStoreFromJSON, + OpenDataStoreToJSON, + OpenDataUnitFromJSON, + OpenDataUnitToJSON, + OpenDataVersionFromJSON, + OpenDataVersionToJSON, + PaginatedAutomationListFromJSON, + PaginatedAutomationListToJSON, + PaginatedCookLogListFromJSON, + PaginatedCookLogListToJSON, + PaginatedCustomFilterListFromJSON, + PaginatedCustomFilterListToJSON, + PaginatedExportLogListFromJSON, + PaginatedExportLogListToJSON, + PaginatedFoodListFromJSON, + PaginatedFoodListToJSON, + PaginatedImportLogListFromJSON, + PaginatedImportLogListToJSON, + PaginatedIngredientListFromJSON, + PaginatedIngredientListToJSON, + PaginatedKeywordListFromJSON, + PaginatedKeywordListToJSON, + PaginatedRecipeOverviewListFromJSON, + PaginatedRecipeOverviewListToJSON, + PaginatedStepListFromJSON, + PaginatedStepListToJSON, + PaginatedSupermarketCategoryRelationListFromJSON, + PaginatedSupermarketCategoryRelationListToJSON, + PaginatedSyncLogListFromJSON, + PaginatedSyncLogListToJSON, + PaginatedUnitListFromJSON, + PaginatedUnitListToJSON, + PaginatedUserSpaceListFromJSON, + PaginatedUserSpaceListToJSON, + PaginatedViewLogListFromJSON, + PaginatedViewLogListToJSON, + PatchedAccessTokenFromJSON, + PatchedAccessTokenToJSON, + PatchedAutomationFromJSON, + PatchedAutomationToJSON, + PatchedBookmarkletImportFromJSON, + PatchedBookmarkletImportToJSON, + PatchedConnectorConfigConfigFromJSON, + PatchedConnectorConfigConfigToJSON, + PatchedCookLogFromJSON, + PatchedCookLogToJSON, + PatchedCustomFilterFromJSON, + PatchedCustomFilterToJSON, + PatchedExportLogFromJSON, + PatchedExportLogToJSON, + PatchedFoodFromJSON, + PatchedFoodToJSON, + PatchedImportLogFromJSON, + PatchedImportLogToJSON, + PatchedIngredientFromJSON, + PatchedIngredientToJSON, + PatchedInviteLinkFromJSON, + PatchedInviteLinkToJSON, + PatchedKeywordFromJSON, + PatchedKeywordToJSON, + PatchedMealPlanFromJSON, + PatchedMealPlanToJSON, + PatchedMealTypeFromJSON, + PatchedMealTypeToJSON, + PatchedOpenDataCategoryFromJSON, + PatchedOpenDataCategoryToJSON, + PatchedOpenDataConversionFromJSON, + PatchedOpenDataConversionToJSON, + PatchedOpenDataFoodFromJSON, + PatchedOpenDataFoodToJSON, + PatchedOpenDataPropertyFromJSON, + PatchedOpenDataPropertyToJSON, + PatchedOpenDataStoreFromJSON, + PatchedOpenDataStoreToJSON, + PatchedOpenDataUnitFromJSON, + PatchedOpenDataUnitToJSON, + PatchedOpenDataVersionFromJSON, + PatchedOpenDataVersionToJSON, + PatchedPropertyFromJSON, + PatchedPropertyToJSON, + PatchedPropertyTypeFromJSON, + PatchedPropertyTypeToJSON, + PatchedRecipeFromJSON, + PatchedRecipeToJSON, + PatchedRecipeBookFromJSON, + PatchedRecipeBookToJSON, + PatchedRecipeBookEntryFromJSON, + PatchedRecipeBookEntryToJSON, + PatchedShoppingListEntryFromJSON, + PatchedShoppingListEntryToJSON, + PatchedShoppingListRecipeFromJSON, + PatchedShoppingListRecipeToJSON, + PatchedSpaceFromJSON, + PatchedSpaceToJSON, + PatchedStepFromJSON, + PatchedStepToJSON, + PatchedStorageFromJSON, + PatchedStorageToJSON, + PatchedSupermarketFromJSON, + PatchedSupermarketToJSON, + PatchedSupermarketCategoryFromJSON, + PatchedSupermarketCategoryToJSON, + PatchedSupermarketCategoryRelationFromJSON, + PatchedSupermarketCategoryRelationToJSON, + PatchedSyncFromJSON, + PatchedSyncToJSON, + PatchedUnitFromJSON, + PatchedUnitToJSON, + PatchedUnitConversionFromJSON, + PatchedUnitConversionToJSON, + PatchedUserFromJSON, + PatchedUserToJSON, + PatchedUserPreferenceFromJSON, + PatchedUserPreferenceToJSON, + PatchedUserSpaceFromJSON, + PatchedUserSpaceToJSON, + PatchedViewLogFromJSON, + PatchedViewLogToJSON, + PropertyFromJSON, + PropertyToJSON, + PropertyTypeFromJSON, + PropertyTypeToJSON, + RecipeFromJSON, + RecipeToJSON, + RecipeBookFromJSON, + RecipeBookToJSON, + RecipeBookEntryFromJSON, + RecipeBookEntryToJSON, + RecipeFlatFromJSON, + RecipeFlatToJSON, + RecipeImageFromJSON, + RecipeImageToJSON, + RecipeShoppingUpdateFromJSON, + RecipeShoppingUpdateToJSON, + RecipeSimpleFromJSON, + RecipeSimpleToJSON, + ShoppingListEntryFromJSON, + ShoppingListEntryToJSON, + ShoppingListEntryBulkFromJSON, + ShoppingListEntryBulkToJSON, + ShoppingListRecipeFromJSON, + ShoppingListRecipeToJSON, + SpaceFromJSON, + SpaceToJSON, + StepFromJSON, + StepToJSON, + StorageFromJSON, + StorageToJSON, + SupermarketFromJSON, + SupermarketToJSON, + SupermarketCategoryFromJSON, + SupermarketCategoryToJSON, + SupermarketCategoryRelationFromJSON, + SupermarketCategoryRelationToJSON, + SyncFromJSON, + SyncToJSON, + SyncLogFromJSON, + SyncLogToJSON, + UnitFromJSON, + UnitToJSON, + UnitConversionFromJSON, + UnitConversionToJSON, + UserFromJSON, + UserToJSON, + UserFileFromJSON, + UserFileToJSON, + UserPreferenceFromJSON, + UserPreferenceToJSON, + UserSpaceFromJSON, + UserSpaceToJSON, + ViewLogFromJSON, + ViewLogToJSON, +} from '../models/index'; + +export interface ApiAccessTokenCreateRequest { + accessToken: AccessToken; +} + +export interface ApiAccessTokenDestroyRequest { + id: number; +} + +export interface ApiAccessTokenPartialUpdateRequest { + id: number; + patchedAccessToken?: PatchedAccessToken; +} + +export interface ApiAccessTokenRetrieveRequest { + id: number; +} + +export interface ApiAccessTokenUpdateRequest { + id: number; + accessToken: AccessToken; +} + +export interface ApiAutomationCreateRequest { + automation: Automation; +} + +export interface ApiAutomationDestroyRequest { + id: number; +} + +export interface ApiAutomationListRequest { + automationType?: string; + page?: number; + pageSize?: number; +} + +export interface ApiAutomationPartialUpdateRequest { + id: number; + patchedAutomation?: PatchedAutomation; +} + +export interface ApiAutomationRetrieveRequest { + id: number; +} + +export interface ApiAutomationUpdateRequest { + id: number; + automation: Automation; +} + +export interface ApiBookmarkletImportCreateRequest { + bookmarkletImport: BookmarkletImport; +} + +export interface ApiBookmarkletImportDestroyRequest { + id: number; +} + +export interface ApiBookmarkletImportPartialUpdateRequest { + id: number; + patchedBookmarkletImport?: PatchedBookmarkletImport; +} + +export interface ApiBookmarkletImportRetrieveRequest { + id: number; +} + +export interface ApiBookmarkletImportUpdateRequest { + id: number; + bookmarkletImport: BookmarkletImport; +} + +export interface ApiConnectorConfigCreateRequest { + connectorConfigConfig: ConnectorConfigConfig; +} + +export interface ApiConnectorConfigDestroyRequest { + id: number; +} + +export interface ApiConnectorConfigPartialUpdateRequest { + id: number; + patchedConnectorConfigConfig?: PatchedConnectorConfigConfig; +} + +export interface ApiConnectorConfigRetrieveRequest { + id: number; +} + +export interface ApiConnectorConfigUpdateRequest { + id: number; + connectorConfigConfig: ConnectorConfigConfig; +} + +export interface ApiCookLogCreateRequest { + cookLog: CookLog; +} + +export interface ApiCookLogDestroyRequest { + id: number; +} + +export interface ApiCookLogListRequest { + page?: number; + pageSize?: number; +} + +export interface ApiCookLogPartialUpdateRequest { + id: number; + patchedCookLog?: PatchedCookLog; +} + +export interface ApiCookLogRetrieveRequest { + id: number; +} + +export interface ApiCookLogUpdateRequest { + id: number; + cookLog: CookLog; +} + +export interface ApiCustomFilterCreateRequest { + customFilter: CustomFilter; +} + +export interface ApiCustomFilterDestroyRequest { + id: number; +} + +export interface ApiCustomFilterListRequest { + limit?: string; + page?: number; + pageSize?: number; + query?: string; + random?: string; + updatedAt?: string; +} + +export interface ApiCustomFilterPartialUpdateRequest { + id: number; + patchedCustomFilter?: PatchedCustomFilter; +} + +export interface ApiCustomFilterRetrieveRequest { + id: number; +} + +export interface ApiCustomFilterUpdateRequest { + id: number; + customFilter: CustomFilter; +} + +export interface ApiDownloadFileRetrieveRequest { + fileId: number; +} + +export interface ApiExportLogCreateRequest { + exportLog: ExportLog; +} + +export interface ApiExportLogDestroyRequest { + id: number; +} + +export interface ApiExportLogListRequest { + page?: number; + pageSize?: number; +} + +export interface ApiExportLogPartialUpdateRequest { + id: number; + patchedExportLog?: PatchedExportLog; +} + +export interface ApiExportLogRetrieveRequest { + id: number; +} + +export interface ApiExportLogUpdateRequest { + id: number; + exportLog: ExportLog; +} + +export interface ApiFoodCreateRequest { + food: Food; +} + +export interface ApiFoodDestroyRequest { + id: number; +} + +export interface ApiFoodFdcCreateRequest { + id: number; + food: Food; +} + +export interface ApiFoodInheritFieldRetrieveRequest { + id: number; +} + +export interface ApiFoodListRequest { + limit?: string; + page?: number; + pageSize?: number; + query?: string; + random?: string; + updatedAt?: string; +} + +export interface ApiFoodMergeUpdateRequest { + id: number; + target: string; + food: Food; +} + +export interface ApiFoodMoveUpdateRequest { + id: number; + parent: string; + food: Food; +} + +export interface ApiFoodPartialUpdateRequest { + id: number; + patchedFood?: PatchedFood; +} + +export interface ApiFoodPropertyCreateRequest { + property: Property; +} + +export interface ApiFoodPropertyDestroyRequest { + id: number; +} + +export interface ApiFoodPropertyPartialUpdateRequest { + id: number; + patchedProperty?: PatchedProperty; +} + +export interface ApiFoodPropertyRetrieveRequest { + id: number; +} + +export interface ApiFoodPropertyTypeCreateRequest { + propertyType: PropertyType; +} + +export interface ApiFoodPropertyTypeDestroyRequest { + id: number; +} + +export interface ApiFoodPropertyTypePartialUpdateRequest { + id: number; + patchedPropertyType?: PatchedPropertyType; +} + +export interface ApiFoodPropertyTypeRetrieveRequest { + id: number; +} + +export interface ApiFoodPropertyTypeUpdateRequest { + id: number; + propertyType: PropertyType; +} + +export interface ApiFoodPropertyUpdateRequest { + id: number; + property: Property; +} + +export interface ApiFoodRetrieveRequest { + id: number; +} + +export interface ApiFoodUpdateRequest { + id: number; + food: Food; +} + +export interface ApiGroupRetrieveRequest { + id: number; +} + +export interface ApiImportLogCreateRequest { + importLog: ImportLog; +} + +export interface ApiImportLogDestroyRequest { + id: number; +} + +export interface ApiImportLogListRequest { + page?: number; + pageSize?: number; +} + +export interface ApiImportLogPartialUpdateRequest { + id: number; + patchedImportLog?: PatchedImportLog; +} + +export interface ApiImportLogRetrieveRequest { + id: number; +} + +export interface ApiImportLogUpdateRequest { + id: number; + importLog: ImportLog; +} + +export interface ApiIngredientCreateRequest { + ingredient: Ingredient; +} + +export interface ApiIngredientDestroyRequest { + id: number; +} + +export interface ApiIngredientListRequest { + page?: number; + pageSize?: number; +} + +export interface ApiIngredientPartialUpdateRequest { + id: number; + patchedIngredient?: PatchedIngredient; +} + +export interface ApiIngredientRetrieveRequest { + id: number; +} + +export interface ApiIngredientUpdateRequest { + id: number; + ingredient: Ingredient; +} + +export interface ApiInviteLinkCreateRequest { + inviteLink: InviteLink; +} + +export interface ApiInviteLinkDestroyRequest { + id: number; +} + +export interface ApiInviteLinkListRequest { + limit?: string; + query?: string; + random?: string; + updatedAt?: string; +} + +export interface ApiInviteLinkPartialUpdateRequest { + id: number; + patchedInviteLink?: PatchedInviteLink; +} + +export interface ApiInviteLinkRetrieveRequest { + id: number; +} + +export interface ApiInviteLinkUpdateRequest { + id: number; + inviteLink: InviteLink; +} + +export interface ApiKeywordCreateRequest { + keyword: Keyword; +} + +export interface ApiKeywordDestroyRequest { + id: number; +} + +export interface ApiKeywordListRequest { + limit?: string; + page?: number; + pageSize?: number; + query?: string; + random?: string; + updatedAt?: string; +} + +export interface ApiKeywordMergeUpdateRequest { + id: number; + target: string; + keyword: Keyword; +} + +export interface ApiKeywordMoveUpdateRequest { + id: number; + parent: string; + keyword: Keyword; +} + +export interface ApiKeywordPartialUpdateRequest { + id: number; + patchedKeyword?: PatchedKeyword; +} + +export interface ApiKeywordRetrieveRequest { + id: number; +} + +export interface ApiKeywordUpdateRequest { + id: number; + keyword: Keyword; +} + +export interface ApiMealPlanCreateRequest { + mealPlan: MealPlan; +} + +export interface ApiMealPlanDestroyRequest { + id: number; +} + +export interface ApiMealPlanListRequest { + fromDate?: string; + mealType?: string; + toDate?: string; +} + +export interface ApiMealPlanPartialUpdateRequest { + id: number; + patchedMealPlan?: PatchedMealPlan; +} + +export interface ApiMealPlanRetrieveRequest { + id: number; +} + +export interface ApiMealPlanUpdateRequest { + id: number; + mealPlan: MealPlan; +} + +export interface ApiMealTypeCreateRequest { + mealType: MealType; +} + +export interface ApiMealTypeDestroyRequest { + id: number; +} + +export interface ApiMealTypePartialUpdateRequest { + id: number; + patchedMealType?: PatchedMealType; +} + +export interface ApiMealTypeRetrieveRequest { + id: number; +} + +export interface ApiMealTypeUpdateRequest { + id: number; + mealType: MealType; +} + +export interface ApiOpenDataCategoryCreateRequest { + openDataCategory: OpenDataCategory; +} + +export interface ApiOpenDataCategoryDestroyRequest { + id: number; +} + +export interface ApiOpenDataCategoryPartialUpdateRequest { + id: number; + patchedOpenDataCategory?: PatchedOpenDataCategory; +} + +export interface ApiOpenDataCategoryRetrieveRequest { + id: number; +} + +export interface ApiOpenDataCategoryUpdateRequest { + id: number; + openDataCategory: OpenDataCategory; +} + +export interface ApiOpenDataConversionCreateRequest { + openDataConversion: OpenDataConversion; +} + +export interface ApiOpenDataConversionDestroyRequest { + id: number; +} + +export interface ApiOpenDataConversionPartialUpdateRequest { + id: number; + patchedOpenDataConversion?: PatchedOpenDataConversion; +} + +export interface ApiOpenDataConversionRetrieveRequest { + id: number; +} + +export interface ApiOpenDataConversionUpdateRequest { + id: number; + openDataConversion: OpenDataConversion; +} + +export interface ApiOpenDataFDCRetrieveRequest { + id: string; +} + +export interface ApiOpenDataFoodCreateRequest { + openDataFood: OpenDataFood; +} + +export interface ApiOpenDataFoodDestroyRequest { + id: number; +} + +export interface ApiOpenDataFoodPartialUpdateRequest { + id: number; + patchedOpenDataFood?: PatchedOpenDataFood; +} + +export interface ApiOpenDataFoodRetrieveRequest { + id: number; +} + +export interface ApiOpenDataFoodUpdateRequest { + id: number; + openDataFood: OpenDataFood; +} + +export interface ApiOpenDataPropertyCreateRequest { + openDataProperty: OpenDataProperty; +} + +export interface ApiOpenDataPropertyDestroyRequest { + id: number; +} + +export interface ApiOpenDataPropertyPartialUpdateRequest { + id: number; + patchedOpenDataProperty?: PatchedOpenDataProperty; +} + +export interface ApiOpenDataPropertyRetrieveRequest { + id: number; +} + +export interface ApiOpenDataPropertyUpdateRequest { + id: number; + openDataProperty: OpenDataProperty; +} + +export interface ApiOpenDataStoreCreateRequest { + openDataStore: OpenDataStore; +} + +export interface ApiOpenDataStoreDestroyRequest { + id: number; +} + +export interface ApiOpenDataStorePartialUpdateRequest { + id: number; + patchedOpenDataStore?: PatchedOpenDataStore; +} + +export interface ApiOpenDataStoreRetrieveRequest { + id: number; +} + +export interface ApiOpenDataStoreUpdateRequest { + id: number; + openDataStore: OpenDataStore; +} + +export interface ApiOpenDataUnitCreateRequest { + openDataUnit: OpenDataUnit; +} + +export interface ApiOpenDataUnitDestroyRequest { + id: number; +} + +export interface ApiOpenDataUnitPartialUpdateRequest { + id: number; + patchedOpenDataUnit?: PatchedOpenDataUnit; +} + +export interface ApiOpenDataUnitRetrieveRequest { + id: number; +} + +export interface ApiOpenDataUnitUpdateRequest { + id: number; + openDataUnit: OpenDataUnit; +} + +export interface ApiOpenDataVersionCreateRequest { + openDataVersion: OpenDataVersion; +} + +export interface ApiOpenDataVersionDestroyRequest { + id: number; +} + +export interface ApiOpenDataVersionPartialUpdateRequest { + id: number; + patchedOpenDataVersion?: PatchedOpenDataVersion; +} + +export interface ApiOpenDataVersionRetrieveRequest { + id: number; +} + +export interface ApiOpenDataVersionUpdateRequest { + id: number; + openDataVersion: OpenDataVersion; +} + +export interface ApiPlanIcalRetrieveRequest { + fromDate: string; + toDate: string; +} + +export interface ApiRecipeBookCreateRequest { + recipeBook: RecipeBook; +} + +export interface ApiRecipeBookDestroyRequest { + id: number; +} + +export interface ApiRecipeBookEntryCreateRequest { + recipeBookEntry: RecipeBookEntry; +} + +export interface ApiRecipeBookEntryDestroyRequest { + id: number; +} + +export interface ApiRecipeBookEntryPartialUpdateRequest { + id: number; + patchedRecipeBookEntry?: PatchedRecipeBookEntry; +} + +export interface ApiRecipeBookEntryRetrieveRequest { + id: number; +} + +export interface ApiRecipeBookEntryUpdateRequest { + id: number; + recipeBookEntry: RecipeBookEntry; +} + +export interface ApiRecipeBookListRequest { + limit?: string; + query?: string; + random?: string; + updatedAt?: string; +} + +export interface ApiRecipeBookPartialUpdateRequest { + id: number; + patchedRecipeBook?: PatchedRecipeBook; +} + +export interface ApiRecipeBookRetrieveRequest { + id: number; +} + +export interface ApiRecipeBookUpdateRequest { + id: number; + recipeBook: RecipeBook; +} + +export interface ApiRecipeCreateRequest { + recipe: Recipe; +} + +export interface ApiRecipeDestroyRequest { + id: number; +} + +export interface ApiRecipeImageUpdateRequest { + id: number; + image?: string; + imageUrl?: string; +} + +export interface ApiRecipeListRequest { + books?: string; + booksAnd?: number; + booksAndNot?: number; + booksOr?: number; + booksOrNot?: number; + cookedon?: string; + createdon?: string; + foods?: number; + foodsAnd?: number; + foodsAndNot?: number; + foodsOr?: number; + foodsOrNot?: number; + internal?: string; + keywords?: number; + keywordsAnd?: number; + keywordsAndNot?: number; + keywordsOr?: number; + keywordsOrNot?: number; + makenow?: string; + _new?: string; + page?: number; + pageSize?: number; + query?: string; + random?: string; + rating?: number; + timescooked?: number; + units?: number; + updatedon?: string; + viewedon?: string; +} + +export interface ApiRecipePartialUpdateRequest { + id: number; + patchedRecipe?: PatchedRecipe; +} + +export interface ApiRecipeRelatedRetrieveRequest { + id: number; +} + +export interface ApiRecipeRetrieveRequest { + id: number; +} + +export interface ApiRecipeShoppingUpdateRequest { + id: number; + recipeShoppingUpdate?: RecipeShoppingUpdate; +} + +export interface ApiRecipeUpdateRequest { + id: number; + recipe: Recipe; +} + +export interface ApiShareLinkRetrieveRequest { + id: number; +} + +export interface ApiShoppingListEntryBulkCreateRequest { + shoppingListEntryBulk: ShoppingListEntryBulk; +} + +export interface ApiShoppingListEntryCreateRequest { + shoppingListEntry: ShoppingListEntry; +} + +export interface ApiShoppingListEntryDestroyRequest { + id: number; +} + +export interface ApiShoppingListEntryListRequest { + checked?: string; + id?: number; + supermarket?: number; +} + +export interface ApiShoppingListEntryPartialUpdateRequest { + id: number; + patchedShoppingListEntry?: PatchedShoppingListEntry; +} + +export interface ApiShoppingListEntryRetrieveRequest { + id: number; +} + +export interface ApiShoppingListEntryUpdateRequest { + id: number; + shoppingListEntry: ShoppingListEntry; +} + +export interface ApiShoppingListRecipeCreateRequest { + shoppingListRecipe: ShoppingListRecipe; +} + +export interface ApiShoppingListRecipeDestroyRequest { + id: number; +} + +export interface ApiShoppingListRecipePartialUpdateRequest { + id: number; + patchedShoppingListRecipe?: PatchedShoppingListRecipe; +} + +export interface ApiShoppingListRecipeRetrieveRequest { + id: number; +} + +export interface ApiShoppingListRecipeUpdateRequest { + id: number; + shoppingListRecipe: ShoppingListRecipe; +} + +export interface ApiSpacePartialUpdateRequest { + id: number; + patchedSpace?: PatchedSpace; +} + +export interface ApiSpaceRetrieveRequest { + id: number; +} + +export interface ApiStepCreateRequest { + step: Step; +} + +export interface ApiStepDestroyRequest { + id: number; +} + +export interface ApiStepListRequest { + page?: number; + pageSize?: number; + query?: string; + recipe?: number; +} + +export interface ApiStepPartialUpdateRequest { + id: number; + patchedStep?: PatchedStep; +} + +export interface ApiStepRetrieveRequest { + id: number; +} + +export interface ApiStepUpdateRequest { + id: number; + step: Step; +} + +export interface ApiStorageCreateRequest { + storage: Storage; +} + +export interface ApiStorageDestroyRequest { + id: number; +} + +export interface ApiStoragePartialUpdateRequest { + id: number; + patchedStorage?: PatchedStorage; +} + +export interface ApiStorageRetrieveRequest { + id: number; +} + +export interface ApiStorageUpdateRequest { + id: number; + storage: Storage; +} + +export interface ApiSupermarketCategoryCreateRequest { + supermarketCategory: SupermarketCategory; +} + +export interface ApiSupermarketCategoryDestroyRequest { + id: number; +} + +export interface ApiSupermarketCategoryMergeUpdateRequest { + id: number; + target: string; + supermarketCategory: SupermarketCategory; +} + +export interface ApiSupermarketCategoryPartialUpdateRequest { + id: number; + patchedSupermarketCategory?: PatchedSupermarketCategory; +} + +export interface ApiSupermarketCategoryRelationCreateRequest { + supermarketCategoryRelation: SupermarketCategoryRelation; +} + +export interface ApiSupermarketCategoryRelationDestroyRequest { + id: number; +} + +export interface ApiSupermarketCategoryRelationListRequest { + limit?: string; + page?: number; + pageSize?: number; + query?: string; + random?: string; + updatedAt?: string; +} + +export interface ApiSupermarketCategoryRelationPartialUpdateRequest { + id: number; + patchedSupermarketCategoryRelation?: PatchedSupermarketCategoryRelation; +} + +export interface ApiSupermarketCategoryRelationRetrieveRequest { + id: number; +} + +export interface ApiSupermarketCategoryRelationUpdateRequest { + id: number; + supermarketCategoryRelation: SupermarketCategoryRelation; +} + +export interface ApiSupermarketCategoryRetrieveRequest { + id: number; +} + +export interface ApiSupermarketCategoryUpdateRequest { + id: number; + supermarketCategory: SupermarketCategory; +} + +export interface ApiSupermarketCreateRequest { + supermarket: Supermarket; +} + +export interface ApiSupermarketDestroyRequest { + id: number; +} + +export interface ApiSupermarketListRequest { + limit?: string; + query?: string; + random?: string; + updatedAt?: string; +} + +export interface ApiSupermarketPartialUpdateRequest { + id: number; + patchedSupermarket?: PatchedSupermarket; +} + +export interface ApiSupermarketRetrieveRequest { + id: number; +} + +export interface ApiSupermarketUpdateRequest { + id: number; + supermarket: Supermarket; +} + +export interface ApiSwitchActiveSpaceRetrieveRequest { + spaceId: number; +} + +export interface ApiSyncCreateRequest { + sync: Sync; +} + +export interface ApiSyncDestroyRequest { + id: number; +} + +export interface ApiSyncLogListRequest { + page?: number; + pageSize?: number; +} + +export interface ApiSyncLogRetrieveRequest { + id: number; +} + +export interface ApiSyncPartialUpdateRequest { + id: number; + patchedSync?: PatchedSync; +} + +export interface ApiSyncRetrieveRequest { + id: number; +} + +export interface ApiSyncUpdateRequest { + id: number; + sync: Sync; +} + +export interface ApiUnitConversionCreateRequest { + unitConversion: UnitConversion; +} + +export interface ApiUnitConversionDestroyRequest { + id: number; +} + +export interface ApiUnitConversionListRequest { + foodId?: number; +} + +export interface ApiUnitConversionPartialUpdateRequest { + id: number; + patchedUnitConversion?: PatchedUnitConversion; +} + +export interface ApiUnitConversionRetrieveRequest { + id: number; +} + +export interface ApiUnitConversionUpdateRequest { + id: number; + unitConversion: UnitConversion; +} + +export interface ApiUnitCreateRequest { + unit: Unit; +} + +export interface ApiUnitDestroyRequest { + id: number; +} + +export interface ApiUnitListRequest { + limit?: string; + page?: number; + pageSize?: number; + query?: string; + random?: string; + updatedAt?: string; +} + +export interface ApiUnitMergeUpdateRequest { + id: number; + target: string; + unit: Unit; +} + +export interface ApiUnitPartialUpdateRequest { + id: number; + patchedUnit?: PatchedUnit; +} + +export interface ApiUnitRetrieveRequest { + id: number; +} + +export interface ApiUnitUpdateRequest { + id: number; + unit: Unit; +} + +export interface ApiUserFileCreateRequest { + id: number; + name: string; + file: string; + fileDownload: string; + preview: string; + fileSizeKb: number; +} + +export interface ApiUserFileDestroyRequest { + id: number; +} + +export interface ApiUserFileListRequest { + limit?: string; + query?: string; + random?: string; + updatedAt?: string; +} + +export interface ApiUserFilePartialUpdateRequest { + id: number; + id2?: number; + name?: string; + file?: string; + fileDownload?: string; + preview?: string; + fileSizeKb?: number; +} + +export interface ApiUserFileRetrieveRequest { + id: number; +} + +export interface ApiUserFileUpdateRequest { + id: number; + id2: number; + name: string; + file: string; + fileDownload: string; + preview: string; + fileSizeKb: number; +} + +export interface ApiUserPartialUpdateRequest { + id: number; + patchedUser?: PatchedUser; +} + +export interface ApiUserPreferencePartialUpdateRequest { + user: number; + patchedUserPreference?: PatchedUserPreference; +} + +export interface ApiUserPreferenceRetrieveRequest { + user: number; +} + +export interface ApiUserRetrieveRequest { + id: number; +} + +export interface ApiUserSpaceDestroyRequest { + id: number; +} + +export interface ApiUserSpaceListRequest { + page?: number; + pageSize?: number; +} + +export interface ApiUserSpacePartialUpdateRequest { + id: number; + patchedUserSpace?: PatchedUserSpace; +} + +export interface ApiUserSpaceRetrieveRequest { + id: number; +} + +export interface ApiViewLogCreateRequest { + viewLog: ViewLog; +} + +export interface ApiViewLogDestroyRequest { + id: number; +} + +export interface ApiViewLogListRequest { + page?: number; + pageSize?: number; +} + +export interface ApiViewLogPartialUpdateRequest { + id: number; + patchedViewLog?: PatchedViewLog; +} + +export interface ApiViewLogRetrieveRequest { + id: number; +} + +export interface ApiViewLogUpdateRequest { + id: number; + viewLog: ViewLog; +} + +/** + * + */ +export class ApiApi extends runtime.BaseAPI { + + /** + */ + async apiAccessTokenCreateRaw(requestParameters: ApiAccessTokenCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['accessToken'] == null) { + throw new runtime.RequiredError( + 'accessToken', + 'Required parameter "accessToken" was null or undefined when calling apiAccessTokenCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/access-token/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: AccessTokenToJSON(requestParameters['accessToken']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => AccessTokenFromJSON(jsonValue)); + } + + /** + */ + async apiAccessTokenCreate(requestParameters: ApiAccessTokenCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiAccessTokenCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiAccessTokenDestroyRaw(requestParameters: ApiAccessTokenDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiAccessTokenDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/access-token/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiAccessTokenDestroy(requestParameters: ApiAccessTokenDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiAccessTokenDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiAccessTokenListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/access-token/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(AccessTokenFromJSON)); + } + + /** + */ + async apiAccessTokenList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiAccessTokenListRaw(initOverrides); + return await response.value(); + } + + /** + */ + async apiAccessTokenPartialUpdateRaw(requestParameters: ApiAccessTokenPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiAccessTokenPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/access-token/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedAccessTokenToJSON(requestParameters['patchedAccessToken']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => AccessTokenFromJSON(jsonValue)); + } + + /** + */ + async apiAccessTokenPartialUpdate(requestParameters: ApiAccessTokenPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiAccessTokenPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiAccessTokenRetrieveRaw(requestParameters: ApiAccessTokenRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiAccessTokenRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/access-token/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => AccessTokenFromJSON(jsonValue)); + } + + /** + */ + async apiAccessTokenRetrieve(requestParameters: ApiAccessTokenRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiAccessTokenRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiAccessTokenUpdateRaw(requestParameters: ApiAccessTokenUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiAccessTokenUpdate().' + ); + } + + if (requestParameters['accessToken'] == null) { + throw new runtime.RequiredError( + 'accessToken', + 'Required parameter "accessToken" was null or undefined when calling apiAccessTokenUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/access-token/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: AccessTokenToJSON(requestParameters['accessToken']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => AccessTokenFromJSON(jsonValue)); + } + + /** + */ + async apiAccessTokenUpdate(requestParameters: ApiAccessTokenUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiAccessTokenUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiAutoPlanCreateRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/auto-plan/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiAutoPlanCreate(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiAutoPlanCreateRaw(initOverrides); + } + + /** + * list: optional parameters - **automation_type**: Return the Automations matching the automation type. Multiple values allowed. *Automation Types:* - FS: Food Alias - UA: Unit Alias - KA: Keyword Alias - DR: Description Replace - IR: Instruction Replace - NU: Never Unit - TW: Transpose Words - FR: Food Replace - UR: Unit Replace - NR: Name Replace + */ + async apiAutomationCreateRaw(requestParameters: ApiAutomationCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['automation'] == null) { + throw new runtime.RequiredError( + 'automation', + 'Required parameter "automation" was null or undefined when calling apiAutomationCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/automation/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: AutomationToJSON(requestParameters['automation']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => AutomationFromJSON(jsonValue)); + } + + /** + * list: optional parameters - **automation_type**: Return the Automations matching the automation type. Multiple values allowed. *Automation Types:* - FS: Food Alias - UA: Unit Alias - KA: Keyword Alias - DR: Description Replace - IR: Instruction Replace - NU: Never Unit - TW: Transpose Words - FR: Food Replace - UR: Unit Replace - NR: Name Replace + */ + async apiAutomationCreate(requestParameters: ApiAutomationCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiAutomationCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * list: optional parameters - **automation_type**: Return the Automations matching the automation type. Multiple values allowed. *Automation Types:* - FS: Food Alias - UA: Unit Alias - KA: Keyword Alias - DR: Description Replace - IR: Instruction Replace - NU: Never Unit - TW: Transpose Words - FR: Food Replace - UR: Unit Replace - NR: Name Replace + */ + async apiAutomationDestroyRaw(requestParameters: ApiAutomationDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiAutomationDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/automation/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * list: optional parameters - **automation_type**: Return the Automations matching the automation type. Multiple values allowed. *Automation Types:* - FS: Food Alias - UA: Unit Alias - KA: Keyword Alias - DR: Description Replace - IR: Instruction Replace - NU: Never Unit - TW: Transpose Words - FR: Food Replace - UR: Unit Replace - NR: Name Replace + */ + async apiAutomationDestroy(requestParameters: ApiAutomationDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiAutomationDestroyRaw(requestParameters, initOverrides); + } + + /** + * list: optional parameters - **automation_type**: Return the Automations matching the automation type. Multiple values allowed. *Automation Types:* - FS: Food Alias - UA: Unit Alias - KA: Keyword Alias - DR: Description Replace - IR: Instruction Replace - NU: Never Unit - TW: Transpose Words - FR: Food Replace - UR: Unit Replace - NR: Name Replace + */ + async apiAutomationListRaw(requestParameters: ApiAutomationListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['automationType'] != null) { + queryParameters['automation_type'] = requestParameters['automationType']; + } + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + if (requestParameters['pageSize'] != null) { + queryParameters['page_size'] = requestParameters['pageSize']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/automation/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedAutomationListFromJSON(jsonValue)); + } + + /** + * list: optional parameters - **automation_type**: Return the Automations matching the automation type. Multiple values allowed. *Automation Types:* - FS: Food Alias - UA: Unit Alias - KA: Keyword Alias - DR: Description Replace - IR: Instruction Replace - NU: Never Unit - TW: Transpose Words - FR: Food Replace - UR: Unit Replace - NR: Name Replace + */ + async apiAutomationList(requestParameters: ApiAutomationListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiAutomationListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * list: optional parameters - **automation_type**: Return the Automations matching the automation type. Multiple values allowed. *Automation Types:* - FS: Food Alias - UA: Unit Alias - KA: Keyword Alias - DR: Description Replace - IR: Instruction Replace - NU: Never Unit - TW: Transpose Words - FR: Food Replace - UR: Unit Replace - NR: Name Replace + */ + async apiAutomationPartialUpdateRaw(requestParameters: ApiAutomationPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiAutomationPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/automation/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedAutomationToJSON(requestParameters['patchedAutomation']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => AutomationFromJSON(jsonValue)); + } + + /** + * list: optional parameters - **automation_type**: Return the Automations matching the automation type. Multiple values allowed. *Automation Types:* - FS: Food Alias - UA: Unit Alias - KA: Keyword Alias - DR: Description Replace - IR: Instruction Replace - NU: Never Unit - TW: Transpose Words - FR: Food Replace - UR: Unit Replace - NR: Name Replace + */ + async apiAutomationPartialUpdate(requestParameters: ApiAutomationPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiAutomationPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * list: optional parameters - **automation_type**: Return the Automations matching the automation type. Multiple values allowed. *Automation Types:* - FS: Food Alias - UA: Unit Alias - KA: Keyword Alias - DR: Description Replace - IR: Instruction Replace - NU: Never Unit - TW: Transpose Words - FR: Food Replace - UR: Unit Replace - NR: Name Replace + */ + async apiAutomationRetrieveRaw(requestParameters: ApiAutomationRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiAutomationRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/automation/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => AutomationFromJSON(jsonValue)); + } + + /** + * list: optional parameters - **automation_type**: Return the Automations matching the automation type. Multiple values allowed. *Automation Types:* - FS: Food Alias - UA: Unit Alias - KA: Keyword Alias - DR: Description Replace - IR: Instruction Replace - NU: Never Unit - TW: Transpose Words - FR: Food Replace - UR: Unit Replace - NR: Name Replace + */ + async apiAutomationRetrieve(requestParameters: ApiAutomationRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiAutomationRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * list: optional parameters - **automation_type**: Return the Automations matching the automation type. Multiple values allowed. *Automation Types:* - FS: Food Alias - UA: Unit Alias - KA: Keyword Alias - DR: Description Replace - IR: Instruction Replace - NU: Never Unit - TW: Transpose Words - FR: Food Replace - UR: Unit Replace - NR: Name Replace + */ + async apiAutomationUpdateRaw(requestParameters: ApiAutomationUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiAutomationUpdate().' + ); + } + + if (requestParameters['automation'] == null) { + throw new runtime.RequiredError( + 'automation', + 'Required parameter "automation" was null or undefined when calling apiAutomationUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/automation/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: AutomationToJSON(requestParameters['automation']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => AutomationFromJSON(jsonValue)); + } + + /** + * list: optional parameters - **automation_type**: Return the Automations matching the automation type. Multiple values allowed. *Automation Types:* - FS: Food Alias - UA: Unit Alias - KA: Keyword Alias - DR: Description Replace - IR: Instruction Replace - NU: Never Unit - TW: Transpose Words - FR: Food Replace - UR: Unit Replace - NR: Name Replace + */ + async apiAutomationUpdate(requestParameters: ApiAutomationUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiAutomationUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiBookmarkletImportCreateRaw(requestParameters: ApiBookmarkletImportCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['bookmarkletImport'] == null) { + throw new runtime.RequiredError( + 'bookmarkletImport', + 'Required parameter "bookmarkletImport" was null or undefined when calling apiBookmarkletImportCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/bookmarklet-import/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: BookmarkletImportToJSON(requestParameters['bookmarkletImport']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => BookmarkletImportFromJSON(jsonValue)); + } + + /** + */ + async apiBookmarkletImportCreate(requestParameters: ApiBookmarkletImportCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiBookmarkletImportCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiBookmarkletImportDestroyRaw(requestParameters: ApiBookmarkletImportDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiBookmarkletImportDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/bookmarklet-import/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiBookmarkletImportDestroy(requestParameters: ApiBookmarkletImportDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiBookmarkletImportDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiBookmarkletImportListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/bookmarklet-import/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(BookmarkletImportListFromJSON)); + } + + /** + */ + async apiBookmarkletImportList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiBookmarkletImportListRaw(initOverrides); + return await response.value(); + } + + /** + */ + async apiBookmarkletImportPartialUpdateRaw(requestParameters: ApiBookmarkletImportPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiBookmarkletImportPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/bookmarklet-import/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedBookmarkletImportToJSON(requestParameters['patchedBookmarkletImport']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => BookmarkletImportFromJSON(jsonValue)); + } + + /** + */ + async apiBookmarkletImportPartialUpdate(requestParameters: ApiBookmarkletImportPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiBookmarkletImportPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiBookmarkletImportRetrieveRaw(requestParameters: ApiBookmarkletImportRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiBookmarkletImportRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/bookmarklet-import/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => BookmarkletImportFromJSON(jsonValue)); + } + + /** + */ + async apiBookmarkletImportRetrieve(requestParameters: ApiBookmarkletImportRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiBookmarkletImportRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiBookmarkletImportUpdateRaw(requestParameters: ApiBookmarkletImportUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiBookmarkletImportUpdate().' + ); + } + + if (requestParameters['bookmarkletImport'] == null) { + throw new runtime.RequiredError( + 'bookmarkletImport', + 'Required parameter "bookmarkletImport" was null or undefined when calling apiBookmarkletImportUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/bookmarklet-import/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: BookmarkletImportToJSON(requestParameters['bookmarkletImport']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => BookmarkletImportFromJSON(jsonValue)); + } + + /** + */ + async apiBookmarkletImportUpdate(requestParameters: ApiBookmarkletImportUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiBookmarkletImportUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiConnectorConfigCreateRaw(requestParameters: ApiConnectorConfigCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['connectorConfigConfig'] == null) { + throw new runtime.RequiredError( + 'connectorConfigConfig', + 'Required parameter "connectorConfigConfig" was null or undefined when calling apiConnectorConfigCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/connector-config/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ConnectorConfigConfigToJSON(requestParameters['connectorConfigConfig']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ConnectorConfigConfigFromJSON(jsonValue)); + } + + /** + */ + async apiConnectorConfigCreate(requestParameters: ApiConnectorConfigCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiConnectorConfigCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiConnectorConfigDestroyRaw(requestParameters: ApiConnectorConfigDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiConnectorConfigDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/connector-config/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiConnectorConfigDestroy(requestParameters: ApiConnectorConfigDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiConnectorConfigDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiConnectorConfigListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/connector-config/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ConnectorConfigConfigFromJSON)); + } + + /** + */ + async apiConnectorConfigList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiConnectorConfigListRaw(initOverrides); + return await response.value(); + } + + /** + */ + async apiConnectorConfigPartialUpdateRaw(requestParameters: ApiConnectorConfigPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiConnectorConfigPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/connector-config/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedConnectorConfigConfigToJSON(requestParameters['patchedConnectorConfigConfig']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ConnectorConfigConfigFromJSON(jsonValue)); + } + + /** + */ + async apiConnectorConfigPartialUpdate(requestParameters: ApiConnectorConfigPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiConnectorConfigPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiConnectorConfigRetrieveRaw(requestParameters: ApiConnectorConfigRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiConnectorConfigRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/connector-config/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ConnectorConfigConfigFromJSON(jsonValue)); + } + + /** + */ + async apiConnectorConfigRetrieve(requestParameters: ApiConnectorConfigRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiConnectorConfigRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiConnectorConfigUpdateRaw(requestParameters: ApiConnectorConfigUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiConnectorConfigUpdate().' + ); + } + + if (requestParameters['connectorConfigConfig'] == null) { + throw new runtime.RequiredError( + 'connectorConfigConfig', + 'Required parameter "connectorConfigConfig" was null or undefined when calling apiConnectorConfigUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/connector-config/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: ConnectorConfigConfigToJSON(requestParameters['connectorConfigConfig']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ConnectorConfigConfigFromJSON(jsonValue)); + } + + /** + */ + async apiConnectorConfigUpdate(requestParameters: ApiConnectorConfigUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiConnectorConfigUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiCookLogCreateRaw(requestParameters: ApiCookLogCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['cookLog'] == null) { + throw new runtime.RequiredError( + 'cookLog', + 'Required parameter "cookLog" was null or undefined when calling apiCookLogCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/cook-log/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: CookLogToJSON(requestParameters['cookLog']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => CookLogFromJSON(jsonValue)); + } + + /** + */ + async apiCookLogCreate(requestParameters: ApiCookLogCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiCookLogCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiCookLogDestroyRaw(requestParameters: ApiCookLogDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiCookLogDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/cook-log/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiCookLogDestroy(requestParameters: ApiCookLogDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiCookLogDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiCookLogListRaw(requestParameters: ApiCookLogListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + if (requestParameters['pageSize'] != null) { + queryParameters['page_size'] = requestParameters['pageSize']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/cook-log/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedCookLogListFromJSON(jsonValue)); + } + + /** + */ + async apiCookLogList(requestParameters: ApiCookLogListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiCookLogListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiCookLogPartialUpdateRaw(requestParameters: ApiCookLogPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiCookLogPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/cook-log/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedCookLogToJSON(requestParameters['patchedCookLog']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => CookLogFromJSON(jsonValue)); + } + + /** + */ + async apiCookLogPartialUpdate(requestParameters: ApiCookLogPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiCookLogPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiCookLogRetrieveRaw(requestParameters: ApiCookLogRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiCookLogRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/cook-log/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => CookLogFromJSON(jsonValue)); + } + + /** + */ + async apiCookLogRetrieve(requestParameters: ApiCookLogRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiCookLogRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiCookLogUpdateRaw(requestParameters: ApiCookLogUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiCookLogUpdate().' + ); + } + + if (requestParameters['cookLog'] == null) { + throw new runtime.RequiredError( + 'cookLog', + 'Required parameter "cookLog" was null or undefined when calling apiCookLogUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/cook-log/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: CookLogToJSON(requestParameters['cookLog']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => CookLogFromJSON(jsonValue)); + } + + /** + */ + async apiCookLogUpdate(requestParameters: ApiCookLogUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiCookLogUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiCustomFilterCreateRaw(requestParameters: ApiCustomFilterCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['customFilter'] == null) { + throw new runtime.RequiredError( + 'customFilter', + 'Required parameter "customFilter" was null or undefined when calling apiCustomFilterCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/custom-filter/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: CustomFilterToJSON(requestParameters['customFilter']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => CustomFilterFromJSON(jsonValue)); + } + + /** + */ + async apiCustomFilterCreate(requestParameters: ApiCustomFilterCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiCustomFilterCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiCustomFilterDestroyRaw(requestParameters: ApiCustomFilterDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiCustomFilterDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/custom-filter/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiCustomFilterDestroy(requestParameters: ApiCustomFilterDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiCustomFilterDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiCustomFilterListRaw(requestParameters: ApiCustomFilterListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['limit'] != null) { + queryParameters['limit'] = requestParameters['limit']; + } + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + if (requestParameters['pageSize'] != null) { + queryParameters['page_size'] = requestParameters['pageSize']; + } + + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + + if (requestParameters['random'] != null) { + queryParameters['random'] = requestParameters['random']; + } + + if (requestParameters['updatedAt'] != null) { + queryParameters['updated_at'] = requestParameters['updatedAt']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/custom-filter/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedCustomFilterListFromJSON(jsonValue)); + } + + /** + */ + async apiCustomFilterList(requestParameters: ApiCustomFilterListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiCustomFilterListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiCustomFilterPartialUpdateRaw(requestParameters: ApiCustomFilterPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiCustomFilterPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/custom-filter/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedCustomFilterToJSON(requestParameters['patchedCustomFilter']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => CustomFilterFromJSON(jsonValue)); + } + + /** + */ + async apiCustomFilterPartialUpdate(requestParameters: ApiCustomFilterPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiCustomFilterPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiCustomFilterRetrieveRaw(requestParameters: ApiCustomFilterRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiCustomFilterRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/custom-filter/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => CustomFilterFromJSON(jsonValue)); + } + + /** + */ + async apiCustomFilterRetrieve(requestParameters: ApiCustomFilterRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiCustomFilterRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiCustomFilterUpdateRaw(requestParameters: ApiCustomFilterUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiCustomFilterUpdate().' + ); + } + + if (requestParameters['customFilter'] == null) { + throw new runtime.RequiredError( + 'customFilter', + 'Required parameter "customFilter" was null or undefined when calling apiCustomFilterUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/custom-filter/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: CustomFilterToJSON(requestParameters['customFilter']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => CustomFilterFromJSON(jsonValue)); + } + + /** + */ + async apiCustomFilterUpdate(requestParameters: ApiCustomFilterUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiCustomFilterUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * function to download a user file securely (wrapping as zip to prevent any context based XSS problems) temporary solution until a real file manager is implemented + */ + async apiDownloadFileRetrieveRaw(requestParameters: ApiDownloadFileRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['fileId'] == null) { + throw new runtime.RequiredError( + 'fileId', + 'Required parameter "fileId" was null or undefined when calling apiDownloadFileRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/download-file/{file_id}/`.replace(`{${"file_id"}}`, encodeURIComponent(String(requestParameters['fileId']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * function to download a user file securely (wrapping as zip to prevent any context based XSS problems) temporary solution until a real file manager is implemented + */ + async apiDownloadFileRetrieve(requestParameters: ApiDownloadFileRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiDownloadFileRetrieveRaw(requestParameters, initOverrides); + } + + /** + */ + async apiExportLogCreateRaw(requestParameters: ApiExportLogCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['exportLog'] == null) { + throw new runtime.RequiredError( + 'exportLog', + 'Required parameter "exportLog" was null or undefined when calling apiExportLogCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/export-log/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ExportLogToJSON(requestParameters['exportLog']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ExportLogFromJSON(jsonValue)); + } + + /** + */ + async apiExportLogCreate(requestParameters: ApiExportLogCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiExportLogCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiExportLogDestroyRaw(requestParameters: ApiExportLogDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiExportLogDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/export-log/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiExportLogDestroy(requestParameters: ApiExportLogDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiExportLogDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiExportLogListRaw(requestParameters: ApiExportLogListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + if (requestParameters['pageSize'] != null) { + queryParameters['page_size'] = requestParameters['pageSize']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/export-log/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedExportLogListFromJSON(jsonValue)); + } + + /** + */ + async apiExportLogList(requestParameters: ApiExportLogListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiExportLogListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiExportLogPartialUpdateRaw(requestParameters: ApiExportLogPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiExportLogPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/export-log/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedExportLogToJSON(requestParameters['patchedExportLog']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ExportLogFromJSON(jsonValue)); + } + + /** + */ + async apiExportLogPartialUpdate(requestParameters: ApiExportLogPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiExportLogPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiExportLogRetrieveRaw(requestParameters: ApiExportLogRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiExportLogRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/export-log/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ExportLogFromJSON(jsonValue)); + } + + /** + */ + async apiExportLogRetrieve(requestParameters: ApiExportLogRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiExportLogRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiExportLogUpdateRaw(requestParameters: ApiExportLogUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiExportLogUpdate().' + ); + } + + if (requestParameters['exportLog'] == null) { + throw new runtime.RequiredError( + 'exportLog', + 'Required parameter "exportLog" was null or undefined when calling apiExportLogUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/export-log/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: ExportLogToJSON(requestParameters['exportLog']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ExportLogFromJSON(jsonValue)); + } + + /** + */ + async apiExportLogUpdate(requestParameters: ApiExportLogUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiExportLogUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiFoodCreateRaw(requestParameters: ApiFoodCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['food'] == null) { + throw new runtime.RequiredError( + 'food', + 'Required parameter "food" was null or undefined when calling apiFoodCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: FoodToJSON(requestParameters['food']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => FoodFromJSON(jsonValue)); + } + + /** + */ + async apiFoodCreate(requestParameters: ApiFoodCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiFoodCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiFoodDestroyRaw(requestParameters: ApiFoodDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiFoodDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiFoodDestroy(requestParameters: ApiFoodDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiFoodDestroyRaw(requestParameters, initOverrides); + } + + /** + * updates the food with all possible data from the FDC Api if properties with a fdc_id already exist they will be overridden, if existing properties don\'t have a fdc_id they won\'t be changed + */ + async apiFoodFdcCreateRaw(requestParameters: ApiFoodFdcCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiFoodFdcCreate().' + ); + } + + if (requestParameters['food'] == null) { + throw new runtime.RequiredError( + 'food', + 'Required parameter "food" was null or undefined when calling apiFoodFdcCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food/{id}/fdc/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: FoodToJSON(requestParameters['food']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => FoodFromJSON(jsonValue)); + } + + /** + * updates the food with all possible data from the FDC Api if properties with a fdc_id already exist they will be overridden, if existing properties don\'t have a fdc_id they won\'t be changed + */ + async apiFoodFdcCreate(requestParameters: ApiFoodFdcCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiFoodFdcCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiFoodInheritFieldListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food-inherit-field/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(FoodInheritFieldFromJSON)); + } + + /** + */ + async apiFoodInheritFieldList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiFoodInheritFieldListRaw(initOverrides); + return await response.value(); + } + + /** + */ + async apiFoodInheritFieldRetrieveRaw(requestParameters: ApiFoodInheritFieldRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiFoodInheritFieldRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food-inherit-field/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => FoodInheritFieldFromJSON(jsonValue)); + } + + /** + */ + async apiFoodInheritFieldRetrieve(requestParameters: ApiFoodInheritFieldRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiFoodInheritFieldRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiFoodListRaw(requestParameters: ApiFoodListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['limit'] != null) { + queryParameters['limit'] = requestParameters['limit']; + } + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + if (requestParameters['pageSize'] != null) { + queryParameters['page_size'] = requestParameters['pageSize']; + } + + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + + if (requestParameters['random'] != null) { + queryParameters['random'] = requestParameters['random']; + } + + if (requestParameters['updatedAt'] != null) { + queryParameters['updated_at'] = requestParameters['updatedAt']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedFoodListFromJSON(jsonValue)); + } + + /** + */ + async apiFoodList(requestParameters: ApiFoodListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiFoodListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiFoodMergeUpdateRaw(requestParameters: ApiFoodMergeUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiFoodMergeUpdate().' + ); + } + + if (requestParameters['target'] == null) { + throw new runtime.RequiredError( + 'target', + 'Required parameter "target" was null or undefined when calling apiFoodMergeUpdate().' + ); + } + + if (requestParameters['food'] == null) { + throw new runtime.RequiredError( + 'food', + 'Required parameter "food" was null or undefined when calling apiFoodMergeUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food/{id}/merge/{target}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))).replace(`{${"target"}}`, encodeURIComponent(String(requestParameters['target']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: FoodToJSON(requestParameters['food']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => FoodFromJSON(jsonValue)); + } + + /** + */ + async apiFoodMergeUpdate(requestParameters: ApiFoodMergeUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiFoodMergeUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiFoodMoveUpdateRaw(requestParameters: ApiFoodMoveUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiFoodMoveUpdate().' + ); + } + + if (requestParameters['parent'] == null) { + throw new runtime.RequiredError( + 'parent', + 'Required parameter "parent" was null or undefined when calling apiFoodMoveUpdate().' + ); + } + + if (requestParameters['food'] == null) { + throw new runtime.RequiredError( + 'food', + 'Required parameter "food" was null or undefined when calling apiFoodMoveUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food/{id}/move/{parent}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))).replace(`{${"parent"}}`, encodeURIComponent(String(requestParameters['parent']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: FoodToJSON(requestParameters['food']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => FoodFromJSON(jsonValue)); + } + + /** + */ + async apiFoodMoveUpdate(requestParameters: ApiFoodMoveUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiFoodMoveUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiFoodPartialUpdateRaw(requestParameters: ApiFoodPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiFoodPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedFoodToJSON(requestParameters['patchedFood']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => FoodFromJSON(jsonValue)); + } + + /** + */ + async apiFoodPartialUpdate(requestParameters: ApiFoodPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiFoodPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiFoodPropertyCreateRaw(requestParameters: ApiFoodPropertyCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['property'] == null) { + throw new runtime.RequiredError( + 'property', + 'Required parameter "property" was null or undefined when calling apiFoodPropertyCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food-property/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: PropertyToJSON(requestParameters['property']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PropertyFromJSON(jsonValue)); + } + + /** + */ + async apiFoodPropertyCreate(requestParameters: ApiFoodPropertyCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiFoodPropertyCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiFoodPropertyDestroyRaw(requestParameters: ApiFoodPropertyDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiFoodPropertyDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food-property/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiFoodPropertyDestroy(requestParameters: ApiFoodPropertyDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiFoodPropertyDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiFoodPropertyListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food-property/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(PropertyFromJSON)); + } + + /** + */ + async apiFoodPropertyList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiFoodPropertyListRaw(initOverrides); + return await response.value(); + } + + /** + */ + async apiFoodPropertyPartialUpdateRaw(requestParameters: ApiFoodPropertyPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiFoodPropertyPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food-property/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedPropertyToJSON(requestParameters['patchedProperty']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PropertyFromJSON(jsonValue)); + } + + /** + */ + async apiFoodPropertyPartialUpdate(requestParameters: ApiFoodPropertyPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiFoodPropertyPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiFoodPropertyRetrieveRaw(requestParameters: ApiFoodPropertyRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiFoodPropertyRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food-property/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PropertyFromJSON(jsonValue)); + } + + /** + */ + async apiFoodPropertyRetrieve(requestParameters: ApiFoodPropertyRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiFoodPropertyRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiFoodPropertyTypeCreateRaw(requestParameters: ApiFoodPropertyTypeCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['propertyType'] == null) { + throw new runtime.RequiredError( + 'propertyType', + 'Required parameter "propertyType" was null or undefined when calling apiFoodPropertyTypeCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food-property-type/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: PropertyTypeToJSON(requestParameters['propertyType']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PropertyTypeFromJSON(jsonValue)); + } + + /** + */ + async apiFoodPropertyTypeCreate(requestParameters: ApiFoodPropertyTypeCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiFoodPropertyTypeCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiFoodPropertyTypeDestroyRaw(requestParameters: ApiFoodPropertyTypeDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiFoodPropertyTypeDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food-property-type/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiFoodPropertyTypeDestroy(requestParameters: ApiFoodPropertyTypeDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiFoodPropertyTypeDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiFoodPropertyTypeListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food-property-type/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(PropertyTypeFromJSON)); + } + + /** + */ + async apiFoodPropertyTypeList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiFoodPropertyTypeListRaw(initOverrides); + return await response.value(); + } + + /** + */ + async apiFoodPropertyTypePartialUpdateRaw(requestParameters: ApiFoodPropertyTypePartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiFoodPropertyTypePartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food-property-type/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedPropertyTypeToJSON(requestParameters['patchedPropertyType']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PropertyTypeFromJSON(jsonValue)); + } + + /** + */ + async apiFoodPropertyTypePartialUpdate(requestParameters: ApiFoodPropertyTypePartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiFoodPropertyTypePartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiFoodPropertyTypeRetrieveRaw(requestParameters: ApiFoodPropertyTypeRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiFoodPropertyTypeRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food-property-type/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PropertyTypeFromJSON(jsonValue)); + } + + /** + */ + async apiFoodPropertyTypeRetrieve(requestParameters: ApiFoodPropertyTypeRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiFoodPropertyTypeRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiFoodPropertyTypeUpdateRaw(requestParameters: ApiFoodPropertyTypeUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiFoodPropertyTypeUpdate().' + ); + } + + if (requestParameters['propertyType'] == null) { + throw new runtime.RequiredError( + 'propertyType', + 'Required parameter "propertyType" was null or undefined when calling apiFoodPropertyTypeUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food-property-type/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: PropertyTypeToJSON(requestParameters['propertyType']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PropertyTypeFromJSON(jsonValue)); + } + + /** + */ + async apiFoodPropertyTypeUpdate(requestParameters: ApiFoodPropertyTypeUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiFoodPropertyTypeUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiFoodPropertyUpdateRaw(requestParameters: ApiFoodPropertyUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiFoodPropertyUpdate().' + ); + } + + if (requestParameters['property'] == null) { + throw new runtime.RequiredError( + 'property', + 'Required parameter "property" was null or undefined when calling apiFoodPropertyUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food-property/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: PropertyToJSON(requestParameters['property']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PropertyFromJSON(jsonValue)); + } + + /** + */ + async apiFoodPropertyUpdate(requestParameters: ApiFoodPropertyUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiFoodPropertyUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiFoodRetrieveRaw(requestParameters: ApiFoodRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiFoodRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => FoodFromJSON(jsonValue)); + } + + /** + */ + async apiFoodRetrieve(requestParameters: ApiFoodRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiFoodRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiFoodUpdateRaw(requestParameters: ApiFoodUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiFoodUpdate().' + ); + } + + if (requestParameters['food'] == null) { + throw new runtime.RequiredError( + 'food', + 'Required parameter "food" was null or undefined when calling apiFoodUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/food/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: FoodToJSON(requestParameters['food']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => FoodFromJSON(jsonValue)); + } + + /** + */ + async apiFoodUpdate(requestParameters: ApiFoodUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiFoodUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiGroupListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/group/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(GroupFromJSON)); + } + + /** + */ + async apiGroupList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiGroupListRaw(initOverrides); + return await response.value(); + } + + /** + */ + async apiGroupRetrieveRaw(requestParameters: ApiGroupRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiGroupRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/group/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => GroupFromJSON(jsonValue)); + } + + /** + */ + async apiGroupRetrieve(requestParameters: ApiGroupRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiGroupRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * function to handle files passed by application importer + */ + async apiImportCreateRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/import/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * function to handle files passed by application importer + */ + async apiImportCreate(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiImportCreateRaw(initOverrides); + } + + /** + */ + async apiImportLogCreateRaw(requestParameters: ApiImportLogCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['importLog'] == null) { + throw new runtime.RequiredError( + 'importLog', + 'Required parameter "importLog" was null or undefined when calling apiImportLogCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/import-log/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ImportLogToJSON(requestParameters['importLog']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ImportLogFromJSON(jsonValue)); + } + + /** + */ + async apiImportLogCreate(requestParameters: ApiImportLogCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiImportLogCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiImportLogDestroyRaw(requestParameters: ApiImportLogDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiImportLogDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/import-log/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiImportLogDestroy(requestParameters: ApiImportLogDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiImportLogDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiImportLogListRaw(requestParameters: ApiImportLogListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + if (requestParameters['pageSize'] != null) { + queryParameters['page_size'] = requestParameters['pageSize']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/import-log/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedImportLogListFromJSON(jsonValue)); + } + + /** + */ + async apiImportLogList(requestParameters: ApiImportLogListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiImportLogListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiImportLogPartialUpdateRaw(requestParameters: ApiImportLogPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiImportLogPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/import-log/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedImportLogToJSON(requestParameters['patchedImportLog']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ImportLogFromJSON(jsonValue)); + } + + /** + */ + async apiImportLogPartialUpdate(requestParameters: ApiImportLogPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiImportLogPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiImportLogRetrieveRaw(requestParameters: ApiImportLogRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiImportLogRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/import-log/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ImportLogFromJSON(jsonValue)); + } + + /** + */ + async apiImportLogRetrieve(requestParameters: ApiImportLogRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiImportLogRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiImportLogUpdateRaw(requestParameters: ApiImportLogUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiImportLogUpdate().' + ); + } + + if (requestParameters['importLog'] == null) { + throw new runtime.RequiredError( + 'importLog', + 'Required parameter "importLog" was null or undefined when calling apiImportLogUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/import-log/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: ImportLogToJSON(requestParameters['importLog']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ImportLogFromJSON(jsonValue)); + } + + /** + */ + async apiImportLogUpdate(requestParameters: ApiImportLogUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiImportLogUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiIngredientCreateRaw(requestParameters: ApiIngredientCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['ingredient'] == null) { + throw new runtime.RequiredError( + 'ingredient', + 'Required parameter "ingredient" was null or undefined when calling apiIngredientCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/ingredient/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: IngredientToJSON(requestParameters['ingredient']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => IngredientFromJSON(jsonValue)); + } + + /** + */ + async apiIngredientCreate(requestParameters: ApiIngredientCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiIngredientCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiIngredientDestroyRaw(requestParameters: ApiIngredientDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiIngredientDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/ingredient/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiIngredientDestroy(requestParameters: ApiIngredientDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiIngredientDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiIngredientListRaw(requestParameters: ApiIngredientListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + if (requestParameters['pageSize'] != null) { + queryParameters['page_size'] = requestParameters['pageSize']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/ingredient/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedIngredientListFromJSON(jsonValue)); + } + + /** + */ + async apiIngredientList(requestParameters: ApiIngredientListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiIngredientListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiIngredientPartialUpdateRaw(requestParameters: ApiIngredientPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiIngredientPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/ingredient/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedIngredientToJSON(requestParameters['patchedIngredient']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => IngredientFromJSON(jsonValue)); + } + + /** + */ + async apiIngredientPartialUpdate(requestParameters: ApiIngredientPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiIngredientPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiIngredientRetrieveRaw(requestParameters: ApiIngredientRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiIngredientRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/ingredient/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => IngredientFromJSON(jsonValue)); + } + + /** + */ + async apiIngredientRetrieve(requestParameters: ApiIngredientRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiIngredientRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiIngredientUpdateRaw(requestParameters: ApiIngredientUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiIngredientUpdate().' + ); + } + + if (requestParameters['ingredient'] == null) { + throw new runtime.RequiredError( + 'ingredient', + 'Required parameter "ingredient" was null or undefined when calling apiIngredientUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/ingredient/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: IngredientToJSON(requestParameters['ingredient']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => IngredientFromJSON(jsonValue)); + } + + /** + */ + async apiIngredientUpdate(requestParameters: ApiIngredientUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiIngredientUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiInviteLinkCreateRaw(requestParameters: ApiInviteLinkCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['inviteLink'] == null) { + throw new runtime.RequiredError( + 'inviteLink', + 'Required parameter "inviteLink" was null or undefined when calling apiInviteLinkCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/invite-link/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: InviteLinkToJSON(requestParameters['inviteLink']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => InviteLinkFromJSON(jsonValue)); + } + + /** + */ + async apiInviteLinkCreate(requestParameters: ApiInviteLinkCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiInviteLinkCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiInviteLinkDestroyRaw(requestParameters: ApiInviteLinkDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiInviteLinkDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/invite-link/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiInviteLinkDestroy(requestParameters: ApiInviteLinkDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiInviteLinkDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiInviteLinkListRaw(requestParameters: ApiInviteLinkListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + if (requestParameters['limit'] != null) { + queryParameters['limit'] = requestParameters['limit']; + } + + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + + if (requestParameters['random'] != null) { + queryParameters['random'] = requestParameters['random']; + } + + if (requestParameters['updatedAt'] != null) { + queryParameters['updated_at'] = requestParameters['updatedAt']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/invite-link/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(InviteLinkFromJSON)); + } + + /** + */ + async apiInviteLinkList(requestParameters: ApiInviteLinkListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiInviteLinkListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiInviteLinkPartialUpdateRaw(requestParameters: ApiInviteLinkPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiInviteLinkPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/invite-link/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedInviteLinkToJSON(requestParameters['patchedInviteLink']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => InviteLinkFromJSON(jsonValue)); + } + + /** + */ + async apiInviteLinkPartialUpdate(requestParameters: ApiInviteLinkPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiInviteLinkPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiInviteLinkRetrieveRaw(requestParameters: ApiInviteLinkRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiInviteLinkRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/invite-link/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => InviteLinkFromJSON(jsonValue)); + } + + /** + */ + async apiInviteLinkRetrieve(requestParameters: ApiInviteLinkRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiInviteLinkRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiInviteLinkUpdateRaw(requestParameters: ApiInviteLinkUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiInviteLinkUpdate().' + ); + } + + if (requestParameters['inviteLink'] == null) { + throw new runtime.RequiredError( + 'inviteLink', + 'Required parameter "inviteLink" was null or undefined when calling apiInviteLinkUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/invite-link/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: InviteLinkToJSON(requestParameters['inviteLink']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => InviteLinkFromJSON(jsonValue)); + } + + /** + */ + async apiInviteLinkUpdate(requestParameters: ApiInviteLinkUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiInviteLinkUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiKeywordCreateRaw(requestParameters: ApiKeywordCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['keyword'] == null) { + throw new runtime.RequiredError( + 'keyword', + 'Required parameter "keyword" was null or undefined when calling apiKeywordCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/keyword/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: KeywordToJSON(requestParameters['keyword']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => KeywordFromJSON(jsonValue)); + } + + /** + */ + async apiKeywordCreate(requestParameters: ApiKeywordCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiKeywordCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiKeywordDestroyRaw(requestParameters: ApiKeywordDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiKeywordDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/keyword/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiKeywordDestroy(requestParameters: ApiKeywordDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiKeywordDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiKeywordListRaw(requestParameters: ApiKeywordListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['limit'] != null) { + queryParameters['limit'] = requestParameters['limit']; + } + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + if (requestParameters['pageSize'] != null) { + queryParameters['page_size'] = requestParameters['pageSize']; + } + + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + + if (requestParameters['random'] != null) { + queryParameters['random'] = requestParameters['random']; + } + + if (requestParameters['updatedAt'] != null) { + queryParameters['updated_at'] = requestParameters['updatedAt']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/keyword/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedKeywordListFromJSON(jsonValue)); + } + + /** + */ + async apiKeywordList(requestParameters: ApiKeywordListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiKeywordListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiKeywordMergeUpdateRaw(requestParameters: ApiKeywordMergeUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiKeywordMergeUpdate().' + ); + } + + if (requestParameters['target'] == null) { + throw new runtime.RequiredError( + 'target', + 'Required parameter "target" was null or undefined when calling apiKeywordMergeUpdate().' + ); + } + + if (requestParameters['keyword'] == null) { + throw new runtime.RequiredError( + 'keyword', + 'Required parameter "keyword" was null or undefined when calling apiKeywordMergeUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/keyword/{id}/merge/{target}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))).replace(`{${"target"}}`, encodeURIComponent(String(requestParameters['target']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: KeywordToJSON(requestParameters['keyword']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => KeywordFromJSON(jsonValue)); + } + + /** + */ + async apiKeywordMergeUpdate(requestParameters: ApiKeywordMergeUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiKeywordMergeUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiKeywordMoveUpdateRaw(requestParameters: ApiKeywordMoveUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiKeywordMoveUpdate().' + ); + } + + if (requestParameters['parent'] == null) { + throw new runtime.RequiredError( + 'parent', + 'Required parameter "parent" was null or undefined when calling apiKeywordMoveUpdate().' + ); + } + + if (requestParameters['keyword'] == null) { + throw new runtime.RequiredError( + 'keyword', + 'Required parameter "keyword" was null or undefined when calling apiKeywordMoveUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/keyword/{id}/move/{parent}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))).replace(`{${"parent"}}`, encodeURIComponent(String(requestParameters['parent']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: KeywordToJSON(requestParameters['keyword']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => KeywordFromJSON(jsonValue)); + } + + /** + */ + async apiKeywordMoveUpdate(requestParameters: ApiKeywordMoveUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiKeywordMoveUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiKeywordPartialUpdateRaw(requestParameters: ApiKeywordPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiKeywordPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/keyword/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedKeywordToJSON(requestParameters['patchedKeyword']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => KeywordFromJSON(jsonValue)); + } + + /** + */ + async apiKeywordPartialUpdate(requestParameters: ApiKeywordPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiKeywordPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiKeywordRetrieveRaw(requestParameters: ApiKeywordRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiKeywordRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/keyword/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => KeywordFromJSON(jsonValue)); + } + + /** + */ + async apiKeywordRetrieve(requestParameters: ApiKeywordRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiKeywordRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiKeywordUpdateRaw(requestParameters: ApiKeywordUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiKeywordUpdate().' + ); + } + + if (requestParameters['keyword'] == null) { + throw new runtime.RequiredError( + 'keyword', + 'Required parameter "keyword" was null or undefined when calling apiKeywordUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/keyword/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: KeywordToJSON(requestParameters['keyword']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => KeywordFromJSON(jsonValue)); + } + + /** + */ + async apiKeywordUpdate(requestParameters: ApiKeywordUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiKeywordUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * list: optional parameters - **from_date**: filter from (inclusive) a certain date onward - **to_date**: filter upward to (inclusive) certain date - **meal_type**: filter meal plans based on meal_type ID + */ + async apiMealPlanCreateRaw(requestParameters: ApiMealPlanCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['mealPlan'] == null) { + throw new runtime.RequiredError( + 'mealPlan', + 'Required parameter "mealPlan" was null or undefined when calling apiMealPlanCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/meal-plan/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: MealPlanToJSON(requestParameters['mealPlan']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => MealPlanFromJSON(jsonValue)); + } + + /** + * list: optional parameters - **from_date**: filter from (inclusive) a certain date onward - **to_date**: filter upward to (inclusive) certain date - **meal_type**: filter meal plans based on meal_type ID + */ + async apiMealPlanCreate(requestParameters: ApiMealPlanCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiMealPlanCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * list: optional parameters - **from_date**: filter from (inclusive) a certain date onward - **to_date**: filter upward to (inclusive) certain date - **meal_type**: filter meal plans based on meal_type ID + */ + async apiMealPlanDestroyRaw(requestParameters: ApiMealPlanDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiMealPlanDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/meal-plan/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * list: optional parameters - **from_date**: filter from (inclusive) a certain date onward - **to_date**: filter upward to (inclusive) certain date - **meal_type**: filter meal plans based on meal_type ID + */ + async apiMealPlanDestroy(requestParameters: ApiMealPlanDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiMealPlanDestroyRaw(requestParameters, initOverrides); + } + + /** + * list: optional parameters - **from_date**: filter from (inclusive) a certain date onward - **to_date**: filter upward to (inclusive) certain date - **meal_type**: filter meal plans based on meal_type ID + */ + async apiMealPlanListRaw(requestParameters: ApiMealPlanListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + if (requestParameters['fromDate'] != null) { + queryParameters['from_date'] = requestParameters['fromDate']; + } + + if (requestParameters['mealType'] != null) { + queryParameters['meal_type'] = requestParameters['mealType']; + } + + if (requestParameters['toDate'] != null) { + queryParameters['to_date'] = requestParameters['toDate']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/meal-plan/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(MealPlanFromJSON)); + } + + /** + * list: optional parameters - **from_date**: filter from (inclusive) a certain date onward - **to_date**: filter upward to (inclusive) certain date - **meal_type**: filter meal plans based on meal_type ID + */ + async apiMealPlanList(requestParameters: ApiMealPlanListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiMealPlanListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * list: optional parameters - **from_date**: filter from (inclusive) a certain date onward - **to_date**: filter upward to (inclusive) certain date - **meal_type**: filter meal plans based on meal_type ID + */ + async apiMealPlanPartialUpdateRaw(requestParameters: ApiMealPlanPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiMealPlanPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/meal-plan/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedMealPlanToJSON(requestParameters['patchedMealPlan']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => MealPlanFromJSON(jsonValue)); + } + + /** + * list: optional parameters - **from_date**: filter from (inclusive) a certain date onward - **to_date**: filter upward to (inclusive) certain date - **meal_type**: filter meal plans based on meal_type ID + */ + async apiMealPlanPartialUpdate(requestParameters: ApiMealPlanPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiMealPlanPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * list: optional parameters - **from_date**: filter from (inclusive) a certain date onward - **to_date**: filter upward to (inclusive) certain date - **meal_type**: filter meal plans based on meal_type ID + */ + async apiMealPlanRetrieveRaw(requestParameters: ApiMealPlanRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiMealPlanRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/meal-plan/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => MealPlanFromJSON(jsonValue)); + } + + /** + * list: optional parameters - **from_date**: filter from (inclusive) a certain date onward - **to_date**: filter upward to (inclusive) certain date - **meal_type**: filter meal plans based on meal_type ID + */ + async apiMealPlanRetrieve(requestParameters: ApiMealPlanRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiMealPlanRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * list: optional parameters - **from_date**: filter from (inclusive) a certain date onward - **to_date**: filter upward to (inclusive) certain date - **meal_type**: filter meal plans based on meal_type ID + */ + async apiMealPlanUpdateRaw(requestParameters: ApiMealPlanUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiMealPlanUpdate().' + ); + } + + if (requestParameters['mealPlan'] == null) { + throw new runtime.RequiredError( + 'mealPlan', + 'Required parameter "mealPlan" was null or undefined when calling apiMealPlanUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/meal-plan/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: MealPlanToJSON(requestParameters['mealPlan']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => MealPlanFromJSON(jsonValue)); + } + + /** + * list: optional parameters - **from_date**: filter from (inclusive) a certain date onward - **to_date**: filter upward to (inclusive) certain date - **meal_type**: filter meal plans based on meal_type ID + */ + async apiMealPlanUpdate(requestParameters: ApiMealPlanUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiMealPlanUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * returns list of meal types created by the requesting user ordered by the order field. + */ + async apiMealTypeCreateRaw(requestParameters: ApiMealTypeCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['mealType'] == null) { + throw new runtime.RequiredError( + 'mealType', + 'Required parameter "mealType" was null or undefined when calling apiMealTypeCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/meal-type/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: MealTypeToJSON(requestParameters['mealType']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => MealTypeFromJSON(jsonValue)); + } + + /** + * returns list of meal types created by the requesting user ordered by the order field. + */ + async apiMealTypeCreate(requestParameters: ApiMealTypeCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiMealTypeCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * returns list of meal types created by the requesting user ordered by the order field. + */ + async apiMealTypeDestroyRaw(requestParameters: ApiMealTypeDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiMealTypeDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/meal-type/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * returns list of meal types created by the requesting user ordered by the order field. + */ + async apiMealTypeDestroy(requestParameters: ApiMealTypeDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiMealTypeDestroyRaw(requestParameters, initOverrides); + } + + /** + * returns list of meal types created by the requesting user ordered by the order field. + */ + async apiMealTypeListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/meal-type/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(MealTypeFromJSON)); + } + + /** + * returns list of meal types created by the requesting user ordered by the order field. + */ + async apiMealTypeList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiMealTypeListRaw(initOverrides); + return await response.value(); + } + + /** + * returns list of meal types created by the requesting user ordered by the order field. + */ + async apiMealTypePartialUpdateRaw(requestParameters: ApiMealTypePartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiMealTypePartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/meal-type/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedMealTypeToJSON(requestParameters['patchedMealType']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => MealTypeFromJSON(jsonValue)); + } + + /** + * returns list of meal types created by the requesting user ordered by the order field. + */ + async apiMealTypePartialUpdate(requestParameters: ApiMealTypePartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiMealTypePartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * returns list of meal types created by the requesting user ordered by the order field. + */ + async apiMealTypeRetrieveRaw(requestParameters: ApiMealTypeRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiMealTypeRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/meal-type/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => MealTypeFromJSON(jsonValue)); + } + + /** + * returns list of meal types created by the requesting user ordered by the order field. + */ + async apiMealTypeRetrieve(requestParameters: ApiMealTypeRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiMealTypeRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * returns list of meal types created by the requesting user ordered by the order field. + */ + async apiMealTypeUpdateRaw(requestParameters: ApiMealTypeUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiMealTypeUpdate().' + ); + } + + if (requestParameters['mealType'] == null) { + throw new runtime.RequiredError( + 'mealType', + 'Required parameter "mealType" was null or undefined when calling apiMealTypeUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/meal-type/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: MealTypeToJSON(requestParameters['mealType']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => MealTypeFromJSON(jsonValue)); + } + + /** + * returns list of meal types created by the requesting user ordered by the order field. + */ + async apiMealTypeUpdate(requestParameters: ApiMealTypeUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiMealTypeUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataCategoryCreateRaw(requestParameters: ApiOpenDataCategoryCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['openDataCategory'] == null) { + throw new runtime.RequiredError( + 'openDataCategory', + 'Required parameter "openDataCategory" was null or undefined when calling apiOpenDataCategoryCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-category/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: OpenDataCategoryToJSON(requestParameters['openDataCategory']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataCategoryFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataCategoryCreate(requestParameters: ApiOpenDataCategoryCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataCategoryCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataCategoryDestroyRaw(requestParameters: ApiOpenDataCategoryDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataCategoryDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-category/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiOpenDataCategoryDestroy(requestParameters: ApiOpenDataCategoryDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiOpenDataCategoryDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiOpenDataCategoryListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-category/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(OpenDataCategoryFromJSON)); + } + + /** + */ + async apiOpenDataCategoryList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiOpenDataCategoryListRaw(initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataCategoryPartialUpdateRaw(requestParameters: ApiOpenDataCategoryPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataCategoryPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-category/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedOpenDataCategoryToJSON(requestParameters['patchedOpenDataCategory']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataCategoryFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataCategoryPartialUpdate(requestParameters: ApiOpenDataCategoryPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataCategoryPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataCategoryRetrieveRaw(requestParameters: ApiOpenDataCategoryRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataCategoryRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-category/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataCategoryFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataCategoryRetrieve(requestParameters: ApiOpenDataCategoryRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataCategoryRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataCategoryUpdateRaw(requestParameters: ApiOpenDataCategoryUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataCategoryUpdate().' + ); + } + + if (requestParameters['openDataCategory'] == null) { + throw new runtime.RequiredError( + 'openDataCategory', + 'Required parameter "openDataCategory" was null or undefined when calling apiOpenDataCategoryUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-category/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: OpenDataCategoryToJSON(requestParameters['openDataCategory']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataCategoryFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataCategoryUpdate(requestParameters: ApiOpenDataCategoryUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataCategoryUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataConversionCreateRaw(requestParameters: ApiOpenDataConversionCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['openDataConversion'] == null) { + throw new runtime.RequiredError( + 'openDataConversion', + 'Required parameter "openDataConversion" was null or undefined when calling apiOpenDataConversionCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-conversion/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: OpenDataConversionToJSON(requestParameters['openDataConversion']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataConversionFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataConversionCreate(requestParameters: ApiOpenDataConversionCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataConversionCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataConversionDestroyRaw(requestParameters: ApiOpenDataConversionDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataConversionDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-conversion/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiOpenDataConversionDestroy(requestParameters: ApiOpenDataConversionDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiOpenDataConversionDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiOpenDataConversionListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-conversion/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(OpenDataConversionFromJSON)); + } + + /** + */ + async apiOpenDataConversionList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiOpenDataConversionListRaw(initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataConversionPartialUpdateRaw(requestParameters: ApiOpenDataConversionPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataConversionPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-conversion/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedOpenDataConversionToJSON(requestParameters['patchedOpenDataConversion']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataConversionFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataConversionPartialUpdate(requestParameters: ApiOpenDataConversionPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataConversionPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataConversionRetrieveRaw(requestParameters: ApiOpenDataConversionRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataConversionRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-conversion/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataConversionFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataConversionRetrieve(requestParameters: ApiOpenDataConversionRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataConversionRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataConversionUpdateRaw(requestParameters: ApiOpenDataConversionUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataConversionUpdate().' + ); + } + + if (requestParameters['openDataConversion'] == null) { + throw new runtime.RequiredError( + 'openDataConversion', + 'Required parameter "openDataConversion" was null or undefined when calling apiOpenDataConversionUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-conversion/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: OpenDataConversionToJSON(requestParameters['openDataConversion']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataConversionFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataConversionUpdate(requestParameters: ApiOpenDataConversionUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataConversionUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataFDCRetrieveRaw(requestParameters: ApiOpenDataFDCRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataFDCRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-FDC/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiOpenDataFDCRetrieve(requestParameters: ApiOpenDataFDCRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiOpenDataFDCRetrieveRaw(requestParameters, initOverrides); + } + + /** + */ + async apiOpenDataFoodCreateRaw(requestParameters: ApiOpenDataFoodCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['openDataFood'] == null) { + throw new runtime.RequiredError( + 'openDataFood', + 'Required parameter "openDataFood" was null or undefined when calling apiOpenDataFoodCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-food/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: OpenDataFoodToJSON(requestParameters['openDataFood']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataFoodFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataFoodCreate(requestParameters: ApiOpenDataFoodCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataFoodCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataFoodDestroyRaw(requestParameters: ApiOpenDataFoodDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataFoodDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-food/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiOpenDataFoodDestroy(requestParameters: ApiOpenDataFoodDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiOpenDataFoodDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiOpenDataFoodListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-food/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(OpenDataFoodFromJSON)); + } + + /** + */ + async apiOpenDataFoodList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiOpenDataFoodListRaw(initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataFoodPartialUpdateRaw(requestParameters: ApiOpenDataFoodPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataFoodPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-food/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedOpenDataFoodToJSON(requestParameters['patchedOpenDataFood']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataFoodFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataFoodPartialUpdate(requestParameters: ApiOpenDataFoodPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataFoodPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataFoodRetrieveRaw(requestParameters: ApiOpenDataFoodRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataFoodRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-food/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataFoodFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataFoodRetrieve(requestParameters: ApiOpenDataFoodRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataFoodRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataFoodUpdateRaw(requestParameters: ApiOpenDataFoodUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataFoodUpdate().' + ); + } + + if (requestParameters['openDataFood'] == null) { + throw new runtime.RequiredError( + 'openDataFood', + 'Required parameter "openDataFood" was null or undefined when calling apiOpenDataFoodUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-food/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: OpenDataFoodToJSON(requestParameters['openDataFood']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataFoodFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataFoodUpdate(requestParameters: ApiOpenDataFoodUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataFoodUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataPropertyCreateRaw(requestParameters: ApiOpenDataPropertyCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['openDataProperty'] == null) { + throw new runtime.RequiredError( + 'openDataProperty', + 'Required parameter "openDataProperty" was null or undefined when calling apiOpenDataPropertyCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-property/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: OpenDataPropertyToJSON(requestParameters['openDataProperty']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataPropertyFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataPropertyCreate(requestParameters: ApiOpenDataPropertyCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataPropertyCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataPropertyDestroyRaw(requestParameters: ApiOpenDataPropertyDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataPropertyDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-property/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiOpenDataPropertyDestroy(requestParameters: ApiOpenDataPropertyDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiOpenDataPropertyDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiOpenDataPropertyListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-property/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(OpenDataPropertyFromJSON)); + } + + /** + */ + async apiOpenDataPropertyList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiOpenDataPropertyListRaw(initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataPropertyPartialUpdateRaw(requestParameters: ApiOpenDataPropertyPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataPropertyPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-property/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedOpenDataPropertyToJSON(requestParameters['patchedOpenDataProperty']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataPropertyFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataPropertyPartialUpdate(requestParameters: ApiOpenDataPropertyPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataPropertyPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataPropertyRetrieveRaw(requestParameters: ApiOpenDataPropertyRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataPropertyRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-property/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataPropertyFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataPropertyRetrieve(requestParameters: ApiOpenDataPropertyRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataPropertyRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataPropertyUpdateRaw(requestParameters: ApiOpenDataPropertyUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataPropertyUpdate().' + ); + } + + if (requestParameters['openDataProperty'] == null) { + throw new runtime.RequiredError( + 'openDataProperty', + 'Required parameter "openDataProperty" was null or undefined when calling apiOpenDataPropertyUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-property/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: OpenDataPropertyToJSON(requestParameters['openDataProperty']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataPropertyFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataPropertyUpdate(requestParameters: ApiOpenDataPropertyUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataPropertyUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataStatsRetrieveRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-stats/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiOpenDataStatsRetrieve(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiOpenDataStatsRetrieveRaw(initOverrides); + } + + /** + */ + async apiOpenDataStoreCreateRaw(requestParameters: ApiOpenDataStoreCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['openDataStore'] == null) { + throw new runtime.RequiredError( + 'openDataStore', + 'Required parameter "openDataStore" was null or undefined when calling apiOpenDataStoreCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-store/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: OpenDataStoreToJSON(requestParameters['openDataStore']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataStoreFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataStoreCreate(requestParameters: ApiOpenDataStoreCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataStoreCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataStoreDestroyRaw(requestParameters: ApiOpenDataStoreDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataStoreDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-store/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiOpenDataStoreDestroy(requestParameters: ApiOpenDataStoreDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiOpenDataStoreDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiOpenDataStoreListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-store/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(OpenDataStoreFromJSON)); + } + + /** + */ + async apiOpenDataStoreList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiOpenDataStoreListRaw(initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataStorePartialUpdateRaw(requestParameters: ApiOpenDataStorePartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataStorePartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-store/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedOpenDataStoreToJSON(requestParameters['patchedOpenDataStore']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataStoreFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataStorePartialUpdate(requestParameters: ApiOpenDataStorePartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataStorePartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataStoreRetrieveRaw(requestParameters: ApiOpenDataStoreRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataStoreRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-store/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataStoreFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataStoreRetrieve(requestParameters: ApiOpenDataStoreRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataStoreRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataStoreUpdateRaw(requestParameters: ApiOpenDataStoreUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataStoreUpdate().' + ); + } + + if (requestParameters['openDataStore'] == null) { + throw new runtime.RequiredError( + 'openDataStore', + 'Required parameter "openDataStore" was null or undefined when calling apiOpenDataStoreUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-store/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: OpenDataStoreToJSON(requestParameters['openDataStore']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataStoreFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataStoreUpdate(requestParameters: ApiOpenDataStoreUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataStoreUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataUnitCreateRaw(requestParameters: ApiOpenDataUnitCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['openDataUnit'] == null) { + throw new runtime.RequiredError( + 'openDataUnit', + 'Required parameter "openDataUnit" was null or undefined when calling apiOpenDataUnitCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-unit/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: OpenDataUnitToJSON(requestParameters['openDataUnit']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataUnitFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataUnitCreate(requestParameters: ApiOpenDataUnitCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataUnitCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataUnitDestroyRaw(requestParameters: ApiOpenDataUnitDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataUnitDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-unit/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiOpenDataUnitDestroy(requestParameters: ApiOpenDataUnitDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiOpenDataUnitDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiOpenDataUnitListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-unit/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(OpenDataUnitFromJSON)); + } + + /** + */ + async apiOpenDataUnitList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiOpenDataUnitListRaw(initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataUnitPartialUpdateRaw(requestParameters: ApiOpenDataUnitPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataUnitPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-unit/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedOpenDataUnitToJSON(requestParameters['patchedOpenDataUnit']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataUnitFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataUnitPartialUpdate(requestParameters: ApiOpenDataUnitPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataUnitPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataUnitRetrieveRaw(requestParameters: ApiOpenDataUnitRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataUnitRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-unit/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataUnitFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataUnitRetrieve(requestParameters: ApiOpenDataUnitRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataUnitRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataUnitUpdateRaw(requestParameters: ApiOpenDataUnitUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataUnitUpdate().' + ); + } + + if (requestParameters['openDataUnit'] == null) { + throw new runtime.RequiredError( + 'openDataUnit', + 'Required parameter "openDataUnit" was null or undefined when calling apiOpenDataUnitUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-unit/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: OpenDataUnitToJSON(requestParameters['openDataUnit']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataUnitFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataUnitUpdate(requestParameters: ApiOpenDataUnitUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataUnitUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataVersionCreateRaw(requestParameters: ApiOpenDataVersionCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['openDataVersion'] == null) { + throw new runtime.RequiredError( + 'openDataVersion', + 'Required parameter "openDataVersion" was null or undefined when calling apiOpenDataVersionCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-version/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: OpenDataVersionToJSON(requestParameters['openDataVersion']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataVersionFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataVersionCreate(requestParameters: ApiOpenDataVersionCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataVersionCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataVersionDestroyRaw(requestParameters: ApiOpenDataVersionDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataVersionDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-version/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiOpenDataVersionDestroy(requestParameters: ApiOpenDataVersionDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiOpenDataVersionDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiOpenDataVersionListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-version/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(OpenDataVersionFromJSON)); + } + + /** + */ + async apiOpenDataVersionList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiOpenDataVersionListRaw(initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataVersionPartialUpdateRaw(requestParameters: ApiOpenDataVersionPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataVersionPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-version/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedOpenDataVersionToJSON(requestParameters['patchedOpenDataVersion']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataVersionFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataVersionPartialUpdate(requestParameters: ApiOpenDataVersionPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataVersionPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataVersionRetrieveRaw(requestParameters: ApiOpenDataVersionRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataVersionRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-version/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataVersionFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataVersionRetrieve(requestParameters: ApiOpenDataVersionRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataVersionRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiOpenDataVersionUpdateRaw(requestParameters: ApiOpenDataVersionUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiOpenDataVersionUpdate().' + ); + } + + if (requestParameters['openDataVersion'] == null) { + throw new runtime.RequiredError( + 'openDataVersion', + 'Required parameter "openDataVersion" was null or undefined when calling apiOpenDataVersionUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/open-data-version/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: OpenDataVersionToJSON(requestParameters['openDataVersion']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => OpenDataVersionFromJSON(jsonValue)); + } + + /** + */ + async apiOpenDataVersionUpdate(requestParameters: ApiOpenDataVersionUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiOpenDataVersionUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiPlanIcalRetrieveRaw(requestParameters: ApiPlanIcalRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['fromDate'] == null) { + throw new runtime.RequiredError( + 'fromDate', + 'Required parameter "fromDate" was null or undefined when calling apiPlanIcalRetrieve().' + ); + } + + if (requestParameters['toDate'] == null) { + throw new runtime.RequiredError( + 'toDate', + 'Required parameter "toDate" was null or undefined when calling apiPlanIcalRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/plan-ical/{from_date}/{to_date}/`.replace(`{${"from_date"}}`, encodeURIComponent(String(requestParameters['fromDate']))).replace(`{${"to_date"}}`, encodeURIComponent(String(requestParameters['toDate']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiPlanIcalRetrieve(requestParameters: ApiPlanIcalRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiPlanIcalRetrieveRaw(requestParameters, initOverrides); + } + + /** + */ + async apiRecipeBookCreateRaw(requestParameters: ApiRecipeBookCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['recipeBook'] == null) { + throw new runtime.RequiredError( + 'recipeBook', + 'Required parameter "recipeBook" was null or undefined when calling apiRecipeBookCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe-book/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: RecipeBookToJSON(requestParameters['recipeBook']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RecipeBookFromJSON(jsonValue)); + } + + /** + */ + async apiRecipeBookCreate(requestParameters: ApiRecipeBookCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiRecipeBookCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiRecipeBookDestroyRaw(requestParameters: ApiRecipeBookDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiRecipeBookDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe-book/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiRecipeBookDestroy(requestParameters: ApiRecipeBookDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiRecipeBookDestroyRaw(requestParameters, initOverrides); + } + + /** + * list: optional parameters - **recipe**: id of recipe - only return books for that recipe - **book**: id of book - only return recipes in that book + */ + async apiRecipeBookEntryCreateRaw(requestParameters: ApiRecipeBookEntryCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['recipeBookEntry'] == null) { + throw new runtime.RequiredError( + 'recipeBookEntry', + 'Required parameter "recipeBookEntry" was null or undefined when calling apiRecipeBookEntryCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe-book-entry/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: RecipeBookEntryToJSON(requestParameters['recipeBookEntry']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RecipeBookEntryFromJSON(jsonValue)); + } + + /** + * list: optional parameters - **recipe**: id of recipe - only return books for that recipe - **book**: id of book - only return recipes in that book + */ + async apiRecipeBookEntryCreate(requestParameters: ApiRecipeBookEntryCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiRecipeBookEntryCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * list: optional parameters - **recipe**: id of recipe - only return books for that recipe - **book**: id of book - only return recipes in that book + */ + async apiRecipeBookEntryDestroyRaw(requestParameters: ApiRecipeBookEntryDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiRecipeBookEntryDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe-book-entry/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * list: optional parameters - **recipe**: id of recipe - only return books for that recipe - **book**: id of book - only return recipes in that book + */ + async apiRecipeBookEntryDestroy(requestParameters: ApiRecipeBookEntryDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiRecipeBookEntryDestroyRaw(requestParameters, initOverrides); + } + + /** + * list: optional parameters - **recipe**: id of recipe - only return books for that recipe - **book**: id of book - only return recipes in that book + */ + async apiRecipeBookEntryListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe-book-entry/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(RecipeBookEntryFromJSON)); + } + + /** + * list: optional parameters - **recipe**: id of recipe - only return books for that recipe - **book**: id of book - only return recipes in that book + */ + async apiRecipeBookEntryList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiRecipeBookEntryListRaw(initOverrides); + return await response.value(); + } + + /** + * list: optional parameters - **recipe**: id of recipe - only return books for that recipe - **book**: id of book - only return recipes in that book + */ + async apiRecipeBookEntryPartialUpdateRaw(requestParameters: ApiRecipeBookEntryPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiRecipeBookEntryPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe-book-entry/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedRecipeBookEntryToJSON(requestParameters['patchedRecipeBookEntry']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RecipeBookEntryFromJSON(jsonValue)); + } + + /** + * list: optional parameters - **recipe**: id of recipe - only return books for that recipe - **book**: id of book - only return recipes in that book + */ + async apiRecipeBookEntryPartialUpdate(requestParameters: ApiRecipeBookEntryPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiRecipeBookEntryPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * list: optional parameters - **recipe**: id of recipe - only return books for that recipe - **book**: id of book - only return recipes in that book + */ + async apiRecipeBookEntryRetrieveRaw(requestParameters: ApiRecipeBookEntryRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiRecipeBookEntryRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe-book-entry/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RecipeBookEntryFromJSON(jsonValue)); + } + + /** + * list: optional parameters - **recipe**: id of recipe - only return books for that recipe - **book**: id of book - only return recipes in that book + */ + async apiRecipeBookEntryRetrieve(requestParameters: ApiRecipeBookEntryRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiRecipeBookEntryRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * list: optional parameters - **recipe**: id of recipe - only return books for that recipe - **book**: id of book - only return recipes in that book + */ + async apiRecipeBookEntryUpdateRaw(requestParameters: ApiRecipeBookEntryUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiRecipeBookEntryUpdate().' + ); + } + + if (requestParameters['recipeBookEntry'] == null) { + throw new runtime.RequiredError( + 'recipeBookEntry', + 'Required parameter "recipeBookEntry" was null or undefined when calling apiRecipeBookEntryUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe-book-entry/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: RecipeBookEntryToJSON(requestParameters['recipeBookEntry']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RecipeBookEntryFromJSON(jsonValue)); + } + + /** + * list: optional parameters - **recipe**: id of recipe - only return books for that recipe - **book**: id of book - only return recipes in that book + */ + async apiRecipeBookEntryUpdate(requestParameters: ApiRecipeBookEntryUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiRecipeBookEntryUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiRecipeBookListRaw(requestParameters: ApiRecipeBookListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + if (requestParameters['limit'] != null) { + queryParameters['limit'] = requestParameters['limit']; + } + + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + + if (requestParameters['random'] != null) { + queryParameters['random'] = requestParameters['random']; + } + + if (requestParameters['updatedAt'] != null) { + queryParameters['updated_at'] = requestParameters['updatedAt']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe-book/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(RecipeBookFromJSON)); + } + + /** + */ + async apiRecipeBookList(requestParameters: ApiRecipeBookListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiRecipeBookListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiRecipeBookPartialUpdateRaw(requestParameters: ApiRecipeBookPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiRecipeBookPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe-book/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedRecipeBookToJSON(requestParameters['patchedRecipeBook']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RecipeBookFromJSON(jsonValue)); + } + + /** + */ + async apiRecipeBookPartialUpdate(requestParameters: ApiRecipeBookPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiRecipeBookPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiRecipeBookRetrieveRaw(requestParameters: ApiRecipeBookRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiRecipeBookRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe-book/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RecipeBookFromJSON(jsonValue)); + } + + /** + */ + async apiRecipeBookRetrieve(requestParameters: ApiRecipeBookRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiRecipeBookRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiRecipeBookUpdateRaw(requestParameters: ApiRecipeBookUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiRecipeBookUpdate().' + ); + } + + if (requestParameters['recipeBook'] == null) { + throw new runtime.RequiredError( + 'recipeBook', + 'Required parameter "recipeBook" was null or undefined when calling apiRecipeBookUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe-book/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: RecipeBookToJSON(requestParameters['recipeBook']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RecipeBookFromJSON(jsonValue)); + } + + /** + */ + async apiRecipeBookUpdate(requestParameters: ApiRecipeBookUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiRecipeBookUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiRecipeCreateRaw(requestParameters: ApiRecipeCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['recipe'] == null) { + throw new runtime.RequiredError( + 'recipe', + 'Required parameter "recipe" was null or undefined when calling apiRecipeCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: RecipeToJSON(requestParameters['recipe']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RecipeFromJSON(jsonValue)); + } + + /** + */ + async apiRecipeCreate(requestParameters: ApiRecipeCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiRecipeCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiRecipeDestroyRaw(requestParameters: ApiRecipeDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiRecipeDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiRecipeDestroy(requestParameters: ApiRecipeDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiRecipeDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiRecipeFlatListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe/flat/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(RecipeFlatFromJSON)); + } + + /** + */ + async apiRecipeFlatList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiRecipeFlatListRaw(initOverrides); + return await response.value(); + } + + /** + * function to retrieve a recipe from a given url or source string :param request: standard request with additional post parameters - url: url to use for importing recipe - data: if no url is given recipe is imported from provided source data - (optional) bookmarklet: id of bookmarklet import to use, overrides URL and data attributes :return: JsonResponse containing the parsed json and images + */ + async apiRecipeFromSourceCreateRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe-from-source/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * function to retrieve a recipe from a given url or source string :param request: standard request with additional post parameters - url: url to use for importing recipe - data: if no url is given recipe is imported from provided source data - (optional) bookmarklet: id of bookmarklet import to use, overrides URL and data attributes :return: JsonResponse containing the parsed json and images + */ + async apiRecipeFromSourceCreate(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiRecipeFromSourceCreateRaw(initOverrides); + } + + /** + */ + async apiRecipeImageUpdateRaw(requestParameters: ApiRecipeImageUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiRecipeImageUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const consumes: runtime.Consume[] = [ + { contentType: 'multipart/form-data' }, + ]; + // @ts-ignore: canConsumeForm may be unused + const canConsumeForm = runtime.canConsumeForm(consumes); + + let formParams: { append(param: string, value: any): any }; + let useForm = false; + if (useForm) { + formParams = new FormData(); + } else { + formParams = new URLSearchParams(); + } + + if (requestParameters['image'] != null) { + formParams.append('image', requestParameters['image'] as any); + } + + if (requestParameters['imageUrl'] != null) { + formParams.append('image_url', requestParameters['imageUrl'] as any); + } + + const response = await this.request({ + path: `/api/recipe/{id}/image/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: formParams, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RecipeImageFromJSON(jsonValue)); + } + + /** + */ + async apiRecipeImageUpdate(requestParameters: ApiRecipeImageUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiRecipeImageUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiRecipeListRaw(requestParameters: ApiRecipeListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['books'] != null) { + queryParameters['books'] = requestParameters['books']; + } + + if (requestParameters['booksAnd'] != null) { + queryParameters['books_and'] = requestParameters['booksAnd']; + } + + if (requestParameters['booksAndNot'] != null) { + queryParameters['books_and_not'] = requestParameters['booksAndNot']; + } + + if (requestParameters['booksOr'] != null) { + queryParameters['books_or'] = requestParameters['booksOr']; + } + + if (requestParameters['booksOrNot'] != null) { + queryParameters['books_or_not'] = requestParameters['booksOrNot']; + } + + if (requestParameters['cookedon'] != null) { + queryParameters['cookedon'] = requestParameters['cookedon']; + } + + if (requestParameters['createdon'] != null) { + queryParameters['createdon'] = requestParameters['createdon']; + } + + if (requestParameters['foods'] != null) { + queryParameters['foods'] = requestParameters['foods']; + } + + if (requestParameters['foodsAnd'] != null) { + queryParameters['foods_and'] = requestParameters['foodsAnd']; + } + + if (requestParameters['foodsAndNot'] != null) { + queryParameters['foods_and_not'] = requestParameters['foodsAndNot']; + } + + if (requestParameters['foodsOr'] != null) { + queryParameters['foods_or'] = requestParameters['foodsOr']; + } + + if (requestParameters['foodsOrNot'] != null) { + queryParameters['foods_or_not'] = requestParameters['foodsOrNot']; + } + + if (requestParameters['internal'] != null) { + queryParameters['internal'] = requestParameters['internal']; + } + + if (requestParameters['keywords'] != null) { + queryParameters['keywords'] = requestParameters['keywords']; + } + + if (requestParameters['keywordsAnd'] != null) { + queryParameters['keywords_and'] = requestParameters['keywordsAnd']; + } + + if (requestParameters['keywordsAndNot'] != null) { + queryParameters['keywords_and_not'] = requestParameters['keywordsAndNot']; + } + + if (requestParameters['keywordsOr'] != null) { + queryParameters['keywords_or'] = requestParameters['keywordsOr']; + } + + if (requestParameters['keywordsOrNot'] != null) { + queryParameters['keywords_or_not'] = requestParameters['keywordsOrNot']; + } + + if (requestParameters['makenow'] != null) { + queryParameters['makenow'] = requestParameters['makenow']; + } + + if (requestParameters['_new'] != null) { + queryParameters['new'] = requestParameters['_new']; + } + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + if (requestParameters['pageSize'] != null) { + queryParameters['page_size'] = requestParameters['pageSize']; + } + + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + + if (requestParameters['random'] != null) { + queryParameters['random'] = requestParameters['random']; + } + + if (requestParameters['rating'] != null) { + queryParameters['rating'] = requestParameters['rating']; + } + + if (requestParameters['timescooked'] != null) { + queryParameters['timescooked'] = requestParameters['timescooked']; + } + + if (requestParameters['units'] != null) { + queryParameters['units'] = requestParameters['units']; + } + + if (requestParameters['updatedon'] != null) { + queryParameters['updatedon'] = requestParameters['updatedon']; + } + + if (requestParameters['viewedon'] != null) { + queryParameters['viewedon'] = requestParameters['viewedon']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedRecipeOverviewListFromJSON(jsonValue)); + } + + /** + */ + async apiRecipeList(requestParameters: ApiRecipeListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiRecipeListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiRecipePartialUpdateRaw(requestParameters: ApiRecipePartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiRecipePartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedRecipeToJSON(requestParameters['patchedRecipe']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RecipeFromJSON(jsonValue)); + } + + /** + */ + async apiRecipePartialUpdate(requestParameters: ApiRecipePartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiRecipePartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiRecipeRelatedRetrieveRaw(requestParameters: ApiRecipeRelatedRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiRecipeRelatedRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe/{id}/related/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RecipeSimpleFromJSON(jsonValue)); + } + + /** + */ + async apiRecipeRelatedRetrieve(requestParameters: ApiRecipeRelatedRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiRecipeRelatedRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiRecipeRetrieveRaw(requestParameters: ApiRecipeRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiRecipeRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RecipeFromJSON(jsonValue)); + } + + /** + */ + async apiRecipeRetrieve(requestParameters: ApiRecipeRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiRecipeRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiRecipeShoppingUpdateRaw(requestParameters: ApiRecipeShoppingUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiRecipeShoppingUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe/{id}/shopping/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: RecipeShoppingUpdateToJSON(requestParameters['recipeShoppingUpdate']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RecipeShoppingUpdateFromJSON(jsonValue)); + } + + /** + */ + async apiRecipeShoppingUpdate(requestParameters: ApiRecipeShoppingUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiRecipeShoppingUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiRecipeUpdateRaw(requestParameters: ApiRecipeUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiRecipeUpdate().' + ); + } + + if (requestParameters['recipe'] == null) { + throw new runtime.RequiredError( + 'recipe', + 'Required parameter "recipe" was null or undefined when calling apiRecipeUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/recipe/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: RecipeToJSON(requestParameters['recipe']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => RecipeFromJSON(jsonValue)); + } + + /** + */ + async apiRecipeUpdate(requestParameters: ApiRecipeUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiRecipeUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * function to reset inheritance from api, see food method for docs + */ + async apiResetFoodInheritanceRetrieveRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/reset-food-inheritance/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * function to reset inheritance from api, see food method for docs + */ + async apiResetFoodInheritanceRetrieve(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiResetFoodInheritanceRetrieveRaw(initOverrides); + } + + /** + */ + async apiShareLinkRetrieveRaw(requestParameters: ApiShareLinkRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiShareLinkRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/share-link/{id}`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiShareLinkRetrieve(requestParameters: ApiShareLinkRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiShareLinkRetrieveRaw(requestParameters, initOverrides); + } + + /** + */ + async apiShoppingListEntryBulkCreateRaw(requestParameters: ApiShoppingListEntryBulkCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['shoppingListEntryBulk'] == null) { + throw new runtime.RequiredError( + 'shoppingListEntryBulk', + 'Required parameter "shoppingListEntryBulk" was null or undefined when calling apiShoppingListEntryBulkCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/shopping-list-entry/bulk/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ShoppingListEntryBulkToJSON(requestParameters['shoppingListEntryBulk']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ShoppingListEntryBulkFromJSON(jsonValue)); + } + + /** + */ + async apiShoppingListEntryBulkCreate(requestParameters: ApiShoppingListEntryBulkCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiShoppingListEntryBulkCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiShoppingListEntryCreateRaw(requestParameters: ApiShoppingListEntryCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['shoppingListEntry'] == null) { + throw new runtime.RequiredError( + 'shoppingListEntry', + 'Required parameter "shoppingListEntry" was null or undefined when calling apiShoppingListEntryCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/shopping-list-entry/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ShoppingListEntryToJSON(requestParameters['shoppingListEntry']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ShoppingListEntryFromJSON(jsonValue)); + } + + /** + */ + async apiShoppingListEntryCreate(requestParameters: ApiShoppingListEntryCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiShoppingListEntryCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiShoppingListEntryDestroyRaw(requestParameters: ApiShoppingListEntryDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiShoppingListEntryDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/shopping-list-entry/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiShoppingListEntryDestroy(requestParameters: ApiShoppingListEntryDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiShoppingListEntryDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiShoppingListEntryListRaw(requestParameters: ApiShoppingListEntryListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + if (requestParameters['checked'] != null) { + queryParameters['checked'] = requestParameters['checked']; + } + + if (requestParameters['id'] != null) { + queryParameters['id'] = requestParameters['id']; + } + + if (requestParameters['supermarket'] != null) { + queryParameters['supermarket'] = requestParameters['supermarket']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/shopping-list-entry/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ShoppingListEntryFromJSON)); + } + + /** + */ + async apiShoppingListEntryList(requestParameters: ApiShoppingListEntryListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiShoppingListEntryListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiShoppingListEntryPartialUpdateRaw(requestParameters: ApiShoppingListEntryPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiShoppingListEntryPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/shopping-list-entry/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedShoppingListEntryToJSON(requestParameters['patchedShoppingListEntry']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ShoppingListEntryFromJSON(jsonValue)); + } + + /** + */ + async apiShoppingListEntryPartialUpdate(requestParameters: ApiShoppingListEntryPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiShoppingListEntryPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiShoppingListEntryRetrieveRaw(requestParameters: ApiShoppingListEntryRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiShoppingListEntryRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/shopping-list-entry/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ShoppingListEntryFromJSON(jsonValue)); + } + + /** + */ + async apiShoppingListEntryRetrieve(requestParameters: ApiShoppingListEntryRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiShoppingListEntryRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiShoppingListEntryUpdateRaw(requestParameters: ApiShoppingListEntryUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiShoppingListEntryUpdate().' + ); + } + + if (requestParameters['shoppingListEntry'] == null) { + throw new runtime.RequiredError( + 'shoppingListEntry', + 'Required parameter "shoppingListEntry" was null or undefined when calling apiShoppingListEntryUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/shopping-list-entry/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: ShoppingListEntryToJSON(requestParameters['shoppingListEntry']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ShoppingListEntryFromJSON(jsonValue)); + } + + /** + */ + async apiShoppingListEntryUpdate(requestParameters: ApiShoppingListEntryUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiShoppingListEntryUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiShoppingListRecipeCreateRaw(requestParameters: ApiShoppingListRecipeCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['shoppingListRecipe'] == null) { + throw new runtime.RequiredError( + 'shoppingListRecipe', + 'Required parameter "shoppingListRecipe" was null or undefined when calling apiShoppingListRecipeCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/shopping-list-recipe/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ShoppingListRecipeToJSON(requestParameters['shoppingListRecipe']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ShoppingListRecipeFromJSON(jsonValue)); + } + + /** + */ + async apiShoppingListRecipeCreate(requestParameters: ApiShoppingListRecipeCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiShoppingListRecipeCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiShoppingListRecipeDestroyRaw(requestParameters: ApiShoppingListRecipeDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiShoppingListRecipeDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/shopping-list-recipe/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiShoppingListRecipeDestroy(requestParameters: ApiShoppingListRecipeDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiShoppingListRecipeDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiShoppingListRecipeListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/shopping-list-recipe/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ShoppingListRecipeFromJSON)); + } + + /** + */ + async apiShoppingListRecipeList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiShoppingListRecipeListRaw(initOverrides); + return await response.value(); + } + + /** + */ + async apiShoppingListRecipePartialUpdateRaw(requestParameters: ApiShoppingListRecipePartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiShoppingListRecipePartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/shopping-list-recipe/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedShoppingListRecipeToJSON(requestParameters['patchedShoppingListRecipe']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ShoppingListRecipeFromJSON(jsonValue)); + } + + /** + */ + async apiShoppingListRecipePartialUpdate(requestParameters: ApiShoppingListRecipePartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiShoppingListRecipePartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiShoppingListRecipeRetrieveRaw(requestParameters: ApiShoppingListRecipeRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiShoppingListRecipeRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/shopping-list-recipe/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ShoppingListRecipeFromJSON(jsonValue)); + } + + /** + */ + async apiShoppingListRecipeRetrieve(requestParameters: ApiShoppingListRecipeRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiShoppingListRecipeRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiShoppingListRecipeUpdateRaw(requestParameters: ApiShoppingListRecipeUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiShoppingListRecipeUpdate().' + ); + } + + if (requestParameters['shoppingListRecipe'] == null) { + throw new runtime.RequiredError( + 'shoppingListRecipe', + 'Required parameter "shoppingListRecipe" was null or undefined when calling apiShoppingListRecipeUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/shopping-list-recipe/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: ShoppingListRecipeToJSON(requestParameters['shoppingListRecipe']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ShoppingListRecipeFromJSON(jsonValue)); + } + + /** + */ + async apiShoppingListRecipeUpdate(requestParameters: ApiShoppingListRecipeUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiShoppingListRecipeUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSpaceListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/space/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(SpaceFromJSON)); + } + + /** + */ + async apiSpaceList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiSpaceListRaw(initOverrides); + return await response.value(); + } + + /** + */ + async apiSpacePartialUpdateRaw(requestParameters: ApiSpacePartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiSpacePartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/space/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedSpaceToJSON(requestParameters['patchedSpace']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SpaceFromJSON(jsonValue)); + } + + /** + */ + async apiSpacePartialUpdate(requestParameters: ApiSpacePartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSpacePartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSpaceRetrieveRaw(requestParameters: ApiSpaceRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiSpaceRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/space/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SpaceFromJSON(jsonValue)); + } + + /** + */ + async apiSpaceRetrieve(requestParameters: ApiSpaceRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSpaceRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiStepCreateRaw(requestParameters: ApiStepCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['step'] == null) { + throw new runtime.RequiredError( + 'step', + 'Required parameter "step" was null or undefined when calling apiStepCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/step/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: StepToJSON(requestParameters['step']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => StepFromJSON(jsonValue)); + } + + /** + */ + async apiStepCreate(requestParameters: ApiStepCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiStepCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiStepDestroyRaw(requestParameters: ApiStepDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiStepDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/step/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiStepDestroy(requestParameters: ApiStepDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiStepDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiStepListRaw(requestParameters: ApiStepListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + if (requestParameters['pageSize'] != null) { + queryParameters['page_size'] = requestParameters['pageSize']; + } + + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + + if (requestParameters['recipe'] != null) { + queryParameters['recipe'] = requestParameters['recipe']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/step/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedStepListFromJSON(jsonValue)); + } + + /** + */ + async apiStepList(requestParameters: ApiStepListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiStepListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiStepPartialUpdateRaw(requestParameters: ApiStepPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiStepPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/step/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedStepToJSON(requestParameters['patchedStep']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => StepFromJSON(jsonValue)); + } + + /** + */ + async apiStepPartialUpdate(requestParameters: ApiStepPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiStepPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiStepRetrieveRaw(requestParameters: ApiStepRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiStepRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/step/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => StepFromJSON(jsonValue)); + } + + /** + */ + async apiStepRetrieve(requestParameters: ApiStepRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiStepRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiStepUpdateRaw(requestParameters: ApiStepUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiStepUpdate().' + ); + } + + if (requestParameters['step'] == null) { + throw new runtime.RequiredError( + 'step', + 'Required parameter "step" was null or undefined when calling apiStepUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/step/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: StepToJSON(requestParameters['step']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => StepFromJSON(jsonValue)); + } + + /** + */ + async apiStepUpdate(requestParameters: ApiStepUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiStepUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiStorageCreateRaw(requestParameters: ApiStorageCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['storage'] == null) { + throw new runtime.RequiredError( + 'storage', + 'Required parameter "storage" was null or undefined when calling apiStorageCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/storage/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: StorageToJSON(requestParameters['storage']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => StorageFromJSON(jsonValue)); + } + + /** + */ + async apiStorageCreate(requestParameters: ApiStorageCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiStorageCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiStorageDestroyRaw(requestParameters: ApiStorageDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiStorageDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/storage/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiStorageDestroy(requestParameters: ApiStorageDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiStorageDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiStorageListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/storage/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(StorageFromJSON)); + } + + /** + */ + async apiStorageList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiStorageListRaw(initOverrides); + return await response.value(); + } + + /** + */ + async apiStoragePartialUpdateRaw(requestParameters: ApiStoragePartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiStoragePartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/storage/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedStorageToJSON(requestParameters['patchedStorage']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => StorageFromJSON(jsonValue)); + } + + /** + */ + async apiStoragePartialUpdate(requestParameters: ApiStoragePartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiStoragePartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiStorageRetrieveRaw(requestParameters: ApiStorageRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiStorageRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/storage/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => StorageFromJSON(jsonValue)); + } + + /** + */ + async apiStorageRetrieve(requestParameters: ApiStorageRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiStorageRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiStorageUpdateRaw(requestParameters: ApiStorageUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiStorageUpdate().' + ); + } + + if (requestParameters['storage'] == null) { + throw new runtime.RequiredError( + 'storage', + 'Required parameter "storage" was null or undefined when calling apiStorageUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/storage/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: StorageToJSON(requestParameters['storage']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => StorageFromJSON(jsonValue)); + } + + /** + */ + async apiStorageUpdate(requestParameters: ApiStorageUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiStorageUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSupermarketCategoryCreateRaw(requestParameters: ApiSupermarketCategoryCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['supermarketCategory'] == null) { + throw new runtime.RequiredError( + 'supermarketCategory', + 'Required parameter "supermarketCategory" was null or undefined when calling apiSupermarketCategoryCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/supermarket-category/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: SupermarketCategoryToJSON(requestParameters['supermarketCategory']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SupermarketCategoryFromJSON(jsonValue)); + } + + /** + */ + async apiSupermarketCategoryCreate(requestParameters: ApiSupermarketCategoryCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSupermarketCategoryCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSupermarketCategoryDestroyRaw(requestParameters: ApiSupermarketCategoryDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiSupermarketCategoryDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/supermarket-category/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiSupermarketCategoryDestroy(requestParameters: ApiSupermarketCategoryDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiSupermarketCategoryDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiSupermarketCategoryListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/supermarket-category/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(SupermarketCategoryFromJSON)); + } + + /** + */ + async apiSupermarketCategoryList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiSupermarketCategoryListRaw(initOverrides); + return await response.value(); + } + + /** + */ + async apiSupermarketCategoryMergeUpdateRaw(requestParameters: ApiSupermarketCategoryMergeUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiSupermarketCategoryMergeUpdate().' + ); + } + + if (requestParameters['target'] == null) { + throw new runtime.RequiredError( + 'target', + 'Required parameter "target" was null or undefined when calling apiSupermarketCategoryMergeUpdate().' + ); + } + + if (requestParameters['supermarketCategory'] == null) { + throw new runtime.RequiredError( + 'supermarketCategory', + 'Required parameter "supermarketCategory" was null or undefined when calling apiSupermarketCategoryMergeUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/supermarket-category/{id}/merge/{target}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))).replace(`{${"target"}}`, encodeURIComponent(String(requestParameters['target']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: SupermarketCategoryToJSON(requestParameters['supermarketCategory']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SupermarketCategoryFromJSON(jsonValue)); + } + + /** + */ + async apiSupermarketCategoryMergeUpdate(requestParameters: ApiSupermarketCategoryMergeUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSupermarketCategoryMergeUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSupermarketCategoryPartialUpdateRaw(requestParameters: ApiSupermarketCategoryPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiSupermarketCategoryPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/supermarket-category/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedSupermarketCategoryToJSON(requestParameters['patchedSupermarketCategory']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SupermarketCategoryFromJSON(jsonValue)); + } + + /** + */ + async apiSupermarketCategoryPartialUpdate(requestParameters: ApiSupermarketCategoryPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSupermarketCategoryPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSupermarketCategoryRelationCreateRaw(requestParameters: ApiSupermarketCategoryRelationCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['supermarketCategoryRelation'] == null) { + throw new runtime.RequiredError( + 'supermarketCategoryRelation', + 'Required parameter "supermarketCategoryRelation" was null or undefined when calling apiSupermarketCategoryRelationCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/supermarket-category-relation/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: SupermarketCategoryRelationToJSON(requestParameters['supermarketCategoryRelation']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SupermarketCategoryRelationFromJSON(jsonValue)); + } + + /** + */ + async apiSupermarketCategoryRelationCreate(requestParameters: ApiSupermarketCategoryRelationCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSupermarketCategoryRelationCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSupermarketCategoryRelationDestroyRaw(requestParameters: ApiSupermarketCategoryRelationDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiSupermarketCategoryRelationDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/supermarket-category-relation/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiSupermarketCategoryRelationDestroy(requestParameters: ApiSupermarketCategoryRelationDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiSupermarketCategoryRelationDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiSupermarketCategoryRelationListRaw(requestParameters: ApiSupermarketCategoryRelationListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['limit'] != null) { + queryParameters['limit'] = requestParameters['limit']; + } + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + if (requestParameters['pageSize'] != null) { + queryParameters['page_size'] = requestParameters['pageSize']; + } + + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + + if (requestParameters['random'] != null) { + queryParameters['random'] = requestParameters['random']; + } + + if (requestParameters['updatedAt'] != null) { + queryParameters['updated_at'] = requestParameters['updatedAt']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/supermarket-category-relation/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedSupermarketCategoryRelationListFromJSON(jsonValue)); + } + + /** + */ + async apiSupermarketCategoryRelationList(requestParameters: ApiSupermarketCategoryRelationListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSupermarketCategoryRelationListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSupermarketCategoryRelationPartialUpdateRaw(requestParameters: ApiSupermarketCategoryRelationPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiSupermarketCategoryRelationPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/supermarket-category-relation/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedSupermarketCategoryRelationToJSON(requestParameters['patchedSupermarketCategoryRelation']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SupermarketCategoryRelationFromJSON(jsonValue)); + } + + /** + */ + async apiSupermarketCategoryRelationPartialUpdate(requestParameters: ApiSupermarketCategoryRelationPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSupermarketCategoryRelationPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSupermarketCategoryRelationRetrieveRaw(requestParameters: ApiSupermarketCategoryRelationRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiSupermarketCategoryRelationRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/supermarket-category-relation/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SupermarketCategoryRelationFromJSON(jsonValue)); + } + + /** + */ + async apiSupermarketCategoryRelationRetrieve(requestParameters: ApiSupermarketCategoryRelationRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSupermarketCategoryRelationRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSupermarketCategoryRelationUpdateRaw(requestParameters: ApiSupermarketCategoryRelationUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiSupermarketCategoryRelationUpdate().' + ); + } + + if (requestParameters['supermarketCategoryRelation'] == null) { + throw new runtime.RequiredError( + 'supermarketCategoryRelation', + 'Required parameter "supermarketCategoryRelation" was null or undefined when calling apiSupermarketCategoryRelationUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/supermarket-category-relation/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: SupermarketCategoryRelationToJSON(requestParameters['supermarketCategoryRelation']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SupermarketCategoryRelationFromJSON(jsonValue)); + } + + /** + */ + async apiSupermarketCategoryRelationUpdate(requestParameters: ApiSupermarketCategoryRelationUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSupermarketCategoryRelationUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSupermarketCategoryRetrieveRaw(requestParameters: ApiSupermarketCategoryRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiSupermarketCategoryRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/supermarket-category/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SupermarketCategoryFromJSON(jsonValue)); + } + + /** + */ + async apiSupermarketCategoryRetrieve(requestParameters: ApiSupermarketCategoryRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSupermarketCategoryRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSupermarketCategoryUpdateRaw(requestParameters: ApiSupermarketCategoryUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiSupermarketCategoryUpdate().' + ); + } + + if (requestParameters['supermarketCategory'] == null) { + throw new runtime.RequiredError( + 'supermarketCategory', + 'Required parameter "supermarketCategory" was null or undefined when calling apiSupermarketCategoryUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/supermarket-category/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: SupermarketCategoryToJSON(requestParameters['supermarketCategory']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SupermarketCategoryFromJSON(jsonValue)); + } + + /** + */ + async apiSupermarketCategoryUpdate(requestParameters: ApiSupermarketCategoryUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSupermarketCategoryUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSupermarketCreateRaw(requestParameters: ApiSupermarketCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['supermarket'] == null) { + throw new runtime.RequiredError( + 'supermarket', + 'Required parameter "supermarket" was null or undefined when calling apiSupermarketCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/supermarket/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: SupermarketToJSON(requestParameters['supermarket']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SupermarketFromJSON(jsonValue)); + } + + /** + */ + async apiSupermarketCreate(requestParameters: ApiSupermarketCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSupermarketCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSupermarketDestroyRaw(requestParameters: ApiSupermarketDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiSupermarketDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/supermarket/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiSupermarketDestroy(requestParameters: ApiSupermarketDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiSupermarketDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiSupermarketListRaw(requestParameters: ApiSupermarketListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + if (requestParameters['limit'] != null) { + queryParameters['limit'] = requestParameters['limit']; + } + + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + + if (requestParameters['random'] != null) { + queryParameters['random'] = requestParameters['random']; + } + + if (requestParameters['updatedAt'] != null) { + queryParameters['updated_at'] = requestParameters['updatedAt']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/supermarket/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(SupermarketFromJSON)); + } + + /** + */ + async apiSupermarketList(requestParameters: ApiSupermarketListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiSupermarketListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSupermarketPartialUpdateRaw(requestParameters: ApiSupermarketPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiSupermarketPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/supermarket/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedSupermarketToJSON(requestParameters['patchedSupermarket']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SupermarketFromJSON(jsonValue)); + } + + /** + */ + async apiSupermarketPartialUpdate(requestParameters: ApiSupermarketPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSupermarketPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSupermarketRetrieveRaw(requestParameters: ApiSupermarketRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiSupermarketRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/supermarket/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SupermarketFromJSON(jsonValue)); + } + + /** + */ + async apiSupermarketRetrieve(requestParameters: ApiSupermarketRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSupermarketRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSupermarketUpdateRaw(requestParameters: ApiSupermarketUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiSupermarketUpdate().' + ); + } + + if (requestParameters['supermarket'] == null) { + throw new runtime.RequiredError( + 'supermarket', + 'Required parameter "supermarket" was null or undefined when calling apiSupermarketUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/supermarket/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: SupermarketToJSON(requestParameters['supermarket']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SupermarketFromJSON(jsonValue)); + } + + /** + */ + async apiSupermarketUpdate(requestParameters: ApiSupermarketUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSupermarketUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * api endpoint to switch space function + */ + async apiSwitchActiveSpaceRetrieveRaw(requestParameters: ApiSwitchActiveSpaceRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['spaceId'] == null) { + throw new runtime.RequiredError( + 'spaceId', + 'Required parameter "spaceId" was null or undefined when calling apiSwitchActiveSpaceRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/switch-active-space/{space_id}/`.replace(`{${"space_id"}}`, encodeURIComponent(String(requestParameters['spaceId']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * api endpoint to switch space function + */ + async apiSwitchActiveSpaceRetrieve(requestParameters: ApiSwitchActiveSpaceRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiSwitchActiveSpaceRetrieveRaw(requestParameters, initOverrides); + } + + /** + */ + async apiSyncCreateRaw(requestParameters: ApiSyncCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['sync'] == null) { + throw new runtime.RequiredError( + 'sync', + 'Required parameter "sync" was null or undefined when calling apiSyncCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/sync/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: SyncToJSON(requestParameters['sync']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SyncFromJSON(jsonValue)); + } + + /** + */ + async apiSyncCreate(requestParameters: ApiSyncCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSyncCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSyncDestroyRaw(requestParameters: ApiSyncDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiSyncDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/sync/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiSyncDestroy(requestParameters: ApiSyncDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiSyncDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiSyncListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/sync/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(SyncFromJSON)); + } + + /** + */ + async apiSyncList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiSyncListRaw(initOverrides); + return await response.value(); + } + + /** + */ + async apiSyncLogListRaw(requestParameters: ApiSyncLogListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + if (requestParameters['pageSize'] != null) { + queryParameters['page_size'] = requestParameters['pageSize']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/sync-log/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedSyncLogListFromJSON(jsonValue)); + } + + /** + */ + async apiSyncLogList(requestParameters: ApiSyncLogListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSyncLogListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSyncLogRetrieveRaw(requestParameters: ApiSyncLogRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiSyncLogRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/sync-log/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SyncLogFromJSON(jsonValue)); + } + + /** + */ + async apiSyncLogRetrieve(requestParameters: ApiSyncLogRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSyncLogRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSyncPartialUpdateRaw(requestParameters: ApiSyncPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiSyncPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/sync/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedSyncToJSON(requestParameters['patchedSync']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SyncFromJSON(jsonValue)); + } + + /** + */ + async apiSyncPartialUpdate(requestParameters: ApiSyncPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSyncPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSyncRetrieveRaw(requestParameters: ApiSyncRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiSyncRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/sync/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SyncFromJSON(jsonValue)); + } + + /** + */ + async apiSyncRetrieve(requestParameters: ApiSyncRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSyncRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiSyncUpdateRaw(requestParameters: ApiSyncUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiSyncUpdate().' + ); + } + + if (requestParameters['sync'] == null) { + throw new runtime.RequiredError( + 'sync', + 'Required parameter "sync" was null or undefined when calling apiSyncUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/sync/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: SyncToJSON(requestParameters['sync']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => SyncFromJSON(jsonValue)); + } + + /** + */ + async apiSyncUpdate(requestParameters: ApiSyncUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiSyncUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiUnitConversionCreateRaw(requestParameters: ApiUnitConversionCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['unitConversion'] == null) { + throw new runtime.RequiredError( + 'unitConversion', + 'Required parameter "unitConversion" was null or undefined when calling apiUnitConversionCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/unit-conversion/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: UnitConversionToJSON(requestParameters['unitConversion']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UnitConversionFromJSON(jsonValue)); + } + + /** + */ + async apiUnitConversionCreate(requestParameters: ApiUnitConversionCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiUnitConversionCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiUnitConversionDestroyRaw(requestParameters: ApiUnitConversionDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiUnitConversionDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/unit-conversion/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiUnitConversionDestroy(requestParameters: ApiUnitConversionDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiUnitConversionDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiUnitConversionListRaw(requestParameters: ApiUnitConversionListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + if (requestParameters['foodId'] != null) { + queryParameters['food_id'] = requestParameters['foodId']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/unit-conversion/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UnitConversionFromJSON)); + } + + /** + */ + async apiUnitConversionList(requestParameters: ApiUnitConversionListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiUnitConversionListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiUnitConversionPartialUpdateRaw(requestParameters: ApiUnitConversionPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiUnitConversionPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/unit-conversion/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedUnitConversionToJSON(requestParameters['patchedUnitConversion']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UnitConversionFromJSON(jsonValue)); + } + + /** + */ + async apiUnitConversionPartialUpdate(requestParameters: ApiUnitConversionPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiUnitConversionPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiUnitConversionRetrieveRaw(requestParameters: ApiUnitConversionRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiUnitConversionRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/unit-conversion/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UnitConversionFromJSON(jsonValue)); + } + + /** + */ + async apiUnitConversionRetrieve(requestParameters: ApiUnitConversionRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiUnitConversionRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiUnitConversionUpdateRaw(requestParameters: ApiUnitConversionUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiUnitConversionUpdate().' + ); + } + + if (requestParameters['unitConversion'] == null) { + throw new runtime.RequiredError( + 'unitConversion', + 'Required parameter "unitConversion" was null or undefined when calling apiUnitConversionUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/unit-conversion/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: UnitConversionToJSON(requestParameters['unitConversion']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UnitConversionFromJSON(jsonValue)); + } + + /** + */ + async apiUnitConversionUpdate(requestParameters: ApiUnitConversionUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiUnitConversionUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiUnitCreateRaw(requestParameters: ApiUnitCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['unit'] == null) { + throw new runtime.RequiredError( + 'unit', + 'Required parameter "unit" was null or undefined when calling apiUnitCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/unit/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: UnitToJSON(requestParameters['unit']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UnitFromJSON(jsonValue)); + } + + /** + */ + async apiUnitCreate(requestParameters: ApiUnitCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiUnitCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiUnitDestroyRaw(requestParameters: ApiUnitDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiUnitDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/unit/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiUnitDestroy(requestParameters: ApiUnitDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiUnitDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiUnitListRaw(requestParameters: ApiUnitListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['limit'] != null) { + queryParameters['limit'] = requestParameters['limit']; + } + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + if (requestParameters['pageSize'] != null) { + queryParameters['page_size'] = requestParameters['pageSize']; + } + + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + + if (requestParameters['random'] != null) { + queryParameters['random'] = requestParameters['random']; + } + + if (requestParameters['updatedAt'] != null) { + queryParameters['updated_at'] = requestParameters['updatedAt']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/unit/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedUnitListFromJSON(jsonValue)); + } + + /** + */ + async apiUnitList(requestParameters: ApiUnitListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiUnitListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiUnitMergeUpdateRaw(requestParameters: ApiUnitMergeUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiUnitMergeUpdate().' + ); + } + + if (requestParameters['target'] == null) { + throw new runtime.RequiredError( + 'target', + 'Required parameter "target" was null or undefined when calling apiUnitMergeUpdate().' + ); + } + + if (requestParameters['unit'] == null) { + throw new runtime.RequiredError( + 'unit', + 'Required parameter "unit" was null or undefined when calling apiUnitMergeUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/unit/{id}/merge/{target}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))).replace(`{${"target"}}`, encodeURIComponent(String(requestParameters['target']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: UnitToJSON(requestParameters['unit']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UnitFromJSON(jsonValue)); + } + + /** + */ + async apiUnitMergeUpdate(requestParameters: ApiUnitMergeUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiUnitMergeUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiUnitPartialUpdateRaw(requestParameters: ApiUnitPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiUnitPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/unit/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedUnitToJSON(requestParameters['patchedUnit']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UnitFromJSON(jsonValue)); + } + + /** + */ + async apiUnitPartialUpdate(requestParameters: ApiUnitPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiUnitPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiUnitRetrieveRaw(requestParameters: ApiUnitRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiUnitRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/unit/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UnitFromJSON(jsonValue)); + } + + /** + */ + async apiUnitRetrieve(requestParameters: ApiUnitRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiUnitRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiUnitUpdateRaw(requestParameters: ApiUnitUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiUnitUpdate().' + ); + } + + if (requestParameters['unit'] == null) { + throw new runtime.RequiredError( + 'unit', + 'Required parameter "unit" was null or undefined when calling apiUnitUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/unit/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: UnitToJSON(requestParameters['unit']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UnitFromJSON(jsonValue)); + } + + /** + */ + async apiUnitUpdate(requestParameters: ApiUnitUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiUnitUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiUserFileCreateRaw(requestParameters: ApiUserFileCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiUserFileCreate().' + ); + } + + if (requestParameters['name'] == null) { + throw new runtime.RequiredError( + 'name', + 'Required parameter "name" was null or undefined when calling apiUserFileCreate().' + ); + } + + if (requestParameters['file'] == null) { + throw new runtime.RequiredError( + 'file', + 'Required parameter "file" was null or undefined when calling apiUserFileCreate().' + ); + } + + if (requestParameters['fileDownload'] == null) { + throw new runtime.RequiredError( + 'fileDownload', + 'Required parameter "fileDownload" was null or undefined when calling apiUserFileCreate().' + ); + } + + if (requestParameters['preview'] == null) { + throw new runtime.RequiredError( + 'preview', + 'Required parameter "preview" was null or undefined when calling apiUserFileCreate().' + ); + } + + if (requestParameters['fileSizeKb'] == null) { + throw new runtime.RequiredError( + 'fileSizeKb', + 'Required parameter "fileSizeKb" was null or undefined when calling apiUserFileCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const consumes: runtime.Consume[] = [ + { contentType: 'multipart/form-data' }, + ]; + // @ts-ignore: canConsumeForm may be unused + const canConsumeForm = runtime.canConsumeForm(consumes); + + let formParams: { append(param: string, value: any): any }; + let useForm = false; + if (useForm) { + formParams = new FormData(); + } else { + formParams = new URLSearchParams(); + } + + if (requestParameters['id'] != null) { + formParams.append('id', requestParameters['id'] as any); + } + + if (requestParameters['name'] != null) { + formParams.append('name', requestParameters['name'] as any); + } + + if (requestParameters['file'] != null) { + formParams.append('file', requestParameters['file'] as any); + } + + if (requestParameters['fileDownload'] != null) { + formParams.append('file_download', requestParameters['fileDownload'] as any); + } + + if (requestParameters['preview'] != null) { + formParams.append('preview', requestParameters['preview'] as any); + } + + if (requestParameters['fileSizeKb'] != null) { + formParams.append('file_size_kb', requestParameters['fileSizeKb'] as any); + } + + const response = await this.request({ + path: `/api/user-file/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: formParams, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UserFileFromJSON(jsonValue)); + } + + /** + */ + async apiUserFileCreate(requestParameters: ApiUserFileCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiUserFileCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiUserFileDestroyRaw(requestParameters: ApiUserFileDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiUserFileDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/user-file/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiUserFileDestroy(requestParameters: ApiUserFileDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiUserFileDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiUserFileListRaw(requestParameters: ApiUserFileListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + if (requestParameters['limit'] != null) { + queryParameters['limit'] = requestParameters['limit']; + } + + if (requestParameters['query'] != null) { + queryParameters['query'] = requestParameters['query']; + } + + if (requestParameters['random'] != null) { + queryParameters['random'] = requestParameters['random']; + } + + if (requestParameters['updatedAt'] != null) { + queryParameters['updated_at'] = requestParameters['updatedAt']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/user-file/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UserFileFromJSON)); + } + + /** + */ + async apiUserFileList(requestParameters: ApiUserFileListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiUserFileListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiUserFilePartialUpdateRaw(requestParameters: ApiUserFilePartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiUserFilePartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const consumes: runtime.Consume[] = [ + { contentType: 'multipart/form-data' }, + ]; + // @ts-ignore: canConsumeForm may be unused + const canConsumeForm = runtime.canConsumeForm(consumes); + + let formParams: { append(param: string, value: any): any }; + let useForm = false; + if (useForm) { + formParams = new FormData(); + } else { + formParams = new URLSearchParams(); + } + + if (requestParameters['id2'] != null) { + formParams.append('id', requestParameters['id2'] as any); + } + + if (requestParameters['name'] != null) { + formParams.append('name', requestParameters['name'] as any); + } + + if (requestParameters['file'] != null) { + formParams.append('file', requestParameters['file'] as any); + } + + if (requestParameters['fileDownload'] != null) { + formParams.append('file_download', requestParameters['fileDownload'] as any); + } + + if (requestParameters['preview'] != null) { + formParams.append('preview', requestParameters['preview'] as any); + } + + if (requestParameters['fileSizeKb'] != null) { + formParams.append('file_size_kb', requestParameters['fileSizeKb'] as any); + } + + const response = await this.request({ + path: `/api/user-file/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: formParams, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UserFileFromJSON(jsonValue)); + } + + /** + */ + async apiUserFilePartialUpdate(requestParameters: ApiUserFilePartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiUserFilePartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiUserFileRetrieveRaw(requestParameters: ApiUserFileRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiUserFileRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/user-file/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UserFileFromJSON(jsonValue)); + } + + /** + */ + async apiUserFileRetrieve(requestParameters: ApiUserFileRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiUserFileRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiUserFileUpdateRaw(requestParameters: ApiUserFileUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiUserFileUpdate().' + ); + } + + if (requestParameters['id2'] == null) { + throw new runtime.RequiredError( + 'id2', + 'Required parameter "id2" was null or undefined when calling apiUserFileUpdate().' + ); + } + + if (requestParameters['name'] == null) { + throw new runtime.RequiredError( + 'name', + 'Required parameter "name" was null or undefined when calling apiUserFileUpdate().' + ); + } + + if (requestParameters['file'] == null) { + throw new runtime.RequiredError( + 'file', + 'Required parameter "file" was null or undefined when calling apiUserFileUpdate().' + ); + } + + if (requestParameters['fileDownload'] == null) { + throw new runtime.RequiredError( + 'fileDownload', + 'Required parameter "fileDownload" was null or undefined when calling apiUserFileUpdate().' + ); + } + + if (requestParameters['preview'] == null) { + throw new runtime.RequiredError( + 'preview', + 'Required parameter "preview" was null or undefined when calling apiUserFileUpdate().' + ); + } + + if (requestParameters['fileSizeKb'] == null) { + throw new runtime.RequiredError( + 'fileSizeKb', + 'Required parameter "fileSizeKb" was null or undefined when calling apiUserFileUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const consumes: runtime.Consume[] = [ + { contentType: 'multipart/form-data' }, + ]; + // @ts-ignore: canConsumeForm may be unused + const canConsumeForm = runtime.canConsumeForm(consumes); + + let formParams: { append(param: string, value: any): any }; + let useForm = false; + if (useForm) { + formParams = new FormData(); + } else { + formParams = new URLSearchParams(); + } + + if (requestParameters['id2'] != null) { + formParams.append('id', requestParameters['id2'] as any); + } + + if (requestParameters['name'] != null) { + formParams.append('name', requestParameters['name'] as any); + } + + if (requestParameters['file'] != null) { + formParams.append('file', requestParameters['file'] as any); + } + + if (requestParameters['fileDownload'] != null) { + formParams.append('file_download', requestParameters['fileDownload'] as any); + } + + if (requestParameters['preview'] != null) { + formParams.append('preview', requestParameters['preview'] as any); + } + + if (requestParameters['fileSizeKb'] != null) { + formParams.append('file_size_kb', requestParameters['fileSizeKb'] as any); + } + + const response = await this.request({ + path: `/api/user-file/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: formParams, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UserFileFromJSON(jsonValue)); + } + + /** + */ + async apiUserFileUpdate(requestParameters: ApiUserFileUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiUserFileUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * list: optional parameters - **filter_list**: array of user id\'s to get names for + */ + async apiUserListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/user/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UserFromJSON)); + } + + /** + * list: optional parameters - **filter_list**: array of user id\'s to get names for + */ + async apiUserList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiUserListRaw(initOverrides); + return await response.value(); + } + + /** + * list: optional parameters - **filter_list**: array of user id\'s to get names for + */ + async apiUserPartialUpdateRaw(requestParameters: ApiUserPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiUserPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/user/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedUserToJSON(requestParameters['patchedUser']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UserFromJSON(jsonValue)); + } + + /** + * list: optional parameters - **filter_list**: array of user id\'s to get names for + */ + async apiUserPartialUpdate(requestParameters: ApiUserPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiUserPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiUserPreferenceListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/user-preference/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(UserPreferenceFromJSON)); + } + + /** + */ + async apiUserPreferenceList(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.apiUserPreferenceListRaw(initOverrides); + return await response.value(); + } + + /** + */ + async apiUserPreferencePartialUpdateRaw(requestParameters: ApiUserPreferencePartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['user'] == null) { + throw new runtime.RequiredError( + 'user', + 'Required parameter "user" was null or undefined when calling apiUserPreferencePartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/user-preference/{user}/`.replace(`{${"user"}}`, encodeURIComponent(String(requestParameters['user']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedUserPreferenceToJSON(requestParameters['patchedUserPreference']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UserPreferenceFromJSON(jsonValue)); + } + + /** + */ + async apiUserPreferencePartialUpdate(requestParameters: ApiUserPreferencePartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiUserPreferencePartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiUserPreferenceRetrieveRaw(requestParameters: ApiUserPreferenceRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['user'] == null) { + throw new runtime.RequiredError( + 'user', + 'Required parameter "user" was null or undefined when calling apiUserPreferenceRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/user-preference/{user}/`.replace(`{${"user"}}`, encodeURIComponent(String(requestParameters['user']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UserPreferenceFromJSON(jsonValue)); + } + + /** + */ + async apiUserPreferenceRetrieve(requestParameters: ApiUserPreferenceRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiUserPreferenceRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * list: optional parameters - **filter_list**: array of user id\'s to get names for + */ + async apiUserRetrieveRaw(requestParameters: ApiUserRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiUserRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/user/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UserFromJSON(jsonValue)); + } + + /** + * list: optional parameters - **filter_list**: array of user id\'s to get names for + */ + async apiUserRetrieve(requestParameters: ApiUserRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiUserRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiUserSpaceDestroyRaw(requestParameters: ApiUserSpaceDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiUserSpaceDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/user-space/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiUserSpaceDestroy(requestParameters: ApiUserSpaceDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiUserSpaceDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiUserSpaceListRaw(requestParameters: ApiUserSpaceListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + if (requestParameters['pageSize'] != null) { + queryParameters['page_size'] = requestParameters['pageSize']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/user-space/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedUserSpaceListFromJSON(jsonValue)); + } + + /** + */ + async apiUserSpaceList(requestParameters: ApiUserSpaceListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiUserSpaceListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiUserSpacePartialUpdateRaw(requestParameters: ApiUserSpacePartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiUserSpacePartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/user-space/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedUserSpaceToJSON(requestParameters['patchedUserSpace']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UserSpaceFromJSON(jsonValue)); + } + + /** + */ + async apiUserSpacePartialUpdate(requestParameters: ApiUserSpacePartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiUserSpacePartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiUserSpaceRetrieveRaw(requestParameters: ApiUserSpaceRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiUserSpaceRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/user-space/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UserSpaceFromJSON(jsonValue)); + } + + /** + */ + async apiUserSpaceRetrieve(requestParameters: ApiUserSpaceRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiUserSpaceRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiViewLogCreateRaw(requestParameters: ApiViewLogCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['viewLog'] == null) { + throw new runtime.RequiredError( + 'viewLog', + 'Required parameter "viewLog" was null or undefined when calling apiViewLogCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/view-log/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ViewLogToJSON(requestParameters['viewLog']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ViewLogFromJSON(jsonValue)); + } + + /** + */ + async apiViewLogCreate(requestParameters: ApiViewLogCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiViewLogCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiViewLogDestroyRaw(requestParameters: ApiViewLogDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiViewLogDestroy().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/view-log/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiViewLogDestroy(requestParameters: ApiViewLogDestroyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiViewLogDestroyRaw(requestParameters, initOverrides); + } + + /** + */ + async apiViewLogListRaw(requestParameters: ApiViewLogListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters['page'] != null) { + queryParameters['page'] = requestParameters['page']; + } + + if (requestParameters['pageSize'] != null) { + queryParameters['page_size'] = requestParameters['pageSize']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/view-log/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedViewLogListFromJSON(jsonValue)); + } + + /** + */ + async apiViewLogList(requestParameters: ApiViewLogListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiViewLogListRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiViewLogPartialUpdateRaw(requestParameters: ApiViewLogPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiViewLogPartialUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/view-log/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PATCH', + headers: headerParameters, + query: queryParameters, + body: PatchedViewLogToJSON(requestParameters['patchedViewLog']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ViewLogFromJSON(jsonValue)); + } + + /** + */ + async apiViewLogPartialUpdate(requestParameters: ApiViewLogPartialUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiViewLogPartialUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiViewLogRetrieveRaw(requestParameters: ApiViewLogRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiViewLogRetrieve().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/view-log/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ViewLogFromJSON(jsonValue)); + } + + /** + */ + async apiViewLogRetrieve(requestParameters: ApiViewLogRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiViewLogRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + */ + async apiViewLogUpdateRaw(requestParameters: ApiViewLogUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['id'] == null) { + throw new runtime.RequiredError( + 'id', + 'Required parameter "id" was null or undefined when calling apiViewLogUpdate().' + ); + } + + if (requestParameters['viewLog'] == null) { + throw new runtime.RequiredError( + 'viewLog', + 'Required parameter "viewLog" was null or undefined when calling apiViewLogUpdate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api/view-log/{id}/`.replace(`{${"id"}}`, encodeURIComponent(String(requestParameters['id']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: ViewLogToJSON(requestParameters['viewLog']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ViewLogFromJSON(jsonValue)); + } + + /** + */ + async apiViewLogUpdate(requestParameters: ApiViewLogUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiViewLogUpdateRaw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/vue3/src/openapi/apis/ApiImportOpenDataApi.ts b/vue3/src/openapi/apis/ApiImportOpenDataApi.ts new file mode 100644 index 000000000..43ee38c81 --- /dev/null +++ b/vue3/src/openapi/apis/ApiImportOpenDataApi.ts @@ -0,0 +1,75 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; + +/** + * + */ +export class ApiImportOpenDataApi extends runtime.BaseAPI { + + /** + */ + async apiImportOpenDataCreateRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api-import-open-data/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiImportOpenDataCreate(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiImportOpenDataCreateRaw(initOverrides); + } + + /** + */ + async apiImportOpenDataRetrieveRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/api-import-open-data/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + */ + async apiImportOpenDataRetrieve(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.apiImportOpenDataRetrieveRaw(initOverrides); + } + +} diff --git a/vue3/src/openapi/apis/ApiTokenAuthApi.ts b/vue3/src/openapi/apis/ApiTokenAuthApi.ts new file mode 100644 index 000000000..44e13c62c --- /dev/null +++ b/vue3/src/openapi/apis/ApiTokenAuthApi.ts @@ -0,0 +1,113 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; +import type { + AuthToken, +} from '../models/index'; +import { + AuthTokenFromJSON, + AuthTokenToJSON, +} from '../models/index'; + +export interface ApiTokenAuthCreateRequest { + username: string; + password: string; + token: string; +} + +/** + * + */ +export class ApiTokenAuthApi extends runtime.BaseAPI { + + /** + */ + async apiTokenAuthCreateRaw(requestParameters: ApiTokenAuthCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['username'] == null) { + throw new runtime.RequiredError( + 'username', + 'Required parameter "username" was null or undefined when calling apiTokenAuthCreate().' + ); + } + + if (requestParameters['password'] == null) { + throw new runtime.RequiredError( + 'password', + 'Required parameter "password" was null or undefined when calling apiTokenAuthCreate().' + ); + } + + if (requestParameters['token'] == null) { + throw new runtime.RequiredError( + 'token', + 'Required parameter "token" was null or undefined when calling apiTokenAuthCreate().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const consumes: runtime.Consume[] = [ + { contentType: 'application/x-www-form-urlencoded' }, + { contentType: 'multipart/form-data' }, + { contentType: 'application/json' }, + ]; + // @ts-ignore: canConsumeForm may be unused + const canConsumeForm = runtime.canConsumeForm(consumes); + + let formParams: { append(param: string, value: any): any }; + let useForm = false; + if (useForm) { + formParams = new FormData(); + } else { + formParams = new URLSearchParams(); + } + + if (requestParameters['username'] != null) { + formParams.append('username', requestParameters['username'] as any); + } + + if (requestParameters['password'] != null) { + formParams.append('password', requestParameters['password'] as any); + } + + if (requestParameters['token'] != null) { + formParams.append('token', requestParameters['token'] as any); + } + + const response = await this.request({ + path: `/api-token-auth/`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: formParams, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => AuthTokenFromJSON(jsonValue)); + } + + /** + */ + async apiTokenAuthCreate(requestParameters: ApiTokenAuthCreateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.apiTokenAuthCreateRaw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/vue3/src/openapi/apis/OpenapiApi.ts b/vue3/src/openapi/apis/OpenapiApi.ts new file mode 100644 index 000000000..d63c5ea30 --- /dev/null +++ b/vue3/src/openapi/apis/OpenapiApi.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; + +export interface OpenapiRetrieveRequest { + format?: OpenapiRetrieveFormatEnum; + lang?: OpenapiRetrieveLangEnum; +} + +/** + * + */ +export class OpenapiApi extends runtime.BaseAPI { + + /** + * OpenApi3 schema for this API. Format can be selected via content negotiation. - YAML: application/vnd.oai.openapi - JSON: application/vnd.oai.openapi+json + */ + async openapiRetrieveRaw(requestParameters: OpenapiRetrieveRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + if (requestParameters.format !== undefined) { + queryParameters['format'] = requestParameters.format; + } + + if (requestParameters.lang !== undefined) { + queryParameters['lang'] = requestParameters.lang; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && (this.configuration.username !== undefined || this.configuration.password !== undefined)) { + headerParameters["Authorization"] = "Basic " + btoa(this.configuration.username + ":" + this.configuration.password); + } + const response = await this.request({ + path: `/openapi/`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * OpenApi3 schema for this API. Format can be selected via content negotiation. - YAML: application/vnd.oai.openapi - JSON: application/vnd.oai.openapi+json + */ + async openapiRetrieve(requestParameters: OpenapiRetrieveRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<{ [key: string]: any; }> { + const response = await this.openapiRetrieveRaw(requestParameters, initOverrides); + return await response.value(); + } + +} + +/** + * @export + */ +export const OpenapiRetrieveFormatEnum = { + Json: 'json', + Yaml: 'yaml' +} as const; +export type OpenapiRetrieveFormatEnum = typeof OpenapiRetrieveFormatEnum[keyof typeof OpenapiRetrieveFormatEnum]; +/** + * @export + */ +export const OpenapiRetrieveLangEnum = { + Bg: 'bg', + Ca: 'ca', + Cs: 'cs', + Da: 'da', + De: 'de', + En: 'en', + Es: 'es', + Fr: 'fr', + Hu: 'hu', + Hy: 'hy', + It: 'it', + Lv: 'lv', + Nb: 'nb', + Nl: 'nl', + Pl: 'pl', + Ru: 'ru', + Sv: 'sv' +} as const; +export type OpenapiRetrieveLangEnum = typeof OpenapiRetrieveLangEnum[keyof typeof OpenapiRetrieveLangEnum]; diff --git a/vue3/src/openapi/apis/index.ts b/vue3/src/openapi/apis/index.ts new file mode 100644 index 000000000..c0bfc0f51 --- /dev/null +++ b/vue3/src/openapi/apis/index.ts @@ -0,0 +1,5 @@ +/* tslint:disable */ +/* eslint-disable */ +export * from './ApiApi'; +export * from './ApiImportOpenDataApi'; +export * from './ApiTokenAuthApi'; diff --git a/vue3/src/openapi/index.ts b/vue3/src/openapi/index.ts new file mode 100644 index 000000000..bebe8bbbe --- /dev/null +++ b/vue3/src/openapi/index.ts @@ -0,0 +1,5 @@ +/* tslint:disable */ +/* eslint-disable */ +export * from './runtime'; +export * from './apis/index'; +export * from './models/index'; diff --git a/vue3/src/openapi/models/AccessToken.ts b/vue3/src/openapi/models/AccessToken.ts new file mode 100644 index 000000000..253cbf8be --- /dev/null +++ b/vue3/src/openapi/models/AccessToken.ts @@ -0,0 +1,101 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface AccessToken + */ +export interface AccessToken { + /** + * + * @type {number} + * @memberof AccessToken + */ + readonly id: number; + /** + * + * @type {string} + * @memberof AccessToken + */ + readonly token: string; + /** + * + * @type {Date} + * @memberof AccessToken + */ + expires: Date; + /** + * + * @type {string} + * @memberof AccessToken + */ + scope?: string; + /** + * + * @type {Date} + * @memberof AccessToken + */ + readonly created: Date; + /** + * + * @type {Date} + * @memberof AccessToken + */ + readonly updated: Date; +} + +/** + * Check if a given object implements the AccessToken interface. + */ +export function instanceOfAccessToken(value: object): boolean { + if (!('id' in value)) return false; + if (!('token' in value)) return false; + if (!('expires' in value)) return false; + if (!('created' in value)) return false; + if (!('updated' in value)) return false; + return true; +} + +export function AccessTokenFromJSON(json: any): AccessToken { + return AccessTokenFromJSONTyped(json, false); +} + +export function AccessTokenFromJSONTyped(json: any, ignoreDiscriminator: boolean): AccessToken { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'token': json['token'], + 'expires': (new Date(json['expires'])), + 'scope': json['scope'] == null ? undefined : json['scope'], + 'created': (new Date(json['created'])), + 'updated': (new Date(json['updated'])), + }; +} + +export function AccessTokenToJSON(value?: AccessToken | null): any { + if (value == null) { + return value; + } + return { + + 'expires': ((value['expires']).toISOString()), + 'scope': value['scope'], + }; +} + diff --git a/vue3/src/openapi/models/AuthToken.ts b/vue3/src/openapi/models/AuthToken.ts new file mode 100644 index 000000000..59fad29b9 --- /dev/null +++ b/vue3/src/openapi/models/AuthToken.ts @@ -0,0 +1,78 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface AuthToken + */ +export interface AuthToken { + /** + * + * @type {string} + * @memberof AuthToken + */ + username: string; + /** + * + * @type {string} + * @memberof AuthToken + */ + password: string; + /** + * + * @type {string} + * @memberof AuthToken + */ + readonly token: string; +} + +/** + * Check if a given object implements the AuthToken interface. + */ +export function instanceOfAuthToken(value: object): boolean { + if (!('username' in value)) return false; + if (!('password' in value)) return false; + if (!('token' in value)) return false; + return true; +} + +export function AuthTokenFromJSON(json: any): AuthToken { + return AuthTokenFromJSONTyped(json, false); +} + +export function AuthTokenFromJSONTyped(json: any, ignoreDiscriminator: boolean): AuthToken { + if (json == null) { + return json; + } + return { + + 'username': json['username'], + 'password': json['password'], + 'token': json['token'], + }; +} + +export function AuthTokenToJSON(value?: AuthToken | null): any { + if (value == null) { + return value; + } + return { + + 'username': value['username'], + 'password': value['password'], + }; +} + diff --git a/vue3/src/openapi/models/Automation.ts b/vue3/src/openapi/models/Automation.ts new file mode 100644 index 000000000..f2513221f --- /dev/null +++ b/vue3/src/openapi/models/Automation.ts @@ -0,0 +1,140 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { AutomationTypeEnum } from './AutomationTypeEnum'; +import { + AutomationTypeEnumFromJSON, + AutomationTypeEnumFromJSONTyped, + AutomationTypeEnumToJSON, +} from './AutomationTypeEnum'; + +/** + * + * @export + * @interface Automation + */ +export interface Automation { + /** + * + * @type {number} + * @memberof Automation + */ + readonly id: number; + /** + * + * @type {AutomationTypeEnum} + * @memberof Automation + */ + type: AutomationTypeEnum; + /** + * + * @type {string} + * @memberof Automation + */ + name?: string; + /** + * + * @type {string} + * @memberof Automation + */ + description?: string; + /** + * + * @type {string} + * @memberof Automation + */ + param1?: string; + /** + * + * @type {string} + * @memberof Automation + */ + param2?: string; + /** + * + * @type {string} + * @memberof Automation + */ + param3?: string; + /** + * + * @type {number} + * @memberof Automation + */ + order?: number; + /** + * + * @type {boolean} + * @memberof Automation + */ + disabled?: boolean; + /** + * + * @type {number} + * @memberof Automation + */ + readonly createdBy: number; +} + +/** + * Check if a given object implements the Automation interface. + */ +export function instanceOfAutomation(value: object): boolean { + if (!('id' in value)) return false; + if (!('type' in value)) return false; + if (!('createdBy' in value)) return false; + return true; +} + +export function AutomationFromJSON(json: any): Automation { + return AutomationFromJSONTyped(json, false); +} + +export function AutomationFromJSONTyped(json: any, ignoreDiscriminator: boolean): Automation { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'type': AutomationTypeEnumFromJSON(json['type']), + 'name': json['name'] == null ? undefined : json['name'], + 'description': json['description'] == null ? undefined : json['description'], + 'param1': json['param_1'] == null ? undefined : json['param_1'], + 'param2': json['param_2'] == null ? undefined : json['param_2'], + 'param3': json['param_3'] == null ? undefined : json['param_3'], + 'order': json['order'] == null ? undefined : json['order'], + 'disabled': json['disabled'] == null ? undefined : json['disabled'], + 'createdBy': json['created_by'], + }; +} + +export function AutomationToJSON(value?: Automation | null): any { + if (value == null) { + return value; + } + return { + + 'type': AutomationTypeEnumToJSON(value['type']), + 'name': value['name'], + 'description': value['description'], + 'param_1': value['param1'], + 'param_2': value['param2'], + 'param_3': value['param3'], + 'order': value['order'], + 'disabled': value['disabled'], + }; +} + diff --git a/vue3/src/openapi/models/AutomationTypeEnum.ts b/vue3/src/openapi/models/AutomationTypeEnum.ts new file mode 100644 index 000000000..dd6233f2c --- /dev/null +++ b/vue3/src/openapi/models/AutomationTypeEnum.ts @@ -0,0 +1,55 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** + * * `FOOD_ALIAS` - Food Alias + * * `UNIT_ALIAS` - Unit Alias + * * `KEYWORD_ALIAS` - Keyword Alias + * * `DESCRIPTION_REPLACE` - Description Replace + * * `INSTRUCTION_REPLACE` - Instruction Replace + * * `NEVER_UNIT` - Never Unit + * * `TRANSPOSE_WORDS` - Transpose Words + * * `FOOD_REPLACE` - Food Replace + * * `UNIT_REPLACE` - Unit Replace + * * `NAME_REPLACE` - Name Replace + * @export + */ +export const AutomationTypeEnum = { + FoodAlias: 'FOOD_ALIAS', + UnitAlias: 'UNIT_ALIAS', + KeywordAlias: 'KEYWORD_ALIAS', + DescriptionReplace: 'DESCRIPTION_REPLACE', + InstructionReplace: 'INSTRUCTION_REPLACE', + NeverUnit: 'NEVER_UNIT', + TransposeWords: 'TRANSPOSE_WORDS', + FoodReplace: 'FOOD_REPLACE', + UnitReplace: 'UNIT_REPLACE', + NameReplace: 'NAME_REPLACE' +} as const; +export type AutomationTypeEnum = typeof AutomationTypeEnum[keyof typeof AutomationTypeEnum]; + + +export function AutomationTypeEnumFromJSON(json: any): AutomationTypeEnum { + return AutomationTypeEnumFromJSONTyped(json, false); +} + +export function AutomationTypeEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): AutomationTypeEnum { + return json as AutomationTypeEnum; +} + +export function AutomationTypeEnumToJSON(value?: AutomationTypeEnum | null): any { + return value as any; +} + diff --git a/vue3/src/openapi/models/BaseUnitEnum.ts b/vue3/src/openapi/models/BaseUnitEnum.ts new file mode 100644 index 000000000..a51ff4659 --- /dev/null +++ b/vue3/src/openapi/models/BaseUnitEnum.ts @@ -0,0 +1,69 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** + * * `G` - g + * * `KG` - kg + * * `ML` - ml + * * `L` - l + * * `OUNCE` - ounce + * * `POUND` - pound + * * `FLUID_OUNCE` - fluid_ounce + * * `TSP` - tsp + * * `TBSP` - tbsp + * * `CUP` - cup + * * `PINT` - pint + * * `QUART` - quart + * * `GALLON` - gallon + * * `IMPERIAL_FLUID_OUNCE` - imperial fluid ounce + * * `IMPERIAL_PINT` - imperial pint + * * `IMPERIAL_QUART` - imperial quart + * * `IMPERIAL_GALLON` - imperial gallon + * @export + */ +export const BaseUnitEnum = { + G: 'G', + Kg: 'KG', + Ml: 'ML', + L: 'L', + Ounce: 'OUNCE', + Pound: 'POUND', + FluidOunce: 'FLUID_OUNCE', + Tsp: 'TSP', + Tbsp: 'TBSP', + Cup: 'CUP', + Pint: 'PINT', + Quart: 'QUART', + Gallon: 'GALLON', + ImperialFluidOunce: 'IMPERIAL_FLUID_OUNCE', + ImperialPint: 'IMPERIAL_PINT', + ImperialQuart: 'IMPERIAL_QUART', + ImperialGallon: 'IMPERIAL_GALLON' +} as const; +export type BaseUnitEnum = typeof BaseUnitEnum[keyof typeof BaseUnitEnum]; + + +export function BaseUnitEnumFromJSON(json: any): BaseUnitEnum { + return BaseUnitEnumFromJSONTyped(json, false); +} + +export function BaseUnitEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): BaseUnitEnum { + return json as BaseUnitEnum; +} + +export function BaseUnitEnumToJSON(value?: BaseUnitEnum | null): any { + return value as any; +} + diff --git a/vue3/src/openapi/models/BlankEnum.ts b/vue3/src/openapi/models/BlankEnum.ts new file mode 100644 index 000000000..fc3ae8041 --- /dev/null +++ b/vue3/src/openapi/models/BlankEnum.ts @@ -0,0 +1,37 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** + * + * @export + */ +export const BlankEnum = { + Empty: '' +} as const; +export type BlankEnum = typeof BlankEnum[keyof typeof BlankEnum]; + + +export function BlankEnumFromJSON(json: any): BlankEnum { + return BlankEnumFromJSONTyped(json, false); +} + +export function BlankEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): BlankEnum { + return json as BlankEnum; +} + +export function BlankEnumToJSON(value?: BlankEnum | null): any { + return value as any; +} + diff --git a/vue3/src/openapi/models/BookmarkletImport.ts b/vue3/src/openapi/models/BookmarkletImport.ts new file mode 100644 index 000000000..c0e42fd61 --- /dev/null +++ b/vue3/src/openapi/models/BookmarkletImport.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface BookmarkletImport + */ +export interface BookmarkletImport { + /** + * + * @type {number} + * @memberof BookmarkletImport + */ + readonly id: number; + /** + * + * @type {string} + * @memberof BookmarkletImport + */ + url?: string; + /** + * + * @type {string} + * @memberof BookmarkletImport + */ + html: string; + /** + * + * @type {number} + * @memberof BookmarkletImport + */ + readonly createdBy: number; + /** + * + * @type {Date} + * @memberof BookmarkletImport + */ + readonly createdAt: Date; +} + +/** + * Check if a given object implements the BookmarkletImport interface. + */ +export function instanceOfBookmarkletImport(value: object): boolean { + if (!('id' in value)) return false; + if (!('html' in value)) return false; + if (!('createdBy' in value)) return false; + if (!('createdAt' in value)) return false; + return true; +} + +export function BookmarkletImportFromJSON(json: any): BookmarkletImport { + return BookmarkletImportFromJSONTyped(json, false); +} + +export function BookmarkletImportFromJSONTyped(json: any, ignoreDiscriminator: boolean): BookmarkletImport { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'url': json['url'] == null ? undefined : json['url'], + 'html': json['html'], + 'createdBy': json['created_by'], + 'createdAt': (new Date(json['created_at'])), + }; +} + +export function BookmarkletImportToJSON(value?: BookmarkletImport | null): any { + if (value == null) { + return value; + } + return { + + 'url': value['url'], + 'html': value['html'], + }; +} + diff --git a/vue3/src/openapi/models/BookmarkletImportList.ts b/vue3/src/openapi/models/BookmarkletImportList.ts new file mode 100644 index 000000000..3fa437510 --- /dev/null +++ b/vue3/src/openapi/models/BookmarkletImportList.ts @@ -0,0 +1,84 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface BookmarkletImportList + */ +export interface BookmarkletImportList { + /** + * + * @type {number} + * @memberof BookmarkletImportList + */ + readonly id: number; + /** + * + * @type {string} + * @memberof BookmarkletImportList + */ + url?: string; + /** + * + * @type {number} + * @memberof BookmarkletImportList + */ + readonly createdBy: number; + /** + * + * @type {Date} + * @memberof BookmarkletImportList + */ + readonly createdAt: Date; +} + +/** + * Check if a given object implements the BookmarkletImportList interface. + */ +export function instanceOfBookmarkletImportList(value: object): boolean { + if (!('id' in value)) return false; + if (!('createdBy' in value)) return false; + if (!('createdAt' in value)) return false; + return true; +} + +export function BookmarkletImportListFromJSON(json: any): BookmarkletImportList { + return BookmarkletImportListFromJSONTyped(json, false); +} + +export function BookmarkletImportListFromJSONTyped(json: any, ignoreDiscriminator: boolean): BookmarkletImportList { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'url': json['url'] == null ? undefined : json['url'], + 'createdBy': json['created_by'], + 'createdAt': (new Date(json['created_at'])), + }; +} + +export function BookmarkletImportListToJSON(value?: BookmarkletImportList | null): any { + if (value == null) { + return value; + } + return { + + 'url': value['url'], + }; +} + diff --git a/vue3/src/openapi/models/ConnectorConfigConfig.ts b/vue3/src/openapi/models/ConnectorConfigConfig.ts new file mode 100644 index 000000000..0f9ebe3dc --- /dev/null +++ b/vue3/src/openapi/models/ConnectorConfigConfig.ts @@ -0,0 +1,133 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ConnectorConfigConfig + */ +export interface ConnectorConfigConfig { + /** + * + * @type {number} + * @memberof ConnectorConfigConfig + */ + readonly id: number; + /** + * + * @type {string} + * @memberof ConnectorConfigConfig + */ + name: string; + /** + * + * @type {string} + * @memberof ConnectorConfigConfig + */ + url?: string; + /** + * + * @type {string} + * @memberof ConnectorConfigConfig + */ + token?: string; + /** + * + * @type {string} + * @memberof ConnectorConfigConfig + */ + todoEntity?: string; + /** + * Is Connector Enabled + * @type {boolean} + * @memberof ConnectorConfigConfig + */ + enabled?: boolean; + /** + * + * @type {boolean} + * @memberof ConnectorConfigConfig + */ + onShoppingListEntryCreatedEnabled?: boolean; + /** + * + * @type {boolean} + * @memberof ConnectorConfigConfig + */ + onShoppingListEntryUpdatedEnabled?: boolean; + /** + * + * @type {boolean} + * @memberof ConnectorConfigConfig + */ + onShoppingListEntryDeletedEnabled?: boolean; + /** + * + * @type {number} + * @memberof ConnectorConfigConfig + */ + readonly createdBy: number; +} + +/** + * Check if a given object implements the ConnectorConfigConfig interface. + */ +export function instanceOfConnectorConfigConfig(value: object): boolean { + if (!('id' in value)) return false; + if (!('name' in value)) return false; + if (!('createdBy' in value)) return false; + return true; +} + +export function ConnectorConfigConfigFromJSON(json: any): ConnectorConfigConfig { + return ConnectorConfigConfigFromJSONTyped(json, false); +} + +export function ConnectorConfigConfigFromJSONTyped(json: any, ignoreDiscriminator: boolean): ConnectorConfigConfig { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'], + 'url': json['url'] == null ? undefined : json['url'], + 'token': json['token'] == null ? undefined : json['token'], + 'todoEntity': json['todo_entity'] == null ? undefined : json['todo_entity'], + 'enabled': json['enabled'] == null ? undefined : json['enabled'], + 'onShoppingListEntryCreatedEnabled': json['on_shopping_list_entry_created_enabled'] == null ? undefined : json['on_shopping_list_entry_created_enabled'], + 'onShoppingListEntryUpdatedEnabled': json['on_shopping_list_entry_updated_enabled'] == null ? undefined : json['on_shopping_list_entry_updated_enabled'], + 'onShoppingListEntryDeletedEnabled': json['on_shopping_list_entry_deleted_enabled'] == null ? undefined : json['on_shopping_list_entry_deleted_enabled'], + 'createdBy': json['created_by'], + }; +} + +export function ConnectorConfigConfigToJSON(value?: ConnectorConfigConfig | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'url': value['url'], + 'token': value['token'], + 'todo_entity': value['todoEntity'], + 'enabled': value['enabled'], + 'on_shopping_list_entry_created_enabled': value['onShoppingListEntryCreatedEnabled'], + 'on_shopping_list_entry_updated_enabled': value['onShoppingListEntryUpdatedEnabled'], + 'on_shopping_list_entry_deleted_enabled': value['onShoppingListEntryDeletedEnabled'], + }; +} + diff --git a/vue3/src/openapi/models/CookLog.ts b/vue3/src/openapi/models/CookLog.ts new file mode 100644 index 000000000..10297e3db --- /dev/null +++ b/vue3/src/openapi/models/CookLog.ts @@ -0,0 +1,124 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { User } from './User'; +import { + UserFromJSON, + UserFromJSONTyped, + UserToJSON, +} from './User'; + +/** + * + * @export + * @interface CookLog + */ +export interface CookLog { + /** + * + * @type {number} + * @memberof CookLog + */ + readonly id: number; + /** + * + * @type {number} + * @memberof CookLog + */ + recipe: number; + /** + * + * @type {number} + * @memberof CookLog + */ + servings?: number; + /** + * + * @type {number} + * @memberof CookLog + */ + rating?: number; + /** + * + * @type {string} + * @memberof CookLog + */ + comment?: string; + /** + * + * @type {User} + * @memberof CookLog + */ + readonly createdBy: User; + /** + * + * @type {Date} + * @memberof CookLog + */ + createdAt?: Date; + /** + * + * @type {Date} + * @memberof CookLog + */ + readonly updatedAt: Date; +} + +/** + * Check if a given object implements the CookLog interface. + */ +export function instanceOfCookLog(value: object): boolean { + if (!('id' in value)) return false; + if (!('recipe' in value)) return false; + if (!('createdBy' in value)) return false; + if (!('updatedAt' in value)) return false; + return true; +} + +export function CookLogFromJSON(json: any): CookLog { + return CookLogFromJSONTyped(json, false); +} + +export function CookLogFromJSONTyped(json: any, ignoreDiscriminator: boolean): CookLog { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'recipe': json['recipe'], + 'servings': json['servings'] == null ? undefined : json['servings'], + 'rating': json['rating'] == null ? undefined : json['rating'], + 'comment': json['comment'] == null ? undefined : json['comment'], + 'createdBy': UserFromJSON(json['created_by']), + 'createdAt': json['created_at'] == null ? undefined : (new Date(json['created_at'])), + 'updatedAt': (new Date(json['updated_at'])), + }; +} + +export function CookLogToJSON(value?: CookLog | null): any { + if (value == null) { + return value; + } + return { + + 'recipe': value['recipe'], + 'servings': value['servings'], + 'rating': value['rating'], + 'comment': value['comment'], + 'created_at': value['createdAt'] == null ? undefined : ((value['createdAt']).toISOString()), + }; +} + diff --git a/vue3/src/openapi/models/CookLogCreatedBy.ts b/vue3/src/openapi/models/CookLogCreatedBy.ts new file mode 100644 index 000000000..a46621b8a --- /dev/null +++ b/vue3/src/openapi/models/CookLogCreatedBy.ts @@ -0,0 +1,94 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface CookLogCreatedBy + */ +export interface CookLogCreatedBy { + /** + * + * @type {number} + * @memberof CookLogCreatedBy + */ + readonly id?: number; + /** + * Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. + * @type {string} + * @memberof CookLogCreatedBy + */ + readonly username?: string; + /** + * + * @type {string} + * @memberof CookLogCreatedBy + */ + firstName?: string; + /** + * + * @type {string} + * @memberof CookLogCreatedBy + */ + lastName?: string; + /** + * + * @type {string} + * @memberof CookLogCreatedBy + */ + readonly displayName?: string; +} + +/** + * Check if a given object implements the CookLogCreatedBy interface. + */ +export function instanceOfCookLogCreatedBy(value: object): boolean { + let isInstance = true; + + return isInstance; +} + +export function CookLogCreatedByFromJSON(json: any): CookLogCreatedBy { + return CookLogCreatedByFromJSONTyped(json, false); +} + +export function CookLogCreatedByFromJSONTyped(json: any, ignoreDiscriminator: boolean): CookLogCreatedBy { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'username': !exists(json, 'username') ? undefined : json['username'], + 'firstName': !exists(json, 'first_name') ? undefined : json['first_name'], + 'lastName': !exists(json, 'last_name') ? undefined : json['last_name'], + 'displayName': !exists(json, 'display_name') ? undefined : json['display_name'], + }; +} + +export function CookLogCreatedByToJSON(value?: CookLogCreatedBy | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'first_name': value.firstName, + 'last_name': value.lastName, + }; +} + diff --git a/vue3/src/openapi/models/CustomFilter.ts b/vue3/src/openapi/models/CustomFilter.ts new file mode 100644 index 000000000..8e565b6c6 --- /dev/null +++ b/vue3/src/openapi/models/CustomFilter.ts @@ -0,0 +1,101 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { User } from './User'; +import { + UserFromJSON, + UserFromJSONTyped, + UserToJSON, +} from './User'; + +/** + * Adds nested create feature + * @export + * @interface CustomFilter + */ +export interface CustomFilter { + /** + * + * @type {number} + * @memberof CustomFilter + */ + readonly id: number; + /** + * + * @type {string} + * @memberof CustomFilter + */ + name: string; + /** + * + * @type {string} + * @memberof CustomFilter + */ + search: string; + /** + * + * @type {Array} + * @memberof CustomFilter + */ + shared?: Array; + /** + * + * @type {number} + * @memberof CustomFilter + */ + readonly createdBy: number; +} + +/** + * Check if a given object implements the CustomFilter interface. + */ +export function instanceOfCustomFilter(value: object): boolean { + if (!('id' in value)) return false; + if (!('name' in value)) return false; + if (!('search' in value)) return false; + if (!('createdBy' in value)) return false; + return true; +} + +export function CustomFilterFromJSON(json: any): CustomFilter { + return CustomFilterFromJSONTyped(json, false); +} + +export function CustomFilterFromJSONTyped(json: any, ignoreDiscriminator: boolean): CustomFilter { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'], + 'search': json['search'], + 'shared': json['shared'] == null ? undefined : ((json['shared'] as Array).map(UserFromJSON)), + 'createdBy': json['created_by'], + }; +} + +export function CustomFilterToJSON(value?: CustomFilter | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'search': value['search'], + 'shared': value['shared'] == null ? undefined : ((value['shared'] as Array).map(UserToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/CustomFilterSharedInner.ts b/vue3/src/openapi/models/CustomFilterSharedInner.ts new file mode 100644 index 000000000..136085e05 --- /dev/null +++ b/vue3/src/openapi/models/CustomFilterSharedInner.ts @@ -0,0 +1,94 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface CustomFilterSharedInner + */ +export interface CustomFilterSharedInner { + /** + * + * @type {number} + * @memberof CustomFilterSharedInner + */ + readonly id?: number; + /** + * Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. + * @type {string} + * @memberof CustomFilterSharedInner + */ + readonly username?: string; + /** + * + * @type {string} + * @memberof CustomFilterSharedInner + */ + firstName?: string; + /** + * + * @type {string} + * @memberof CustomFilterSharedInner + */ + lastName?: string; + /** + * + * @type {string} + * @memberof CustomFilterSharedInner + */ + readonly displayName?: string; +} + +/** + * Check if a given object implements the CustomFilterSharedInner interface. + */ +export function instanceOfCustomFilterSharedInner(value: object): boolean { + let isInstance = true; + + return isInstance; +} + +export function CustomFilterSharedInnerFromJSON(json: any): CustomFilterSharedInner { + return CustomFilterSharedInnerFromJSONTyped(json, false); +} + +export function CustomFilterSharedInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): CustomFilterSharedInner { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'username': !exists(json, 'username') ? undefined : json['username'], + 'firstName': !exists(json, 'first_name') ? undefined : json['first_name'], + 'lastName': !exists(json, 'last_name') ? undefined : json['last_name'], + 'displayName': !exists(json, 'display_name') ? undefined : json['display_name'], + }; +} + +export function CustomFilterSharedInnerToJSON(value?: CustomFilterSharedInner | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'first_name': value.firstName, + 'last_name': value.lastName, + }; +} + diff --git a/vue3/src/openapi/models/DefaultPageEnum.ts b/vue3/src/openapi/models/DefaultPageEnum.ts new file mode 100644 index 000000000..9aed6b3b0 --- /dev/null +++ b/vue3/src/openapi/models/DefaultPageEnum.ts @@ -0,0 +1,43 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** + * * `SEARCH` - Search + * * `PLAN` - Meal-Plan + * * `BOOKS` - Books + * * `SHOPPING` - Shopping + * @export + */ +export const DefaultPageEnum = { + Search: 'SEARCH', + Plan: 'PLAN', + Books: 'BOOKS', + Shopping: 'SHOPPING' +} as const; +export type DefaultPageEnum = typeof DefaultPageEnum[keyof typeof DefaultPageEnum]; + + +export function DefaultPageEnumFromJSON(json: any): DefaultPageEnum { + return DefaultPageEnumFromJSONTyped(json, false); +} + +export function DefaultPageEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): DefaultPageEnum { + return json as DefaultPageEnum; +} + +export function DefaultPageEnumToJSON(value?: DefaultPageEnum | null): any { + return value as any; +} + diff --git a/vue3/src/openapi/models/DeleteEnum.ts b/vue3/src/openapi/models/DeleteEnum.ts new file mode 100644 index 000000000..341ff1491 --- /dev/null +++ b/vue3/src/openapi/models/DeleteEnum.ts @@ -0,0 +1,37 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** + * * `true` - true + * @export + */ +export const DeleteEnum = { + True: 'true' +} as const; +export type DeleteEnum = typeof DeleteEnum[keyof typeof DeleteEnum]; + + +export function DeleteEnumFromJSON(json: any): DeleteEnum { + return DeleteEnumFromJSONTyped(json, false); +} + +export function DeleteEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): DeleteEnum { + return json as DeleteEnum; +} + +export function DeleteEnumToJSON(value?: DeleteEnum | null): any { + return value as any; +} + diff --git a/vue3/src/openapi/models/ExportLog.ts b/vue3/src/openapi/models/ExportLog.ts new file mode 100644 index 000000000..9e7ece359 --- /dev/null +++ b/vue3/src/openapi/models/ExportLog.ts @@ -0,0 +1,133 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ExportLog + */ +export interface ExportLog { + /** + * + * @type {number} + * @memberof ExportLog + */ + readonly id: number; + /** + * + * @type {string} + * @memberof ExportLog + */ + type: string; + /** + * + * @type {string} + * @memberof ExportLog + */ + msg?: string; + /** + * + * @type {boolean} + * @memberof ExportLog + */ + running?: boolean; + /** + * + * @type {number} + * @memberof ExportLog + */ + totalRecipes?: number; + /** + * + * @type {number} + * @memberof ExportLog + */ + exportedRecipes?: number; + /** + * + * @type {number} + * @memberof ExportLog + */ + cacheDuration?: number; + /** + * + * @type {boolean} + * @memberof ExportLog + */ + possiblyNotExpired?: boolean; + /** + * + * @type {number} + * @memberof ExportLog + */ + readonly createdBy: number; + /** + * + * @type {Date} + * @memberof ExportLog + */ + readonly createdAt: Date; +} + +/** + * Check if a given object implements the ExportLog interface. + */ +export function instanceOfExportLog(value: object): boolean { + if (!('id' in value)) return false; + if (!('type' in value)) return false; + if (!('createdBy' in value)) return false; + if (!('createdAt' in value)) return false; + return true; +} + +export function ExportLogFromJSON(json: any): ExportLog { + return ExportLogFromJSONTyped(json, false); +} + +export function ExportLogFromJSONTyped(json: any, ignoreDiscriminator: boolean): ExportLog { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'type': json['type'], + 'msg': json['msg'] == null ? undefined : json['msg'], + 'running': json['running'] == null ? undefined : json['running'], + 'totalRecipes': json['total_recipes'] == null ? undefined : json['total_recipes'], + 'exportedRecipes': json['exported_recipes'] == null ? undefined : json['exported_recipes'], + 'cacheDuration': json['cache_duration'] == null ? undefined : json['cache_duration'], + 'possiblyNotExpired': json['possibly_not_expired'] == null ? undefined : json['possibly_not_expired'], + 'createdBy': json['created_by'], + 'createdAt': (new Date(json['created_at'])), + }; +} + +export function ExportLogToJSON(value?: ExportLog | null): any { + if (value == null) { + return value; + } + return { + + 'type': value['type'], + 'msg': value['msg'], + 'running': value['running'], + 'total_recipes': value['totalRecipes'], + 'exported_recipes': value['exportedRecipes'], + 'cache_duration': value['cacheDuration'], + 'possibly_not_expired': value['possiblyNotExpired'], + }; +} + diff --git a/vue3/src/openapi/models/Food.ts b/vue3/src/openapi/models/Food.ts new file mode 100644 index 000000000..f6404b2e7 --- /dev/null +++ b/vue3/src/openapi/models/Food.ts @@ -0,0 +1,316 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { FoodInheritField } from './FoodInheritField'; +import { + FoodInheritFieldFromJSON, + FoodInheritFieldFromJSONTyped, + FoodInheritFieldToJSON, +} from './FoodInheritField'; +import type { FoodSimple } from './FoodSimple'; +import { + FoodSimpleFromJSON, + FoodSimpleFromJSONTyped, + FoodSimpleToJSON, +} from './FoodSimple'; +import type { Property } from './Property'; +import { + PropertyFromJSON, + PropertyFromJSONTyped, + PropertyToJSON, +} from './Property'; +import type { RecipeSimple } from './RecipeSimple'; +import { + RecipeSimpleFromJSON, + RecipeSimpleFromJSONTyped, + RecipeSimpleToJSON, +} from './RecipeSimple'; +import type { SupermarketCategory } from './SupermarketCategory'; +import { + SupermarketCategoryFromJSON, + SupermarketCategoryFromJSONTyped, + SupermarketCategoryToJSON, +} from './SupermarketCategory'; +import type { Unit } from './Unit'; +import { + UnitFromJSON, + UnitFromJSONTyped, + UnitToJSON, +} from './Unit'; + +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface Food + */ +export interface Food { + /** + * + * @type {number} + * @memberof Food + */ + readonly id: number; + /** + * + * @type {string} + * @memberof Food + */ + name: string; + /** + * + * @type {string} + * @memberof Food + */ + pluralName?: string; + /** + * + * @type {string} + * @memberof Food + */ + description?: string; + /** + * + * @type {string} + * @memberof Food + */ + readonly shopping: string; + /** + * + * @type {RecipeSimple} + * @memberof Food + */ + recipe?: RecipeSimple; + /** + * + * @type {string} + * @memberof Food + */ + url?: string; + /** + * + * @type {Array} + * @memberof Food + */ + properties?: Array; + /** + * + * @type {string} + * @memberof Food + */ + propertiesFoodAmount?: string; + /** + * + * @type {Unit} + * @memberof Food + */ + propertiesFoodUnit?: Unit; + /** + * + * @type {number} + * @memberof Food + */ + fdcId?: number; + /** + * + * @type {string} + * @memberof Food + */ + foodOnhand?: string; + /** + * + * @type {SupermarketCategory} + * @memberof Food + */ + supermarketCategory?: SupermarketCategory; + /** + * + * @type {string} + * @memberof Food + */ + readonly parent: string; + /** + * + * @type {number} + * @memberof Food + */ + readonly numchild: number; + /** + * + * @type {Array} + * @memberof Food + */ + inheritFields?: Array; + /** + * + * @type {string} + * @memberof Food + */ + readonly fullName: string; + /** + * + * @type {boolean} + * @memberof Food + */ + ignoreShopping?: boolean; + /** + * + * @type {Array} + * @memberof Food + */ + substitute?: Array; + /** + * + * @type {boolean} + * @memberof Food + */ + substituteSiblings?: boolean; + /** + * + * @type {boolean} + * @memberof Food + */ + substituteChildren?: boolean; + /** + * + * @type {string} + * @memberof Food + */ + readonly substituteOnhand: string; + /** + * + * @type {Array} + * @memberof Food + */ + childInheritFields?: Array; + /** + * + * @type {string} + * @memberof Food + */ + openDataSlug?: string; +} + +/** + * Check if a given object implements the Food interface. + */ +export function instanceOfFood(value: object): boolean { + if (!('id' in value)) return false; + if (!('name' in value)) return false; + if (!('shopping' in value)) return false; + if (!('parent' in value)) return false; + if (!('numchild' in value)) return false; + if (!('fullName' in value)) return false; + if (!('substituteOnhand' in value)) return false; + return true; +} + +export function FoodFromJSON(json: any): Food { + return FoodFromJSONTyped(json, false); +} + +export function FoodFromJSONTyped(json: any, ignoreDiscriminator: boolean): Food { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'], + 'pluralName': json['plural_name'] == null ? undefined : json['plural_name'], + 'description': json['description'] == null ? undefined : json['description'], + 'shopping': json['shopping'], + 'recipe': json['recipe'] == null ? undefined : RecipeSimpleFromJSON(json['recipe']), + 'url': json['url'] == null ? undefined : json['url'], + 'properties': json['properties'] == null ? undefined : ((json['properties'] as Array).map(PropertyFromJSON)), + 'propertiesFoodAmount': json['properties_food_amount'] == null ? undefined : json['properties_food_amount'], + 'propertiesFoodUnit': json['properties_food_unit'] == null ? undefined : UnitFromJSON(json['properties_food_unit']), + 'fdcId': json['fdc_id'] == null ? undefined : json['fdc_id'], + 'foodOnhand': json['food_onhand'] == null ? undefined : json['food_onhand'], + 'supermarketCategory': json['supermarket_category'] == null ? undefined : SupermarketCategoryFromJSON(json['supermarket_category']), + 'parent': json['parent'], + 'numchild': json['numchild'], + 'inheritFields': json['inherit_fields'] == null ? undefined : ((json['inherit_fields'] as Array).map(FoodInheritFieldFromJSON)), + 'fullName': json['full_name'], + 'ignoreShopping': json['ignore_shopping'] == null ? undefined : json['ignore_shopping'], + 'substitute': json['substitute'] == null ? undefined : ((json['substitute'] as Array).map(FoodSimpleFromJSON)), + 'substituteSiblings': json['substitute_siblings'] == null ? undefined : json['substitute_siblings'], + 'substituteChildren': json['substitute_children'] == null ? undefined : json['substitute_children'], + 'substituteOnhand': json['substitute_onhand'], + 'childInheritFields': json['child_inherit_fields'] == null ? undefined : ((json['child_inherit_fields'] as Array).map(FoodInheritFieldFromJSON)), + 'openDataSlug': json['open_data_slug'] == null ? undefined : json['open_data_slug'], + }; +} + +export function FoodToJSON(value?: Food | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'plural_name': value['pluralName'], + 'description': value['description'], + 'recipe': RecipeSimpleToJSON(value['recipe']), + 'url': value['url'], + 'properties': value['properties'] == null ? undefined : ((value['properties'] as Array).map(PropertyToJSON)), + 'properties_food_amount': value['propertiesFoodAmount'], + 'properties_food_unit': UnitToJSON(value['propertiesFoodUnit']), + 'fdc_id': value['fdcId'], + 'food_onhand': value['foodOnhand'], + 'supermarket_category': SupermarketCategoryToJSON(value['supermarketCategory']), + 'inherit_fields': value['inheritFields'] == null ? undefined : ((value['inheritFields'] as Array).map(FoodInheritFieldToJSON)), + 'ignore_shopping': value['ignoreShopping'], + 'substitute': value['substitute'] == null ? undefined : ((value['substitute'] as Array).map(FoodSimpleToJSON)), + 'substitute_siblings': value['substituteSiblings'], + 'substitute_children': value['substituteChildren'], + 'child_inherit_fields': value['childInheritFields'] == null ? undefined : ((value['childInheritFields'] as Array).map(FoodInheritFieldToJSON)), + 'open_data_slug': value['openDataSlug'], + }; +} + diff --git a/vue3/src/openapi/models/FoodInheritField.ts b/vue3/src/openapi/models/FoodInheritField.ts new file mode 100644 index 000000000..fdb876134 --- /dev/null +++ b/vue3/src/openapi/models/FoodInheritField.ts @@ -0,0 +1,110 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface FoodInheritField + */ +export interface FoodInheritField { + /** + * + * @type {number} + * @memberof FoodInheritField + */ + readonly id: number; + /** + * + * @type {string} + * @memberof FoodInheritField + */ + name?: string; + /** + * + * @type {string} + * @memberof FoodInheritField + */ + field?: string; +} + +/** + * Check if a given object implements the FoodInheritField interface. + */ +export function instanceOfFoodInheritField(value: object): boolean { + if (!('id' in value)) return false; + return true; +} + +export function FoodInheritFieldFromJSON(json: any): FoodInheritField { + return FoodInheritFieldFromJSONTyped(json, false); +} + +export function FoodInheritFieldFromJSONTyped(json: any, ignoreDiscriminator: boolean): FoodInheritField { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'] == null ? undefined : json['name'], + 'field': json['field'] == null ? undefined : json['field'], + }; +} + +export function FoodInheritFieldToJSON(value?: FoodInheritField | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'field': value['field'], + }; +} + diff --git a/vue3/src/openapi/models/FoodInheritFieldsInner.ts b/vue3/src/openapi/models/FoodInheritFieldsInner.ts new file mode 100644 index 000000000..a78cf1ccb --- /dev/null +++ b/vue3/src/openapi/models/FoodInheritFieldsInner.ts @@ -0,0 +1,80 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface FoodInheritFieldsInner + */ +export interface FoodInheritFieldsInner { + /** + * + * @type {number} + * @memberof FoodInheritFieldsInner + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof FoodInheritFieldsInner + */ + name?: string | null; + /** + * + * @type {string} + * @memberof FoodInheritFieldsInner + */ + field?: string | null; +} + +/** + * Check if a given object implements the FoodInheritFieldsInner interface. + */ +export function instanceOfFoodInheritFieldsInner(value: object): boolean { + let isInstance = true; + + return isInstance; +} + +export function FoodInheritFieldsInnerFromJSON(json: any): FoodInheritFieldsInner { + return FoodInheritFieldsInnerFromJSONTyped(json, false); +} + +export function FoodInheritFieldsInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): FoodInheritFieldsInner { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': !exists(json, 'name') ? undefined : json['name'], + 'field': !exists(json, 'field') ? undefined : json['field'], + }; +} + +export function FoodInheritFieldsInnerToJSON(value?: FoodInheritFieldsInner | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'name': value.name, + 'field': value.field, + }; +} + diff --git a/vue3/src/openapi/models/FoodPropertiesFoodUnit.ts b/vue3/src/openapi/models/FoodPropertiesFoodUnit.ts new file mode 100644 index 000000000..9597799d9 --- /dev/null +++ b/vue3/src/openapi/models/FoodPropertiesFoodUnit.ts @@ -0,0 +1,105 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface FoodPropertiesFoodUnit + */ +export interface FoodPropertiesFoodUnit { + /** + * + * @type {number} + * @memberof FoodPropertiesFoodUnit + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof FoodPropertiesFoodUnit + */ + name: string; + /** + * + * @type {string} + * @memberof FoodPropertiesFoodUnit + */ + pluralName?: string | null; + /** + * + * @type {string} + * @memberof FoodPropertiesFoodUnit + */ + description?: string | null; + /** + * + * @type {string} + * @memberof FoodPropertiesFoodUnit + */ + baseUnit?: string | null; + /** + * + * @type {string} + * @memberof FoodPropertiesFoodUnit + */ + openDataSlug?: string | null; +} + +/** + * Check if a given object implements the FoodPropertiesFoodUnit interface. + */ +export function instanceOfFoodPropertiesFoodUnit(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "name" in value; + + return isInstance; +} + +export function FoodPropertiesFoodUnitFromJSON(json: any): FoodPropertiesFoodUnit { + return FoodPropertiesFoodUnitFromJSONTyped(json, false); +} + +export function FoodPropertiesFoodUnitFromJSONTyped(json: any, ignoreDiscriminator: boolean): FoodPropertiesFoodUnit { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': json['name'], + 'pluralName': !exists(json, 'plural_name') ? undefined : json['plural_name'], + 'description': !exists(json, 'description') ? undefined : json['description'], + 'baseUnit': !exists(json, 'base_unit') ? undefined : json['base_unit'], + 'openDataSlug': !exists(json, 'open_data_slug') ? undefined : json['open_data_slug'], + }; +} + +export function FoodPropertiesFoodUnitToJSON(value?: FoodPropertiesFoodUnit | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'name': value.name, + 'plural_name': value.pluralName, + 'description': value.description, + 'base_unit': value.baseUnit, + 'open_data_slug': value.openDataSlug, + }; +} + diff --git a/vue3/src/openapi/models/FoodPropertiesInner.ts b/vue3/src/openapi/models/FoodPropertiesInner.ts new file mode 100644 index 000000000..95554ac08 --- /dev/null +++ b/vue3/src/openapi/models/FoodPropertiesInner.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { FoodPropertiesInnerPropertyType } from './FoodPropertiesInnerPropertyType'; +import { + FoodPropertiesInnerPropertyTypeFromJSON, + FoodPropertiesInnerPropertyTypeFromJSONTyped, + FoodPropertiesInnerPropertyTypeToJSON, +} from './FoodPropertiesInnerPropertyType'; + +/** + * + * @export + * @interface FoodPropertiesInner + */ +export interface FoodPropertiesInner { + /** + * + * @type {number} + * @memberof FoodPropertiesInner + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof FoodPropertiesInner + */ + propertyAmount: string | null; + /** + * + * @type {FoodPropertiesInnerPropertyType} + * @memberof FoodPropertiesInner + */ + propertyType: FoodPropertiesInnerPropertyType; +} + +/** + * Check if a given object implements the FoodPropertiesInner interface. + */ +export function instanceOfFoodPropertiesInner(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "propertyAmount" in value; + isInstance = isInstance && "propertyType" in value; + + return isInstance; +} + +export function FoodPropertiesInnerFromJSON(json: any): FoodPropertiesInner { + return FoodPropertiesInnerFromJSONTyped(json, false); +} + +export function FoodPropertiesInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): FoodPropertiesInner { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'propertyAmount': json['property_amount'], + 'propertyType': FoodPropertiesInnerPropertyTypeFromJSON(json['property_type']), + }; +} + +export function FoodPropertiesInnerToJSON(value?: FoodPropertiesInner | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'property_amount': value.propertyAmount, + 'property_type': FoodPropertiesInnerPropertyTypeToJSON(value.propertyType), + }; +} + diff --git a/vue3/src/openapi/models/FoodPropertiesInnerPropertyType.ts b/vue3/src/openapi/models/FoodPropertiesInnerPropertyType.ts new file mode 100644 index 000000000..ceaaa2e79 --- /dev/null +++ b/vue3/src/openapi/models/FoodPropertiesInnerPropertyType.ts @@ -0,0 +1,114 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface FoodPropertiesInnerPropertyType + */ +export interface FoodPropertiesInnerPropertyType { + /** + * + * @type {number} + * @memberof FoodPropertiesInnerPropertyType + */ + id?: number; + /** + * + * @type {string} + * @memberof FoodPropertiesInnerPropertyType + */ + name: string; + /** + * + * @type {string} + * @memberof FoodPropertiesInnerPropertyType + */ + unit?: string | null; + /** + * + * @type {string} + * @memberof FoodPropertiesInnerPropertyType + */ + description?: string | null; + /** + * + * @type {number} + * @memberof FoodPropertiesInnerPropertyType + */ + order?: number; + /** + * + * @type {string} + * @memberof FoodPropertiesInnerPropertyType + */ + openDataSlug?: string | null; + /** + * + * @type {number} + * @memberof FoodPropertiesInnerPropertyType + */ + fdcId?: number | null; +} + +/** + * Check if a given object implements the FoodPropertiesInnerPropertyType interface. + */ +export function instanceOfFoodPropertiesInnerPropertyType(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "name" in value; + + return isInstance; +} + +export function FoodPropertiesInnerPropertyTypeFromJSON(json: any): FoodPropertiesInnerPropertyType { + return FoodPropertiesInnerPropertyTypeFromJSONTyped(json, false); +} + +export function FoodPropertiesInnerPropertyTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): FoodPropertiesInnerPropertyType { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': json['name'], + 'unit': !exists(json, 'unit') ? undefined : json['unit'], + 'description': !exists(json, 'description') ? undefined : json['description'], + 'order': !exists(json, 'order') ? undefined : json['order'], + 'openDataSlug': !exists(json, 'open_data_slug') ? undefined : json['open_data_slug'], + 'fdcId': !exists(json, 'fdc_id') ? undefined : json['fdc_id'], + }; +} + +export function FoodPropertiesInnerPropertyTypeToJSON(value?: FoodPropertiesInnerPropertyType | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'id': value.id, + 'name': value.name, + 'unit': value.unit, + 'description': value.description, + 'order': value.order, + 'open_data_slug': value.openDataSlug, + 'fdc_id': value.fdcId, + }; +} + diff --git a/vue3/src/openapi/models/FoodRecipe.ts b/vue3/src/openapi/models/FoodRecipe.ts new file mode 100644 index 000000000..7dc673cde --- /dev/null +++ b/vue3/src/openapi/models/FoodRecipe.ts @@ -0,0 +1,80 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface FoodRecipe + */ +export interface FoodRecipe { + /** + * + * @type {number} + * @memberof FoodRecipe + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof FoodRecipe + */ + name: string; + /** + * + * @type {string} + * @memberof FoodRecipe + */ + readonly url?: string; +} + +/** + * Check if a given object implements the FoodRecipe interface. + */ +export function instanceOfFoodRecipe(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "name" in value; + + return isInstance; +} + +export function FoodRecipeFromJSON(json: any): FoodRecipe { + return FoodRecipeFromJSONTyped(json, false); +} + +export function FoodRecipeFromJSONTyped(json: any, ignoreDiscriminator: boolean): FoodRecipe { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': json['name'], + 'url': !exists(json, 'url') ? undefined : json['url'], + }; +} + +export function FoodRecipeToJSON(value?: FoodRecipe | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'name': value.name, + }; +} + diff --git a/vue3/src/openapi/models/FoodShoppingUpdate.ts b/vue3/src/openapi/models/FoodShoppingUpdate.ts new file mode 100644 index 000000000..2893299ce --- /dev/null +++ b/vue3/src/openapi/models/FoodShoppingUpdate.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { FoodShoppingUpdateDelete } from './FoodShoppingUpdateDelete'; +import { + FoodShoppingUpdateDeleteFromJSON, + FoodShoppingUpdateDeleteFromJSONTyped, + FoodShoppingUpdateDeleteToJSON, +} from './FoodShoppingUpdateDelete'; + +/** + * + * @export + * @interface FoodShoppingUpdate + */ +export interface FoodShoppingUpdate { + /** + * + * @type {number} + * @memberof FoodShoppingUpdate + */ + readonly id: number; + /** + * Amount of food to add to the shopping list + * @type {number} + * @memberof FoodShoppingUpdate + */ + amount?: number | null; + /** + * ID of unit to use for the shopping list + * @type {number} + * @memberof FoodShoppingUpdate + */ + unit?: number | null; + /** + * + * @type {FoodShoppingUpdateDelete} + * @memberof FoodShoppingUpdate + */ + _delete: FoodShoppingUpdateDelete | null; +} + +/** + * Check if a given object implements the FoodShoppingUpdate interface. + */ +export function instanceOfFoodShoppingUpdate(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "id" in value; + isInstance = isInstance && "_delete" in value; + + return isInstance; +} + +export function FoodShoppingUpdateFromJSON(json: any): FoodShoppingUpdate { + return FoodShoppingUpdateFromJSONTyped(json, false); +} + +export function FoodShoppingUpdateFromJSONTyped(json: any, ignoreDiscriminator: boolean): FoodShoppingUpdate { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': json['id'], + 'amount': !exists(json, 'amount') ? undefined : json['amount'], + 'unit': !exists(json, 'unit') ? undefined : json['unit'], + '_delete': FoodShoppingUpdateDeleteFromJSON(json['delete']), + }; +} + +export function FoodShoppingUpdateToJSON(value?: FoodShoppingUpdate | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'amount': value.amount, + 'unit': value.unit, + 'delete': FoodShoppingUpdateDeleteToJSON(value._delete), + }; +} + diff --git a/vue3/src/openapi/models/FoodShoppingUpdateDelete.ts b/vue3/src/openapi/models/FoodShoppingUpdateDelete.ts new file mode 100644 index 000000000..1e912051f --- /dev/null +++ b/vue3/src/openapi/models/FoodShoppingUpdateDelete.ts @@ -0,0 +1,67 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { BlankEnum } from './BlankEnum'; +import { + instanceOfBlankEnum, + BlankEnumFromJSON, + BlankEnumFromJSONTyped, + BlankEnumToJSON, +} from './BlankEnum'; +import type { DeleteEnum } from './DeleteEnum'; +import { + instanceOfDeleteEnum, + DeleteEnumFromJSON, + DeleteEnumFromJSONTyped, + DeleteEnumToJSON, +} from './DeleteEnum'; + +/** + * @type FoodShoppingUpdateDelete + * When set to true will delete all food from active shopping lists. + * + * * `true` - true + * @export + */ +export type FoodShoppingUpdateDelete = BlankEnum | DeleteEnum; + +export function FoodShoppingUpdateDeleteFromJSON(json: any): FoodShoppingUpdateDelete { + return FoodShoppingUpdateDeleteFromJSONTyped(json, false); +} + +export function FoodShoppingUpdateDeleteFromJSONTyped(json: any, ignoreDiscriminator: boolean): FoodShoppingUpdateDelete { + if ((json === undefined) || (json === null)) { + return json; + } + return { ...BlankEnumFromJSONTyped(json, true), ...DeleteEnumFromJSONTyped(json, true) }; +} + +export function FoodShoppingUpdateDeleteToJSON(value?: FoodShoppingUpdateDelete | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + + if (instanceOfBlankEnum(value)) { + return BlankEnumToJSON(value as BlankEnum); + } + if (instanceOfDeleteEnum(value)) { + return DeleteEnumToJSON(value as DeleteEnum); + } + + return {}; +} + diff --git a/vue3/src/openapi/models/FoodSimple.ts b/vue3/src/openapi/models/FoodSimple.ts new file mode 100644 index 000000000..4829def97 --- /dev/null +++ b/vue3/src/openapi/models/FoodSimple.ts @@ -0,0 +1,77 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface FoodSimple + */ +export interface FoodSimple { + /** + * + * @type {number} + * @memberof FoodSimple + */ + readonly id: number; + /** + * + * @type {string} + * @memberof FoodSimple + */ + name: string; + /** + * + * @type {string} + * @memberof FoodSimple + */ + pluralName?: string; +} + +/** + * Check if a given object implements the FoodSimple interface. + */ +export function instanceOfFoodSimple(value: object): boolean { + if (!('id' in value)) return false; + if (!('name' in value)) return false; + return true; +} + +export function FoodSimpleFromJSON(json: any): FoodSimple { + return FoodSimpleFromJSONTyped(json, false); +} + +export function FoodSimpleFromJSONTyped(json: any, ignoreDiscriminator: boolean): FoodSimple { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'], + 'pluralName': json['plural_name'] == null ? undefined : json['plural_name'], + }; +} + +export function FoodSimpleToJSON(value?: FoodSimple | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'plural_name': value['pluralName'], + }; +} + diff --git a/vue3/src/openapi/models/FoodSubstituteInner.ts b/vue3/src/openapi/models/FoodSubstituteInner.ts new file mode 100644 index 000000000..e6f9b7995 --- /dev/null +++ b/vue3/src/openapi/models/FoodSubstituteInner.ts @@ -0,0 +1,81 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface FoodSubstituteInner + */ +export interface FoodSubstituteInner { + /** + * + * @type {number} + * @memberof FoodSubstituteInner + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof FoodSubstituteInner + */ + name: string; + /** + * + * @type {string} + * @memberof FoodSubstituteInner + */ + pluralName?: string | null; +} + +/** + * Check if a given object implements the FoodSubstituteInner interface. + */ +export function instanceOfFoodSubstituteInner(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "name" in value; + + return isInstance; +} + +export function FoodSubstituteInnerFromJSON(json: any): FoodSubstituteInner { + return FoodSubstituteInnerFromJSONTyped(json, false); +} + +export function FoodSubstituteInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): FoodSubstituteInner { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': json['name'], + 'pluralName': !exists(json, 'plural_name') ? undefined : json['plural_name'], + }; +} + +export function FoodSubstituteInnerToJSON(value?: FoodSubstituteInner | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'name': value.name, + 'plural_name': value.pluralName, + }; +} + diff --git a/vue3/src/openapi/models/FoodSupermarketCategory.ts b/vue3/src/openapi/models/FoodSupermarketCategory.ts new file mode 100644 index 000000000..8c9ba503b --- /dev/null +++ b/vue3/src/openapi/models/FoodSupermarketCategory.ts @@ -0,0 +1,81 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface FoodSupermarketCategory + */ +export interface FoodSupermarketCategory { + /** + * + * @type {number} + * @memberof FoodSupermarketCategory + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof FoodSupermarketCategory + */ + name: string; + /** + * + * @type {string} + * @memberof FoodSupermarketCategory + */ + description?: string | null; +} + +/** + * Check if a given object implements the FoodSupermarketCategory interface. + */ +export function instanceOfFoodSupermarketCategory(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "name" in value; + + return isInstance; +} + +export function FoodSupermarketCategoryFromJSON(json: any): FoodSupermarketCategory { + return FoodSupermarketCategoryFromJSONTyped(json, false); +} + +export function FoodSupermarketCategoryFromJSONTyped(json: any, ignoreDiscriminator: boolean): FoodSupermarketCategory { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': json['name'], + 'description': !exists(json, 'description') ? undefined : json['description'], + }; +} + +export function FoodSupermarketCategoryToJSON(value?: FoodSupermarketCategory | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'name': value.name, + 'description': value.description, + }; +} + diff --git a/vue3/src/openapi/models/Group.ts b/vue3/src/openapi/models/Group.ts new file mode 100644 index 000000000..6a9154a1c --- /dev/null +++ b/vue3/src/openapi/models/Group.ts @@ -0,0 +1,103 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface Group + */ +export interface Group { + /** + * + * @type {number} + * @memberof Group + */ + readonly id: number; + /** + * + * @type {string} + * @memberof Group + */ + name: string; +} + +/** + * Check if a given object implements the Group interface. + */ +export function instanceOfGroup(value: object): boolean { + if (!('id' in value)) return false; + if (!('name' in value)) return false; + return true; +} + +export function GroupFromJSON(json: any): Group { + return GroupFromJSONTyped(json, false); +} + +export function GroupFromJSONTyped(json: any, ignoreDiscriminator: boolean): Group { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'], + }; +} + +export function GroupToJSON(value?: Group | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + }; +} + diff --git a/vue3/src/openapi/models/ImportLog.ts b/vue3/src/openapi/models/ImportLog.ts new file mode 100644 index 000000000..6857daf50 --- /dev/null +++ b/vue3/src/openapi/models/ImportLog.ts @@ -0,0 +1,132 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Keyword } from './Keyword'; +import { + KeywordFromJSON, + KeywordFromJSONTyped, + KeywordToJSON, +} from './Keyword'; + +/** + * + * @export + * @interface ImportLog + */ +export interface ImportLog { + /** + * + * @type {number} + * @memberof ImportLog + */ + readonly id: number; + /** + * + * @type {string} + * @memberof ImportLog + */ + type: string; + /** + * + * @type {string} + * @memberof ImportLog + */ + msg?: string; + /** + * + * @type {boolean} + * @memberof ImportLog + */ + running?: boolean; + /** + * + * @type {Keyword} + * @memberof ImportLog + */ + readonly keyword: Keyword; + /** + * + * @type {number} + * @memberof ImportLog + */ + totalRecipes?: number; + /** + * + * @type {number} + * @memberof ImportLog + */ + importedRecipes?: number; + /** + * + * @type {number} + * @memberof ImportLog + */ + readonly createdBy: number; + /** + * + * @type {Date} + * @memberof ImportLog + */ + readonly createdAt: Date; +} + +/** + * Check if a given object implements the ImportLog interface. + */ +export function instanceOfImportLog(value: object): boolean { + if (!('id' in value)) return false; + if (!('type' in value)) return false; + if (!('keyword' in value)) return false; + if (!('createdBy' in value)) return false; + if (!('createdAt' in value)) return false; + return true; +} + +export function ImportLogFromJSON(json: any): ImportLog { + return ImportLogFromJSONTyped(json, false); +} + +export function ImportLogFromJSONTyped(json: any, ignoreDiscriminator: boolean): ImportLog { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'type': json['type'], + 'msg': json['msg'] == null ? undefined : json['msg'], + 'running': json['running'] == null ? undefined : json['running'], + 'keyword': KeywordFromJSON(json['keyword']), + 'totalRecipes': json['total_recipes'] == null ? undefined : json['total_recipes'], + 'importedRecipes': json['imported_recipes'] == null ? undefined : json['imported_recipes'], + 'createdBy': json['created_by'], + 'createdAt': (new Date(json['created_at'])), + }; +} + +export function ImportLogToJSON(value?: ImportLog | null): any { + if (value == null) { + return value; + } + return { + + 'type': value['type'], + 'msg': value['msg'], + 'running': value['running'], + 'total_recipes': value['totalRecipes'], + 'imported_recipes': value['importedRecipes'], + }; +} + diff --git a/vue3/src/openapi/models/ImportLogKeyword.ts b/vue3/src/openapi/models/ImportLogKeyword.ts new file mode 100644 index 000000000..5feb33a0b --- /dev/null +++ b/vue3/src/openapi/models/ImportLogKeyword.ts @@ -0,0 +1,123 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface ImportLogKeyword + */ +export interface ImportLogKeyword { + /** + * + * @type {number} + * @memberof ImportLogKeyword + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof ImportLogKeyword + */ + name: string; + /** + * + * @type {string} + * @memberof ImportLogKeyword + */ + readonly label?: string; + /** + * + * @type {string} + * @memberof ImportLogKeyword + */ + description?: string; + /** + * + * @type {string} + * @memberof ImportLogKeyword + */ + readonly parent?: string; + /** + * + * @type {number} + * @memberof ImportLogKeyword + */ + readonly numchild?: number; + /** + * + * @type {Date} + * @memberof ImportLogKeyword + */ + readonly createdAt?: Date; + /** + * + * @type {Date} + * @memberof ImportLogKeyword + */ + readonly updatedAt?: Date; + /** + * + * @type {string} + * @memberof ImportLogKeyword + */ + readonly fullName?: string; +} + +/** + * Check if a given object implements the ImportLogKeyword interface. + */ +export function instanceOfImportLogKeyword(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "name" in value; + + return isInstance; +} + +export function ImportLogKeywordFromJSON(json: any): ImportLogKeyword { + return ImportLogKeywordFromJSONTyped(json, false); +} + +export function ImportLogKeywordFromJSONTyped(json: any, ignoreDiscriminator: boolean): ImportLogKeyword { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': json['name'], + 'label': !exists(json, 'label') ? undefined : json['label'], + 'description': !exists(json, 'description') ? undefined : json['description'], + 'parent': !exists(json, 'parent') ? undefined : json['parent'], + 'numchild': !exists(json, 'numchild') ? undefined : json['numchild'], + 'createdAt': !exists(json, 'created_at') ? undefined : (new Date(json['created_at'])), + 'updatedAt': !exists(json, 'updated_at') ? undefined : (new Date(json['updated_at'])), + 'fullName': !exists(json, 'full_name') ? undefined : json['full_name'], + }; +} + +export function ImportLogKeywordToJSON(value?: ImportLogKeyword | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'name': value.name, + 'description': value.description, + }; +} + diff --git a/vue3/src/openapi/models/Ingredient.ts b/vue3/src/openapi/models/Ingredient.ts new file mode 100644 index 000000000..64289f4d4 --- /dev/null +++ b/vue3/src/openapi/models/Ingredient.ts @@ -0,0 +1,172 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Food } from './Food'; +import { + FoodFromJSON, + FoodFromJSONTyped, + FoodToJSON, +} from './Food'; +import type { Unit } from './Unit'; +import { + UnitFromJSON, + UnitFromJSONTyped, + UnitToJSON, +} from './Unit'; + +/** + * Adds nested create feature + * @export + * @interface Ingredient + */ +export interface Ingredient { + /** + * + * @type {number} + * @memberof Ingredient + */ + readonly id: number; + /** + * + * @type {Food} + * @memberof Ingredient + */ + food: Food | null; + /** + * + * @type {Unit} + * @memberof Ingredient + */ + unit: Unit | null; + /** + * + * @type {string} + * @memberof Ingredient + */ + amount: string; + /** + * + * @type {string} + * @memberof Ingredient + */ + readonly conversions: string; + /** + * + * @type {string} + * @memberof Ingredient + */ + note?: string; + /** + * + * @type {number} + * @memberof Ingredient + */ + order?: number; + /** + * + * @type {boolean} + * @memberof Ingredient + */ + isHeader?: boolean; + /** + * + * @type {boolean} + * @memberof Ingredient + */ + noAmount?: boolean; + /** + * + * @type {string} + * @memberof Ingredient + */ + originalText?: string; + /** + * + * @type {string} + * @memberof Ingredient + */ + readonly usedInRecipes: string; + /** + * + * @type {boolean} + * @memberof Ingredient + */ + alwaysUsePluralUnit?: boolean; + /** + * + * @type {boolean} + * @memberof Ingredient + */ + alwaysUsePluralFood?: boolean; +} + +/** + * Check if a given object implements the Ingredient interface. + */ +export function instanceOfIngredient(value: object): boolean { + if (!('id' in value)) return false; + if (!('food' in value)) return false; + if (!('unit' in value)) return false; + if (!('amount' in value)) return false; + if (!('conversions' in value)) return false; + if (!('usedInRecipes' in value)) return false; + return true; +} + +export function IngredientFromJSON(json: any): Ingredient { + return IngredientFromJSONTyped(json, false); +} + +export function IngredientFromJSONTyped(json: any, ignoreDiscriminator: boolean): Ingredient { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'food': FoodFromJSON(json['food']), + 'unit': UnitFromJSON(json['unit']), + 'amount': json['amount'], + 'conversions': json['conversions'], + 'note': json['note'] == null ? undefined : json['note'], + 'order': json['order'] == null ? undefined : json['order'], + 'isHeader': json['is_header'] == null ? undefined : json['is_header'], + 'noAmount': json['no_amount'] == null ? undefined : json['no_amount'], + 'originalText': json['original_text'] == null ? undefined : json['original_text'], + 'usedInRecipes': json['used_in_recipes'], + 'alwaysUsePluralUnit': json['always_use_plural_unit'] == null ? undefined : json['always_use_plural_unit'], + 'alwaysUsePluralFood': json['always_use_plural_food'] == null ? undefined : json['always_use_plural_food'], + }; +} + +export function IngredientToJSON(value?: Ingredient | null): any { + if (value == null) { + return value; + } + return { + + 'food': FoodToJSON(value['food']), + 'unit': UnitToJSON(value['unit']), + 'amount': value['amount'], + 'note': value['note'], + 'order': value['order'], + 'is_header': value['isHeader'], + 'no_amount': value['noAmount'], + 'original_text': value['originalText'], + 'always_use_plural_unit': value['alwaysUsePluralUnit'], + 'always_use_plural_food': value['alwaysUsePluralFood'], + }; +} + diff --git a/vue3/src/openapi/models/IngredientFood.ts b/vue3/src/openapi/models/IngredientFood.ts new file mode 100644 index 000000000..d0171619b --- /dev/null +++ b/vue3/src/openapi/models/IngredientFood.ts @@ -0,0 +1,281 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { FoodInheritFieldsInner } from './FoodInheritFieldsInner'; +import { + FoodInheritFieldsInnerFromJSON, + FoodInheritFieldsInnerFromJSONTyped, + FoodInheritFieldsInnerToJSON, +} from './FoodInheritFieldsInner'; +import type { FoodPropertiesFoodUnit } from './FoodPropertiesFoodUnit'; +import { + FoodPropertiesFoodUnitFromJSON, + FoodPropertiesFoodUnitFromJSONTyped, + FoodPropertiesFoodUnitToJSON, +} from './FoodPropertiesFoodUnit'; +import type { FoodPropertiesInner } from './FoodPropertiesInner'; +import { + FoodPropertiesInnerFromJSON, + FoodPropertiesInnerFromJSONTyped, + FoodPropertiesInnerToJSON, +} from './FoodPropertiesInner'; +import type { FoodRecipe } from './FoodRecipe'; +import { + FoodRecipeFromJSON, + FoodRecipeFromJSONTyped, + FoodRecipeToJSON, +} from './FoodRecipe'; +import type { FoodSubstituteInner } from './FoodSubstituteInner'; +import { + FoodSubstituteInnerFromJSON, + FoodSubstituteInnerFromJSONTyped, + FoodSubstituteInnerToJSON, +} from './FoodSubstituteInner'; +import type { FoodSupermarketCategory } from './FoodSupermarketCategory'; +import { + FoodSupermarketCategoryFromJSON, + FoodSupermarketCategoryFromJSONTyped, + FoodSupermarketCategoryToJSON, +} from './FoodSupermarketCategory'; + +/** + * + * @export + * @interface IngredientFood + */ +export interface IngredientFood { + /** + * + * @type {number} + * @memberof IngredientFood + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof IngredientFood + */ + name: string; + /** + * + * @type {string} + * @memberof IngredientFood + */ + pluralName?: string | null; + /** + * + * @type {string} + * @memberof IngredientFood + */ + description?: string; + /** + * + * @type {string} + * @memberof IngredientFood + */ + readonly shopping?: string; + /** + * + * @type {FoodRecipe} + * @memberof IngredientFood + */ + recipe?: FoodRecipe | null; + /** + * + * @type {string} + * @memberof IngredientFood + */ + url?: string | null; + /** + * + * @type {Array} + * @memberof IngredientFood + */ + properties?: Array | null; + /** + * + * @type {string} + * @memberof IngredientFood + */ + propertiesFoodAmount?: string; + /** + * + * @type {FoodPropertiesFoodUnit} + * @memberof IngredientFood + */ + propertiesFoodUnit?: FoodPropertiesFoodUnit | null; + /** + * + * @type {number} + * @memberof IngredientFood + */ + fdcId?: number | null; + /** + * + * @type {string} + * @memberof IngredientFood + */ + foodOnhand?: string | null; + /** + * + * @type {FoodSupermarketCategory} + * @memberof IngredientFood + */ + supermarketCategory?: FoodSupermarketCategory | null; + /** + * + * @type {string} + * @memberof IngredientFood + */ + readonly parent?: string; + /** + * + * @type {number} + * @memberof IngredientFood + */ + readonly numchild?: number; + /** + * + * @type {Array} + * @memberof IngredientFood + */ + inheritFields?: Array | null; + /** + * + * @type {string} + * @memberof IngredientFood + */ + readonly fullName?: string; + /** + * + * @type {boolean} + * @memberof IngredientFood + */ + ignoreShopping?: boolean; + /** + * + * @type {Array} + * @memberof IngredientFood + */ + substitute?: Array | null; + /** + * + * @type {boolean} + * @memberof IngredientFood + */ + substituteSiblings?: boolean; + /** + * + * @type {boolean} + * @memberof IngredientFood + */ + substituteChildren?: boolean; + /** + * + * @type {string} + * @memberof IngredientFood + */ + readonly substituteOnhand?: string; + /** + * + * @type {Array} + * @memberof IngredientFood + */ + childInheritFields?: Array | null; + /** + * + * @type {string} + * @memberof IngredientFood + */ + openDataSlug?: string | null; +} + +/** + * Check if a given object implements the IngredientFood interface. + */ +export function instanceOfIngredientFood(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "name" in value; + + return isInstance; +} + +export function IngredientFoodFromJSON(json: any): IngredientFood { + return IngredientFoodFromJSONTyped(json, false); +} + +export function IngredientFoodFromJSONTyped(json: any, ignoreDiscriminator: boolean): IngredientFood { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': json['name'], + 'pluralName': !exists(json, 'plural_name') ? undefined : json['plural_name'], + 'description': !exists(json, 'description') ? undefined : json['description'], + 'shopping': !exists(json, 'shopping') ? undefined : json['shopping'], + 'recipe': !exists(json, 'recipe') ? undefined : FoodRecipeFromJSON(json['recipe']), + 'url': !exists(json, 'url') ? undefined : json['url'], + 'properties': !exists(json, 'properties') ? undefined : (json['properties'] === null ? null : (json['properties'] as Array).map(FoodPropertiesInnerFromJSON)), + 'propertiesFoodAmount': !exists(json, 'properties_food_amount') ? undefined : json['properties_food_amount'], + 'propertiesFoodUnit': !exists(json, 'properties_food_unit') ? undefined : FoodPropertiesFoodUnitFromJSON(json['properties_food_unit']), + 'fdcId': !exists(json, 'fdc_id') ? undefined : json['fdc_id'], + 'foodOnhand': !exists(json, 'food_onhand') ? undefined : json['food_onhand'], + 'supermarketCategory': !exists(json, 'supermarket_category') ? undefined : FoodSupermarketCategoryFromJSON(json['supermarket_category']), + 'parent': !exists(json, 'parent') ? undefined : json['parent'], + 'numchild': !exists(json, 'numchild') ? undefined : json['numchild'], + 'inheritFields': !exists(json, 'inherit_fields') ? undefined : (json['inherit_fields'] === null ? null : (json['inherit_fields'] as Array).map(FoodInheritFieldsInnerFromJSON)), + 'fullName': !exists(json, 'full_name') ? undefined : json['full_name'], + 'ignoreShopping': !exists(json, 'ignore_shopping') ? undefined : json['ignore_shopping'], + 'substitute': !exists(json, 'substitute') ? undefined : (json['substitute'] === null ? null : (json['substitute'] as Array).map(FoodSubstituteInnerFromJSON)), + 'substituteSiblings': !exists(json, 'substitute_siblings') ? undefined : json['substitute_siblings'], + 'substituteChildren': !exists(json, 'substitute_children') ? undefined : json['substitute_children'], + 'substituteOnhand': !exists(json, 'substitute_onhand') ? undefined : json['substitute_onhand'], + 'childInheritFields': !exists(json, 'child_inherit_fields') ? undefined : (json['child_inherit_fields'] === null ? null : (json['child_inherit_fields'] as Array).map(FoodInheritFieldsInnerFromJSON)), + 'openDataSlug': !exists(json, 'open_data_slug') ? undefined : json['open_data_slug'], + }; +} + +export function IngredientFoodToJSON(value?: IngredientFood | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'name': value.name, + 'plural_name': value.pluralName, + 'description': value.description, + 'recipe': FoodRecipeToJSON(value.recipe), + 'url': value.url, + 'properties': value.properties === undefined ? undefined : (value.properties === null ? null : (value.properties as Array).map(FoodPropertiesInnerToJSON)), + 'properties_food_amount': value.propertiesFoodAmount, + 'properties_food_unit': FoodPropertiesFoodUnitToJSON(value.propertiesFoodUnit), + 'fdc_id': value.fdcId, + 'food_onhand': value.foodOnhand, + 'supermarket_category': FoodSupermarketCategoryToJSON(value.supermarketCategory), + 'inherit_fields': value.inheritFields === undefined ? undefined : (value.inheritFields === null ? null : (value.inheritFields as Array).map(FoodInheritFieldsInnerToJSON)), + 'ignore_shopping': value.ignoreShopping, + 'substitute': value.substitute === undefined ? undefined : (value.substitute === null ? null : (value.substitute as Array).map(FoodSubstituteInnerToJSON)), + 'substitute_siblings': value.substituteSiblings, + 'substitute_children': value.substituteChildren, + 'child_inherit_fields': value.childInheritFields === undefined ? undefined : (value.childInheritFields === null ? null : (value.childInheritFields as Array).map(FoodInheritFieldsInnerToJSON)), + 'open_data_slug': value.openDataSlug, + }; +} + diff --git a/vue3/src/openapi/models/InviteLink.ts b/vue3/src/openapi/models/InviteLink.ts new file mode 100644 index 000000000..7a3fdbb8f --- /dev/null +++ b/vue3/src/openapi/models/InviteLink.ts @@ -0,0 +1,140 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Group } from './Group'; +import { + GroupFromJSON, + GroupFromJSONTyped, + GroupToJSON, +} from './Group'; + +/** + * Adds nested create feature + * @export + * @interface InviteLink + */ +export interface InviteLink { + /** + * + * @type {number} + * @memberof InviteLink + */ + readonly id: number; + /** + * + * @type {string} + * @memberof InviteLink + */ + readonly uuid: string; + /** + * + * @type {string} + * @memberof InviteLink + */ + email?: string; + /** + * + * @type {Group} + * @memberof InviteLink + */ + group: Group; + /** + * + * @type {Date} + * @memberof InviteLink + */ + validUntil?: Date; + /** + * + * @type {number} + * @memberof InviteLink + */ + usedBy?: number; + /** + * + * @type {boolean} + * @memberof InviteLink + */ + reusable?: boolean; + /** + * + * @type {string} + * @memberof InviteLink + */ + internalNote?: string; + /** + * + * @type {number} + * @memberof InviteLink + */ + readonly createdBy: number; + /** + * + * @type {Date} + * @memberof InviteLink + */ + readonly createdAt: Date; +} + +/** + * Check if a given object implements the InviteLink interface. + */ +export function instanceOfInviteLink(value: object): boolean { + if (!('id' in value)) return false; + if (!('uuid' in value)) return false; + if (!('group' in value)) return false; + if (!('createdBy' in value)) return false; + if (!('createdAt' in value)) return false; + return true; +} + +export function InviteLinkFromJSON(json: any): InviteLink { + return InviteLinkFromJSONTyped(json, false); +} + +export function InviteLinkFromJSONTyped(json: any, ignoreDiscriminator: boolean): InviteLink { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'uuid': json['uuid'], + 'email': json['email'] == null ? undefined : json['email'], + 'group': GroupFromJSON(json['group']), + 'validUntil': json['valid_until'] == null ? undefined : (new Date(json['valid_until'])), + 'usedBy': json['used_by'] == null ? undefined : json['used_by'], + 'reusable': json['reusable'] == null ? undefined : json['reusable'], + 'internalNote': json['internal_note'] == null ? undefined : json['internal_note'], + 'createdBy': json['created_by'], + 'createdAt': (new Date(json['created_at'])), + }; +} + +export function InviteLinkToJSON(value?: InviteLink | null): any { + if (value == null) { + return value; + } + return { + + 'email': value['email'], + 'group': GroupToJSON(value['group']), + 'valid_until': value['validUntil'] == null ? undefined : ((value['validUntil']).toISOString().substring(0,10)), + 'used_by': value['usedBy'], + 'reusable': value['reusable'], + 'internal_note': value['internalNote'], + }; +} + diff --git a/vue3/src/openapi/models/InviteLinkGroup.ts b/vue3/src/openapi/models/InviteLinkGroup.ts new file mode 100644 index 000000000..0ccfcbbf9 --- /dev/null +++ b/vue3/src/openapi/models/InviteLinkGroup.ts @@ -0,0 +1,73 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface InviteLinkGroup + */ +export interface InviteLinkGroup { + /** + * + * @type {number} + * @memberof InviteLinkGroup + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof InviteLinkGroup + */ + name: string; +} + +/** + * Check if a given object implements the InviteLinkGroup interface. + */ +export function instanceOfInviteLinkGroup(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "name" in value; + + return isInstance; +} + +export function InviteLinkGroupFromJSON(json: any): InviteLinkGroup { + return InviteLinkGroupFromJSONTyped(json, false); +} + +export function InviteLinkGroupFromJSONTyped(json: any, ignoreDiscriminator: boolean): InviteLinkGroup { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': json['name'], + }; +} + +export function InviteLinkGroupToJSON(value?: InviteLinkGroup | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'name': value.name, + }; +} + diff --git a/vue3/src/openapi/models/Keyword.ts b/vue3/src/openapi/models/Keyword.ts new file mode 100644 index 000000000..502711663 --- /dev/null +++ b/vue3/src/openapi/models/Keyword.ts @@ -0,0 +1,159 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface Keyword + */ +export interface Keyword { + /** + * + * @type {number} + * @memberof Keyword + */ + readonly id: number; + /** + * + * @type {string} + * @memberof Keyword + */ + name: string; + /** + * + * @type {string} + * @memberof Keyword + */ + readonly label: string; + /** + * + * @type {string} + * @memberof Keyword + */ + description?: string; + /** + * + * @type {string} + * @memberof Keyword + */ + readonly parent: string; + /** + * + * @type {number} + * @memberof Keyword + */ + readonly numchild: number; + /** + * + * @type {Date} + * @memberof Keyword + */ + readonly createdAt: Date; + /** + * + * @type {Date} + * @memberof Keyword + */ + readonly updatedAt: Date; + /** + * + * @type {string} + * @memberof Keyword + */ + readonly fullName: string; +} + +/** + * Check if a given object implements the Keyword interface. + */ +export function instanceOfKeyword(value: object): boolean { + if (!('id' in value)) return false; + if (!('name' in value)) return false; + if (!('label' in value)) return false; + if (!('parent' in value)) return false; + if (!('numchild' in value)) return false; + if (!('createdAt' in value)) return false; + if (!('updatedAt' in value)) return false; + if (!('fullName' in value)) return false; + return true; +} + +export function KeywordFromJSON(json: any): Keyword { + return KeywordFromJSONTyped(json, false); +} + +export function KeywordFromJSONTyped(json: any, ignoreDiscriminator: boolean): Keyword { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'], + 'label': json['label'], + 'description': json['description'] == null ? undefined : json['description'], + 'parent': json['parent'], + 'numchild': json['numchild'], + 'createdAt': (new Date(json['created_at'])), + 'updatedAt': (new Date(json['updated_at'])), + 'fullName': json['full_name'], + }; +} + +export function KeywordToJSON(value?: Keyword | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'description': value['description'], + }; +} + diff --git a/vue3/src/openapi/models/KeywordLabel.ts b/vue3/src/openapi/models/KeywordLabel.ts new file mode 100644 index 000000000..7b60a6cd9 --- /dev/null +++ b/vue3/src/openapi/models/KeywordLabel.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface KeywordLabel + */ +export interface KeywordLabel { + /** + * + * @type {number} + * @memberof KeywordLabel + */ + readonly id: number; + /** + * + * @type {string} + * @memberof KeywordLabel + */ + readonly label: string; +} + +/** + * Check if a given object implements the KeywordLabel interface. + */ +export function instanceOfKeywordLabel(value: object): boolean { + if (!('id' in value)) return false; + if (!('label' in value)) return false; + return true; +} + +export function KeywordLabelFromJSON(json: any): KeywordLabel { + return KeywordLabelFromJSONTyped(json, false); +} + +export function KeywordLabelFromJSONTyped(json: any, ignoreDiscriminator: boolean): KeywordLabel { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'label': json['label'], + }; +} + +export function KeywordLabelToJSON(value?: KeywordLabel | null): any { + if (value == null) { + return value; + } + return { + + }; +} + diff --git a/vue3/src/openapi/models/ListAutomations200Response.ts b/vue3/src/openapi/models/ListAutomations200Response.ts new file mode 100644 index 000000000..3e7eee7a8 --- /dev/null +++ b/vue3/src/openapi/models/ListAutomations200Response.ts @@ -0,0 +1,96 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { Automation } from './Automation'; +import { + AutomationFromJSON, + AutomationFromJSONTyped, + AutomationToJSON, +} from './Automation'; + +/** + * + * @export + * @interface ListAutomations200Response + */ +export interface ListAutomations200Response { + /** + * + * @type {number} + * @memberof ListAutomations200Response + */ + count?: number; + /** + * + * @type {string} + * @memberof ListAutomations200Response + */ + next?: string | null; + /** + * + * @type {string} + * @memberof ListAutomations200Response + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof ListAutomations200Response + */ + results?: Array; +} + +/** + * Check if a given object implements the ListAutomations200Response interface. + */ +export function instanceOfListAutomations200Response(value: object): boolean { + let isInstance = true; + + return isInstance; +} + +export function ListAutomations200ResponseFromJSON(json: any): ListAutomations200Response { + return ListAutomations200ResponseFromJSONTyped(json, false); +} + +export function ListAutomations200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListAutomations200Response { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'count': !exists(json, 'count') ? undefined : json['count'], + 'next': !exists(json, 'next') ? undefined : json['next'], + 'previous': !exists(json, 'previous') ? undefined : json['previous'], + 'results': !exists(json, 'results') ? undefined : ((json['results'] as Array).map(AutomationFromJSON)), + }; +} + +export function ListAutomations200ResponseToJSON(value?: ListAutomations200Response | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'count': value.count, + 'next': value.next, + 'previous': value.previous, + 'results': value.results === undefined ? undefined : ((value.results as Array).map(AutomationToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/ListCookLogs200Response.ts b/vue3/src/openapi/models/ListCookLogs200Response.ts new file mode 100644 index 000000000..c0f17f0cc --- /dev/null +++ b/vue3/src/openapi/models/ListCookLogs200Response.ts @@ -0,0 +1,96 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { CookLog } from './CookLog'; +import { + CookLogFromJSON, + CookLogFromJSONTyped, + CookLogToJSON, +} from './CookLog'; + +/** + * + * @export + * @interface ListCookLogs200Response + */ +export interface ListCookLogs200Response { + /** + * + * @type {number} + * @memberof ListCookLogs200Response + */ + count?: number; + /** + * + * @type {string} + * @memberof ListCookLogs200Response + */ + next?: string | null; + /** + * + * @type {string} + * @memberof ListCookLogs200Response + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof ListCookLogs200Response + */ + results?: Array; +} + +/** + * Check if a given object implements the ListCookLogs200Response interface. + */ +export function instanceOfListCookLogs200Response(value: object): boolean { + let isInstance = true; + + return isInstance; +} + +export function ListCookLogs200ResponseFromJSON(json: any): ListCookLogs200Response { + return ListCookLogs200ResponseFromJSONTyped(json, false); +} + +export function ListCookLogs200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListCookLogs200Response { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'count': !exists(json, 'count') ? undefined : json['count'], + 'next': !exists(json, 'next') ? undefined : json['next'], + 'previous': !exists(json, 'previous') ? undefined : json['previous'], + 'results': !exists(json, 'results') ? undefined : ((json['results'] as Array).map(CookLogFromJSON)), + }; +} + +export function ListCookLogs200ResponseToJSON(value?: ListCookLogs200Response | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'count': value.count, + 'next': value.next, + 'previous': value.previous, + 'results': value.results === undefined ? undefined : ((value.results as Array).map(CookLogToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/ListCustomFilters200Response.ts b/vue3/src/openapi/models/ListCustomFilters200Response.ts new file mode 100644 index 000000000..6fb1205a1 --- /dev/null +++ b/vue3/src/openapi/models/ListCustomFilters200Response.ts @@ -0,0 +1,96 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { CustomFilter } from './CustomFilter'; +import { + CustomFilterFromJSON, + CustomFilterFromJSONTyped, + CustomFilterToJSON, +} from './CustomFilter'; + +/** + * + * @export + * @interface ListCustomFilters200Response + */ +export interface ListCustomFilters200Response { + /** + * + * @type {number} + * @memberof ListCustomFilters200Response + */ + count?: number; + /** + * + * @type {string} + * @memberof ListCustomFilters200Response + */ + next?: string | null; + /** + * + * @type {string} + * @memberof ListCustomFilters200Response + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof ListCustomFilters200Response + */ + results?: Array; +} + +/** + * Check if a given object implements the ListCustomFilters200Response interface. + */ +export function instanceOfListCustomFilters200Response(value: object): boolean { + let isInstance = true; + + return isInstance; +} + +export function ListCustomFilters200ResponseFromJSON(json: any): ListCustomFilters200Response { + return ListCustomFilters200ResponseFromJSONTyped(json, false); +} + +export function ListCustomFilters200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListCustomFilters200Response { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'count': !exists(json, 'count') ? undefined : json['count'], + 'next': !exists(json, 'next') ? undefined : json['next'], + 'previous': !exists(json, 'previous') ? undefined : json['previous'], + 'results': !exists(json, 'results') ? undefined : ((json['results'] as Array).map(CustomFilterFromJSON)), + }; +} + +export function ListCustomFilters200ResponseToJSON(value?: ListCustomFilters200Response | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'count': value.count, + 'next': value.next, + 'previous': value.previous, + 'results': value.results === undefined ? undefined : ((value.results as Array).map(CustomFilterToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/ListExportLogs200Response.ts b/vue3/src/openapi/models/ListExportLogs200Response.ts new file mode 100644 index 000000000..892d8262c --- /dev/null +++ b/vue3/src/openapi/models/ListExportLogs200Response.ts @@ -0,0 +1,96 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { ExportLog } from './ExportLog'; +import { + ExportLogFromJSON, + ExportLogFromJSONTyped, + ExportLogToJSON, +} from './ExportLog'; + +/** + * + * @export + * @interface ListExportLogs200Response + */ +export interface ListExportLogs200Response { + /** + * + * @type {number} + * @memberof ListExportLogs200Response + */ + count?: number; + /** + * + * @type {string} + * @memberof ListExportLogs200Response + */ + next?: string | null; + /** + * + * @type {string} + * @memberof ListExportLogs200Response + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof ListExportLogs200Response + */ + results?: Array; +} + +/** + * Check if a given object implements the ListExportLogs200Response interface. + */ +export function instanceOfListExportLogs200Response(value: object): boolean { + let isInstance = true; + + return isInstance; +} + +export function ListExportLogs200ResponseFromJSON(json: any): ListExportLogs200Response { + return ListExportLogs200ResponseFromJSONTyped(json, false); +} + +export function ListExportLogs200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListExportLogs200Response { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'count': !exists(json, 'count') ? undefined : json['count'], + 'next': !exists(json, 'next') ? undefined : json['next'], + 'previous': !exists(json, 'previous') ? undefined : json['previous'], + 'results': !exists(json, 'results') ? undefined : ((json['results'] as Array).map(ExportLogFromJSON)), + }; +} + +export function ListExportLogs200ResponseToJSON(value?: ListExportLogs200Response | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'count': value.count, + 'next': value.next, + 'previous': value.previous, + 'results': value.results === undefined ? undefined : ((value.results as Array).map(ExportLogToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/ListFoods200Response.ts b/vue3/src/openapi/models/ListFoods200Response.ts new file mode 100644 index 000000000..cc9c9ed5c --- /dev/null +++ b/vue3/src/openapi/models/ListFoods200Response.ts @@ -0,0 +1,96 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { Food } from './Food'; +import { + FoodFromJSON, + FoodFromJSONTyped, + FoodToJSON, +} from './Food'; + +/** + * + * @export + * @interface ListFoods200Response + */ +export interface ListFoods200Response { + /** + * + * @type {number} + * @memberof ListFoods200Response + */ + count?: number; + /** + * + * @type {string} + * @memberof ListFoods200Response + */ + next?: string | null; + /** + * + * @type {string} + * @memberof ListFoods200Response + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof ListFoods200Response + */ + results?: Array; +} + +/** + * Check if a given object implements the ListFoods200Response interface. + */ +export function instanceOfListFoods200Response(value: object): boolean { + let isInstance = true; + + return isInstance; +} + +export function ListFoods200ResponseFromJSON(json: any): ListFoods200Response { + return ListFoods200ResponseFromJSONTyped(json, false); +} + +export function ListFoods200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListFoods200Response { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'count': !exists(json, 'count') ? undefined : json['count'], + 'next': !exists(json, 'next') ? undefined : json['next'], + 'previous': !exists(json, 'previous') ? undefined : json['previous'], + 'results': !exists(json, 'results') ? undefined : ((json['results'] as Array).map(FoodFromJSON)), + }; +} + +export function ListFoods200ResponseToJSON(value?: ListFoods200Response | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'count': value.count, + 'next': value.next, + 'previous': value.previous, + 'results': value.results === undefined ? undefined : ((value.results as Array).map(FoodToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/ListImportLogs200Response.ts b/vue3/src/openapi/models/ListImportLogs200Response.ts new file mode 100644 index 000000000..297cff035 --- /dev/null +++ b/vue3/src/openapi/models/ListImportLogs200Response.ts @@ -0,0 +1,96 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { ImportLog } from './ImportLog'; +import { + ImportLogFromJSON, + ImportLogFromJSONTyped, + ImportLogToJSON, +} from './ImportLog'; + +/** + * + * @export + * @interface ListImportLogs200Response + */ +export interface ListImportLogs200Response { + /** + * + * @type {number} + * @memberof ListImportLogs200Response + */ + count?: number; + /** + * + * @type {string} + * @memberof ListImportLogs200Response + */ + next?: string | null; + /** + * + * @type {string} + * @memberof ListImportLogs200Response + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof ListImportLogs200Response + */ + results?: Array; +} + +/** + * Check if a given object implements the ListImportLogs200Response interface. + */ +export function instanceOfListImportLogs200Response(value: object): boolean { + let isInstance = true; + + return isInstance; +} + +export function ListImportLogs200ResponseFromJSON(json: any): ListImportLogs200Response { + return ListImportLogs200ResponseFromJSONTyped(json, false); +} + +export function ListImportLogs200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListImportLogs200Response { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'count': !exists(json, 'count') ? undefined : json['count'], + 'next': !exists(json, 'next') ? undefined : json['next'], + 'previous': !exists(json, 'previous') ? undefined : json['previous'], + 'results': !exists(json, 'results') ? undefined : ((json['results'] as Array).map(ImportLogFromJSON)), + }; +} + +export function ListImportLogs200ResponseToJSON(value?: ListImportLogs200Response | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'count': value.count, + 'next': value.next, + 'previous': value.previous, + 'results': value.results === undefined ? undefined : ((value.results as Array).map(ImportLogToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/ListIngredients200Response.ts b/vue3/src/openapi/models/ListIngredients200Response.ts new file mode 100644 index 000000000..34bd56537 --- /dev/null +++ b/vue3/src/openapi/models/ListIngredients200Response.ts @@ -0,0 +1,96 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { Ingredient } from './Ingredient'; +import { + IngredientFromJSON, + IngredientFromJSONTyped, + IngredientToJSON, +} from './Ingredient'; + +/** + * + * @export + * @interface ListIngredients200Response + */ +export interface ListIngredients200Response { + /** + * + * @type {number} + * @memberof ListIngredients200Response + */ + count?: number; + /** + * + * @type {string} + * @memberof ListIngredients200Response + */ + next?: string | null; + /** + * + * @type {string} + * @memberof ListIngredients200Response + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof ListIngredients200Response + */ + results?: Array; +} + +/** + * Check if a given object implements the ListIngredients200Response interface. + */ +export function instanceOfListIngredients200Response(value: object): boolean { + let isInstance = true; + + return isInstance; +} + +export function ListIngredients200ResponseFromJSON(json: any): ListIngredients200Response { + return ListIngredients200ResponseFromJSONTyped(json, false); +} + +export function ListIngredients200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListIngredients200Response { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'count': !exists(json, 'count') ? undefined : json['count'], + 'next': !exists(json, 'next') ? undefined : json['next'], + 'previous': !exists(json, 'previous') ? undefined : json['previous'], + 'results': !exists(json, 'results') ? undefined : ((json['results'] as Array).map(IngredientFromJSON)), + }; +} + +export function ListIngredients200ResponseToJSON(value?: ListIngredients200Response | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'count': value.count, + 'next': value.next, + 'previous': value.previous, + 'results': value.results === undefined ? undefined : ((value.results as Array).map(IngredientToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/ListKeywords200Response.ts b/vue3/src/openapi/models/ListKeywords200Response.ts new file mode 100644 index 000000000..68a047e2b --- /dev/null +++ b/vue3/src/openapi/models/ListKeywords200Response.ts @@ -0,0 +1,96 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { Keyword } from './Keyword'; +import { + KeywordFromJSON, + KeywordFromJSONTyped, + KeywordToJSON, +} from './Keyword'; + +/** + * + * @export + * @interface ListKeywords200Response + */ +export interface ListKeywords200Response { + /** + * + * @type {number} + * @memberof ListKeywords200Response + */ + count?: number; + /** + * + * @type {string} + * @memberof ListKeywords200Response + */ + next?: string | null; + /** + * + * @type {string} + * @memberof ListKeywords200Response + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof ListKeywords200Response + */ + results?: Array; +} + +/** + * Check if a given object implements the ListKeywords200Response interface. + */ +export function instanceOfListKeywords200Response(value: object): boolean { + let isInstance = true; + + return isInstance; +} + +export function ListKeywords200ResponseFromJSON(json: any): ListKeywords200Response { + return ListKeywords200ResponseFromJSONTyped(json, false); +} + +export function ListKeywords200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListKeywords200Response { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'count': !exists(json, 'count') ? undefined : json['count'], + 'next': !exists(json, 'next') ? undefined : json['next'], + 'previous': !exists(json, 'previous') ? undefined : json['previous'], + 'results': !exists(json, 'results') ? undefined : ((json['results'] as Array).map(KeywordFromJSON)), + }; +} + +export function ListKeywords200ResponseToJSON(value?: ListKeywords200Response | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'count': value.count, + 'next': value.next, + 'previous': value.previous, + 'results': value.results === undefined ? undefined : ((value.results as Array).map(KeywordToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/ListRecipes200Response.ts b/vue3/src/openapi/models/ListRecipes200Response.ts new file mode 100644 index 000000000..5ed45644c --- /dev/null +++ b/vue3/src/openapi/models/ListRecipes200Response.ts @@ -0,0 +1,96 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { RecipeOverview } from './RecipeOverview'; +import { + RecipeOverviewFromJSON, + RecipeOverviewFromJSONTyped, + RecipeOverviewToJSON, +} from './RecipeOverview'; + +/** + * + * @export + * @interface ListRecipes200Response + */ +export interface ListRecipes200Response { + /** + * + * @type {number} + * @memberof ListRecipes200Response + */ + count?: number; + /** + * + * @type {string} + * @memberof ListRecipes200Response + */ + next?: string | null; + /** + * + * @type {string} + * @memberof ListRecipes200Response + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof ListRecipes200Response + */ + results?: Array; +} + +/** + * Check if a given object implements the ListRecipes200Response interface. + */ +export function instanceOfListRecipes200Response(value: object): boolean { + let isInstance = true; + + return isInstance; +} + +export function ListRecipes200ResponseFromJSON(json: any): ListRecipes200Response { + return ListRecipes200ResponseFromJSONTyped(json, false); +} + +export function ListRecipes200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListRecipes200Response { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'count': !exists(json, 'count') ? undefined : json['count'], + 'next': !exists(json, 'next') ? undefined : json['next'], + 'previous': !exists(json, 'previous') ? undefined : json['previous'], + 'results': !exists(json, 'results') ? undefined : ((json['results'] as Array).map(RecipeOverviewFromJSON)), + }; +} + +export function ListRecipes200ResponseToJSON(value?: ListRecipes200Response | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'count': value.count, + 'next': value.next, + 'previous': value.previous, + 'results': value.results === undefined ? undefined : ((value.results as Array).map(RecipeOverviewToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/ListSteps200Response.ts b/vue3/src/openapi/models/ListSteps200Response.ts new file mode 100644 index 000000000..189aff2e7 --- /dev/null +++ b/vue3/src/openapi/models/ListSteps200Response.ts @@ -0,0 +1,96 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { Step } from './Step'; +import { + StepFromJSON, + StepFromJSONTyped, + StepToJSON, +} from './Step'; + +/** + * + * @export + * @interface ListSteps200Response + */ +export interface ListSteps200Response { + /** + * + * @type {number} + * @memberof ListSteps200Response + */ + count?: number; + /** + * + * @type {string} + * @memberof ListSteps200Response + */ + next?: string | null; + /** + * + * @type {string} + * @memberof ListSteps200Response + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof ListSteps200Response + */ + results?: Array; +} + +/** + * Check if a given object implements the ListSteps200Response interface. + */ +export function instanceOfListSteps200Response(value: object): boolean { + let isInstance = true; + + return isInstance; +} + +export function ListSteps200ResponseFromJSON(json: any): ListSteps200Response { + return ListSteps200ResponseFromJSONTyped(json, false); +} + +export function ListSteps200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListSteps200Response { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'count': !exists(json, 'count') ? undefined : json['count'], + 'next': !exists(json, 'next') ? undefined : json['next'], + 'previous': !exists(json, 'previous') ? undefined : json['previous'], + 'results': !exists(json, 'results') ? undefined : ((json['results'] as Array).map(StepFromJSON)), + }; +} + +export function ListSteps200ResponseToJSON(value?: ListSteps200Response | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'count': value.count, + 'next': value.next, + 'previous': value.previous, + 'results': value.results === undefined ? undefined : ((value.results as Array).map(StepToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/ListSupermarketCategoryRelations200Response.ts b/vue3/src/openapi/models/ListSupermarketCategoryRelations200Response.ts new file mode 100644 index 000000000..f97a095c0 --- /dev/null +++ b/vue3/src/openapi/models/ListSupermarketCategoryRelations200Response.ts @@ -0,0 +1,96 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { SupermarketCategoryRelation } from './SupermarketCategoryRelation'; +import { + SupermarketCategoryRelationFromJSON, + SupermarketCategoryRelationFromJSONTyped, + SupermarketCategoryRelationToJSON, +} from './SupermarketCategoryRelation'; + +/** + * + * @export + * @interface ListSupermarketCategoryRelations200Response + */ +export interface ListSupermarketCategoryRelations200Response { + /** + * + * @type {number} + * @memberof ListSupermarketCategoryRelations200Response + */ + count?: number; + /** + * + * @type {string} + * @memberof ListSupermarketCategoryRelations200Response + */ + next?: string | null; + /** + * + * @type {string} + * @memberof ListSupermarketCategoryRelations200Response + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof ListSupermarketCategoryRelations200Response + */ + results?: Array; +} + +/** + * Check if a given object implements the ListSupermarketCategoryRelations200Response interface. + */ +export function instanceOfListSupermarketCategoryRelations200Response(value: object): boolean { + let isInstance = true; + + return isInstance; +} + +export function ListSupermarketCategoryRelations200ResponseFromJSON(json: any): ListSupermarketCategoryRelations200Response { + return ListSupermarketCategoryRelations200ResponseFromJSONTyped(json, false); +} + +export function ListSupermarketCategoryRelations200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListSupermarketCategoryRelations200Response { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'count': !exists(json, 'count') ? undefined : json['count'], + 'next': !exists(json, 'next') ? undefined : json['next'], + 'previous': !exists(json, 'previous') ? undefined : json['previous'], + 'results': !exists(json, 'results') ? undefined : ((json['results'] as Array).map(SupermarketCategoryRelationFromJSON)), + }; +} + +export function ListSupermarketCategoryRelations200ResponseToJSON(value?: ListSupermarketCategoryRelations200Response | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'count': value.count, + 'next': value.next, + 'previous': value.previous, + 'results': value.results === undefined ? undefined : ((value.results as Array).map(SupermarketCategoryRelationToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/ListSyncLogs200Response.ts b/vue3/src/openapi/models/ListSyncLogs200Response.ts new file mode 100644 index 000000000..054a95b89 --- /dev/null +++ b/vue3/src/openapi/models/ListSyncLogs200Response.ts @@ -0,0 +1,96 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { SyncLog } from './SyncLog'; +import { + SyncLogFromJSON, + SyncLogFromJSONTyped, + SyncLogToJSON, +} from './SyncLog'; + +/** + * + * @export + * @interface ListSyncLogs200Response + */ +export interface ListSyncLogs200Response { + /** + * + * @type {number} + * @memberof ListSyncLogs200Response + */ + count?: number; + /** + * + * @type {string} + * @memberof ListSyncLogs200Response + */ + next?: string | null; + /** + * + * @type {string} + * @memberof ListSyncLogs200Response + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof ListSyncLogs200Response + */ + results?: Array; +} + +/** + * Check if a given object implements the ListSyncLogs200Response interface. + */ +export function instanceOfListSyncLogs200Response(value: object): boolean { + let isInstance = true; + + return isInstance; +} + +export function ListSyncLogs200ResponseFromJSON(json: any): ListSyncLogs200Response { + return ListSyncLogs200ResponseFromJSONTyped(json, false); +} + +export function ListSyncLogs200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListSyncLogs200Response { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'count': !exists(json, 'count') ? undefined : json['count'], + 'next': !exists(json, 'next') ? undefined : json['next'], + 'previous': !exists(json, 'previous') ? undefined : json['previous'], + 'results': !exists(json, 'results') ? undefined : ((json['results'] as Array).map(SyncLogFromJSON)), + }; +} + +export function ListSyncLogs200ResponseToJSON(value?: ListSyncLogs200Response | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'count': value.count, + 'next': value.next, + 'previous': value.previous, + 'results': value.results === undefined ? undefined : ((value.results as Array).map(SyncLogToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/ListUnits200Response.ts b/vue3/src/openapi/models/ListUnits200Response.ts new file mode 100644 index 000000000..4c2f80bd6 --- /dev/null +++ b/vue3/src/openapi/models/ListUnits200Response.ts @@ -0,0 +1,96 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { Unit } from './Unit'; +import { + UnitFromJSON, + UnitFromJSONTyped, + UnitToJSON, +} from './Unit'; + +/** + * + * @export + * @interface ListUnits200Response + */ +export interface ListUnits200Response { + /** + * + * @type {number} + * @memberof ListUnits200Response + */ + count?: number; + /** + * + * @type {string} + * @memberof ListUnits200Response + */ + next?: string | null; + /** + * + * @type {string} + * @memberof ListUnits200Response + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof ListUnits200Response + */ + results?: Array; +} + +/** + * Check if a given object implements the ListUnits200Response interface. + */ +export function instanceOfListUnits200Response(value: object): boolean { + let isInstance = true; + + return isInstance; +} + +export function ListUnits200ResponseFromJSON(json: any): ListUnits200Response { + return ListUnits200ResponseFromJSONTyped(json, false); +} + +export function ListUnits200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListUnits200Response { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'count': !exists(json, 'count') ? undefined : json['count'], + 'next': !exists(json, 'next') ? undefined : json['next'], + 'previous': !exists(json, 'previous') ? undefined : json['previous'], + 'results': !exists(json, 'results') ? undefined : ((json['results'] as Array).map(UnitFromJSON)), + }; +} + +export function ListUnits200ResponseToJSON(value?: ListUnits200Response | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'count': value.count, + 'next': value.next, + 'previous': value.previous, + 'results': value.results === undefined ? undefined : ((value.results as Array).map(UnitToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/ListUserSpaces200Response.ts b/vue3/src/openapi/models/ListUserSpaces200Response.ts new file mode 100644 index 000000000..f21c733ff --- /dev/null +++ b/vue3/src/openapi/models/ListUserSpaces200Response.ts @@ -0,0 +1,96 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { UserSpace } from './UserSpace'; +import { + UserSpaceFromJSON, + UserSpaceFromJSONTyped, + UserSpaceToJSON, +} from './UserSpace'; + +/** + * + * @export + * @interface ListUserSpaces200Response + */ +export interface ListUserSpaces200Response { + /** + * + * @type {number} + * @memberof ListUserSpaces200Response + */ + count?: number; + /** + * + * @type {string} + * @memberof ListUserSpaces200Response + */ + next?: string | null; + /** + * + * @type {string} + * @memberof ListUserSpaces200Response + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof ListUserSpaces200Response + */ + results?: Array; +} + +/** + * Check if a given object implements the ListUserSpaces200Response interface. + */ +export function instanceOfListUserSpaces200Response(value: object): boolean { + let isInstance = true; + + return isInstance; +} + +export function ListUserSpaces200ResponseFromJSON(json: any): ListUserSpaces200Response { + return ListUserSpaces200ResponseFromJSONTyped(json, false); +} + +export function ListUserSpaces200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListUserSpaces200Response { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'count': !exists(json, 'count') ? undefined : json['count'], + 'next': !exists(json, 'next') ? undefined : json['next'], + 'previous': !exists(json, 'previous') ? undefined : json['previous'], + 'results': !exists(json, 'results') ? undefined : ((json['results'] as Array).map(UserSpaceFromJSON)), + }; +} + +export function ListUserSpaces200ResponseToJSON(value?: ListUserSpaces200Response | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'count': value.count, + 'next': value.next, + 'previous': value.previous, + 'results': value.results === undefined ? undefined : ((value.results as Array).map(UserSpaceToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/ListViewLogs200Response.ts b/vue3/src/openapi/models/ListViewLogs200Response.ts new file mode 100644 index 000000000..66dcf1a86 --- /dev/null +++ b/vue3/src/openapi/models/ListViewLogs200Response.ts @@ -0,0 +1,96 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { ViewLog } from './ViewLog'; +import { + ViewLogFromJSON, + ViewLogFromJSONTyped, + ViewLogToJSON, +} from './ViewLog'; + +/** + * + * @export + * @interface ListViewLogs200Response + */ +export interface ListViewLogs200Response { + /** + * + * @type {number} + * @memberof ListViewLogs200Response + */ + count?: number; + /** + * + * @type {string} + * @memberof ListViewLogs200Response + */ + next?: string | null; + /** + * + * @type {string} + * @memberof ListViewLogs200Response + */ + previous?: string | null; + /** + * + * @type {Array} + * @memberof ListViewLogs200Response + */ + results?: Array; +} + +/** + * Check if a given object implements the ListViewLogs200Response interface. + */ +export function instanceOfListViewLogs200Response(value: object): boolean { + let isInstance = true; + + return isInstance; +} + +export function ListViewLogs200ResponseFromJSON(json: any): ListViewLogs200Response { + return ListViewLogs200ResponseFromJSONTyped(json, false); +} + +export function ListViewLogs200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ListViewLogs200Response { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'count': !exists(json, 'count') ? undefined : json['count'], + 'next': !exists(json, 'next') ? undefined : json['next'], + 'previous': !exists(json, 'previous') ? undefined : json['previous'], + 'results': !exists(json, 'results') ? undefined : ((json['results'] as Array).map(ViewLogFromJSON)), + }; +} + +export function ListViewLogs200ResponseToJSON(value?: ListViewLogs200Response | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'count': value.count, + 'next': value.next, + 'previous': value.previous, + 'results': value.results === undefined ? undefined : ((value.results as Array).map(ViewLogToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/MealPlan.ts b/vue3/src/openapi/models/MealPlan.ts new file mode 100644 index 000000000..0a64d8178 --- /dev/null +++ b/vue3/src/openapi/models/MealPlan.ts @@ -0,0 +1,186 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { MealType } from './MealType'; +import { + MealTypeFromJSON, + MealTypeFromJSONTyped, + MealTypeToJSON, +} from './MealType'; +import type { RecipeOverview } from './RecipeOverview'; +import { + RecipeOverviewFromJSON, + RecipeOverviewFromJSONTyped, + RecipeOverviewToJSON, +} from './RecipeOverview'; +import type { User } from './User'; +import { + UserFromJSON, + UserFromJSONTyped, + UserToJSON, +} from './User'; + +/** + * Adds nested create feature + * @export + * @interface MealPlan + */ +export interface MealPlan { + /** + * + * @type {number} + * @memberof MealPlan + */ + readonly id: number; + /** + * + * @type {string} + * @memberof MealPlan + */ + title?: string; + /** + * + * @type {RecipeOverview} + * @memberof MealPlan + */ + recipe?: RecipeOverview; + /** + * + * @type {string} + * @memberof MealPlan + */ + servings: string; + /** + * + * @type {string} + * @memberof MealPlan + */ + note?: string; + /** + * + * @type {string} + * @memberof MealPlan + */ + readonly noteMarkdown: string; + /** + * + * @type {Date} + * @memberof MealPlan + */ + fromDate: Date; + /** + * + * @type {Date} + * @memberof MealPlan + */ + toDate?: Date; + /** + * + * @type {MealType} + * @memberof MealPlan + */ + mealType: MealType; + /** + * + * @type {number} + * @memberof MealPlan + */ + readonly createdBy: number; + /** + * + * @type {Array} + * @memberof MealPlan + */ + shared?: Array; + /** + * + * @type {string} + * @memberof MealPlan + */ + readonly recipeName: string; + /** + * + * @type {string} + * @memberof MealPlan + */ + readonly mealTypeName: string; + /** + * + * @type {string} + * @memberof MealPlan + */ + readonly shopping: string; +} + +/** + * Check if a given object implements the MealPlan interface. + */ +export function instanceOfMealPlan(value: object): boolean { + if (!('id' in value)) return false; + if (!('servings' in value)) return false; + if (!('noteMarkdown' in value)) return false; + if (!('fromDate' in value)) return false; + if (!('mealType' in value)) return false; + if (!('createdBy' in value)) return false; + if (!('recipeName' in value)) return false; + if (!('mealTypeName' in value)) return false; + if (!('shopping' in value)) return false; + return true; +} + +export function MealPlanFromJSON(json: any): MealPlan { + return MealPlanFromJSONTyped(json, false); +} + +export function MealPlanFromJSONTyped(json: any, ignoreDiscriminator: boolean): MealPlan { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'title': json['title'] == null ? undefined : json['title'], + 'recipe': json['recipe'] == null ? undefined : RecipeOverviewFromJSON(json['recipe']), + 'servings': json['servings'], + 'note': json['note'] == null ? undefined : json['note'], + 'noteMarkdown': json['note_markdown'], + 'fromDate': (new Date(json['from_date'])), + 'toDate': json['to_date'] == null ? undefined : (new Date(json['to_date'])), + 'mealType': MealTypeFromJSON(json['meal_type']), + 'createdBy': json['created_by'], + 'shared': json['shared'] == null ? undefined : ((json['shared'] as Array).map(UserFromJSON)), + 'recipeName': json['recipe_name'], + 'mealTypeName': json['meal_type_name'], + 'shopping': json['shopping'], + }; +} + +export function MealPlanToJSON(value?: MealPlan | null): any { + if (value == null) { + return value; + } + return { + + 'title': value['title'], + 'recipe': RecipeOverviewToJSON(value['recipe']), + 'servings': value['servings'], + 'note': value['note'], + 'from_date': ((value['fromDate']).toISOString().substring(0,10)), + 'to_date': value['toDate'] == null ? undefined : ((value['toDate']).toISOString().substring(0,10)), + 'meal_type': MealTypeToJSON(value['mealType']), + 'shared': value['shared'] == null ? undefined : ((value['shared'] as Array).map(UserToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/MealPlanMealType.ts b/vue3/src/openapi/models/MealPlanMealType.ts new file mode 100644 index 000000000..2ba3d0dec --- /dev/null +++ b/vue3/src/openapi/models/MealPlanMealType.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface MealPlanMealType + */ +export interface MealPlanMealType { + /** + * + * @type {number} + * @memberof MealPlanMealType + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof MealPlanMealType + */ + name: string; + /** + * + * @type {number} + * @memberof MealPlanMealType + */ + order?: number; + /** + * + * @type {string} + * @memberof MealPlanMealType + */ + color?: string | null; + /** + * + * @type {boolean} + * @memberof MealPlanMealType + */ + _default?: boolean; + /** + * + * @type {string} + * @memberof MealPlanMealType + */ + readonly createdBy?: string; +} + +/** + * Check if a given object implements the MealPlanMealType interface. + */ +export function instanceOfMealPlanMealType(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "name" in value; + + return isInstance; +} + +export function MealPlanMealTypeFromJSON(json: any): MealPlanMealType { + return MealPlanMealTypeFromJSONTyped(json, false); +} + +export function MealPlanMealTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): MealPlanMealType { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': json['name'], + 'order': !exists(json, 'order') ? undefined : json['order'], + 'color': !exists(json, 'color') ? undefined : json['color'], + '_default': !exists(json, 'default') ? undefined : json['default'], + 'createdBy': !exists(json, 'created_by') ? undefined : json['created_by'], + }; +} + +export function MealPlanMealTypeToJSON(value?: MealPlanMealType | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'name': value.name, + 'order': value.order, + 'color': value.color, + 'default': value._default, + }; +} + diff --git a/vue3/src/openapi/models/MealPlanRecipe.ts b/vue3/src/openapi/models/MealPlanRecipe.ts new file mode 100644 index 000000000..a411e7186 --- /dev/null +++ b/vue3/src/openapi/models/MealPlanRecipe.ts @@ -0,0 +1,195 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { MealPlanRecipeKeywordsInner } from './MealPlanRecipeKeywordsInner'; +import { + MealPlanRecipeKeywordsInnerFromJSON, + MealPlanRecipeKeywordsInnerFromJSONTyped, + MealPlanRecipeKeywordsInnerToJSON, +} from './MealPlanRecipeKeywordsInner'; + +/** + * + * @export + * @interface MealPlanRecipe + */ +export interface MealPlanRecipe { + /** + * + * @type {number} + * @memberof MealPlanRecipe + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof MealPlanRecipe + */ + name: string; + /** + * + * @type {string} + * @memberof MealPlanRecipe + */ + description?: string | null; + /** + * + * @type {Blob} + * @memberof MealPlanRecipe + */ + readonly image?: Blob | null; + /** + * + * @type {Array} + * @memberof MealPlanRecipe + */ + keywords: Array; + /** + * + * @type {number} + * @memberof MealPlanRecipe + */ + workingTime?: number; + /** + * + * @type {number} + * @memberof MealPlanRecipe + */ + waitingTime?: number; + /** + * + * @type {string} + * @memberof MealPlanRecipe + */ + readonly createdBy?: string; + /** + * + * @type {Date} + * @memberof MealPlanRecipe + */ + readonly createdAt?: Date; + /** + * + * @type {Date} + * @memberof MealPlanRecipe + */ + readonly updatedAt?: Date; + /** + * + * @type {boolean} + * @memberof MealPlanRecipe + */ + internal?: boolean; + /** + * + * @type {number} + * @memberof MealPlanRecipe + */ + servings?: number; + /** + * + * @type {string} + * @memberof MealPlanRecipe + */ + servingsText?: string; + /** + * + * @type {string} + * @memberof MealPlanRecipe + */ + rating?: string | null; + /** + * + * @type {Date} + * @memberof MealPlanRecipe + */ + lastCooked?: Date | null; + /** + * + * @type {string} + * @memberof MealPlanRecipe + */ + readonly _new?: string; + /** + * + * @type {string} + * @memberof MealPlanRecipe + */ + readonly recent?: string; +} + +/** + * Check if a given object implements the MealPlanRecipe interface. + */ +export function instanceOfMealPlanRecipe(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "name" in value; + isInstance = isInstance && "keywords" in value; + + return isInstance; +} + +export function MealPlanRecipeFromJSON(json: any): MealPlanRecipe { + return MealPlanRecipeFromJSONTyped(json, false); +} + +export function MealPlanRecipeFromJSONTyped(json: any, ignoreDiscriminator: boolean): MealPlanRecipe { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': json['name'], + 'description': !exists(json, 'description') ? undefined : json['description'], + 'image': !exists(json, 'image') ? undefined : json['image'], + 'keywords': ((json['keywords'] as Array).map(MealPlanRecipeKeywordsInnerFromJSON)), + 'workingTime': !exists(json, 'working_time') ? undefined : json['working_time'], + 'waitingTime': !exists(json, 'waiting_time') ? undefined : json['waiting_time'], + 'createdBy': !exists(json, 'created_by') ? undefined : json['created_by'], + 'createdAt': !exists(json, 'created_at') ? undefined : (new Date(json['created_at'])), + 'updatedAt': !exists(json, 'updated_at') ? undefined : (new Date(json['updated_at'])), + 'internal': !exists(json, 'internal') ? undefined : json['internal'], + 'servings': !exists(json, 'servings') ? undefined : json['servings'], + 'servingsText': !exists(json, 'servings_text') ? undefined : json['servings_text'], + 'rating': !exists(json, 'rating') ? undefined : json['rating'], + 'lastCooked': !exists(json, 'last_cooked') ? undefined : (json['last_cooked'] === null ? null : new Date(json['last_cooked'])), + '_new': !exists(json, 'new') ? undefined : json['new'], + 'recent': !exists(json, 'recent') ? undefined : json['recent'], + }; +} + +export function MealPlanRecipeToJSON(value?: MealPlanRecipe | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'name': value.name, + 'description': value.description, + 'keywords': ((value.keywords as Array).map(MealPlanRecipeKeywordsInnerToJSON)), + 'working_time': value.workingTime, + 'waiting_time': value.waitingTime, + 'internal': value.internal, + 'servings': value.servings, + 'servings_text': value.servingsText, + 'rating': value.rating, + 'last_cooked': value.lastCooked === undefined ? undefined : (value.lastCooked === null ? null : value.lastCooked.toISOString()), + }; +} + diff --git a/vue3/src/openapi/models/MealPlanRecipeKeywordsInner.ts b/vue3/src/openapi/models/MealPlanRecipeKeywordsInner.ts new file mode 100644 index 000000000..095994090 --- /dev/null +++ b/vue3/src/openapi/models/MealPlanRecipeKeywordsInner.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface MealPlanRecipeKeywordsInner + */ +export interface MealPlanRecipeKeywordsInner { + /** + * + * @type {number} + * @memberof MealPlanRecipeKeywordsInner + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof MealPlanRecipeKeywordsInner + */ + readonly label?: string; +} + +/** + * Check if a given object implements the MealPlanRecipeKeywordsInner interface. + */ +export function instanceOfMealPlanRecipeKeywordsInner(value: object): boolean { + let isInstance = true; + + return isInstance; +} + +export function MealPlanRecipeKeywordsInnerFromJSON(json: any): MealPlanRecipeKeywordsInner { + return MealPlanRecipeKeywordsInnerFromJSONTyped(json, false); +} + +export function MealPlanRecipeKeywordsInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): MealPlanRecipeKeywordsInner { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'label': !exists(json, 'label') ? undefined : json['label'], + }; +} + +export function MealPlanRecipeKeywordsInnerToJSON(value?: MealPlanRecipeKeywordsInner | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + }; +} + diff --git a/vue3/src/openapi/models/MealType.ts b/vue3/src/openapi/models/MealType.ts new file mode 100644 index 000000000..59ed0853a --- /dev/null +++ b/vue3/src/openapi/models/MealType.ts @@ -0,0 +1,101 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * Adds nested create feature + * @export + * @interface MealType + */ +export interface MealType { + /** + * + * @type {number} + * @memberof MealType + */ + readonly id: number; + /** + * + * @type {string} + * @memberof MealType + */ + name: string; + /** + * + * @type {number} + * @memberof MealType + */ + order?: number; + /** + * + * @type {string} + * @memberof MealType + */ + color?: string; + /** + * + * @type {boolean} + * @memberof MealType + */ + _default?: boolean; + /** + * + * @type {number} + * @memberof MealType + */ + readonly createdBy: number; +} + +/** + * Check if a given object implements the MealType interface. + */ +export function instanceOfMealType(value: object): boolean { + if (!('id' in value)) return false; + if (!('name' in value)) return false; + if (!('createdBy' in value)) return false; + return true; +} + +export function MealTypeFromJSON(json: any): MealType { + return MealTypeFromJSONTyped(json, false); +} + +export function MealTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): MealType { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'], + 'order': json['order'] == null ? undefined : json['order'], + 'color': json['color'] == null ? undefined : json['color'], + '_default': json['default'] == null ? undefined : json['default'], + 'createdBy': json['created_by'], + }; +} + +export function MealTypeToJSON(value?: MealType | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'order': value['order'], + 'color': value['color'], + 'default': value['_default'], + }; +} + diff --git a/vue3/src/openapi/models/MethodEnum.ts b/vue3/src/openapi/models/MethodEnum.ts new file mode 100644 index 000000000..9c9eb0afe --- /dev/null +++ b/vue3/src/openapi/models/MethodEnum.ts @@ -0,0 +1,41 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** + * * `DB` - Dropbox + * * `NEXTCLOUD` - Nextcloud + * * `LOCAL` - Local + * @export + */ +export const MethodEnum = { + Db: 'DB', + Nextcloud: 'NEXTCLOUD', + Local: 'LOCAL' +} as const; +export type MethodEnum = typeof MethodEnum[keyof typeof MethodEnum]; + + +export function MethodEnumFromJSON(json: any): MethodEnum { + return MethodEnumFromJSONTyped(json, false); +} + +export function MethodEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): MethodEnum { + return json as MethodEnum; +} + +export function MethodEnumToJSON(value?: MethodEnum | null): any { + return value as any; +} + diff --git a/vue3/src/openapi/models/NullEnum.ts b/vue3/src/openapi/models/NullEnum.ts new file mode 100644 index 000000000..3179749a0 --- /dev/null +++ b/vue3/src/openapi/models/NullEnum.ts @@ -0,0 +1,37 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** + * + * @export + */ +export const NullEnum = { + Null: 'null' +} as const; +export type NullEnum = typeof NullEnum[keyof typeof NullEnum]; + + +export function NullEnumFromJSON(json: any): NullEnum { + return NullEnumFromJSONTyped(json, false); +} + +export function NullEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): NullEnum { + return json as NullEnum; +} + +export function NullEnumToJSON(value?: NullEnum | null): any { + return value as any; +} + diff --git a/vue3/src/openapi/models/NutritionInformation.ts b/vue3/src/openapi/models/NutritionInformation.ts new file mode 100644 index 000000000..ccd7aecdf --- /dev/null +++ b/vue3/src/openapi/models/NutritionInformation.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface NutritionInformation + */ +export interface NutritionInformation { + /** + * + * @type {number} + * @memberof NutritionInformation + */ + readonly id: number; + /** + * + * @type {string} + * @memberof NutritionInformation + */ + carbohydrates: string; + /** + * + * @type {string} + * @memberof NutritionInformation + */ + fats: string; + /** + * + * @type {string} + * @memberof NutritionInformation + */ + proteins: string; + /** + * + * @type {string} + * @memberof NutritionInformation + */ + calories: string; + /** + * + * @type {string} + * @memberof NutritionInformation + */ + source?: string; +} + +/** + * Check if a given object implements the NutritionInformation interface. + */ +export function instanceOfNutritionInformation(value: object): boolean { + if (!('id' in value)) return false; + if (!('carbohydrates' in value)) return false; + if (!('fats' in value)) return false; + if (!('proteins' in value)) return false; + if (!('calories' in value)) return false; + return true; +} + +export function NutritionInformationFromJSON(json: any): NutritionInformation { + return NutritionInformationFromJSONTyped(json, false); +} + +export function NutritionInformationFromJSONTyped(json: any, ignoreDiscriminator: boolean): NutritionInformation { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'carbohydrates': json['carbohydrates'], + 'fats': json['fats'], + 'proteins': json['proteins'], + 'calories': json['calories'], + 'source': json['source'] == null ? undefined : json['source'], + }; +} + +export function NutritionInformationToJSON(value?: NutritionInformation | null): any { + if (value == null) { + return value; + } + return { + + 'carbohydrates': value['carbohydrates'], + 'fats': value['fats'], + 'proteins': value['proteins'], + 'calories': value['calories'], + 'source': value['source'], + }; +} + diff --git a/vue3/src/openapi/models/OpenDataCategory.ts b/vue3/src/openapi/models/OpenDataCategory.ts new file mode 100644 index 000000000..a7d895e79 --- /dev/null +++ b/vue3/src/openapi/models/OpenDataCategory.ts @@ -0,0 +1,152 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { OpenDataVersion } from './OpenDataVersion'; +import { + OpenDataVersionFromJSON, + OpenDataVersionFromJSONTyped, + OpenDataVersionToJSON, +} from './OpenDataVersion'; + +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface OpenDataCategory + */ +export interface OpenDataCategory { + /** + * + * @type {number} + * @memberof OpenDataCategory + */ + readonly id: number; + /** + * + * @type {OpenDataVersion} + * @memberof OpenDataCategory + */ + version: OpenDataVersion; + /** + * + * @type {string} + * @memberof OpenDataCategory + */ + slug: string; + /** + * + * @type {string} + * @memberof OpenDataCategory + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataCategory + */ + description?: string; + /** + * + * @type {string} + * @memberof OpenDataCategory + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataCategory + */ + readonly createdBy: string; +} + +/** + * Check if a given object implements the OpenDataCategory interface. + */ +export function instanceOfOpenDataCategory(value: object): boolean { + if (!('id' in value)) return false; + if (!('version' in value)) return false; + if (!('slug' in value)) return false; + if (!('name' in value)) return false; + if (!('createdBy' in value)) return false; + return true; +} + +export function OpenDataCategoryFromJSON(json: any): OpenDataCategory { + return OpenDataCategoryFromJSONTyped(json, false); +} + +export function OpenDataCategoryFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenDataCategory { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'version': OpenDataVersionFromJSON(json['version']), + 'slug': json['slug'], + 'name': json['name'], + 'description': json['description'] == null ? undefined : json['description'], + 'comment': json['comment'] == null ? undefined : json['comment'], + 'createdBy': json['created_by'], + }; +} + +export function OpenDataCategoryToJSON(value?: OpenDataCategory | null): any { + if (value == null) { + return value; + } + return { + + 'version': OpenDataVersionToJSON(value['version']), + 'slug': value['slug'], + 'name': value['name'], + 'description': value['description'], + 'comment': value['comment'], + }; +} + diff --git a/vue3/src/openapi/models/OpenDataConversion.ts b/vue3/src/openapi/models/OpenDataConversion.ts new file mode 100644 index 000000000..fd733be1e --- /dev/null +++ b/vue3/src/openapi/models/OpenDataConversion.ts @@ -0,0 +1,167 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { OpenDataFood } from './OpenDataFood'; +import { + OpenDataFoodFromJSON, + OpenDataFoodFromJSONTyped, + OpenDataFoodToJSON, +} from './OpenDataFood'; +import type { OpenDataUnit } from './OpenDataUnit'; +import { + OpenDataUnitFromJSON, + OpenDataUnitFromJSONTyped, + OpenDataUnitToJSON, +} from './OpenDataUnit'; +import type { OpenDataVersion } from './OpenDataVersion'; +import { + OpenDataVersionFromJSON, + OpenDataVersionFromJSONTyped, + OpenDataVersionToJSON, +} from './OpenDataVersion'; + +/** + * Adds nested create feature + * @export + * @interface OpenDataConversion + */ +export interface OpenDataConversion { + /** + * + * @type {number} + * @memberof OpenDataConversion + */ + readonly id: number; + /** + * + * @type {OpenDataVersion} + * @memberof OpenDataConversion + */ + version: OpenDataVersion; + /** + * + * @type {string} + * @memberof OpenDataConversion + */ + slug: string; + /** + * + * @type {OpenDataFood} + * @memberof OpenDataConversion + */ + food: OpenDataFood; + /** + * + * @type {string} + * @memberof OpenDataConversion + */ + baseAmount: string; + /** + * + * @type {OpenDataUnit} + * @memberof OpenDataConversion + */ + baseUnit: OpenDataUnit; + /** + * + * @type {string} + * @memberof OpenDataConversion + */ + convertedAmount: string; + /** + * + * @type {OpenDataUnit} + * @memberof OpenDataConversion + */ + convertedUnit: OpenDataUnit; + /** + * + * @type {string} + * @memberof OpenDataConversion + */ + source: string; + /** + * + * @type {string} + * @memberof OpenDataConversion + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataConversion + */ + readonly createdBy: string; +} + +/** + * Check if a given object implements the OpenDataConversion interface. + */ +export function instanceOfOpenDataConversion(value: object): boolean { + if (!('id' in value)) return false; + if (!('version' in value)) return false; + if (!('slug' in value)) return false; + if (!('food' in value)) return false; + if (!('baseAmount' in value)) return false; + if (!('baseUnit' in value)) return false; + if (!('convertedAmount' in value)) return false; + if (!('convertedUnit' in value)) return false; + if (!('source' in value)) return false; + if (!('createdBy' in value)) return false; + return true; +} + +export function OpenDataConversionFromJSON(json: any): OpenDataConversion { + return OpenDataConversionFromJSONTyped(json, false); +} + +export function OpenDataConversionFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenDataConversion { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'version': OpenDataVersionFromJSON(json['version']), + 'slug': json['slug'], + 'food': OpenDataFoodFromJSON(json['food']), + 'baseAmount': json['base_amount'], + 'baseUnit': OpenDataUnitFromJSON(json['base_unit']), + 'convertedAmount': json['converted_amount'], + 'convertedUnit': OpenDataUnitFromJSON(json['converted_unit']), + 'source': json['source'], + 'comment': json['comment'] == null ? undefined : json['comment'], + 'createdBy': json['created_by'], + }; +} + +export function OpenDataConversionToJSON(value?: OpenDataConversion | null): any { + if (value == null) { + return value; + } + return { + + 'version': OpenDataVersionToJSON(value['version']), + 'slug': value['slug'], + 'food': OpenDataFoodToJSON(value['food']), + 'base_amount': value['baseAmount'], + 'base_unit': OpenDataUnitToJSON(value['baseUnit']), + 'converted_amount': value['convertedAmount'], + 'converted_unit': OpenDataUnitToJSON(value['convertedUnit']), + 'source': value['source'], + 'comment': value['comment'], + }; +} + diff --git a/vue3/src/openapi/models/OpenDataConversionFood.ts b/vue3/src/openapi/models/OpenDataConversionFood.ts new file mode 100644 index 000000000..4df835f98 --- /dev/null +++ b/vue3/src/openapi/models/OpenDataConversionFood.ts @@ -0,0 +1,230 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { OpenDataConversionFoodPreferredUnitMetric } from './OpenDataConversionFoodPreferredUnitMetric'; +import { + OpenDataConversionFoodPreferredUnitMetricFromJSON, + OpenDataConversionFoodPreferredUnitMetricFromJSONTyped, + OpenDataConversionFoodPreferredUnitMetricToJSON, +} from './OpenDataConversionFoodPreferredUnitMetric'; +import type { OpenDataConversionFoodPropertiesFoodUnit } from './OpenDataConversionFoodPropertiesFoodUnit'; +import { + OpenDataConversionFoodPropertiesFoodUnitFromJSON, + OpenDataConversionFoodPropertiesFoodUnitFromJSONTyped, + OpenDataConversionFoodPropertiesFoodUnitToJSON, +} from './OpenDataConversionFoodPropertiesFoodUnit'; +import type { OpenDataConversionFoodPropertiesInner } from './OpenDataConversionFoodPropertiesInner'; +import { + OpenDataConversionFoodPropertiesInnerFromJSON, + OpenDataConversionFoodPropertiesInnerFromJSONTyped, + OpenDataConversionFoodPropertiesInnerToJSON, +} from './OpenDataConversionFoodPropertiesInner'; +import type { OpenDataStoreCategoryToStoreInnerCategory } from './OpenDataStoreCategoryToStoreInnerCategory'; +import { + OpenDataStoreCategoryToStoreInnerCategoryFromJSON, + OpenDataStoreCategoryToStoreInnerCategoryFromJSONTyped, + OpenDataStoreCategoryToStoreInnerCategoryToJSON, +} from './OpenDataStoreCategoryToStoreInnerCategory'; +import type { OpenDataUnitVersion } from './OpenDataUnitVersion'; +import { + OpenDataUnitVersionFromJSON, + OpenDataUnitVersionFromJSONTyped, + OpenDataUnitVersionToJSON, +} from './OpenDataUnitVersion'; + +/** + * + * @export + * @interface OpenDataConversionFood + */ +export interface OpenDataConversionFood { + /** + * + * @type {number} + * @memberof OpenDataConversionFood + */ + readonly id?: number; + /** + * + * @type {OpenDataUnitVersion} + * @memberof OpenDataConversionFood + */ + version: OpenDataUnitVersion; + /** + * + * @type {string} + * @memberof OpenDataConversionFood + */ + slug: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFood + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFood + */ + pluralName: string; + /** + * + * @type {OpenDataStoreCategoryToStoreInnerCategory} + * @memberof OpenDataConversionFood + */ + storeCategory: OpenDataStoreCategoryToStoreInnerCategory; + /** + * + * @type {OpenDataConversionFoodPreferredUnitMetric} + * @memberof OpenDataConversionFood + */ + preferredUnitMetric?: OpenDataConversionFoodPreferredUnitMetric | null; + /** + * + * @type {OpenDataConversionFoodPreferredUnitMetric} + * @memberof OpenDataConversionFood + */ + preferredShoppingUnitMetric?: OpenDataConversionFoodPreferredUnitMetric | null; + /** + * + * @type {OpenDataConversionFoodPreferredUnitMetric} + * @memberof OpenDataConversionFood + */ + preferredUnitImperial?: OpenDataConversionFoodPreferredUnitMetric | null; + /** + * + * @type {OpenDataConversionFoodPreferredUnitMetric} + * @memberof OpenDataConversionFood + */ + preferredShoppingUnitImperial?: OpenDataConversionFoodPreferredUnitMetric | null; + /** + * + * @type {Array} + * @memberof OpenDataConversionFood + */ + properties: Array | null; + /** + * + * @type {number} + * @memberof OpenDataConversionFood + */ + propertiesFoodAmount?: number; + /** + * + * @type {OpenDataConversionFoodPropertiesFoodUnit} + * @memberof OpenDataConversionFood + */ + propertiesFoodUnit: OpenDataConversionFoodPropertiesFoodUnit; + /** + * + * @type {string} + * @memberof OpenDataConversionFood + */ + propertiesSource?: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFood + */ + fdcId: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFood + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFood + */ + readonly createdBy?: string; +} + +/** + * Check if a given object implements the OpenDataConversionFood interface. + */ +export function instanceOfOpenDataConversionFood(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "version" in value; + isInstance = isInstance && "slug" in value; + isInstance = isInstance && "name" in value; + isInstance = isInstance && "pluralName" in value; + isInstance = isInstance && "storeCategory" in value; + isInstance = isInstance && "properties" in value; + isInstance = isInstance && "propertiesFoodUnit" in value; + isInstance = isInstance && "fdcId" in value; + + return isInstance; +} + +export function OpenDataConversionFoodFromJSON(json: any): OpenDataConversionFood { + return OpenDataConversionFoodFromJSONTyped(json, false); +} + +export function OpenDataConversionFoodFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenDataConversionFood { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'version': OpenDataUnitVersionFromJSON(json['version']), + 'slug': json['slug'], + 'name': json['name'], + 'pluralName': json['plural_name'], + 'storeCategory': OpenDataStoreCategoryToStoreInnerCategoryFromJSON(json['store_category']), + 'preferredUnitMetric': !exists(json, 'preferred_unit_metric') ? undefined : OpenDataConversionFoodPreferredUnitMetricFromJSON(json['preferred_unit_metric']), + 'preferredShoppingUnitMetric': !exists(json, 'preferred_shopping_unit_metric') ? undefined : OpenDataConversionFoodPreferredUnitMetricFromJSON(json['preferred_shopping_unit_metric']), + 'preferredUnitImperial': !exists(json, 'preferred_unit_imperial') ? undefined : OpenDataConversionFoodPreferredUnitMetricFromJSON(json['preferred_unit_imperial']), + 'preferredShoppingUnitImperial': !exists(json, 'preferred_shopping_unit_imperial') ? undefined : OpenDataConversionFoodPreferredUnitMetricFromJSON(json['preferred_shopping_unit_imperial']), + 'properties': (json['properties'] === null ? null : (json['properties'] as Array).map(OpenDataConversionFoodPropertiesInnerFromJSON)), + 'propertiesFoodAmount': !exists(json, 'properties_food_amount') ? undefined : json['properties_food_amount'], + 'propertiesFoodUnit': OpenDataConversionFoodPropertiesFoodUnitFromJSON(json['properties_food_unit']), + 'propertiesSource': !exists(json, 'properties_source') ? undefined : json['properties_source'], + 'fdcId': json['fdc_id'], + 'comment': !exists(json, 'comment') ? undefined : json['comment'], + 'createdBy': !exists(json, 'created_by') ? undefined : json['created_by'], + }; +} + +export function OpenDataConversionFoodToJSON(value?: OpenDataConversionFood | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'version': OpenDataUnitVersionToJSON(value.version), + 'slug': value.slug, + 'name': value.name, + 'plural_name': value.pluralName, + 'store_category': OpenDataStoreCategoryToStoreInnerCategoryToJSON(value.storeCategory), + 'preferred_unit_metric': OpenDataConversionFoodPreferredUnitMetricToJSON(value.preferredUnitMetric), + 'preferred_shopping_unit_metric': OpenDataConversionFoodPreferredUnitMetricToJSON(value.preferredShoppingUnitMetric), + 'preferred_unit_imperial': OpenDataConversionFoodPreferredUnitMetricToJSON(value.preferredUnitImperial), + 'preferred_shopping_unit_imperial': OpenDataConversionFoodPreferredUnitMetricToJSON(value.preferredShoppingUnitImperial), + 'properties': (value.properties === null ? null : (value.properties as Array).map(OpenDataConversionFoodPropertiesInnerToJSON)), + 'properties_food_amount': value.propertiesFoodAmount, + 'properties_food_unit': OpenDataConversionFoodPropertiesFoodUnitToJSON(value.propertiesFoodUnit), + 'properties_source': value.propertiesSource, + 'fdc_id': value.fdcId, + 'comment': value.comment, + }; +} + diff --git a/vue3/src/openapi/models/OpenDataConversionFoodPreferredUnitMetric.ts b/vue3/src/openapi/models/OpenDataConversionFoodPreferredUnitMetric.ts new file mode 100644 index 000000000..1dd6437f4 --- /dev/null +++ b/vue3/src/openapi/models/OpenDataConversionFoodPreferredUnitMetric.ts @@ -0,0 +1,174 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { OpenDataUnitVersion } from './OpenDataUnitVersion'; +import { + OpenDataUnitVersionFromJSON, + OpenDataUnitVersionFromJSONTyped, + OpenDataUnitVersionToJSON, +} from './OpenDataUnitVersion'; + +/** + * + * @export + * @interface OpenDataConversionFoodPreferredUnitMetric + */ +export interface OpenDataConversionFoodPreferredUnitMetric { + /** + * + * @type {number} + * @memberof OpenDataConversionFoodPreferredUnitMetric + */ + readonly id?: number; + /** + * + * @type {OpenDataUnitVersion} + * @memberof OpenDataConversionFoodPreferredUnitMetric + */ + version: OpenDataUnitVersion; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPreferredUnitMetric + */ + slug: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPreferredUnitMetric + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPreferredUnitMetric + */ + pluralName?: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPreferredUnitMetric + */ + baseUnit?: OpenDataConversionFoodPreferredUnitMetricBaseUnitEnum; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPreferredUnitMetric + */ + type: OpenDataConversionFoodPreferredUnitMetricTypeEnum; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPreferredUnitMetric + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPreferredUnitMetric + */ + readonly createdBy?: string; +} + + +/** + * @export + */ +export const OpenDataConversionFoodPreferredUnitMetricBaseUnitEnum = { + G: 'G', + Kg: 'KG', + Ml: 'ML', + L: 'L', + Ounce: 'OUNCE', + Pound: 'POUND', + FluidOunce: 'FLUID_OUNCE', + Tsp: 'TSP', + Tbsp: 'TBSP', + Cup: 'CUP', + Pint: 'PINT', + Quart: 'QUART', + Gallon: 'GALLON', + ImperialFluidOunce: 'IMPERIAL_FLUID_OUNCE', + ImperialPint: 'IMPERIAL_PINT', + ImperialQuart: 'IMPERIAL_QUART', + ImperialGallon: 'IMPERIAL_GALLON' +} as const; +export type OpenDataConversionFoodPreferredUnitMetricBaseUnitEnum = typeof OpenDataConversionFoodPreferredUnitMetricBaseUnitEnum[keyof typeof OpenDataConversionFoodPreferredUnitMetricBaseUnitEnum]; + +/** + * @export + */ +export const OpenDataConversionFoodPreferredUnitMetricTypeEnum = { + Weight: 'WEIGHT', + Volume: 'VOLUME', + Other: 'OTHER' +} as const; +export type OpenDataConversionFoodPreferredUnitMetricTypeEnum = typeof OpenDataConversionFoodPreferredUnitMetricTypeEnum[keyof typeof OpenDataConversionFoodPreferredUnitMetricTypeEnum]; + + +/** + * Check if a given object implements the OpenDataConversionFoodPreferredUnitMetric interface. + */ +export function instanceOfOpenDataConversionFoodPreferredUnitMetric(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "version" in value; + isInstance = isInstance && "slug" in value; + isInstance = isInstance && "name" in value; + isInstance = isInstance && "type" in value; + + return isInstance; +} + +export function OpenDataConversionFoodPreferredUnitMetricFromJSON(json: any): OpenDataConversionFoodPreferredUnitMetric { + return OpenDataConversionFoodPreferredUnitMetricFromJSONTyped(json, false); +} + +export function OpenDataConversionFoodPreferredUnitMetricFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenDataConversionFoodPreferredUnitMetric { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'version': OpenDataUnitVersionFromJSON(json['version']), + 'slug': json['slug'], + 'name': json['name'], + 'pluralName': !exists(json, 'plural_name') ? undefined : json['plural_name'], + 'baseUnit': !exists(json, 'base_unit') ? undefined : json['base_unit'], + 'type': json['type'], + 'comment': !exists(json, 'comment') ? undefined : json['comment'], + 'createdBy': !exists(json, 'created_by') ? undefined : json['created_by'], + }; +} + +export function OpenDataConversionFoodPreferredUnitMetricToJSON(value?: OpenDataConversionFoodPreferredUnitMetric | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'version': OpenDataUnitVersionToJSON(value.version), + 'slug': value.slug, + 'name': value.name, + 'plural_name': value.pluralName, + 'base_unit': value.baseUnit, + 'type': value.type, + 'comment': value.comment, + }; +} + diff --git a/vue3/src/openapi/models/OpenDataConversionFoodPropertiesFoodUnit.ts b/vue3/src/openapi/models/OpenDataConversionFoodPropertiesFoodUnit.ts new file mode 100644 index 000000000..c71dd107a --- /dev/null +++ b/vue3/src/openapi/models/OpenDataConversionFoodPropertiesFoodUnit.ts @@ -0,0 +1,174 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { OpenDataUnitVersion } from './OpenDataUnitVersion'; +import { + OpenDataUnitVersionFromJSON, + OpenDataUnitVersionFromJSONTyped, + OpenDataUnitVersionToJSON, +} from './OpenDataUnitVersion'; + +/** + * + * @export + * @interface OpenDataConversionFoodPropertiesFoodUnit + */ +export interface OpenDataConversionFoodPropertiesFoodUnit { + /** + * + * @type {number} + * @memberof OpenDataConversionFoodPropertiesFoodUnit + */ + readonly id?: number; + /** + * + * @type {OpenDataUnitVersion} + * @memberof OpenDataConversionFoodPropertiesFoodUnit + */ + version: OpenDataUnitVersion; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPropertiesFoodUnit + */ + slug: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPropertiesFoodUnit + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPropertiesFoodUnit + */ + pluralName?: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPropertiesFoodUnit + */ + baseUnit?: OpenDataConversionFoodPropertiesFoodUnitBaseUnitEnum; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPropertiesFoodUnit + */ + type: OpenDataConversionFoodPropertiesFoodUnitTypeEnum; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPropertiesFoodUnit + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPropertiesFoodUnit + */ + readonly createdBy?: string; +} + + +/** + * @export + */ +export const OpenDataConversionFoodPropertiesFoodUnitBaseUnitEnum = { + G: 'G', + Kg: 'KG', + Ml: 'ML', + L: 'L', + Ounce: 'OUNCE', + Pound: 'POUND', + FluidOunce: 'FLUID_OUNCE', + Tsp: 'TSP', + Tbsp: 'TBSP', + Cup: 'CUP', + Pint: 'PINT', + Quart: 'QUART', + Gallon: 'GALLON', + ImperialFluidOunce: 'IMPERIAL_FLUID_OUNCE', + ImperialPint: 'IMPERIAL_PINT', + ImperialQuart: 'IMPERIAL_QUART', + ImperialGallon: 'IMPERIAL_GALLON' +} as const; +export type OpenDataConversionFoodPropertiesFoodUnitBaseUnitEnum = typeof OpenDataConversionFoodPropertiesFoodUnitBaseUnitEnum[keyof typeof OpenDataConversionFoodPropertiesFoodUnitBaseUnitEnum]; + +/** + * @export + */ +export const OpenDataConversionFoodPropertiesFoodUnitTypeEnum = { + Weight: 'WEIGHT', + Volume: 'VOLUME', + Other: 'OTHER' +} as const; +export type OpenDataConversionFoodPropertiesFoodUnitTypeEnum = typeof OpenDataConversionFoodPropertiesFoodUnitTypeEnum[keyof typeof OpenDataConversionFoodPropertiesFoodUnitTypeEnum]; + + +/** + * Check if a given object implements the OpenDataConversionFoodPropertiesFoodUnit interface. + */ +export function instanceOfOpenDataConversionFoodPropertiesFoodUnit(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "version" in value; + isInstance = isInstance && "slug" in value; + isInstance = isInstance && "name" in value; + isInstance = isInstance && "type" in value; + + return isInstance; +} + +export function OpenDataConversionFoodPropertiesFoodUnitFromJSON(json: any): OpenDataConversionFoodPropertiesFoodUnit { + return OpenDataConversionFoodPropertiesFoodUnitFromJSONTyped(json, false); +} + +export function OpenDataConversionFoodPropertiesFoodUnitFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenDataConversionFoodPropertiesFoodUnit { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'version': OpenDataUnitVersionFromJSON(json['version']), + 'slug': json['slug'], + 'name': json['name'], + 'pluralName': !exists(json, 'plural_name') ? undefined : json['plural_name'], + 'baseUnit': !exists(json, 'base_unit') ? undefined : json['base_unit'], + 'type': json['type'], + 'comment': !exists(json, 'comment') ? undefined : json['comment'], + 'createdBy': !exists(json, 'created_by') ? undefined : json['created_by'], + }; +} + +export function OpenDataConversionFoodPropertiesFoodUnitToJSON(value?: OpenDataConversionFoodPropertiesFoodUnit | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'version': OpenDataUnitVersionToJSON(value.version), + 'slug': value.slug, + 'name': value.name, + 'plural_name': value.pluralName, + 'base_unit': value.baseUnit, + 'type': value.type, + 'comment': value.comment, + }; +} + diff --git a/vue3/src/openapi/models/OpenDataConversionFoodPropertiesInner.ts b/vue3/src/openapi/models/OpenDataConversionFoodPropertiesInner.ts new file mode 100644 index 000000000..ac69821ed --- /dev/null +++ b/vue3/src/openapi/models/OpenDataConversionFoodPropertiesInner.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { OpenDataConversionFoodPropertiesInnerProperty } from './OpenDataConversionFoodPropertiesInnerProperty'; +import { + OpenDataConversionFoodPropertiesInnerPropertyFromJSON, + OpenDataConversionFoodPropertiesInnerPropertyFromJSONTyped, + OpenDataConversionFoodPropertiesInnerPropertyToJSON, +} from './OpenDataConversionFoodPropertiesInnerProperty'; + +/** + * + * @export + * @interface OpenDataConversionFoodPropertiesInner + */ +export interface OpenDataConversionFoodPropertiesInner { + /** + * + * @type {number} + * @memberof OpenDataConversionFoodPropertiesInner + */ + readonly id?: number; + /** + * + * @type {OpenDataConversionFoodPropertiesInnerProperty} + * @memberof OpenDataConversionFoodPropertiesInner + */ + property: OpenDataConversionFoodPropertiesInnerProperty; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPropertiesInner + */ + propertyAmount: string; +} + +/** + * Check if a given object implements the OpenDataConversionFoodPropertiesInner interface. + */ +export function instanceOfOpenDataConversionFoodPropertiesInner(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "property" in value; + isInstance = isInstance && "propertyAmount" in value; + + return isInstance; +} + +export function OpenDataConversionFoodPropertiesInnerFromJSON(json: any): OpenDataConversionFoodPropertiesInner { + return OpenDataConversionFoodPropertiesInnerFromJSONTyped(json, false); +} + +export function OpenDataConversionFoodPropertiesInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenDataConversionFoodPropertiesInner { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'property': OpenDataConversionFoodPropertiesInnerPropertyFromJSON(json['property']), + 'propertyAmount': json['property_amount'], + }; +} + +export function OpenDataConversionFoodPropertiesInnerToJSON(value?: OpenDataConversionFoodPropertiesInner | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'property': OpenDataConversionFoodPropertiesInnerPropertyToJSON(value.property), + 'property_amount': value.propertyAmount, + }; +} + diff --git a/vue3/src/openapi/models/OpenDataConversionFoodPropertiesInnerProperty.ts b/vue3/src/openapi/models/OpenDataConversionFoodPropertiesInnerProperty.ts new file mode 100644 index 000000000..8e7be8413 --- /dev/null +++ b/vue3/src/openapi/models/OpenDataConversionFoodPropertiesInnerProperty.ts @@ -0,0 +1,129 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { OpenDataUnitVersion } from './OpenDataUnitVersion'; +import { + OpenDataUnitVersionFromJSON, + OpenDataUnitVersionFromJSONTyped, + OpenDataUnitVersionToJSON, +} from './OpenDataUnitVersion'; + +/** + * + * @export + * @interface OpenDataConversionFoodPropertiesInnerProperty + */ +export interface OpenDataConversionFoodPropertiesInnerProperty { + /** + * + * @type {number} + * @memberof OpenDataConversionFoodPropertiesInnerProperty + */ + readonly id?: number; + /** + * + * @type {OpenDataUnitVersion} + * @memberof OpenDataConversionFoodPropertiesInnerProperty + */ + version: OpenDataUnitVersion; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPropertiesInnerProperty + */ + slug: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPropertiesInnerProperty + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPropertiesInnerProperty + */ + unit?: string; + /** + * + * @type {number} + * @memberof OpenDataConversionFoodPropertiesInnerProperty + */ + fdcId?: number | null; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPropertiesInnerProperty + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataConversionFoodPropertiesInnerProperty + */ + readonly createdBy?: string; +} + +/** + * Check if a given object implements the OpenDataConversionFoodPropertiesInnerProperty interface. + */ +export function instanceOfOpenDataConversionFoodPropertiesInnerProperty(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "version" in value; + isInstance = isInstance && "slug" in value; + isInstance = isInstance && "name" in value; + + return isInstance; +} + +export function OpenDataConversionFoodPropertiesInnerPropertyFromJSON(json: any): OpenDataConversionFoodPropertiesInnerProperty { + return OpenDataConversionFoodPropertiesInnerPropertyFromJSONTyped(json, false); +} + +export function OpenDataConversionFoodPropertiesInnerPropertyFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenDataConversionFoodPropertiesInnerProperty { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'version': OpenDataUnitVersionFromJSON(json['version']), + 'slug': json['slug'], + 'name': json['name'], + 'unit': !exists(json, 'unit') ? undefined : json['unit'], + 'fdcId': !exists(json, 'fdc_id') ? undefined : json['fdc_id'], + 'comment': !exists(json, 'comment') ? undefined : json['comment'], + 'createdBy': !exists(json, 'created_by') ? undefined : json['created_by'], + }; +} + +export function OpenDataConversionFoodPropertiesInnerPropertyToJSON(value?: OpenDataConversionFoodPropertiesInnerProperty | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'version': OpenDataUnitVersionToJSON(value.version), + 'slug': value.slug, + 'name': value.name, + 'unit': value.unit, + 'fdc_id': value.fdcId, + 'comment': value.comment, + }; +} + diff --git a/vue3/src/openapi/models/OpenDataFood.ts b/vue3/src/openapi/models/OpenDataFood.ts new file mode 100644 index 000000000..80839db3e --- /dev/null +++ b/vue3/src/openapi/models/OpenDataFood.ts @@ -0,0 +1,255 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { OpenDataCategory } from './OpenDataCategory'; +import { + OpenDataCategoryFromJSON, + OpenDataCategoryFromJSONTyped, + OpenDataCategoryToJSON, +} from './OpenDataCategory'; +import type { OpenDataFoodProperty } from './OpenDataFoodProperty'; +import { + OpenDataFoodPropertyFromJSON, + OpenDataFoodPropertyFromJSONTyped, + OpenDataFoodPropertyToJSON, +} from './OpenDataFoodProperty'; +import type { OpenDataUnit } from './OpenDataUnit'; +import { + OpenDataUnitFromJSON, + OpenDataUnitFromJSONTyped, + OpenDataUnitToJSON, +} from './OpenDataUnit'; +import type { OpenDataVersion } from './OpenDataVersion'; +import { + OpenDataVersionFromJSON, + OpenDataVersionFromJSONTyped, + OpenDataVersionToJSON, +} from './OpenDataVersion'; + +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface OpenDataFood + */ +export interface OpenDataFood { + /** + * + * @type {number} + * @memberof OpenDataFood + */ + readonly id: number; + /** + * + * @type {OpenDataVersion} + * @memberof OpenDataFood + */ + version: OpenDataVersion; + /** + * + * @type {string} + * @memberof OpenDataFood + */ + slug: string; + /** + * + * @type {string} + * @memberof OpenDataFood + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataFood + */ + pluralName: string; + /** + * + * @type {OpenDataCategory} + * @memberof OpenDataFood + */ + storeCategory: OpenDataCategory; + /** + * + * @type {OpenDataUnit} + * @memberof OpenDataFood + */ + preferredUnitMetric?: OpenDataUnit; + /** + * + * @type {OpenDataUnit} + * @memberof OpenDataFood + */ + preferredShoppingUnitMetric?: OpenDataUnit; + /** + * + * @type {OpenDataUnit} + * @memberof OpenDataFood + */ + preferredUnitImperial?: OpenDataUnit; + /** + * + * @type {OpenDataUnit} + * @memberof OpenDataFood + */ + preferredShoppingUnitImperial?: OpenDataUnit; + /** + * + * @type {Array} + * @memberof OpenDataFood + */ + properties: Array | null; + /** + * + * @type {number} + * @memberof OpenDataFood + */ + propertiesFoodAmount?: number; + /** + * + * @type {OpenDataUnit} + * @memberof OpenDataFood + */ + propertiesFoodUnit: OpenDataUnit; + /** + * + * @type {string} + * @memberof OpenDataFood + */ + propertiesSource?: string; + /** + * + * @type {string} + * @memberof OpenDataFood + */ + fdcId: string; + /** + * + * @type {string} + * @memberof OpenDataFood + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataFood + */ + readonly createdBy: string; +} + +/** + * Check if a given object implements the OpenDataFood interface. + */ +export function instanceOfOpenDataFood(value: object): boolean { + if (!('id' in value)) return false; + if (!('version' in value)) return false; + if (!('slug' in value)) return false; + if (!('name' in value)) return false; + if (!('pluralName' in value)) return false; + if (!('storeCategory' in value)) return false; + if (!('properties' in value)) return false; + if (!('propertiesFoodUnit' in value)) return false; + if (!('fdcId' in value)) return false; + if (!('createdBy' in value)) return false; + return true; +} + +export function OpenDataFoodFromJSON(json: any): OpenDataFood { + return OpenDataFoodFromJSONTyped(json, false); +} + +export function OpenDataFoodFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenDataFood { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'version': OpenDataVersionFromJSON(json['version']), + 'slug': json['slug'], + 'name': json['name'], + 'pluralName': json['plural_name'], + 'storeCategory': OpenDataCategoryFromJSON(json['store_category']), + 'preferredUnitMetric': json['preferred_unit_metric'] == null ? undefined : OpenDataUnitFromJSON(json['preferred_unit_metric']), + 'preferredShoppingUnitMetric': json['preferred_shopping_unit_metric'] == null ? undefined : OpenDataUnitFromJSON(json['preferred_shopping_unit_metric']), + 'preferredUnitImperial': json['preferred_unit_imperial'] == null ? undefined : OpenDataUnitFromJSON(json['preferred_unit_imperial']), + 'preferredShoppingUnitImperial': json['preferred_shopping_unit_imperial'] == null ? undefined : OpenDataUnitFromJSON(json['preferred_shopping_unit_imperial']), + 'properties': (json['properties'] == null ? null : (json['properties'] as Array).map(OpenDataFoodPropertyFromJSON)), + 'propertiesFoodAmount': json['properties_food_amount'] == null ? undefined : json['properties_food_amount'], + 'propertiesFoodUnit': OpenDataUnitFromJSON(json['properties_food_unit']), + 'propertiesSource': json['properties_source'] == null ? undefined : json['properties_source'], + 'fdcId': json['fdc_id'], + 'comment': json['comment'] == null ? undefined : json['comment'], + 'createdBy': json['created_by'], + }; +} + +export function OpenDataFoodToJSON(value?: OpenDataFood | null): any { + if (value == null) { + return value; + } + return { + + 'version': OpenDataVersionToJSON(value['version']), + 'slug': value['slug'], + 'name': value['name'], + 'plural_name': value['pluralName'], + 'store_category': OpenDataCategoryToJSON(value['storeCategory']), + 'preferred_unit_metric': OpenDataUnitToJSON(value['preferredUnitMetric']), + 'preferred_shopping_unit_metric': OpenDataUnitToJSON(value['preferredShoppingUnitMetric']), + 'preferred_unit_imperial': OpenDataUnitToJSON(value['preferredUnitImperial']), + 'preferred_shopping_unit_imperial': OpenDataUnitToJSON(value['preferredShoppingUnitImperial']), + 'properties': (value['properties'] == null ? null : (value['properties'] as Array).map(OpenDataFoodPropertyToJSON)), + 'properties_food_amount': value['propertiesFoodAmount'], + 'properties_food_unit': OpenDataUnitToJSON(value['propertiesFoodUnit']), + 'properties_source': value['propertiesSource'], + 'fdc_id': value['fdcId'], + 'comment': value['comment'], + }; +} + diff --git a/vue3/src/openapi/models/OpenDataFoodProperty.ts b/vue3/src/openapi/models/OpenDataFoodProperty.ts new file mode 100644 index 000000000..17d43321a --- /dev/null +++ b/vue3/src/openapi/models/OpenDataFoodProperty.ts @@ -0,0 +1,85 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { OpenDataProperty } from './OpenDataProperty'; +import { + OpenDataPropertyFromJSON, + OpenDataPropertyFromJSONTyped, + OpenDataPropertyToJSON, +} from './OpenDataProperty'; + +/** + * Adds nested create feature + * @export + * @interface OpenDataFoodProperty + */ +export interface OpenDataFoodProperty { + /** + * + * @type {number} + * @memberof OpenDataFoodProperty + */ + readonly id: number; + /** + * + * @type {OpenDataProperty} + * @memberof OpenDataFoodProperty + */ + property: OpenDataProperty; + /** + * + * @type {string} + * @memberof OpenDataFoodProperty + */ + propertyAmount: string; +} + +/** + * Check if a given object implements the OpenDataFoodProperty interface. + */ +export function instanceOfOpenDataFoodProperty(value: object): boolean { + if (!('id' in value)) return false; + if (!('property' in value)) return false; + if (!('propertyAmount' in value)) return false; + return true; +} + +export function OpenDataFoodPropertyFromJSON(json: any): OpenDataFoodProperty { + return OpenDataFoodPropertyFromJSONTyped(json, false); +} + +export function OpenDataFoodPropertyFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenDataFoodProperty { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'property': OpenDataPropertyFromJSON(json['property']), + 'propertyAmount': json['property_amount'], + }; +} + +export function OpenDataFoodPropertyToJSON(value?: OpenDataFoodProperty | null): any { + if (value == null) { + return value; + } + return { + + 'property': OpenDataPropertyToJSON(value['property']), + 'property_amount': value['propertyAmount'], + }; +} + diff --git a/vue3/src/openapi/models/OpenDataProperty.ts b/vue3/src/openapi/models/OpenDataProperty.ts new file mode 100644 index 000000000..a21b8a48a --- /dev/null +++ b/vue3/src/openapi/models/OpenDataProperty.ts @@ -0,0 +1,160 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { OpenDataVersion } from './OpenDataVersion'; +import { + OpenDataVersionFromJSON, + OpenDataVersionFromJSONTyped, + OpenDataVersionToJSON, +} from './OpenDataVersion'; + +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface OpenDataProperty + */ +export interface OpenDataProperty { + /** + * + * @type {number} + * @memberof OpenDataProperty + */ + readonly id: number; + /** + * + * @type {OpenDataVersion} + * @memberof OpenDataProperty + */ + version: OpenDataVersion; + /** + * + * @type {string} + * @memberof OpenDataProperty + */ + slug: string; + /** + * + * @type {string} + * @memberof OpenDataProperty + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataProperty + */ + unit?: string; + /** + * + * @type {number} + * @memberof OpenDataProperty + */ + fdcId?: number; + /** + * + * @type {string} + * @memberof OpenDataProperty + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataProperty + */ + readonly createdBy: string; +} + +/** + * Check if a given object implements the OpenDataProperty interface. + */ +export function instanceOfOpenDataProperty(value: object): boolean { + if (!('id' in value)) return false; + if (!('version' in value)) return false; + if (!('slug' in value)) return false; + if (!('name' in value)) return false; + if (!('createdBy' in value)) return false; + return true; +} + +export function OpenDataPropertyFromJSON(json: any): OpenDataProperty { + return OpenDataPropertyFromJSONTyped(json, false); +} + +export function OpenDataPropertyFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenDataProperty { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'version': OpenDataVersionFromJSON(json['version']), + 'slug': json['slug'], + 'name': json['name'], + 'unit': json['unit'] == null ? undefined : json['unit'], + 'fdcId': json['fdc_id'] == null ? undefined : json['fdc_id'], + 'comment': json['comment'] == null ? undefined : json['comment'], + 'createdBy': json['created_by'], + }; +} + +export function OpenDataPropertyToJSON(value?: OpenDataProperty | null): any { + if (value == null) { + return value; + } + return { + + 'version': OpenDataVersionToJSON(value['version']), + 'slug': value['slug'], + 'name': value['name'], + 'unit': value['unit'], + 'fdc_id': value['fdcId'], + 'comment': value['comment'], + }; +} + diff --git a/vue3/src/openapi/models/OpenDataStore.ts b/vue3/src/openapi/models/OpenDataStore.ts new file mode 100644 index 000000000..a6d8012fe --- /dev/null +++ b/vue3/src/openapi/models/OpenDataStore.ts @@ -0,0 +1,125 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { OpenDataStoreCategory } from './OpenDataStoreCategory'; +import { + OpenDataStoreCategoryFromJSON, + OpenDataStoreCategoryFromJSONTyped, + OpenDataStoreCategoryToJSON, +} from './OpenDataStoreCategory'; +import type { OpenDataVersion } from './OpenDataVersion'; +import { + OpenDataVersionFromJSON, + OpenDataVersionFromJSONTyped, + OpenDataVersionToJSON, +} from './OpenDataVersion'; + +/** + * Adds nested create feature + * @export + * @interface OpenDataStore + */ +export interface OpenDataStore { + /** + * + * @type {number} + * @memberof OpenDataStore + */ + readonly id: number; + /** + * + * @type {OpenDataVersion} + * @memberof OpenDataStore + */ + version: OpenDataVersion; + /** + * + * @type {string} + * @memberof OpenDataStore + */ + slug: string; + /** + * + * @type {string} + * @memberof OpenDataStore + */ + name: string; + /** + * + * @type {Array} + * @memberof OpenDataStore + */ + categoryToStore: Array | null; + /** + * + * @type {string} + * @memberof OpenDataStore + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataStore + */ + readonly createdBy: string; +} + +/** + * Check if a given object implements the OpenDataStore interface. + */ +export function instanceOfOpenDataStore(value: object): boolean { + if (!('id' in value)) return false; + if (!('version' in value)) return false; + if (!('slug' in value)) return false; + if (!('name' in value)) return false; + if (!('categoryToStore' in value)) return false; + if (!('createdBy' in value)) return false; + return true; +} + +export function OpenDataStoreFromJSON(json: any): OpenDataStore { + return OpenDataStoreFromJSONTyped(json, false); +} + +export function OpenDataStoreFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenDataStore { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'version': OpenDataVersionFromJSON(json['version']), + 'slug': json['slug'], + 'name': json['name'], + 'categoryToStore': (json['category_to_store'] == null ? null : (json['category_to_store'] as Array).map(OpenDataStoreCategoryFromJSON)), + 'comment': json['comment'] == null ? undefined : json['comment'], + 'createdBy': json['created_by'], + }; +} + +export function OpenDataStoreToJSON(value?: OpenDataStore | null): any { + if (value == null) { + return value; + } + return { + + 'version': OpenDataVersionToJSON(value['version']), + 'slug': value['slug'], + 'name': value['name'], + 'category_to_store': (value['categoryToStore'] == null ? null : (value['categoryToStore'] as Array).map(OpenDataStoreCategoryToJSON)), + 'comment': value['comment'], + }; +} + diff --git a/vue3/src/openapi/models/OpenDataStoreCategory.ts b/vue3/src/openapi/models/OpenDataStoreCategory.ts new file mode 100644 index 000000000..2c8c2b3a3 --- /dev/null +++ b/vue3/src/openapi/models/OpenDataStoreCategory.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { OpenDataCategory } from './OpenDataCategory'; +import { + OpenDataCategoryFromJSON, + OpenDataCategoryFromJSONTyped, + OpenDataCategoryToJSON, +} from './OpenDataCategory'; + +/** + * Adds nested create feature + * @export + * @interface OpenDataStoreCategory + */ +export interface OpenDataStoreCategory { + /** + * + * @type {number} + * @memberof OpenDataStoreCategory + */ + readonly id: number; + /** + * + * @type {OpenDataCategory} + * @memberof OpenDataStoreCategory + */ + category: OpenDataCategory; + /** + * + * @type {number} + * @memberof OpenDataStoreCategory + */ + store: number; + /** + * + * @type {number} + * @memberof OpenDataStoreCategory + */ + order?: number; +} + +/** + * Check if a given object implements the OpenDataStoreCategory interface. + */ +export function instanceOfOpenDataStoreCategory(value: object): boolean { + if (!('id' in value)) return false; + if (!('category' in value)) return false; + if (!('store' in value)) return false; + return true; +} + +export function OpenDataStoreCategoryFromJSON(json: any): OpenDataStoreCategory { + return OpenDataStoreCategoryFromJSONTyped(json, false); +} + +export function OpenDataStoreCategoryFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenDataStoreCategory { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'category': OpenDataCategoryFromJSON(json['category']), + 'store': json['store'], + 'order': json['order'] == null ? undefined : json['order'], + }; +} + +export function OpenDataStoreCategoryToJSON(value?: OpenDataStoreCategory | null): any { + if (value == null) { + return value; + } + return { + + 'category': OpenDataCategoryToJSON(value['category']), + 'store': value['store'], + 'order': value['order'], + }; +} + diff --git a/vue3/src/openapi/models/OpenDataStoreCategoryToStoreInner.ts b/vue3/src/openapi/models/OpenDataStoreCategoryToStoreInner.ts new file mode 100644 index 000000000..b361d3274 --- /dev/null +++ b/vue3/src/openapi/models/OpenDataStoreCategoryToStoreInner.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { OpenDataStoreCategoryToStoreInnerCategory } from './OpenDataStoreCategoryToStoreInnerCategory'; +import { + OpenDataStoreCategoryToStoreInnerCategoryFromJSON, + OpenDataStoreCategoryToStoreInnerCategoryFromJSONTyped, + OpenDataStoreCategoryToStoreInnerCategoryToJSON, +} from './OpenDataStoreCategoryToStoreInnerCategory'; + +/** + * + * @export + * @interface OpenDataStoreCategoryToStoreInner + */ +export interface OpenDataStoreCategoryToStoreInner { + /** + * + * @type {number} + * @memberof OpenDataStoreCategoryToStoreInner + */ + readonly id?: number; + /** + * + * @type {OpenDataStoreCategoryToStoreInnerCategory} + * @memberof OpenDataStoreCategoryToStoreInner + */ + category: OpenDataStoreCategoryToStoreInnerCategory; + /** + * + * @type {number} + * @memberof OpenDataStoreCategoryToStoreInner + */ + store: number; + /** + * + * @type {number} + * @memberof OpenDataStoreCategoryToStoreInner + */ + order?: number; +} + +/** + * Check if a given object implements the OpenDataStoreCategoryToStoreInner interface. + */ +export function instanceOfOpenDataStoreCategoryToStoreInner(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "category" in value; + isInstance = isInstance && "store" in value; + + return isInstance; +} + +export function OpenDataStoreCategoryToStoreInnerFromJSON(json: any): OpenDataStoreCategoryToStoreInner { + return OpenDataStoreCategoryToStoreInnerFromJSONTyped(json, false); +} + +export function OpenDataStoreCategoryToStoreInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenDataStoreCategoryToStoreInner { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'category': OpenDataStoreCategoryToStoreInnerCategoryFromJSON(json['category']), + 'store': json['store'], + 'order': !exists(json, 'order') ? undefined : json['order'], + }; +} + +export function OpenDataStoreCategoryToStoreInnerToJSON(value?: OpenDataStoreCategoryToStoreInner | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'category': OpenDataStoreCategoryToStoreInnerCategoryToJSON(value.category), + 'store': value.store, + 'order': value.order, + }; +} + diff --git a/vue3/src/openapi/models/OpenDataStoreCategoryToStoreInnerCategory.ts b/vue3/src/openapi/models/OpenDataStoreCategoryToStoreInnerCategory.ts new file mode 100644 index 000000000..e92d3fd2a --- /dev/null +++ b/vue3/src/openapi/models/OpenDataStoreCategoryToStoreInnerCategory.ts @@ -0,0 +1,121 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { OpenDataUnitVersion } from './OpenDataUnitVersion'; +import { + OpenDataUnitVersionFromJSON, + OpenDataUnitVersionFromJSONTyped, + OpenDataUnitVersionToJSON, +} from './OpenDataUnitVersion'; + +/** + * + * @export + * @interface OpenDataStoreCategoryToStoreInnerCategory + */ +export interface OpenDataStoreCategoryToStoreInnerCategory { + /** + * + * @type {number} + * @memberof OpenDataStoreCategoryToStoreInnerCategory + */ + readonly id?: number; + /** + * + * @type {OpenDataUnitVersion} + * @memberof OpenDataStoreCategoryToStoreInnerCategory + */ + version: OpenDataUnitVersion; + /** + * + * @type {string} + * @memberof OpenDataStoreCategoryToStoreInnerCategory + */ + slug: string; + /** + * + * @type {string} + * @memberof OpenDataStoreCategoryToStoreInnerCategory + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataStoreCategoryToStoreInnerCategory + */ + description?: string; + /** + * + * @type {string} + * @memberof OpenDataStoreCategoryToStoreInnerCategory + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataStoreCategoryToStoreInnerCategory + */ + readonly createdBy?: string; +} + +/** + * Check if a given object implements the OpenDataStoreCategoryToStoreInnerCategory interface. + */ +export function instanceOfOpenDataStoreCategoryToStoreInnerCategory(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "version" in value; + isInstance = isInstance && "slug" in value; + isInstance = isInstance && "name" in value; + + return isInstance; +} + +export function OpenDataStoreCategoryToStoreInnerCategoryFromJSON(json: any): OpenDataStoreCategoryToStoreInnerCategory { + return OpenDataStoreCategoryToStoreInnerCategoryFromJSONTyped(json, false); +} + +export function OpenDataStoreCategoryToStoreInnerCategoryFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenDataStoreCategoryToStoreInnerCategory { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'version': OpenDataUnitVersionFromJSON(json['version']), + 'slug': json['slug'], + 'name': json['name'], + 'description': !exists(json, 'description') ? undefined : json['description'], + 'comment': !exists(json, 'comment') ? undefined : json['comment'], + 'createdBy': !exists(json, 'created_by') ? undefined : json['created_by'], + }; +} + +export function OpenDataStoreCategoryToStoreInnerCategoryToJSON(value?: OpenDataStoreCategoryToStoreInnerCategory | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'version': OpenDataUnitVersionToJSON(value.version), + 'slug': value.slug, + 'name': value.name, + 'description': value.description, + 'comment': value.comment, + }; +} + diff --git a/vue3/src/openapi/models/OpenDataUnit.ts b/vue3/src/openapi/models/OpenDataUnit.ts new file mode 100644 index 000000000..b401cddb3 --- /dev/null +++ b/vue3/src/openapi/models/OpenDataUnit.ts @@ -0,0 +1,181 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { BaseUnitEnum } from './BaseUnitEnum'; +import { + BaseUnitEnumFromJSON, + BaseUnitEnumFromJSONTyped, + BaseUnitEnumToJSON, +} from './BaseUnitEnum'; +import type { OpenDataUnitTypeEnum } from './OpenDataUnitTypeEnum'; +import { + OpenDataUnitTypeEnumFromJSON, + OpenDataUnitTypeEnumFromJSONTyped, + OpenDataUnitTypeEnumToJSON, +} from './OpenDataUnitTypeEnum'; +import type { OpenDataVersion } from './OpenDataVersion'; +import { + OpenDataVersionFromJSON, + OpenDataVersionFromJSONTyped, + OpenDataVersionToJSON, +} from './OpenDataVersion'; + +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface OpenDataUnit + */ +export interface OpenDataUnit { + /** + * + * @type {number} + * @memberof OpenDataUnit + */ + readonly id: number; + /** + * + * @type {OpenDataVersion} + * @memberof OpenDataUnit + */ + version: OpenDataVersion; + /** + * + * @type {string} + * @memberof OpenDataUnit + */ + slug: string; + /** + * + * @type {string} + * @memberof OpenDataUnit + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataUnit + */ + pluralName?: string; + /** + * + * @type {BaseUnitEnum} + * @memberof OpenDataUnit + */ + baseUnit?: BaseUnitEnum; + /** + * + * @type {OpenDataUnitTypeEnum} + * @memberof OpenDataUnit + */ + type: OpenDataUnitTypeEnum; + /** + * + * @type {string} + * @memberof OpenDataUnit + */ + comment?: string; + /** + * + * @type {string} + * @memberof OpenDataUnit + */ + readonly createdBy: string; +} + +/** + * Check if a given object implements the OpenDataUnit interface. + */ +export function instanceOfOpenDataUnit(value: object): boolean { + if (!('id' in value)) return false; + if (!('version' in value)) return false; + if (!('slug' in value)) return false; + if (!('name' in value)) return false; + if (!('type' in value)) return false; + if (!('createdBy' in value)) return false; + return true; +} + +export function OpenDataUnitFromJSON(json: any): OpenDataUnit { + return OpenDataUnitFromJSONTyped(json, false); +} + +export function OpenDataUnitFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenDataUnit { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'version': OpenDataVersionFromJSON(json['version']), + 'slug': json['slug'], + 'name': json['name'], + 'pluralName': json['plural_name'] == null ? undefined : json['plural_name'], + 'baseUnit': json['base_unit'] == null ? undefined : BaseUnitEnumFromJSON(json['base_unit']), + 'type': OpenDataUnitTypeEnumFromJSON(json['type']), + 'comment': json['comment'] == null ? undefined : json['comment'], + 'createdBy': json['created_by'], + }; +} + +export function OpenDataUnitToJSON(value?: OpenDataUnit | null): any { + if (value == null) { + return value; + } + return { + + 'version': OpenDataVersionToJSON(value['version']), + 'slug': value['slug'], + 'name': value['name'], + 'plural_name': value['pluralName'], + 'base_unit': BaseUnitEnumToJSON(value['baseUnit']), + 'type': OpenDataUnitTypeEnumToJSON(value['type']), + 'comment': value['comment'], + }; +} + diff --git a/vue3/src/openapi/models/OpenDataUnitBaseUnit.ts b/vue3/src/openapi/models/OpenDataUnitBaseUnit.ts new file mode 100644 index 000000000..78a08f2de --- /dev/null +++ b/vue3/src/openapi/models/OpenDataUnitBaseUnit.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import type { BaseUnitEnum } from './BaseUnitEnum'; +import { + instanceOfBaseUnitEnum, + BaseUnitEnumFromJSON, + BaseUnitEnumFromJSONTyped, + BaseUnitEnumToJSON, +} from './BaseUnitEnum'; +import type { BlankEnum } from './BlankEnum'; +import { + instanceOfBlankEnum, + BlankEnumFromJSON, + BlankEnumFromJSONTyped, + BlankEnumToJSON, +} from './BlankEnum'; + +/** + * @type OpenDataUnitBaseUnit + * + * @export + */ +export type OpenDataUnitBaseUnit = BaseUnitEnum | BlankEnum; + +export function OpenDataUnitBaseUnitFromJSON(json: any): OpenDataUnitBaseUnit { + return OpenDataUnitBaseUnitFromJSONTyped(json, false); +} + +export function OpenDataUnitBaseUnitFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenDataUnitBaseUnit { + if (json == null) { + return json; + } + return { ...BaseUnitEnumFromJSONTyped(json, true), ...BlankEnumFromJSONTyped(json, true) }; +} + +export function OpenDataUnitBaseUnitToJSON(value?: OpenDataUnitBaseUnit | null): any { + if (value == null) { + return value; + } + + if (instanceOfBaseUnitEnum(value)) { + return BaseUnitEnumToJSON(value as BaseUnitEnum); + } + if (instanceOfBlankEnum(value)) { + return BlankEnumToJSON(value as BlankEnum); + } + + return {}; +} + diff --git a/vue3/src/openapi/models/OpenDataUnitTypeEnum.ts b/vue3/src/openapi/models/OpenDataUnitTypeEnum.ts new file mode 100644 index 000000000..ba6d529e2 --- /dev/null +++ b/vue3/src/openapi/models/OpenDataUnitTypeEnum.ts @@ -0,0 +1,41 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** + * * `WEIGHT` - weight + * * `VOLUME` - volume + * * `OTHER` - other + * @export + */ +export const OpenDataUnitTypeEnum = { + Weight: 'WEIGHT', + Volume: 'VOLUME', + Other: 'OTHER' +} as const; +export type OpenDataUnitTypeEnum = typeof OpenDataUnitTypeEnum[keyof typeof OpenDataUnitTypeEnum]; + + +export function OpenDataUnitTypeEnumFromJSON(json: any): OpenDataUnitTypeEnum { + return OpenDataUnitTypeEnumFromJSONTyped(json, false); +} + +export function OpenDataUnitTypeEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenDataUnitTypeEnum { + return json as OpenDataUnitTypeEnum; +} + +export function OpenDataUnitTypeEnumToJSON(value?: OpenDataUnitTypeEnum | null): any { + return value as any; +} + diff --git a/vue3/src/openapi/models/OpenDataUnitVersion.ts b/vue3/src/openapi/models/OpenDataUnitVersion.ts new file mode 100644 index 000000000..744b04ed0 --- /dev/null +++ b/vue3/src/openapi/models/OpenDataUnitVersion.ts @@ -0,0 +1,90 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface OpenDataUnitVersion + */ +export interface OpenDataUnitVersion { + /** + * + * @type {number} + * @memberof OpenDataUnitVersion + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof OpenDataUnitVersion + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataUnitVersion + */ + code: string; + /** + * + * @type {string} + * @memberof OpenDataUnitVersion + */ + comment?: string; +} + +/** + * Check if a given object implements the OpenDataUnitVersion interface. + */ +export function instanceOfOpenDataUnitVersion(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "name" in value; + isInstance = isInstance && "code" in value; + + return isInstance; +} + +export function OpenDataUnitVersionFromJSON(json: any): OpenDataUnitVersion { + return OpenDataUnitVersionFromJSONTyped(json, false); +} + +export function OpenDataUnitVersionFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenDataUnitVersion { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': json['name'], + 'code': json['code'], + 'comment': !exists(json, 'comment') ? undefined : json['comment'], + }; +} + +export function OpenDataUnitVersionToJSON(value?: OpenDataUnitVersion | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'name': value.name, + 'code': value.code, + 'comment': value.comment, + }; +} + diff --git a/vue3/src/openapi/models/OpenDataVersion.ts b/vue3/src/openapi/models/OpenDataVersion.ts new file mode 100644 index 000000000..86939a6f2 --- /dev/null +++ b/vue3/src/openapi/models/OpenDataVersion.ts @@ -0,0 +1,120 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface OpenDataVersion + */ +export interface OpenDataVersion { + /** + * + * @type {number} + * @memberof OpenDataVersion + */ + readonly id: number; + /** + * + * @type {string} + * @memberof OpenDataVersion + */ + name: string; + /** + * + * @type {string} + * @memberof OpenDataVersion + */ + code: string; + /** + * + * @type {string} + * @memberof OpenDataVersion + */ + comment?: string; +} + +/** + * Check if a given object implements the OpenDataVersion interface. + */ +export function instanceOfOpenDataVersion(value: object): boolean { + if (!('id' in value)) return false; + if (!('name' in value)) return false; + if (!('code' in value)) return false; + return true; +} + +export function OpenDataVersionFromJSON(json: any): OpenDataVersion { + return OpenDataVersionFromJSONTyped(json, false); +} + +export function OpenDataVersionFromJSONTyped(json: any, ignoreDiscriminator: boolean): OpenDataVersion { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'], + 'code': json['code'], + 'comment': json['comment'] == null ? undefined : json['comment'], + }; +} + +export function OpenDataVersionToJSON(value?: OpenDataVersion | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'code': value['code'], + 'comment': value['comment'], + }; +} + diff --git a/vue3/src/openapi/models/PaginatedAutomationList.ts b/vue3/src/openapi/models/PaginatedAutomationList.ts new file mode 100644 index 000000000..c32fecc89 --- /dev/null +++ b/vue3/src/openapi/models/PaginatedAutomationList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Automation } from './Automation'; +import { + AutomationFromJSON, + AutomationFromJSONTyped, + AutomationToJSON, +} from './Automation'; + +/** + * + * @export + * @interface PaginatedAutomationList + */ +export interface PaginatedAutomationList { + /** + * + * @type {number} + * @memberof PaginatedAutomationList + */ + count?: number; + /** + * + * @type {string} + * @memberof PaginatedAutomationList + */ + next?: string; + /** + * + * @type {string} + * @memberof PaginatedAutomationList + */ + previous?: string; + /** + * + * @type {Array} + * @memberof PaginatedAutomationList + */ + results?: Array; +} + +/** + * Check if a given object implements the PaginatedAutomationList interface. + */ +export function instanceOfPaginatedAutomationList(value: object): boolean { + return true; +} + +export function PaginatedAutomationListFromJSON(json: any): PaginatedAutomationList { + return PaginatedAutomationListFromJSONTyped(json, false); +} + +export function PaginatedAutomationListFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginatedAutomationList { + if (json == null) { + return json; + } + return { + + 'count': json['count'] == null ? undefined : json['count'], + 'next': json['next'] == null ? undefined : json['next'], + 'previous': json['previous'] == null ? undefined : json['previous'], + 'results': json['results'] == null ? undefined : ((json['results'] as Array).map(AutomationFromJSON)), + }; +} + +export function PaginatedAutomationListToJSON(value?: PaginatedAutomationList | null): any { + if (value == null) { + return value; + } + return { + + 'count': value['count'], + 'next': value['next'], + 'previous': value['previous'], + 'results': value['results'] == null ? undefined : ((value['results'] as Array).map(AutomationToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/PaginatedCookLogList.ts b/vue3/src/openapi/models/PaginatedCookLogList.ts new file mode 100644 index 000000000..bda0d6e33 --- /dev/null +++ b/vue3/src/openapi/models/PaginatedCookLogList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { CookLog } from './CookLog'; +import { + CookLogFromJSON, + CookLogFromJSONTyped, + CookLogToJSON, +} from './CookLog'; + +/** + * + * @export + * @interface PaginatedCookLogList + */ +export interface PaginatedCookLogList { + /** + * + * @type {number} + * @memberof PaginatedCookLogList + */ + count?: number; + /** + * + * @type {string} + * @memberof PaginatedCookLogList + */ + next?: string; + /** + * + * @type {string} + * @memberof PaginatedCookLogList + */ + previous?: string; + /** + * + * @type {Array} + * @memberof PaginatedCookLogList + */ + results?: Array; +} + +/** + * Check if a given object implements the PaginatedCookLogList interface. + */ +export function instanceOfPaginatedCookLogList(value: object): boolean { + return true; +} + +export function PaginatedCookLogListFromJSON(json: any): PaginatedCookLogList { + return PaginatedCookLogListFromJSONTyped(json, false); +} + +export function PaginatedCookLogListFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginatedCookLogList { + if (json == null) { + return json; + } + return { + + 'count': json['count'] == null ? undefined : json['count'], + 'next': json['next'] == null ? undefined : json['next'], + 'previous': json['previous'] == null ? undefined : json['previous'], + 'results': json['results'] == null ? undefined : ((json['results'] as Array).map(CookLogFromJSON)), + }; +} + +export function PaginatedCookLogListToJSON(value?: PaginatedCookLogList | null): any { + if (value == null) { + return value; + } + return { + + 'count': value['count'], + 'next': value['next'], + 'previous': value['previous'], + 'results': value['results'] == null ? undefined : ((value['results'] as Array).map(CookLogToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/PaginatedCustomFilterList.ts b/vue3/src/openapi/models/PaginatedCustomFilterList.ts new file mode 100644 index 000000000..94c574699 --- /dev/null +++ b/vue3/src/openapi/models/PaginatedCustomFilterList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { CustomFilter } from './CustomFilter'; +import { + CustomFilterFromJSON, + CustomFilterFromJSONTyped, + CustomFilterToJSON, +} from './CustomFilter'; + +/** + * + * @export + * @interface PaginatedCustomFilterList + */ +export interface PaginatedCustomFilterList { + /** + * + * @type {number} + * @memberof PaginatedCustomFilterList + */ + count?: number; + /** + * + * @type {string} + * @memberof PaginatedCustomFilterList + */ + next?: string; + /** + * + * @type {string} + * @memberof PaginatedCustomFilterList + */ + previous?: string; + /** + * + * @type {Array} + * @memberof PaginatedCustomFilterList + */ + results?: Array; +} + +/** + * Check if a given object implements the PaginatedCustomFilterList interface. + */ +export function instanceOfPaginatedCustomFilterList(value: object): boolean { + return true; +} + +export function PaginatedCustomFilterListFromJSON(json: any): PaginatedCustomFilterList { + return PaginatedCustomFilterListFromJSONTyped(json, false); +} + +export function PaginatedCustomFilterListFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginatedCustomFilterList { + if (json == null) { + return json; + } + return { + + 'count': json['count'] == null ? undefined : json['count'], + 'next': json['next'] == null ? undefined : json['next'], + 'previous': json['previous'] == null ? undefined : json['previous'], + 'results': json['results'] == null ? undefined : ((json['results'] as Array).map(CustomFilterFromJSON)), + }; +} + +export function PaginatedCustomFilterListToJSON(value?: PaginatedCustomFilterList | null): any { + if (value == null) { + return value; + } + return { + + 'count': value['count'], + 'next': value['next'], + 'previous': value['previous'], + 'results': value['results'] == null ? undefined : ((value['results'] as Array).map(CustomFilterToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/PaginatedExportLogList.ts b/vue3/src/openapi/models/PaginatedExportLogList.ts new file mode 100644 index 000000000..5b916332b --- /dev/null +++ b/vue3/src/openapi/models/PaginatedExportLogList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { ExportLog } from './ExportLog'; +import { + ExportLogFromJSON, + ExportLogFromJSONTyped, + ExportLogToJSON, +} from './ExportLog'; + +/** + * + * @export + * @interface PaginatedExportLogList + */ +export interface PaginatedExportLogList { + /** + * + * @type {number} + * @memberof PaginatedExportLogList + */ + count?: number; + /** + * + * @type {string} + * @memberof PaginatedExportLogList + */ + next?: string; + /** + * + * @type {string} + * @memberof PaginatedExportLogList + */ + previous?: string; + /** + * + * @type {Array} + * @memberof PaginatedExportLogList + */ + results?: Array; +} + +/** + * Check if a given object implements the PaginatedExportLogList interface. + */ +export function instanceOfPaginatedExportLogList(value: object): boolean { + return true; +} + +export function PaginatedExportLogListFromJSON(json: any): PaginatedExportLogList { + return PaginatedExportLogListFromJSONTyped(json, false); +} + +export function PaginatedExportLogListFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginatedExportLogList { + if (json == null) { + return json; + } + return { + + 'count': json['count'] == null ? undefined : json['count'], + 'next': json['next'] == null ? undefined : json['next'], + 'previous': json['previous'] == null ? undefined : json['previous'], + 'results': json['results'] == null ? undefined : ((json['results'] as Array).map(ExportLogFromJSON)), + }; +} + +export function PaginatedExportLogListToJSON(value?: PaginatedExportLogList | null): any { + if (value == null) { + return value; + } + return { + + 'count': value['count'], + 'next': value['next'], + 'previous': value['previous'], + 'results': value['results'] == null ? undefined : ((value['results'] as Array).map(ExportLogToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/PaginatedFoodList.ts b/vue3/src/openapi/models/PaginatedFoodList.ts new file mode 100644 index 000000000..1533963ae --- /dev/null +++ b/vue3/src/openapi/models/PaginatedFoodList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Food } from './Food'; +import { + FoodFromJSON, + FoodFromJSONTyped, + FoodToJSON, +} from './Food'; + +/** + * + * @export + * @interface PaginatedFoodList + */ +export interface PaginatedFoodList { + /** + * + * @type {number} + * @memberof PaginatedFoodList + */ + count?: number; + /** + * + * @type {string} + * @memberof PaginatedFoodList + */ + next?: string; + /** + * + * @type {string} + * @memberof PaginatedFoodList + */ + previous?: string; + /** + * + * @type {Array} + * @memberof PaginatedFoodList + */ + results?: Array; +} + +/** + * Check if a given object implements the PaginatedFoodList interface. + */ +export function instanceOfPaginatedFoodList(value: object): boolean { + return true; +} + +export function PaginatedFoodListFromJSON(json: any): PaginatedFoodList { + return PaginatedFoodListFromJSONTyped(json, false); +} + +export function PaginatedFoodListFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginatedFoodList { + if (json == null) { + return json; + } + return { + + 'count': json['count'] == null ? undefined : json['count'], + 'next': json['next'] == null ? undefined : json['next'], + 'previous': json['previous'] == null ? undefined : json['previous'], + 'results': json['results'] == null ? undefined : ((json['results'] as Array).map(FoodFromJSON)), + }; +} + +export function PaginatedFoodListToJSON(value?: PaginatedFoodList | null): any { + if (value == null) { + return value; + } + return { + + 'count': value['count'], + 'next': value['next'], + 'previous': value['previous'], + 'results': value['results'] == null ? undefined : ((value['results'] as Array).map(FoodToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/PaginatedImportLogList.ts b/vue3/src/openapi/models/PaginatedImportLogList.ts new file mode 100644 index 000000000..d3a02c0f6 --- /dev/null +++ b/vue3/src/openapi/models/PaginatedImportLogList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { ImportLog } from './ImportLog'; +import { + ImportLogFromJSON, + ImportLogFromJSONTyped, + ImportLogToJSON, +} from './ImportLog'; + +/** + * + * @export + * @interface PaginatedImportLogList + */ +export interface PaginatedImportLogList { + /** + * + * @type {number} + * @memberof PaginatedImportLogList + */ + count?: number; + /** + * + * @type {string} + * @memberof PaginatedImportLogList + */ + next?: string; + /** + * + * @type {string} + * @memberof PaginatedImportLogList + */ + previous?: string; + /** + * + * @type {Array} + * @memberof PaginatedImportLogList + */ + results?: Array; +} + +/** + * Check if a given object implements the PaginatedImportLogList interface. + */ +export function instanceOfPaginatedImportLogList(value: object): boolean { + return true; +} + +export function PaginatedImportLogListFromJSON(json: any): PaginatedImportLogList { + return PaginatedImportLogListFromJSONTyped(json, false); +} + +export function PaginatedImportLogListFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginatedImportLogList { + if (json == null) { + return json; + } + return { + + 'count': json['count'] == null ? undefined : json['count'], + 'next': json['next'] == null ? undefined : json['next'], + 'previous': json['previous'] == null ? undefined : json['previous'], + 'results': json['results'] == null ? undefined : ((json['results'] as Array).map(ImportLogFromJSON)), + }; +} + +export function PaginatedImportLogListToJSON(value?: PaginatedImportLogList | null): any { + if (value == null) { + return value; + } + return { + + 'count': value['count'], + 'next': value['next'], + 'previous': value['previous'], + 'results': value['results'] == null ? undefined : ((value['results'] as Array).map(ImportLogToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/PaginatedIngredientList.ts b/vue3/src/openapi/models/PaginatedIngredientList.ts new file mode 100644 index 000000000..9170e637a --- /dev/null +++ b/vue3/src/openapi/models/PaginatedIngredientList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Ingredient } from './Ingredient'; +import { + IngredientFromJSON, + IngredientFromJSONTyped, + IngredientToJSON, +} from './Ingredient'; + +/** + * + * @export + * @interface PaginatedIngredientList + */ +export interface PaginatedIngredientList { + /** + * + * @type {number} + * @memberof PaginatedIngredientList + */ + count?: number; + /** + * + * @type {string} + * @memberof PaginatedIngredientList + */ + next?: string; + /** + * + * @type {string} + * @memberof PaginatedIngredientList + */ + previous?: string; + /** + * + * @type {Array} + * @memberof PaginatedIngredientList + */ + results?: Array; +} + +/** + * Check if a given object implements the PaginatedIngredientList interface. + */ +export function instanceOfPaginatedIngredientList(value: object): boolean { + return true; +} + +export function PaginatedIngredientListFromJSON(json: any): PaginatedIngredientList { + return PaginatedIngredientListFromJSONTyped(json, false); +} + +export function PaginatedIngredientListFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginatedIngredientList { + if (json == null) { + return json; + } + return { + + 'count': json['count'] == null ? undefined : json['count'], + 'next': json['next'] == null ? undefined : json['next'], + 'previous': json['previous'] == null ? undefined : json['previous'], + 'results': json['results'] == null ? undefined : ((json['results'] as Array).map(IngredientFromJSON)), + }; +} + +export function PaginatedIngredientListToJSON(value?: PaginatedIngredientList | null): any { + if (value == null) { + return value; + } + return { + + 'count': value['count'], + 'next': value['next'], + 'previous': value['previous'], + 'results': value['results'] == null ? undefined : ((value['results'] as Array).map(IngredientToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/PaginatedKeywordList.ts b/vue3/src/openapi/models/PaginatedKeywordList.ts new file mode 100644 index 000000000..c707fb406 --- /dev/null +++ b/vue3/src/openapi/models/PaginatedKeywordList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Keyword } from './Keyword'; +import { + KeywordFromJSON, + KeywordFromJSONTyped, + KeywordToJSON, +} from './Keyword'; + +/** + * + * @export + * @interface PaginatedKeywordList + */ +export interface PaginatedKeywordList { + /** + * + * @type {number} + * @memberof PaginatedKeywordList + */ + count?: number; + /** + * + * @type {string} + * @memberof PaginatedKeywordList + */ + next?: string; + /** + * + * @type {string} + * @memberof PaginatedKeywordList + */ + previous?: string; + /** + * + * @type {Array} + * @memberof PaginatedKeywordList + */ + results?: Array; +} + +/** + * Check if a given object implements the PaginatedKeywordList interface. + */ +export function instanceOfPaginatedKeywordList(value: object): boolean { + return true; +} + +export function PaginatedKeywordListFromJSON(json: any): PaginatedKeywordList { + return PaginatedKeywordListFromJSONTyped(json, false); +} + +export function PaginatedKeywordListFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginatedKeywordList { + if (json == null) { + return json; + } + return { + + 'count': json['count'] == null ? undefined : json['count'], + 'next': json['next'] == null ? undefined : json['next'], + 'previous': json['previous'] == null ? undefined : json['previous'], + 'results': json['results'] == null ? undefined : ((json['results'] as Array).map(KeywordFromJSON)), + }; +} + +export function PaginatedKeywordListToJSON(value?: PaginatedKeywordList | null): any { + if (value == null) { + return value; + } + return { + + 'count': value['count'], + 'next': value['next'], + 'previous': value['previous'], + 'results': value['results'] == null ? undefined : ((value['results'] as Array).map(KeywordToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/PaginatedRecipeOverviewList.ts b/vue3/src/openapi/models/PaginatedRecipeOverviewList.ts new file mode 100644 index 000000000..d1e6ee757 --- /dev/null +++ b/vue3/src/openapi/models/PaginatedRecipeOverviewList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { RecipeOverview } from './RecipeOverview'; +import { + RecipeOverviewFromJSON, + RecipeOverviewFromJSONTyped, + RecipeOverviewToJSON, +} from './RecipeOverview'; + +/** + * + * @export + * @interface PaginatedRecipeOverviewList + */ +export interface PaginatedRecipeOverviewList { + /** + * + * @type {number} + * @memberof PaginatedRecipeOverviewList + */ + count?: number; + /** + * + * @type {string} + * @memberof PaginatedRecipeOverviewList + */ + next?: string; + /** + * + * @type {string} + * @memberof PaginatedRecipeOverviewList + */ + previous?: string; + /** + * + * @type {Array} + * @memberof PaginatedRecipeOverviewList + */ + results?: Array; +} + +/** + * Check if a given object implements the PaginatedRecipeOverviewList interface. + */ +export function instanceOfPaginatedRecipeOverviewList(value: object): boolean { + return true; +} + +export function PaginatedRecipeOverviewListFromJSON(json: any): PaginatedRecipeOverviewList { + return PaginatedRecipeOverviewListFromJSONTyped(json, false); +} + +export function PaginatedRecipeOverviewListFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginatedRecipeOverviewList { + if (json == null) { + return json; + } + return { + + 'count': json['count'] == null ? undefined : json['count'], + 'next': json['next'] == null ? undefined : json['next'], + 'previous': json['previous'] == null ? undefined : json['previous'], + 'results': json['results'] == null ? undefined : ((json['results'] as Array).map(RecipeOverviewFromJSON)), + }; +} + +export function PaginatedRecipeOverviewListToJSON(value?: PaginatedRecipeOverviewList | null): any { + if (value == null) { + return value; + } + return { + + 'count': value['count'], + 'next': value['next'], + 'previous': value['previous'], + 'results': value['results'] == null ? undefined : ((value['results'] as Array).map(RecipeOverviewToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/PaginatedStepList.ts b/vue3/src/openapi/models/PaginatedStepList.ts new file mode 100644 index 000000000..815e25bf8 --- /dev/null +++ b/vue3/src/openapi/models/PaginatedStepList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Step } from './Step'; +import { + StepFromJSON, + StepFromJSONTyped, + StepToJSON, +} from './Step'; + +/** + * + * @export + * @interface PaginatedStepList + */ +export interface PaginatedStepList { + /** + * + * @type {number} + * @memberof PaginatedStepList + */ + count?: number; + /** + * + * @type {string} + * @memberof PaginatedStepList + */ + next?: string; + /** + * + * @type {string} + * @memberof PaginatedStepList + */ + previous?: string; + /** + * + * @type {Array} + * @memberof PaginatedStepList + */ + results?: Array; +} + +/** + * Check if a given object implements the PaginatedStepList interface. + */ +export function instanceOfPaginatedStepList(value: object): boolean { + return true; +} + +export function PaginatedStepListFromJSON(json: any): PaginatedStepList { + return PaginatedStepListFromJSONTyped(json, false); +} + +export function PaginatedStepListFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginatedStepList { + if (json == null) { + return json; + } + return { + + 'count': json['count'] == null ? undefined : json['count'], + 'next': json['next'] == null ? undefined : json['next'], + 'previous': json['previous'] == null ? undefined : json['previous'], + 'results': json['results'] == null ? undefined : ((json['results'] as Array).map(StepFromJSON)), + }; +} + +export function PaginatedStepListToJSON(value?: PaginatedStepList | null): any { + if (value == null) { + return value; + } + return { + + 'count': value['count'], + 'next': value['next'], + 'previous': value['previous'], + 'results': value['results'] == null ? undefined : ((value['results'] as Array).map(StepToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/PaginatedSupermarketCategoryRelationList.ts b/vue3/src/openapi/models/PaginatedSupermarketCategoryRelationList.ts new file mode 100644 index 000000000..63ed0c0dd --- /dev/null +++ b/vue3/src/openapi/models/PaginatedSupermarketCategoryRelationList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { SupermarketCategoryRelation } from './SupermarketCategoryRelation'; +import { + SupermarketCategoryRelationFromJSON, + SupermarketCategoryRelationFromJSONTyped, + SupermarketCategoryRelationToJSON, +} from './SupermarketCategoryRelation'; + +/** + * + * @export + * @interface PaginatedSupermarketCategoryRelationList + */ +export interface PaginatedSupermarketCategoryRelationList { + /** + * + * @type {number} + * @memberof PaginatedSupermarketCategoryRelationList + */ + count?: number; + /** + * + * @type {string} + * @memberof PaginatedSupermarketCategoryRelationList + */ + next?: string; + /** + * + * @type {string} + * @memberof PaginatedSupermarketCategoryRelationList + */ + previous?: string; + /** + * + * @type {Array} + * @memberof PaginatedSupermarketCategoryRelationList + */ + results?: Array; +} + +/** + * Check if a given object implements the PaginatedSupermarketCategoryRelationList interface. + */ +export function instanceOfPaginatedSupermarketCategoryRelationList(value: object): boolean { + return true; +} + +export function PaginatedSupermarketCategoryRelationListFromJSON(json: any): PaginatedSupermarketCategoryRelationList { + return PaginatedSupermarketCategoryRelationListFromJSONTyped(json, false); +} + +export function PaginatedSupermarketCategoryRelationListFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginatedSupermarketCategoryRelationList { + if (json == null) { + return json; + } + return { + + 'count': json['count'] == null ? undefined : json['count'], + 'next': json['next'] == null ? undefined : json['next'], + 'previous': json['previous'] == null ? undefined : json['previous'], + 'results': json['results'] == null ? undefined : ((json['results'] as Array).map(SupermarketCategoryRelationFromJSON)), + }; +} + +export function PaginatedSupermarketCategoryRelationListToJSON(value?: PaginatedSupermarketCategoryRelationList | null): any { + if (value == null) { + return value; + } + return { + + 'count': value['count'], + 'next': value['next'], + 'previous': value['previous'], + 'results': value['results'] == null ? undefined : ((value['results'] as Array).map(SupermarketCategoryRelationToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/PaginatedSyncLogList.ts b/vue3/src/openapi/models/PaginatedSyncLogList.ts new file mode 100644 index 000000000..8702fceb8 --- /dev/null +++ b/vue3/src/openapi/models/PaginatedSyncLogList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { SyncLog } from './SyncLog'; +import { + SyncLogFromJSON, + SyncLogFromJSONTyped, + SyncLogToJSON, +} from './SyncLog'; + +/** + * + * @export + * @interface PaginatedSyncLogList + */ +export interface PaginatedSyncLogList { + /** + * + * @type {number} + * @memberof PaginatedSyncLogList + */ + count?: number; + /** + * + * @type {string} + * @memberof PaginatedSyncLogList + */ + next?: string; + /** + * + * @type {string} + * @memberof PaginatedSyncLogList + */ + previous?: string; + /** + * + * @type {Array} + * @memberof PaginatedSyncLogList + */ + results?: Array; +} + +/** + * Check if a given object implements the PaginatedSyncLogList interface. + */ +export function instanceOfPaginatedSyncLogList(value: object): boolean { + return true; +} + +export function PaginatedSyncLogListFromJSON(json: any): PaginatedSyncLogList { + return PaginatedSyncLogListFromJSONTyped(json, false); +} + +export function PaginatedSyncLogListFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginatedSyncLogList { + if (json == null) { + return json; + } + return { + + 'count': json['count'] == null ? undefined : json['count'], + 'next': json['next'] == null ? undefined : json['next'], + 'previous': json['previous'] == null ? undefined : json['previous'], + 'results': json['results'] == null ? undefined : ((json['results'] as Array).map(SyncLogFromJSON)), + }; +} + +export function PaginatedSyncLogListToJSON(value?: PaginatedSyncLogList | null): any { + if (value == null) { + return value; + } + return { + + 'count': value['count'], + 'next': value['next'], + 'previous': value['previous'], + 'results': value['results'] == null ? undefined : ((value['results'] as Array).map(SyncLogToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/PaginatedUnitList.ts b/vue3/src/openapi/models/PaginatedUnitList.ts new file mode 100644 index 000000000..829dcce31 --- /dev/null +++ b/vue3/src/openapi/models/PaginatedUnitList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Unit } from './Unit'; +import { + UnitFromJSON, + UnitFromJSONTyped, + UnitToJSON, +} from './Unit'; + +/** + * + * @export + * @interface PaginatedUnitList + */ +export interface PaginatedUnitList { + /** + * + * @type {number} + * @memberof PaginatedUnitList + */ + count?: number; + /** + * + * @type {string} + * @memberof PaginatedUnitList + */ + next?: string; + /** + * + * @type {string} + * @memberof PaginatedUnitList + */ + previous?: string; + /** + * + * @type {Array} + * @memberof PaginatedUnitList + */ + results?: Array; +} + +/** + * Check if a given object implements the PaginatedUnitList interface. + */ +export function instanceOfPaginatedUnitList(value: object): boolean { + return true; +} + +export function PaginatedUnitListFromJSON(json: any): PaginatedUnitList { + return PaginatedUnitListFromJSONTyped(json, false); +} + +export function PaginatedUnitListFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginatedUnitList { + if (json == null) { + return json; + } + return { + + 'count': json['count'] == null ? undefined : json['count'], + 'next': json['next'] == null ? undefined : json['next'], + 'previous': json['previous'] == null ? undefined : json['previous'], + 'results': json['results'] == null ? undefined : ((json['results'] as Array).map(UnitFromJSON)), + }; +} + +export function PaginatedUnitListToJSON(value?: PaginatedUnitList | null): any { + if (value == null) { + return value; + } + return { + + 'count': value['count'], + 'next': value['next'], + 'previous': value['previous'], + 'results': value['results'] == null ? undefined : ((value['results'] as Array).map(UnitToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/PaginatedUserSpaceList.ts b/vue3/src/openapi/models/PaginatedUserSpaceList.ts new file mode 100644 index 000000000..06ed9b417 --- /dev/null +++ b/vue3/src/openapi/models/PaginatedUserSpaceList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { UserSpace } from './UserSpace'; +import { + UserSpaceFromJSON, + UserSpaceFromJSONTyped, + UserSpaceToJSON, +} from './UserSpace'; + +/** + * + * @export + * @interface PaginatedUserSpaceList + */ +export interface PaginatedUserSpaceList { + /** + * + * @type {number} + * @memberof PaginatedUserSpaceList + */ + count?: number; + /** + * + * @type {string} + * @memberof PaginatedUserSpaceList + */ + next?: string; + /** + * + * @type {string} + * @memberof PaginatedUserSpaceList + */ + previous?: string; + /** + * + * @type {Array} + * @memberof PaginatedUserSpaceList + */ + results?: Array; +} + +/** + * Check if a given object implements the PaginatedUserSpaceList interface. + */ +export function instanceOfPaginatedUserSpaceList(value: object): boolean { + return true; +} + +export function PaginatedUserSpaceListFromJSON(json: any): PaginatedUserSpaceList { + return PaginatedUserSpaceListFromJSONTyped(json, false); +} + +export function PaginatedUserSpaceListFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginatedUserSpaceList { + if (json == null) { + return json; + } + return { + + 'count': json['count'] == null ? undefined : json['count'], + 'next': json['next'] == null ? undefined : json['next'], + 'previous': json['previous'] == null ? undefined : json['previous'], + 'results': json['results'] == null ? undefined : ((json['results'] as Array).map(UserSpaceFromJSON)), + }; +} + +export function PaginatedUserSpaceListToJSON(value?: PaginatedUserSpaceList | null): any { + if (value == null) { + return value; + } + return { + + 'count': value['count'], + 'next': value['next'], + 'previous': value['previous'], + 'results': value['results'] == null ? undefined : ((value['results'] as Array).map(UserSpaceToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/PaginatedViewLogList.ts b/vue3/src/openapi/models/PaginatedViewLogList.ts new file mode 100644 index 000000000..80714af6c --- /dev/null +++ b/vue3/src/openapi/models/PaginatedViewLogList.ts @@ -0,0 +1,91 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { ViewLog } from './ViewLog'; +import { + ViewLogFromJSON, + ViewLogFromJSONTyped, + ViewLogToJSON, +} from './ViewLog'; + +/** + * + * @export + * @interface PaginatedViewLogList + */ +export interface PaginatedViewLogList { + /** + * + * @type {number} + * @memberof PaginatedViewLogList + */ + count?: number; + /** + * + * @type {string} + * @memberof PaginatedViewLogList + */ + next?: string; + /** + * + * @type {string} + * @memberof PaginatedViewLogList + */ + previous?: string; + /** + * + * @type {Array} + * @memberof PaginatedViewLogList + */ + results?: Array; +} + +/** + * Check if a given object implements the PaginatedViewLogList interface. + */ +export function instanceOfPaginatedViewLogList(value: object): boolean { + return true; +} + +export function PaginatedViewLogListFromJSON(json: any): PaginatedViewLogList { + return PaginatedViewLogListFromJSONTyped(json, false); +} + +export function PaginatedViewLogListFromJSONTyped(json: any, ignoreDiscriminator: boolean): PaginatedViewLogList { + if (json == null) { + return json; + } + return { + + 'count': json['count'] == null ? undefined : json['count'], + 'next': json['next'] == null ? undefined : json['next'], + 'previous': json['previous'] == null ? undefined : json['previous'], + 'results': json['results'] == null ? undefined : ((json['results'] as Array).map(ViewLogFromJSON)), + }; +} + +export function PaginatedViewLogListToJSON(value?: PaginatedViewLogList | null): any { + if (value == null) { + return value; + } + return { + + 'count': value['count'], + 'next': value['next'], + 'previous': value['previous'], + 'results': value['results'] == null ? undefined : ((value['results'] as Array).map(ViewLogToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/PatchedAccessToken.ts b/vue3/src/openapi/models/PatchedAccessToken.ts new file mode 100644 index 000000000..71d28e2e6 --- /dev/null +++ b/vue3/src/openapi/models/PatchedAccessToken.ts @@ -0,0 +1,96 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface PatchedAccessToken + */ +export interface PatchedAccessToken { + /** + * + * @type {number} + * @memberof PatchedAccessToken + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedAccessToken + */ + readonly token?: string; + /** + * + * @type {Date} + * @memberof PatchedAccessToken + */ + expires?: Date; + /** + * + * @type {string} + * @memberof PatchedAccessToken + */ + scope?: string; + /** + * + * @type {Date} + * @memberof PatchedAccessToken + */ + readonly created?: Date; + /** + * + * @type {Date} + * @memberof PatchedAccessToken + */ + readonly updated?: Date; +} + +/** + * Check if a given object implements the PatchedAccessToken interface. + */ +export function instanceOfPatchedAccessToken(value: object): boolean { + return true; +} + +export function PatchedAccessTokenFromJSON(json: any): PatchedAccessToken { + return PatchedAccessTokenFromJSONTyped(json, false); +} + +export function PatchedAccessTokenFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedAccessToken { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'token': json['token'] == null ? undefined : json['token'], + 'expires': json['expires'] == null ? undefined : (new Date(json['expires'])), + 'scope': json['scope'] == null ? undefined : json['scope'], + 'created': json['created'] == null ? undefined : (new Date(json['created'])), + 'updated': json['updated'] == null ? undefined : (new Date(json['updated'])), + }; +} + +export function PatchedAccessTokenToJSON(value?: PatchedAccessToken | null): any { + if (value == null) { + return value; + } + return { + + 'expires': value['expires'] == null ? undefined : ((value['expires']).toISOString()), + 'scope': value['scope'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedAutomation.ts b/vue3/src/openapi/models/PatchedAutomation.ts new file mode 100644 index 000000000..10dd8d58b --- /dev/null +++ b/vue3/src/openapi/models/PatchedAutomation.ts @@ -0,0 +1,137 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { AutomationTypeEnum } from './AutomationTypeEnum'; +import { + AutomationTypeEnumFromJSON, + AutomationTypeEnumFromJSONTyped, + AutomationTypeEnumToJSON, +} from './AutomationTypeEnum'; + +/** + * + * @export + * @interface PatchedAutomation + */ +export interface PatchedAutomation { + /** + * + * @type {number} + * @memberof PatchedAutomation + */ + readonly id?: number; + /** + * + * @type {AutomationTypeEnum} + * @memberof PatchedAutomation + */ + type?: AutomationTypeEnum; + /** + * + * @type {string} + * @memberof PatchedAutomation + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedAutomation + */ + description?: string; + /** + * + * @type {string} + * @memberof PatchedAutomation + */ + param1?: string; + /** + * + * @type {string} + * @memberof PatchedAutomation + */ + param2?: string; + /** + * + * @type {string} + * @memberof PatchedAutomation + */ + param3?: string; + /** + * + * @type {number} + * @memberof PatchedAutomation + */ + order?: number; + /** + * + * @type {boolean} + * @memberof PatchedAutomation + */ + disabled?: boolean; + /** + * + * @type {number} + * @memberof PatchedAutomation + */ + readonly createdBy?: number; +} + +/** + * Check if a given object implements the PatchedAutomation interface. + */ +export function instanceOfPatchedAutomation(value: object): boolean { + return true; +} + +export function PatchedAutomationFromJSON(json: any): PatchedAutomation { + return PatchedAutomationFromJSONTyped(json, false); +} + +export function PatchedAutomationFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedAutomation { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'type': json['type'] == null ? undefined : AutomationTypeEnumFromJSON(json['type']), + 'name': json['name'] == null ? undefined : json['name'], + 'description': json['description'] == null ? undefined : json['description'], + 'param1': json['param_1'] == null ? undefined : json['param_1'], + 'param2': json['param_2'] == null ? undefined : json['param_2'], + 'param3': json['param_3'] == null ? undefined : json['param_3'], + 'order': json['order'] == null ? undefined : json['order'], + 'disabled': json['disabled'] == null ? undefined : json['disabled'], + 'createdBy': json['created_by'] == null ? undefined : json['created_by'], + }; +} + +export function PatchedAutomationToJSON(value?: PatchedAutomation | null): any { + if (value == null) { + return value; + } + return { + + 'type': AutomationTypeEnumToJSON(value['type']), + 'name': value['name'], + 'description': value['description'], + 'param_1': value['param1'], + 'param_2': value['param2'], + 'param_3': value['param3'], + 'order': value['order'], + 'disabled': value['disabled'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedBookmarkletImport.ts b/vue3/src/openapi/models/PatchedBookmarkletImport.ts new file mode 100644 index 000000000..36d1ed4b2 --- /dev/null +++ b/vue3/src/openapi/models/PatchedBookmarkletImport.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface PatchedBookmarkletImport + */ +export interface PatchedBookmarkletImport { + /** + * + * @type {number} + * @memberof PatchedBookmarkletImport + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedBookmarkletImport + */ + url?: string; + /** + * + * @type {string} + * @memberof PatchedBookmarkletImport + */ + html?: string; + /** + * + * @type {number} + * @memberof PatchedBookmarkletImport + */ + readonly createdBy?: number; + /** + * + * @type {Date} + * @memberof PatchedBookmarkletImport + */ + readonly createdAt?: Date; +} + +/** + * Check if a given object implements the PatchedBookmarkletImport interface. + */ +export function instanceOfPatchedBookmarkletImport(value: object): boolean { + return true; +} + +export function PatchedBookmarkletImportFromJSON(json: any): PatchedBookmarkletImport { + return PatchedBookmarkletImportFromJSONTyped(json, false); +} + +export function PatchedBookmarkletImportFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedBookmarkletImport { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'url': json['url'] == null ? undefined : json['url'], + 'html': json['html'] == null ? undefined : json['html'], + 'createdBy': json['created_by'] == null ? undefined : json['created_by'], + 'createdAt': json['created_at'] == null ? undefined : (new Date(json['created_at'])), + }; +} + +export function PatchedBookmarkletImportToJSON(value?: PatchedBookmarkletImport | null): any { + if (value == null) { + return value; + } + return { + + 'url': value['url'], + 'html': value['html'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedConnectorConfigConfig.ts b/vue3/src/openapi/models/PatchedConnectorConfigConfig.ts new file mode 100644 index 000000000..e79ee009e --- /dev/null +++ b/vue3/src/openapi/models/PatchedConnectorConfigConfig.ts @@ -0,0 +1,130 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface PatchedConnectorConfigConfig + */ +export interface PatchedConnectorConfigConfig { + /** + * + * @type {number} + * @memberof PatchedConnectorConfigConfig + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedConnectorConfigConfig + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedConnectorConfigConfig + */ + url?: string; + /** + * + * @type {string} + * @memberof PatchedConnectorConfigConfig + */ + token?: string; + /** + * + * @type {string} + * @memberof PatchedConnectorConfigConfig + */ + todoEntity?: string; + /** + * Is Connector Enabled + * @type {boolean} + * @memberof PatchedConnectorConfigConfig + */ + enabled?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedConnectorConfigConfig + */ + onShoppingListEntryCreatedEnabled?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedConnectorConfigConfig + */ + onShoppingListEntryUpdatedEnabled?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedConnectorConfigConfig + */ + onShoppingListEntryDeletedEnabled?: boolean; + /** + * + * @type {number} + * @memberof PatchedConnectorConfigConfig + */ + readonly createdBy?: number; +} + +/** + * Check if a given object implements the PatchedConnectorConfigConfig interface. + */ +export function instanceOfPatchedConnectorConfigConfig(value: object): boolean { + return true; +} + +export function PatchedConnectorConfigConfigFromJSON(json: any): PatchedConnectorConfigConfig { + return PatchedConnectorConfigConfigFromJSONTyped(json, false); +} + +export function PatchedConnectorConfigConfigFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedConnectorConfigConfig { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'name': json['name'] == null ? undefined : json['name'], + 'url': json['url'] == null ? undefined : json['url'], + 'token': json['token'] == null ? undefined : json['token'], + 'todoEntity': json['todo_entity'] == null ? undefined : json['todo_entity'], + 'enabled': json['enabled'] == null ? undefined : json['enabled'], + 'onShoppingListEntryCreatedEnabled': json['on_shopping_list_entry_created_enabled'] == null ? undefined : json['on_shopping_list_entry_created_enabled'], + 'onShoppingListEntryUpdatedEnabled': json['on_shopping_list_entry_updated_enabled'] == null ? undefined : json['on_shopping_list_entry_updated_enabled'], + 'onShoppingListEntryDeletedEnabled': json['on_shopping_list_entry_deleted_enabled'] == null ? undefined : json['on_shopping_list_entry_deleted_enabled'], + 'createdBy': json['created_by'] == null ? undefined : json['created_by'], + }; +} + +export function PatchedConnectorConfigConfigToJSON(value?: PatchedConnectorConfigConfig | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'url': value['url'], + 'token': value['token'], + 'todo_entity': value['todoEntity'], + 'enabled': value['enabled'], + 'on_shopping_list_entry_created_enabled': value['onShoppingListEntryCreatedEnabled'], + 'on_shopping_list_entry_updated_enabled': value['onShoppingListEntryUpdatedEnabled'], + 'on_shopping_list_entry_deleted_enabled': value['onShoppingListEntryDeletedEnabled'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedCookLog.ts b/vue3/src/openapi/models/PatchedCookLog.ts new file mode 100644 index 000000000..545f1ead8 --- /dev/null +++ b/vue3/src/openapi/models/PatchedCookLog.ts @@ -0,0 +1,120 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { User } from './User'; +import { + UserFromJSON, + UserFromJSONTyped, + UserToJSON, +} from './User'; + +/** + * + * @export + * @interface PatchedCookLog + */ +export interface PatchedCookLog { + /** + * + * @type {number} + * @memberof PatchedCookLog + */ + readonly id?: number; + /** + * + * @type {number} + * @memberof PatchedCookLog + */ + recipe?: number; + /** + * + * @type {number} + * @memberof PatchedCookLog + */ + servings?: number; + /** + * + * @type {number} + * @memberof PatchedCookLog + */ + rating?: number; + /** + * + * @type {string} + * @memberof PatchedCookLog + */ + comment?: string; + /** + * + * @type {User} + * @memberof PatchedCookLog + */ + readonly createdBy?: User; + /** + * + * @type {Date} + * @memberof PatchedCookLog + */ + createdAt?: Date; + /** + * + * @type {Date} + * @memberof PatchedCookLog + */ + readonly updatedAt?: Date; +} + +/** + * Check if a given object implements the PatchedCookLog interface. + */ +export function instanceOfPatchedCookLog(value: object): boolean { + return true; +} + +export function PatchedCookLogFromJSON(json: any): PatchedCookLog { + return PatchedCookLogFromJSONTyped(json, false); +} + +export function PatchedCookLogFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedCookLog { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'recipe': json['recipe'] == null ? undefined : json['recipe'], + 'servings': json['servings'] == null ? undefined : json['servings'], + 'rating': json['rating'] == null ? undefined : json['rating'], + 'comment': json['comment'] == null ? undefined : json['comment'], + 'createdBy': json['created_by'] == null ? undefined : UserFromJSON(json['created_by']), + 'createdAt': json['created_at'] == null ? undefined : (new Date(json['created_at'])), + 'updatedAt': json['updated_at'] == null ? undefined : (new Date(json['updated_at'])), + }; +} + +export function PatchedCookLogToJSON(value?: PatchedCookLog | null): any { + if (value == null) { + return value; + } + return { + + 'recipe': value['recipe'], + 'servings': value['servings'], + 'rating': value['rating'], + 'comment': value['comment'], + 'created_at': value['createdAt'] == null ? undefined : ((value['createdAt']).toISOString()), + }; +} + diff --git a/vue3/src/openapi/models/PatchedCustomFilter.ts b/vue3/src/openapi/models/PatchedCustomFilter.ts new file mode 100644 index 000000000..250782a8e --- /dev/null +++ b/vue3/src/openapi/models/PatchedCustomFilter.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { User } from './User'; +import { + UserFromJSON, + UserFromJSONTyped, + UserToJSON, +} from './User'; + +/** + * Adds nested create feature + * @export + * @interface PatchedCustomFilter + */ +export interface PatchedCustomFilter { + /** + * + * @type {number} + * @memberof PatchedCustomFilter + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedCustomFilter + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedCustomFilter + */ + search?: string; + /** + * + * @type {Array} + * @memberof PatchedCustomFilter + */ + shared?: Array; + /** + * + * @type {number} + * @memberof PatchedCustomFilter + */ + readonly createdBy?: number; +} + +/** + * Check if a given object implements the PatchedCustomFilter interface. + */ +export function instanceOfPatchedCustomFilter(value: object): boolean { + return true; +} + +export function PatchedCustomFilterFromJSON(json: any): PatchedCustomFilter { + return PatchedCustomFilterFromJSONTyped(json, false); +} + +export function PatchedCustomFilterFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedCustomFilter { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'name': json['name'] == null ? undefined : json['name'], + 'search': json['search'] == null ? undefined : json['search'], + 'shared': json['shared'] == null ? undefined : ((json['shared'] as Array).map(UserFromJSON)), + 'createdBy': json['created_by'] == null ? undefined : json['created_by'], + }; +} + +export function PatchedCustomFilterToJSON(value?: PatchedCustomFilter | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'search': value['search'], + 'shared': value['shared'] == null ? undefined : ((value['shared'] as Array).map(UserToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/PatchedExportLog.ts b/vue3/src/openapi/models/PatchedExportLog.ts new file mode 100644 index 000000000..2de62422c --- /dev/null +++ b/vue3/src/openapi/models/PatchedExportLog.ts @@ -0,0 +1,129 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface PatchedExportLog + */ +export interface PatchedExportLog { + /** + * + * @type {number} + * @memberof PatchedExportLog + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedExportLog + */ + type?: string; + /** + * + * @type {string} + * @memberof PatchedExportLog + */ + msg?: string; + /** + * + * @type {boolean} + * @memberof PatchedExportLog + */ + running?: boolean; + /** + * + * @type {number} + * @memberof PatchedExportLog + */ + totalRecipes?: number; + /** + * + * @type {number} + * @memberof PatchedExportLog + */ + exportedRecipes?: number; + /** + * + * @type {number} + * @memberof PatchedExportLog + */ + cacheDuration?: number; + /** + * + * @type {boolean} + * @memberof PatchedExportLog + */ + possiblyNotExpired?: boolean; + /** + * + * @type {number} + * @memberof PatchedExportLog + */ + readonly createdBy?: number; + /** + * + * @type {Date} + * @memberof PatchedExportLog + */ + readonly createdAt?: Date; +} + +/** + * Check if a given object implements the PatchedExportLog interface. + */ +export function instanceOfPatchedExportLog(value: object): boolean { + return true; +} + +export function PatchedExportLogFromJSON(json: any): PatchedExportLog { + return PatchedExportLogFromJSONTyped(json, false); +} + +export function PatchedExportLogFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedExportLog { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'type': json['type'] == null ? undefined : json['type'], + 'msg': json['msg'] == null ? undefined : json['msg'], + 'running': json['running'] == null ? undefined : json['running'], + 'totalRecipes': json['total_recipes'] == null ? undefined : json['total_recipes'], + 'exportedRecipes': json['exported_recipes'] == null ? undefined : json['exported_recipes'], + 'cacheDuration': json['cache_duration'] == null ? undefined : json['cache_duration'], + 'possiblyNotExpired': json['possibly_not_expired'] == null ? undefined : json['possibly_not_expired'], + 'createdBy': json['created_by'] == null ? undefined : json['created_by'], + 'createdAt': json['created_at'] == null ? undefined : (new Date(json['created_at'])), + }; +} + +export function PatchedExportLogToJSON(value?: PatchedExportLog | null): any { + if (value == null) { + return value; + } + return { + + 'type': value['type'], + 'msg': value['msg'], + 'running': value['running'], + 'total_recipes': value['totalRecipes'], + 'exported_recipes': value['exportedRecipes'], + 'cache_duration': value['cacheDuration'], + 'possibly_not_expired': value['possiblyNotExpired'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedFood.ts b/vue3/src/openapi/models/PatchedFood.ts new file mode 100644 index 000000000..321164cc2 --- /dev/null +++ b/vue3/src/openapi/models/PatchedFood.ts @@ -0,0 +1,309 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { FoodInheritField } from './FoodInheritField'; +import { + FoodInheritFieldFromJSON, + FoodInheritFieldFromJSONTyped, + FoodInheritFieldToJSON, +} from './FoodInheritField'; +import type { FoodSimple } from './FoodSimple'; +import { + FoodSimpleFromJSON, + FoodSimpleFromJSONTyped, + FoodSimpleToJSON, +} from './FoodSimple'; +import type { Property } from './Property'; +import { + PropertyFromJSON, + PropertyFromJSONTyped, + PropertyToJSON, +} from './Property'; +import type { RecipeSimple } from './RecipeSimple'; +import { + RecipeSimpleFromJSON, + RecipeSimpleFromJSONTyped, + RecipeSimpleToJSON, +} from './RecipeSimple'; +import type { SupermarketCategory } from './SupermarketCategory'; +import { + SupermarketCategoryFromJSON, + SupermarketCategoryFromJSONTyped, + SupermarketCategoryToJSON, +} from './SupermarketCategory'; +import type { Unit } from './Unit'; +import { + UnitFromJSON, + UnitFromJSONTyped, + UnitToJSON, +} from './Unit'; + +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface PatchedFood + */ +export interface PatchedFood { + /** + * + * @type {number} + * @memberof PatchedFood + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedFood + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedFood + */ + pluralName?: string; + /** + * + * @type {string} + * @memberof PatchedFood + */ + description?: string; + /** + * + * @type {string} + * @memberof PatchedFood + */ + readonly shopping?: string; + /** + * + * @type {RecipeSimple} + * @memberof PatchedFood + */ + recipe?: RecipeSimple; + /** + * + * @type {string} + * @memberof PatchedFood + */ + url?: string; + /** + * + * @type {Array} + * @memberof PatchedFood + */ + properties?: Array; + /** + * + * @type {string} + * @memberof PatchedFood + */ + propertiesFoodAmount?: string; + /** + * + * @type {Unit} + * @memberof PatchedFood + */ + propertiesFoodUnit?: Unit; + /** + * + * @type {number} + * @memberof PatchedFood + */ + fdcId?: number; + /** + * + * @type {string} + * @memberof PatchedFood + */ + foodOnhand?: string; + /** + * + * @type {SupermarketCategory} + * @memberof PatchedFood + */ + supermarketCategory?: SupermarketCategory; + /** + * + * @type {string} + * @memberof PatchedFood + */ + readonly parent?: string; + /** + * + * @type {number} + * @memberof PatchedFood + */ + readonly numchild?: number; + /** + * + * @type {Array} + * @memberof PatchedFood + */ + inheritFields?: Array; + /** + * + * @type {string} + * @memberof PatchedFood + */ + readonly fullName?: string; + /** + * + * @type {boolean} + * @memberof PatchedFood + */ + ignoreShopping?: boolean; + /** + * + * @type {Array} + * @memberof PatchedFood + */ + substitute?: Array; + /** + * + * @type {boolean} + * @memberof PatchedFood + */ + substituteSiblings?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedFood + */ + substituteChildren?: boolean; + /** + * + * @type {string} + * @memberof PatchedFood + */ + readonly substituteOnhand?: string; + /** + * + * @type {Array} + * @memberof PatchedFood + */ + childInheritFields?: Array; + /** + * + * @type {string} + * @memberof PatchedFood + */ + openDataSlug?: string; +} + +/** + * Check if a given object implements the PatchedFood interface. + */ +export function instanceOfPatchedFood(value: object): boolean { + return true; +} + +export function PatchedFoodFromJSON(json: any): PatchedFood { + return PatchedFoodFromJSONTyped(json, false); +} + +export function PatchedFoodFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedFood { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'name': json['name'] == null ? undefined : json['name'], + 'pluralName': json['plural_name'] == null ? undefined : json['plural_name'], + 'description': json['description'] == null ? undefined : json['description'], + 'shopping': json['shopping'] == null ? undefined : json['shopping'], + 'recipe': json['recipe'] == null ? undefined : RecipeSimpleFromJSON(json['recipe']), + 'url': json['url'] == null ? undefined : json['url'], + 'properties': json['properties'] == null ? undefined : ((json['properties'] as Array).map(PropertyFromJSON)), + 'propertiesFoodAmount': json['properties_food_amount'] == null ? undefined : json['properties_food_amount'], + 'propertiesFoodUnit': json['properties_food_unit'] == null ? undefined : UnitFromJSON(json['properties_food_unit']), + 'fdcId': json['fdc_id'] == null ? undefined : json['fdc_id'], + 'foodOnhand': json['food_onhand'] == null ? undefined : json['food_onhand'], + 'supermarketCategory': json['supermarket_category'] == null ? undefined : SupermarketCategoryFromJSON(json['supermarket_category']), + 'parent': json['parent'] == null ? undefined : json['parent'], + 'numchild': json['numchild'] == null ? undefined : json['numchild'], + 'inheritFields': json['inherit_fields'] == null ? undefined : ((json['inherit_fields'] as Array).map(FoodInheritFieldFromJSON)), + 'fullName': json['full_name'] == null ? undefined : json['full_name'], + 'ignoreShopping': json['ignore_shopping'] == null ? undefined : json['ignore_shopping'], + 'substitute': json['substitute'] == null ? undefined : ((json['substitute'] as Array).map(FoodSimpleFromJSON)), + 'substituteSiblings': json['substitute_siblings'] == null ? undefined : json['substitute_siblings'], + 'substituteChildren': json['substitute_children'] == null ? undefined : json['substitute_children'], + 'substituteOnhand': json['substitute_onhand'] == null ? undefined : json['substitute_onhand'], + 'childInheritFields': json['child_inherit_fields'] == null ? undefined : ((json['child_inherit_fields'] as Array).map(FoodInheritFieldFromJSON)), + 'openDataSlug': json['open_data_slug'] == null ? undefined : json['open_data_slug'], + }; +} + +export function PatchedFoodToJSON(value?: PatchedFood | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'plural_name': value['pluralName'], + 'description': value['description'], + 'recipe': RecipeSimpleToJSON(value['recipe']), + 'url': value['url'], + 'properties': value['properties'] == null ? undefined : ((value['properties'] as Array).map(PropertyToJSON)), + 'properties_food_amount': value['propertiesFoodAmount'], + 'properties_food_unit': UnitToJSON(value['propertiesFoodUnit']), + 'fdc_id': value['fdcId'], + 'food_onhand': value['foodOnhand'], + 'supermarket_category': SupermarketCategoryToJSON(value['supermarketCategory']), + 'inherit_fields': value['inheritFields'] == null ? undefined : ((value['inheritFields'] as Array).map(FoodInheritFieldToJSON)), + 'ignore_shopping': value['ignoreShopping'], + 'substitute': value['substitute'] == null ? undefined : ((value['substitute'] as Array).map(FoodSimpleToJSON)), + 'substitute_siblings': value['substituteSiblings'], + 'substitute_children': value['substituteChildren'], + 'child_inherit_fields': value['childInheritFields'] == null ? undefined : ((value['childInheritFields'] as Array).map(FoodInheritFieldToJSON)), + 'open_data_slug': value['openDataSlug'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedImportLog.ts b/vue3/src/openapi/models/PatchedImportLog.ts new file mode 100644 index 000000000..826ac959f --- /dev/null +++ b/vue3/src/openapi/models/PatchedImportLog.ts @@ -0,0 +1,127 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Keyword } from './Keyword'; +import { + KeywordFromJSON, + KeywordFromJSONTyped, + KeywordToJSON, +} from './Keyword'; + +/** + * + * @export + * @interface PatchedImportLog + */ +export interface PatchedImportLog { + /** + * + * @type {number} + * @memberof PatchedImportLog + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedImportLog + */ + type?: string; + /** + * + * @type {string} + * @memberof PatchedImportLog + */ + msg?: string; + /** + * + * @type {boolean} + * @memberof PatchedImportLog + */ + running?: boolean; + /** + * + * @type {Keyword} + * @memberof PatchedImportLog + */ + readonly keyword?: Keyword; + /** + * + * @type {number} + * @memberof PatchedImportLog + */ + totalRecipes?: number; + /** + * + * @type {number} + * @memberof PatchedImportLog + */ + importedRecipes?: number; + /** + * + * @type {number} + * @memberof PatchedImportLog + */ + readonly createdBy?: number; + /** + * + * @type {Date} + * @memberof PatchedImportLog + */ + readonly createdAt?: Date; +} + +/** + * Check if a given object implements the PatchedImportLog interface. + */ +export function instanceOfPatchedImportLog(value: object): boolean { + return true; +} + +export function PatchedImportLogFromJSON(json: any): PatchedImportLog { + return PatchedImportLogFromJSONTyped(json, false); +} + +export function PatchedImportLogFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedImportLog { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'type': json['type'] == null ? undefined : json['type'], + 'msg': json['msg'] == null ? undefined : json['msg'], + 'running': json['running'] == null ? undefined : json['running'], + 'keyword': json['keyword'] == null ? undefined : KeywordFromJSON(json['keyword']), + 'totalRecipes': json['total_recipes'] == null ? undefined : json['total_recipes'], + 'importedRecipes': json['imported_recipes'] == null ? undefined : json['imported_recipes'], + 'createdBy': json['created_by'] == null ? undefined : json['created_by'], + 'createdAt': json['created_at'] == null ? undefined : (new Date(json['created_at'])), + }; +} + +export function PatchedImportLogToJSON(value?: PatchedImportLog | null): any { + if (value == null) { + return value; + } + return { + + 'type': value['type'], + 'msg': value['msg'], + 'running': value['running'], + 'total_recipes': value['totalRecipes'], + 'imported_recipes': value['importedRecipes'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedIngredient.ts b/vue3/src/openapi/models/PatchedIngredient.ts new file mode 100644 index 000000000..6e489c152 --- /dev/null +++ b/vue3/src/openapi/models/PatchedIngredient.ts @@ -0,0 +1,166 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Food } from './Food'; +import { + FoodFromJSON, + FoodFromJSONTyped, + FoodToJSON, +} from './Food'; +import type { Unit } from './Unit'; +import { + UnitFromJSON, + UnitFromJSONTyped, + UnitToJSON, +} from './Unit'; + +/** + * Adds nested create feature + * @export + * @interface PatchedIngredient + */ +export interface PatchedIngredient { + /** + * + * @type {number} + * @memberof PatchedIngredient + */ + readonly id?: number; + /** + * + * @type {Food} + * @memberof PatchedIngredient + */ + food?: Food; + /** + * + * @type {Unit} + * @memberof PatchedIngredient + */ + unit?: Unit; + /** + * + * @type {string} + * @memberof PatchedIngredient + */ + amount?: string; + /** + * + * @type {string} + * @memberof PatchedIngredient + */ + readonly conversions?: string; + /** + * + * @type {string} + * @memberof PatchedIngredient + */ + note?: string; + /** + * + * @type {number} + * @memberof PatchedIngredient + */ + order?: number; + /** + * + * @type {boolean} + * @memberof PatchedIngredient + */ + isHeader?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedIngredient + */ + noAmount?: boolean; + /** + * + * @type {string} + * @memberof PatchedIngredient + */ + originalText?: string; + /** + * + * @type {string} + * @memberof PatchedIngredient + */ + readonly usedInRecipes?: string; + /** + * + * @type {boolean} + * @memberof PatchedIngredient + */ + alwaysUsePluralUnit?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedIngredient + */ + alwaysUsePluralFood?: boolean; +} + +/** + * Check if a given object implements the PatchedIngredient interface. + */ +export function instanceOfPatchedIngredient(value: object): boolean { + return true; +} + +export function PatchedIngredientFromJSON(json: any): PatchedIngredient { + return PatchedIngredientFromJSONTyped(json, false); +} + +export function PatchedIngredientFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedIngredient { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'food': json['food'] == null ? undefined : FoodFromJSON(json['food']), + 'unit': json['unit'] == null ? undefined : UnitFromJSON(json['unit']), + 'amount': json['amount'] == null ? undefined : json['amount'], + 'conversions': json['conversions'] == null ? undefined : json['conversions'], + 'note': json['note'] == null ? undefined : json['note'], + 'order': json['order'] == null ? undefined : json['order'], + 'isHeader': json['is_header'] == null ? undefined : json['is_header'], + 'noAmount': json['no_amount'] == null ? undefined : json['no_amount'], + 'originalText': json['original_text'] == null ? undefined : json['original_text'], + 'usedInRecipes': json['used_in_recipes'] == null ? undefined : json['used_in_recipes'], + 'alwaysUsePluralUnit': json['always_use_plural_unit'] == null ? undefined : json['always_use_plural_unit'], + 'alwaysUsePluralFood': json['always_use_plural_food'] == null ? undefined : json['always_use_plural_food'], + }; +} + +export function PatchedIngredientToJSON(value?: PatchedIngredient | null): any { + if (value == null) { + return value; + } + return { + + 'food': FoodToJSON(value['food']), + 'unit': UnitToJSON(value['unit']), + 'amount': value['amount'], + 'note': value['note'], + 'order': value['order'], + 'is_header': value['isHeader'], + 'no_amount': value['noAmount'], + 'original_text': value['originalText'], + 'always_use_plural_unit': value['alwaysUsePluralUnit'], + 'always_use_plural_food': value['alwaysUsePluralFood'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedInviteLink.ts b/vue3/src/openapi/models/PatchedInviteLink.ts new file mode 100644 index 000000000..771234dd3 --- /dev/null +++ b/vue3/src/openapi/models/PatchedInviteLink.ts @@ -0,0 +1,135 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Group } from './Group'; +import { + GroupFromJSON, + GroupFromJSONTyped, + GroupToJSON, +} from './Group'; + +/** + * Adds nested create feature + * @export + * @interface PatchedInviteLink + */ +export interface PatchedInviteLink { + /** + * + * @type {number} + * @memberof PatchedInviteLink + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedInviteLink + */ + readonly uuid?: string; + /** + * + * @type {string} + * @memberof PatchedInviteLink + */ + email?: string; + /** + * + * @type {Group} + * @memberof PatchedInviteLink + */ + group?: Group; + /** + * + * @type {Date} + * @memberof PatchedInviteLink + */ + validUntil?: Date; + /** + * + * @type {number} + * @memberof PatchedInviteLink + */ + usedBy?: number; + /** + * + * @type {boolean} + * @memberof PatchedInviteLink + */ + reusable?: boolean; + /** + * + * @type {string} + * @memberof PatchedInviteLink + */ + internalNote?: string; + /** + * + * @type {number} + * @memberof PatchedInviteLink + */ + readonly createdBy?: number; + /** + * + * @type {Date} + * @memberof PatchedInviteLink + */ + readonly createdAt?: Date; +} + +/** + * Check if a given object implements the PatchedInviteLink interface. + */ +export function instanceOfPatchedInviteLink(value: object): boolean { + return true; +} + +export function PatchedInviteLinkFromJSON(json: any): PatchedInviteLink { + return PatchedInviteLinkFromJSONTyped(json, false); +} + +export function PatchedInviteLinkFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedInviteLink { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'uuid': json['uuid'] == null ? undefined : json['uuid'], + 'email': json['email'] == null ? undefined : json['email'], + 'group': json['group'] == null ? undefined : GroupFromJSON(json['group']), + 'validUntil': json['valid_until'] == null ? undefined : (new Date(json['valid_until'])), + 'usedBy': json['used_by'] == null ? undefined : json['used_by'], + 'reusable': json['reusable'] == null ? undefined : json['reusable'], + 'internalNote': json['internal_note'] == null ? undefined : json['internal_note'], + 'createdBy': json['created_by'] == null ? undefined : json['created_by'], + 'createdAt': json['created_at'] == null ? undefined : (new Date(json['created_at'])), + }; +} + +export function PatchedInviteLinkToJSON(value?: PatchedInviteLink | null): any { + if (value == null) { + return value; + } + return { + + 'email': value['email'], + 'group': GroupToJSON(value['group']), + 'valid_until': value['validUntil'] == null ? undefined : ((value['validUntil']).toISOString().substring(0,10)), + 'used_by': value['usedBy'], + 'reusable': value['reusable'], + 'internal_note': value['internalNote'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedKeyword.ts b/vue3/src/openapi/models/PatchedKeyword.ts new file mode 100644 index 000000000..b63387f7c --- /dev/null +++ b/vue3/src/openapi/models/PatchedKeyword.ts @@ -0,0 +1,151 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface PatchedKeyword + */ +export interface PatchedKeyword { + /** + * + * @type {number} + * @memberof PatchedKeyword + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedKeyword + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedKeyword + */ + readonly label?: string; + /** + * + * @type {string} + * @memberof PatchedKeyword + */ + description?: string; + /** + * + * @type {string} + * @memberof PatchedKeyword + */ + readonly parent?: string; + /** + * + * @type {number} + * @memberof PatchedKeyword + */ + readonly numchild?: number; + /** + * + * @type {Date} + * @memberof PatchedKeyword + */ + readonly createdAt?: Date; + /** + * + * @type {Date} + * @memberof PatchedKeyword + */ + readonly updatedAt?: Date; + /** + * + * @type {string} + * @memberof PatchedKeyword + */ + readonly fullName?: string; +} + +/** + * Check if a given object implements the PatchedKeyword interface. + */ +export function instanceOfPatchedKeyword(value: object): boolean { + return true; +} + +export function PatchedKeywordFromJSON(json: any): PatchedKeyword { + return PatchedKeywordFromJSONTyped(json, false); +} + +export function PatchedKeywordFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedKeyword { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'name': json['name'] == null ? undefined : json['name'], + 'label': json['label'] == null ? undefined : json['label'], + 'description': json['description'] == null ? undefined : json['description'], + 'parent': json['parent'] == null ? undefined : json['parent'], + 'numchild': json['numchild'] == null ? undefined : json['numchild'], + 'createdAt': json['created_at'] == null ? undefined : (new Date(json['created_at'])), + 'updatedAt': json['updated_at'] == null ? undefined : (new Date(json['updated_at'])), + 'fullName': json['full_name'] == null ? undefined : json['full_name'], + }; +} + +export function PatchedKeywordToJSON(value?: PatchedKeyword | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'description': value['description'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedMealPlan.ts b/vue3/src/openapi/models/PatchedMealPlan.ts new file mode 100644 index 000000000..7518dbc44 --- /dev/null +++ b/vue3/src/openapi/models/PatchedMealPlan.ts @@ -0,0 +1,177 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { MealType } from './MealType'; +import { + MealTypeFromJSON, + MealTypeFromJSONTyped, + MealTypeToJSON, +} from './MealType'; +import type { RecipeOverview } from './RecipeOverview'; +import { + RecipeOverviewFromJSON, + RecipeOverviewFromJSONTyped, + RecipeOverviewToJSON, +} from './RecipeOverview'; +import type { User } from './User'; +import { + UserFromJSON, + UserFromJSONTyped, + UserToJSON, +} from './User'; + +/** + * Adds nested create feature + * @export + * @interface PatchedMealPlan + */ +export interface PatchedMealPlan { + /** + * + * @type {number} + * @memberof PatchedMealPlan + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedMealPlan + */ + title?: string; + /** + * + * @type {RecipeOverview} + * @memberof PatchedMealPlan + */ + recipe?: RecipeOverview; + /** + * + * @type {string} + * @memberof PatchedMealPlan + */ + servings?: string; + /** + * + * @type {string} + * @memberof PatchedMealPlan + */ + note?: string; + /** + * + * @type {string} + * @memberof PatchedMealPlan + */ + readonly noteMarkdown?: string; + /** + * + * @type {Date} + * @memberof PatchedMealPlan + */ + fromDate?: Date; + /** + * + * @type {Date} + * @memberof PatchedMealPlan + */ + toDate?: Date; + /** + * + * @type {MealType} + * @memberof PatchedMealPlan + */ + mealType?: MealType; + /** + * + * @type {number} + * @memberof PatchedMealPlan + */ + readonly createdBy?: number; + /** + * + * @type {Array} + * @memberof PatchedMealPlan + */ + shared?: Array; + /** + * + * @type {string} + * @memberof PatchedMealPlan + */ + readonly recipeName?: string; + /** + * + * @type {string} + * @memberof PatchedMealPlan + */ + readonly mealTypeName?: string; + /** + * + * @type {string} + * @memberof PatchedMealPlan + */ + readonly shopping?: string; +} + +/** + * Check if a given object implements the PatchedMealPlan interface. + */ +export function instanceOfPatchedMealPlan(value: object): boolean { + return true; +} + +export function PatchedMealPlanFromJSON(json: any): PatchedMealPlan { + return PatchedMealPlanFromJSONTyped(json, false); +} + +export function PatchedMealPlanFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedMealPlan { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'title': json['title'] == null ? undefined : json['title'], + 'recipe': json['recipe'] == null ? undefined : RecipeOverviewFromJSON(json['recipe']), + 'servings': json['servings'] == null ? undefined : json['servings'], + 'note': json['note'] == null ? undefined : json['note'], + 'noteMarkdown': json['note_markdown'] == null ? undefined : json['note_markdown'], + 'fromDate': json['from_date'] == null ? undefined : (new Date(json['from_date'])), + 'toDate': json['to_date'] == null ? undefined : (new Date(json['to_date'])), + 'mealType': json['meal_type'] == null ? undefined : MealTypeFromJSON(json['meal_type']), + 'createdBy': json['created_by'] == null ? undefined : json['created_by'], + 'shared': json['shared'] == null ? undefined : ((json['shared'] as Array).map(UserFromJSON)), + 'recipeName': json['recipe_name'] == null ? undefined : json['recipe_name'], + 'mealTypeName': json['meal_type_name'] == null ? undefined : json['meal_type_name'], + 'shopping': json['shopping'] == null ? undefined : json['shopping'], + }; +} + +export function PatchedMealPlanToJSON(value?: PatchedMealPlan | null): any { + if (value == null) { + return value; + } + return { + + 'title': value['title'], + 'recipe': RecipeOverviewToJSON(value['recipe']), + 'servings': value['servings'], + 'note': value['note'], + 'from_date': value['fromDate'] == null ? undefined : ((value['fromDate']).toISOString().substring(0,10)), + 'to_date': value['toDate'] == null ? undefined : ((value['toDate']).toISOString().substring(0,10)), + 'meal_type': MealTypeToJSON(value['mealType']), + 'shared': value['shared'] == null ? undefined : ((value['shared'] as Array).map(UserToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/PatchedMealType.ts b/vue3/src/openapi/models/PatchedMealType.ts new file mode 100644 index 000000000..990bfbcb5 --- /dev/null +++ b/vue3/src/openapi/models/PatchedMealType.ts @@ -0,0 +1,98 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * Adds nested create feature + * @export + * @interface PatchedMealType + */ +export interface PatchedMealType { + /** + * + * @type {number} + * @memberof PatchedMealType + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedMealType + */ + name?: string; + /** + * + * @type {number} + * @memberof PatchedMealType + */ + order?: number; + /** + * + * @type {string} + * @memberof PatchedMealType + */ + color?: string; + /** + * + * @type {boolean} + * @memberof PatchedMealType + */ + _default?: boolean; + /** + * + * @type {number} + * @memberof PatchedMealType + */ + readonly createdBy?: number; +} + +/** + * Check if a given object implements the PatchedMealType interface. + */ +export function instanceOfPatchedMealType(value: object): boolean { + return true; +} + +export function PatchedMealTypeFromJSON(json: any): PatchedMealType { + return PatchedMealTypeFromJSONTyped(json, false); +} + +export function PatchedMealTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedMealType { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'name': json['name'] == null ? undefined : json['name'], + 'order': json['order'] == null ? undefined : json['order'], + 'color': json['color'] == null ? undefined : json['color'], + '_default': json['default'] == null ? undefined : json['default'], + 'createdBy': json['created_by'] == null ? undefined : json['created_by'], + }; +} + +export function PatchedMealTypeToJSON(value?: PatchedMealType | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'order': value['order'], + 'color': value['color'], + 'default': value['_default'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedOpenDataCategory.ts b/vue3/src/openapi/models/PatchedOpenDataCategory.ts new file mode 100644 index 000000000..7d8187505 --- /dev/null +++ b/vue3/src/openapi/models/PatchedOpenDataCategory.ts @@ -0,0 +1,147 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { OpenDataVersion } from './OpenDataVersion'; +import { + OpenDataVersionFromJSON, + OpenDataVersionFromJSONTyped, + OpenDataVersionToJSON, +} from './OpenDataVersion'; + +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface PatchedOpenDataCategory + */ +export interface PatchedOpenDataCategory { + /** + * + * @type {number} + * @memberof PatchedOpenDataCategory + */ + readonly id?: number; + /** + * + * @type {OpenDataVersion} + * @memberof PatchedOpenDataCategory + */ + version?: OpenDataVersion; + /** + * + * @type {string} + * @memberof PatchedOpenDataCategory + */ + slug?: string; + /** + * + * @type {string} + * @memberof PatchedOpenDataCategory + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedOpenDataCategory + */ + description?: string; + /** + * + * @type {string} + * @memberof PatchedOpenDataCategory + */ + comment?: string; + /** + * + * @type {string} + * @memberof PatchedOpenDataCategory + */ + readonly createdBy?: string; +} + +/** + * Check if a given object implements the PatchedOpenDataCategory interface. + */ +export function instanceOfPatchedOpenDataCategory(value: object): boolean { + return true; +} + +export function PatchedOpenDataCategoryFromJSON(json: any): PatchedOpenDataCategory { + return PatchedOpenDataCategoryFromJSONTyped(json, false); +} + +export function PatchedOpenDataCategoryFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedOpenDataCategory { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'version': json['version'] == null ? undefined : OpenDataVersionFromJSON(json['version']), + 'slug': json['slug'] == null ? undefined : json['slug'], + 'name': json['name'] == null ? undefined : json['name'], + 'description': json['description'] == null ? undefined : json['description'], + 'comment': json['comment'] == null ? undefined : json['comment'], + 'createdBy': json['created_by'] == null ? undefined : json['created_by'], + }; +} + +export function PatchedOpenDataCategoryToJSON(value?: PatchedOpenDataCategory | null): any { + if (value == null) { + return value; + } + return { + + 'version': OpenDataVersionToJSON(value['version']), + 'slug': value['slug'], + 'name': value['name'], + 'description': value['description'], + 'comment': value['comment'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedOpenDataConversion.ts b/vue3/src/openapi/models/PatchedOpenDataConversion.ts new file mode 100644 index 000000000..aa6e13394 --- /dev/null +++ b/vue3/src/openapi/models/PatchedOpenDataConversion.ts @@ -0,0 +1,157 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { OpenDataFood } from './OpenDataFood'; +import { + OpenDataFoodFromJSON, + OpenDataFoodFromJSONTyped, + OpenDataFoodToJSON, +} from './OpenDataFood'; +import type { OpenDataUnit } from './OpenDataUnit'; +import { + OpenDataUnitFromJSON, + OpenDataUnitFromJSONTyped, + OpenDataUnitToJSON, +} from './OpenDataUnit'; +import type { OpenDataVersion } from './OpenDataVersion'; +import { + OpenDataVersionFromJSON, + OpenDataVersionFromJSONTyped, + OpenDataVersionToJSON, +} from './OpenDataVersion'; + +/** + * Adds nested create feature + * @export + * @interface PatchedOpenDataConversion + */ +export interface PatchedOpenDataConversion { + /** + * + * @type {number} + * @memberof PatchedOpenDataConversion + */ + readonly id?: number; + /** + * + * @type {OpenDataVersion} + * @memberof PatchedOpenDataConversion + */ + version?: OpenDataVersion; + /** + * + * @type {string} + * @memberof PatchedOpenDataConversion + */ + slug?: string; + /** + * + * @type {OpenDataFood} + * @memberof PatchedOpenDataConversion + */ + food?: OpenDataFood; + /** + * + * @type {string} + * @memberof PatchedOpenDataConversion + */ + baseAmount?: string; + /** + * + * @type {OpenDataUnit} + * @memberof PatchedOpenDataConversion + */ + baseUnit?: OpenDataUnit; + /** + * + * @type {string} + * @memberof PatchedOpenDataConversion + */ + convertedAmount?: string; + /** + * + * @type {OpenDataUnit} + * @memberof PatchedOpenDataConversion + */ + convertedUnit?: OpenDataUnit; + /** + * + * @type {string} + * @memberof PatchedOpenDataConversion + */ + source?: string; + /** + * + * @type {string} + * @memberof PatchedOpenDataConversion + */ + comment?: string; + /** + * + * @type {string} + * @memberof PatchedOpenDataConversion + */ + readonly createdBy?: string; +} + +/** + * Check if a given object implements the PatchedOpenDataConversion interface. + */ +export function instanceOfPatchedOpenDataConversion(value: object): boolean { + return true; +} + +export function PatchedOpenDataConversionFromJSON(json: any): PatchedOpenDataConversion { + return PatchedOpenDataConversionFromJSONTyped(json, false); +} + +export function PatchedOpenDataConversionFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedOpenDataConversion { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'version': json['version'] == null ? undefined : OpenDataVersionFromJSON(json['version']), + 'slug': json['slug'] == null ? undefined : json['slug'], + 'food': json['food'] == null ? undefined : OpenDataFoodFromJSON(json['food']), + 'baseAmount': json['base_amount'] == null ? undefined : json['base_amount'], + 'baseUnit': json['base_unit'] == null ? undefined : OpenDataUnitFromJSON(json['base_unit']), + 'convertedAmount': json['converted_amount'] == null ? undefined : json['converted_amount'], + 'convertedUnit': json['converted_unit'] == null ? undefined : OpenDataUnitFromJSON(json['converted_unit']), + 'source': json['source'] == null ? undefined : json['source'], + 'comment': json['comment'] == null ? undefined : json['comment'], + 'createdBy': json['created_by'] == null ? undefined : json['created_by'], + }; +} + +export function PatchedOpenDataConversionToJSON(value?: PatchedOpenDataConversion | null): any { + if (value == null) { + return value; + } + return { + + 'version': OpenDataVersionToJSON(value['version']), + 'slug': value['slug'], + 'food': OpenDataFoodToJSON(value['food']), + 'base_amount': value['baseAmount'], + 'base_unit': OpenDataUnitToJSON(value['baseUnit']), + 'converted_amount': value['convertedAmount'], + 'converted_unit': OpenDataUnitToJSON(value['convertedUnit']), + 'source': value['source'], + 'comment': value['comment'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedOpenDataFood.ts b/vue3/src/openapi/models/PatchedOpenDataFood.ts new file mode 100644 index 000000000..be1f947e8 --- /dev/null +++ b/vue3/src/openapi/models/PatchedOpenDataFood.ts @@ -0,0 +1,245 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { OpenDataCategory } from './OpenDataCategory'; +import { + OpenDataCategoryFromJSON, + OpenDataCategoryFromJSONTyped, + OpenDataCategoryToJSON, +} from './OpenDataCategory'; +import type { OpenDataFoodProperty } from './OpenDataFoodProperty'; +import { + OpenDataFoodPropertyFromJSON, + OpenDataFoodPropertyFromJSONTyped, + OpenDataFoodPropertyToJSON, +} from './OpenDataFoodProperty'; +import type { OpenDataUnit } from './OpenDataUnit'; +import { + OpenDataUnitFromJSON, + OpenDataUnitFromJSONTyped, + OpenDataUnitToJSON, +} from './OpenDataUnit'; +import type { OpenDataVersion } from './OpenDataVersion'; +import { + OpenDataVersionFromJSON, + OpenDataVersionFromJSONTyped, + OpenDataVersionToJSON, +} from './OpenDataVersion'; + +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface PatchedOpenDataFood + */ +export interface PatchedOpenDataFood { + /** + * + * @type {number} + * @memberof PatchedOpenDataFood + */ + readonly id?: number; + /** + * + * @type {OpenDataVersion} + * @memberof PatchedOpenDataFood + */ + version?: OpenDataVersion; + /** + * + * @type {string} + * @memberof PatchedOpenDataFood + */ + slug?: string; + /** + * + * @type {string} + * @memberof PatchedOpenDataFood + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedOpenDataFood + */ + pluralName?: string; + /** + * + * @type {OpenDataCategory} + * @memberof PatchedOpenDataFood + */ + storeCategory?: OpenDataCategory; + /** + * + * @type {OpenDataUnit} + * @memberof PatchedOpenDataFood + */ + preferredUnitMetric?: OpenDataUnit; + /** + * + * @type {OpenDataUnit} + * @memberof PatchedOpenDataFood + */ + preferredShoppingUnitMetric?: OpenDataUnit; + /** + * + * @type {OpenDataUnit} + * @memberof PatchedOpenDataFood + */ + preferredUnitImperial?: OpenDataUnit; + /** + * + * @type {OpenDataUnit} + * @memberof PatchedOpenDataFood + */ + preferredShoppingUnitImperial?: OpenDataUnit; + /** + * + * @type {Array} + * @memberof PatchedOpenDataFood + */ + properties?: Array; + /** + * + * @type {number} + * @memberof PatchedOpenDataFood + */ + propertiesFoodAmount?: number; + /** + * + * @type {OpenDataUnit} + * @memberof PatchedOpenDataFood + */ + propertiesFoodUnit?: OpenDataUnit; + /** + * + * @type {string} + * @memberof PatchedOpenDataFood + */ + propertiesSource?: string; + /** + * + * @type {string} + * @memberof PatchedOpenDataFood + */ + fdcId?: string; + /** + * + * @type {string} + * @memberof PatchedOpenDataFood + */ + comment?: string; + /** + * + * @type {string} + * @memberof PatchedOpenDataFood + */ + readonly createdBy?: string; +} + +/** + * Check if a given object implements the PatchedOpenDataFood interface. + */ +export function instanceOfPatchedOpenDataFood(value: object): boolean { + return true; +} + +export function PatchedOpenDataFoodFromJSON(json: any): PatchedOpenDataFood { + return PatchedOpenDataFoodFromJSONTyped(json, false); +} + +export function PatchedOpenDataFoodFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedOpenDataFood { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'version': json['version'] == null ? undefined : OpenDataVersionFromJSON(json['version']), + 'slug': json['slug'] == null ? undefined : json['slug'], + 'name': json['name'] == null ? undefined : json['name'], + 'pluralName': json['plural_name'] == null ? undefined : json['plural_name'], + 'storeCategory': json['store_category'] == null ? undefined : OpenDataCategoryFromJSON(json['store_category']), + 'preferredUnitMetric': json['preferred_unit_metric'] == null ? undefined : OpenDataUnitFromJSON(json['preferred_unit_metric']), + 'preferredShoppingUnitMetric': json['preferred_shopping_unit_metric'] == null ? undefined : OpenDataUnitFromJSON(json['preferred_shopping_unit_metric']), + 'preferredUnitImperial': json['preferred_unit_imperial'] == null ? undefined : OpenDataUnitFromJSON(json['preferred_unit_imperial']), + 'preferredShoppingUnitImperial': json['preferred_shopping_unit_imperial'] == null ? undefined : OpenDataUnitFromJSON(json['preferred_shopping_unit_imperial']), + 'properties': json['properties'] == null ? undefined : ((json['properties'] as Array).map(OpenDataFoodPropertyFromJSON)), + 'propertiesFoodAmount': json['properties_food_amount'] == null ? undefined : json['properties_food_amount'], + 'propertiesFoodUnit': json['properties_food_unit'] == null ? undefined : OpenDataUnitFromJSON(json['properties_food_unit']), + 'propertiesSource': json['properties_source'] == null ? undefined : json['properties_source'], + 'fdcId': json['fdc_id'] == null ? undefined : json['fdc_id'], + 'comment': json['comment'] == null ? undefined : json['comment'], + 'createdBy': json['created_by'] == null ? undefined : json['created_by'], + }; +} + +export function PatchedOpenDataFoodToJSON(value?: PatchedOpenDataFood | null): any { + if (value == null) { + return value; + } + return { + + 'version': OpenDataVersionToJSON(value['version']), + 'slug': value['slug'], + 'name': value['name'], + 'plural_name': value['pluralName'], + 'store_category': OpenDataCategoryToJSON(value['storeCategory']), + 'preferred_unit_metric': OpenDataUnitToJSON(value['preferredUnitMetric']), + 'preferred_shopping_unit_metric': OpenDataUnitToJSON(value['preferredShoppingUnitMetric']), + 'preferred_unit_imperial': OpenDataUnitToJSON(value['preferredUnitImperial']), + 'preferred_shopping_unit_imperial': OpenDataUnitToJSON(value['preferredShoppingUnitImperial']), + 'properties': value['properties'] == null ? undefined : ((value['properties'] as Array).map(OpenDataFoodPropertyToJSON)), + 'properties_food_amount': value['propertiesFoodAmount'], + 'properties_food_unit': OpenDataUnitToJSON(value['propertiesFoodUnit']), + 'properties_source': value['propertiesSource'], + 'fdc_id': value['fdcId'], + 'comment': value['comment'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedOpenDataProperty.ts b/vue3/src/openapi/models/PatchedOpenDataProperty.ts new file mode 100644 index 000000000..2e6f1ac4e --- /dev/null +++ b/vue3/src/openapi/models/PatchedOpenDataProperty.ts @@ -0,0 +1,155 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { OpenDataVersion } from './OpenDataVersion'; +import { + OpenDataVersionFromJSON, + OpenDataVersionFromJSONTyped, + OpenDataVersionToJSON, +} from './OpenDataVersion'; + +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface PatchedOpenDataProperty + */ +export interface PatchedOpenDataProperty { + /** + * + * @type {number} + * @memberof PatchedOpenDataProperty + */ + readonly id?: number; + /** + * + * @type {OpenDataVersion} + * @memberof PatchedOpenDataProperty + */ + version?: OpenDataVersion; + /** + * + * @type {string} + * @memberof PatchedOpenDataProperty + */ + slug?: string; + /** + * + * @type {string} + * @memberof PatchedOpenDataProperty + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedOpenDataProperty + */ + unit?: string; + /** + * + * @type {number} + * @memberof PatchedOpenDataProperty + */ + fdcId?: number; + /** + * + * @type {string} + * @memberof PatchedOpenDataProperty + */ + comment?: string; + /** + * + * @type {string} + * @memberof PatchedOpenDataProperty + */ + readonly createdBy?: string; +} + +/** + * Check if a given object implements the PatchedOpenDataProperty interface. + */ +export function instanceOfPatchedOpenDataProperty(value: object): boolean { + return true; +} + +export function PatchedOpenDataPropertyFromJSON(json: any): PatchedOpenDataProperty { + return PatchedOpenDataPropertyFromJSONTyped(json, false); +} + +export function PatchedOpenDataPropertyFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedOpenDataProperty { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'version': json['version'] == null ? undefined : OpenDataVersionFromJSON(json['version']), + 'slug': json['slug'] == null ? undefined : json['slug'], + 'name': json['name'] == null ? undefined : json['name'], + 'unit': json['unit'] == null ? undefined : json['unit'], + 'fdcId': json['fdc_id'] == null ? undefined : json['fdc_id'], + 'comment': json['comment'] == null ? undefined : json['comment'], + 'createdBy': json['created_by'] == null ? undefined : json['created_by'], + }; +} + +export function PatchedOpenDataPropertyToJSON(value?: PatchedOpenDataProperty | null): any { + if (value == null) { + return value; + } + return { + + 'version': OpenDataVersionToJSON(value['version']), + 'slug': value['slug'], + 'name': value['name'], + 'unit': value['unit'], + 'fdc_id': value['fdcId'], + 'comment': value['comment'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedOpenDataStore.ts b/vue3/src/openapi/models/PatchedOpenDataStore.ts new file mode 100644 index 000000000..dec05e7a1 --- /dev/null +++ b/vue3/src/openapi/models/PatchedOpenDataStore.ts @@ -0,0 +1,119 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { OpenDataStoreCategory } from './OpenDataStoreCategory'; +import { + OpenDataStoreCategoryFromJSON, + OpenDataStoreCategoryFromJSONTyped, + OpenDataStoreCategoryToJSON, +} from './OpenDataStoreCategory'; +import type { OpenDataVersion } from './OpenDataVersion'; +import { + OpenDataVersionFromJSON, + OpenDataVersionFromJSONTyped, + OpenDataVersionToJSON, +} from './OpenDataVersion'; + +/** + * Adds nested create feature + * @export + * @interface PatchedOpenDataStore + */ +export interface PatchedOpenDataStore { + /** + * + * @type {number} + * @memberof PatchedOpenDataStore + */ + readonly id?: number; + /** + * + * @type {OpenDataVersion} + * @memberof PatchedOpenDataStore + */ + version?: OpenDataVersion; + /** + * + * @type {string} + * @memberof PatchedOpenDataStore + */ + slug?: string; + /** + * + * @type {string} + * @memberof PatchedOpenDataStore + */ + name?: string; + /** + * + * @type {Array} + * @memberof PatchedOpenDataStore + */ + categoryToStore?: Array; + /** + * + * @type {string} + * @memberof PatchedOpenDataStore + */ + comment?: string; + /** + * + * @type {string} + * @memberof PatchedOpenDataStore + */ + readonly createdBy?: string; +} + +/** + * Check if a given object implements the PatchedOpenDataStore interface. + */ +export function instanceOfPatchedOpenDataStore(value: object): boolean { + return true; +} + +export function PatchedOpenDataStoreFromJSON(json: any): PatchedOpenDataStore { + return PatchedOpenDataStoreFromJSONTyped(json, false); +} + +export function PatchedOpenDataStoreFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedOpenDataStore { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'version': json['version'] == null ? undefined : OpenDataVersionFromJSON(json['version']), + 'slug': json['slug'] == null ? undefined : json['slug'], + 'name': json['name'] == null ? undefined : json['name'], + 'categoryToStore': json['category_to_store'] == null ? undefined : ((json['category_to_store'] as Array).map(OpenDataStoreCategoryFromJSON)), + 'comment': json['comment'] == null ? undefined : json['comment'], + 'createdBy': json['created_by'] == null ? undefined : json['created_by'], + }; +} + +export function PatchedOpenDataStoreToJSON(value?: PatchedOpenDataStore | null): any { + if (value == null) { + return value; + } + return { + + 'version': OpenDataVersionToJSON(value['version']), + 'slug': value['slug'], + 'name': value['name'], + 'category_to_store': value['categoryToStore'] == null ? undefined : ((value['categoryToStore'] as Array).map(OpenDataStoreCategoryToJSON)), + 'comment': value['comment'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedOpenDataUnit.ts b/vue3/src/openapi/models/PatchedOpenDataUnit.ts new file mode 100644 index 000000000..b3814b43d --- /dev/null +++ b/vue3/src/openapi/models/PatchedOpenDataUnit.ts @@ -0,0 +1,175 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { BaseUnitEnum } from './BaseUnitEnum'; +import { + BaseUnitEnumFromJSON, + BaseUnitEnumFromJSONTyped, + BaseUnitEnumToJSON, +} from './BaseUnitEnum'; +import type { OpenDataUnitTypeEnum } from './OpenDataUnitTypeEnum'; +import { + OpenDataUnitTypeEnumFromJSON, + OpenDataUnitTypeEnumFromJSONTyped, + OpenDataUnitTypeEnumToJSON, +} from './OpenDataUnitTypeEnum'; +import type { OpenDataVersion } from './OpenDataVersion'; +import { + OpenDataVersionFromJSON, + OpenDataVersionFromJSONTyped, + OpenDataVersionToJSON, +} from './OpenDataVersion'; + +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface PatchedOpenDataUnit + */ +export interface PatchedOpenDataUnit { + /** + * + * @type {number} + * @memberof PatchedOpenDataUnit + */ + readonly id?: number; + /** + * + * @type {OpenDataVersion} + * @memberof PatchedOpenDataUnit + */ + version?: OpenDataVersion; + /** + * + * @type {string} + * @memberof PatchedOpenDataUnit + */ + slug?: string; + /** + * + * @type {string} + * @memberof PatchedOpenDataUnit + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedOpenDataUnit + */ + pluralName?: string; + /** + * + * @type {BaseUnitEnum} + * @memberof PatchedOpenDataUnit + */ + baseUnit?: BaseUnitEnum; + /** + * + * @type {OpenDataUnitTypeEnum} + * @memberof PatchedOpenDataUnit + */ + type?: OpenDataUnitTypeEnum; + /** + * + * @type {string} + * @memberof PatchedOpenDataUnit + */ + comment?: string; + /** + * + * @type {string} + * @memberof PatchedOpenDataUnit + */ + readonly createdBy?: string; +} + +/** + * Check if a given object implements the PatchedOpenDataUnit interface. + */ +export function instanceOfPatchedOpenDataUnit(value: object): boolean { + return true; +} + +export function PatchedOpenDataUnitFromJSON(json: any): PatchedOpenDataUnit { + return PatchedOpenDataUnitFromJSONTyped(json, false); +} + +export function PatchedOpenDataUnitFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedOpenDataUnit { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'version': json['version'] == null ? undefined : OpenDataVersionFromJSON(json['version']), + 'slug': json['slug'] == null ? undefined : json['slug'], + 'name': json['name'] == null ? undefined : json['name'], + 'pluralName': json['plural_name'] == null ? undefined : json['plural_name'], + 'baseUnit': json['base_unit'] == null ? undefined : BaseUnitEnumFromJSON(json['base_unit']), + 'type': json['type'] == null ? undefined : OpenDataUnitTypeEnumFromJSON(json['type']), + 'comment': json['comment'] == null ? undefined : json['comment'], + 'createdBy': json['created_by'] == null ? undefined : json['created_by'], + }; +} + +export function PatchedOpenDataUnitToJSON(value?: PatchedOpenDataUnit | null): any { + if (value == null) { + return value; + } + return { + + 'version': OpenDataVersionToJSON(value['version']), + 'slug': value['slug'], + 'name': value['name'], + 'plural_name': value['pluralName'], + 'base_unit': BaseUnitEnumToJSON(value['baseUnit']), + 'type': OpenDataUnitTypeEnumToJSON(value['type']), + 'comment': value['comment'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedOpenDataVersion.ts b/vue3/src/openapi/models/PatchedOpenDataVersion.ts new file mode 100644 index 000000000..d370daf2c --- /dev/null +++ b/vue3/src/openapi/models/PatchedOpenDataVersion.ts @@ -0,0 +1,117 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface PatchedOpenDataVersion + */ +export interface PatchedOpenDataVersion { + /** + * + * @type {number} + * @memberof PatchedOpenDataVersion + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedOpenDataVersion + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedOpenDataVersion + */ + code?: string; + /** + * + * @type {string} + * @memberof PatchedOpenDataVersion + */ + comment?: string; +} + +/** + * Check if a given object implements the PatchedOpenDataVersion interface. + */ +export function instanceOfPatchedOpenDataVersion(value: object): boolean { + return true; +} + +export function PatchedOpenDataVersionFromJSON(json: any): PatchedOpenDataVersion { + return PatchedOpenDataVersionFromJSONTyped(json, false); +} + +export function PatchedOpenDataVersionFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedOpenDataVersion { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'name': json['name'] == null ? undefined : json['name'], + 'code': json['code'] == null ? undefined : json['code'], + 'comment': json['comment'] == null ? undefined : json['comment'], + }; +} + +export function PatchedOpenDataVersionToJSON(value?: PatchedOpenDataVersion | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'code': value['code'], + 'comment': value['comment'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedProperty.ts b/vue3/src/openapi/models/PatchedProperty.ts new file mode 100644 index 000000000..a68686c8c --- /dev/null +++ b/vue3/src/openapi/models/PatchedProperty.ts @@ -0,0 +1,116 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { PropertyType } from './PropertyType'; +import { + PropertyTypeFromJSON, + PropertyTypeFromJSONTyped, + PropertyTypeToJSON, +} from './PropertyType'; + +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface PatchedProperty + */ +export interface PatchedProperty { + /** + * + * @type {number} + * @memberof PatchedProperty + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedProperty + */ + propertyAmount?: string; + /** + * + * @type {PropertyType} + * @memberof PatchedProperty + */ + propertyType?: PropertyType; +} + +/** + * Check if a given object implements the PatchedProperty interface. + */ +export function instanceOfPatchedProperty(value: object): boolean { + return true; +} + +export function PatchedPropertyFromJSON(json: any): PatchedProperty { + return PatchedPropertyFromJSONTyped(json, false); +} + +export function PatchedPropertyFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedProperty { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'propertyAmount': json['property_amount'] == null ? undefined : json['property_amount'], + 'propertyType': json['property_type'] == null ? undefined : PropertyTypeFromJSON(json['property_type']), + }; +} + +export function PatchedPropertyToJSON(value?: PatchedProperty | null): any { + if (value == null) { + return value; + } + return { + + 'property_amount': value['propertyAmount'], + 'property_type': PropertyTypeToJSON(value['propertyType']), + }; +} + diff --git a/vue3/src/openapi/models/PatchedPropertyType.ts b/vue3/src/openapi/models/PatchedPropertyType.ts new file mode 100644 index 000000000..f2d895035 --- /dev/null +++ b/vue3/src/openapi/models/PatchedPropertyType.ts @@ -0,0 +1,108 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * Adds nested create feature + * @export + * @interface PatchedPropertyType + */ +export interface PatchedPropertyType { + /** + * + * @type {number} + * @memberof PatchedPropertyType + */ + id?: number; + /** + * + * @type {string} + * @memberof PatchedPropertyType + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedPropertyType + */ + unit?: string; + /** + * + * @type {string} + * @memberof PatchedPropertyType + */ + description?: string; + /** + * + * @type {number} + * @memberof PatchedPropertyType + */ + order?: number; + /** + * + * @type {string} + * @memberof PatchedPropertyType + */ + openDataSlug?: string; + /** + * + * @type {number} + * @memberof PatchedPropertyType + */ + fdcId?: number; +} + +/** + * Check if a given object implements the PatchedPropertyType interface. + */ +export function instanceOfPatchedPropertyType(value: object): boolean { + return true; +} + +export function PatchedPropertyTypeFromJSON(json: any): PatchedPropertyType { + return PatchedPropertyTypeFromJSONTyped(json, false); +} + +export function PatchedPropertyTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedPropertyType { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'name': json['name'] == null ? undefined : json['name'], + 'unit': json['unit'] == null ? undefined : json['unit'], + 'description': json['description'] == null ? undefined : json['description'], + 'order': json['order'] == null ? undefined : json['order'], + 'openDataSlug': json['open_data_slug'] == null ? undefined : json['open_data_slug'], + 'fdcId': json['fdc_id'] == null ? undefined : json['fdc_id'], + }; +} + +export function PatchedPropertyTypeToJSON(value?: PatchedPropertyType | null): any { + if (value == null) { + return value; + } + return { + + 'id': value['id'], + 'name': value['name'], + 'unit': value['unit'], + 'description': value['description'], + 'order': value['order'], + 'open_data_slug': value['openDataSlug'], + 'fdc_id': value['fdcId'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedRecipe.ts b/vue3/src/openapi/models/PatchedRecipe.ts new file mode 100644 index 000000000..0996ff52a --- /dev/null +++ b/vue3/src/openapi/models/PatchedRecipe.ts @@ -0,0 +1,267 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Keyword } from './Keyword'; +import { + KeywordFromJSON, + KeywordFromJSONTyped, + KeywordToJSON, +} from './Keyword'; +import type { NutritionInformation } from './NutritionInformation'; +import { + NutritionInformationFromJSON, + NutritionInformationFromJSONTyped, + NutritionInformationToJSON, +} from './NutritionInformation'; +import type { Property } from './Property'; +import { + PropertyFromJSON, + PropertyFromJSONTyped, + PropertyToJSON, +} from './Property'; +import type { Step } from './Step'; +import { + StepFromJSON, + StepFromJSONTyped, + StepToJSON, +} from './Step'; +import type { User } from './User'; +import { + UserFromJSON, + UserFromJSONTyped, + UserToJSON, +} from './User'; + +/** + * Adds nested create feature + * @export + * @interface PatchedRecipe + */ +export interface PatchedRecipe { + /** + * + * @type {number} + * @memberof PatchedRecipe + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedRecipe + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedRecipe + */ + description?: string; + /** + * + * @type {string} + * @memberof PatchedRecipe + */ + readonly image?: string; + /** + * + * @type {Array} + * @memberof PatchedRecipe + */ + keywords?: Array; + /** + * + * @type {Array} + * @memberof PatchedRecipe + */ + steps?: Array; + /** + * + * @type {number} + * @memberof PatchedRecipe + */ + workingTime?: number; + /** + * + * @type {number} + * @memberof PatchedRecipe + */ + waitingTime?: number; + /** + * + * @type {number} + * @memberof PatchedRecipe + */ + readonly createdBy?: number; + /** + * + * @type {Date} + * @memberof PatchedRecipe + */ + readonly createdAt?: Date; + /** + * + * @type {Date} + * @memberof PatchedRecipe + */ + readonly updatedAt?: Date; + /** + * + * @type {string} + * @memberof PatchedRecipe + */ + sourceUrl?: string; + /** + * + * @type {boolean} + * @memberof PatchedRecipe + */ + internal?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedRecipe + */ + showIngredientOverview?: boolean; + /** + * + * @type {NutritionInformation} + * @memberof PatchedRecipe + */ + nutrition?: NutritionInformation; + /** + * + * @type {Array} + * @memberof PatchedRecipe + */ + properties?: Array; + /** + * + * @type {string} + * @memberof PatchedRecipe + */ + readonly foodProperties?: string; + /** + * + * @type {number} + * @memberof PatchedRecipe + */ + servings?: number; + /** + * + * @type {string} + * @memberof PatchedRecipe + */ + filePath?: string; + /** + * + * @type {string} + * @memberof PatchedRecipe + */ + servingsText?: string; + /** + * + * @type {string} + * @memberof PatchedRecipe + */ + readonly rating?: string; + /** + * + * @type {Date} + * @memberof PatchedRecipe + */ + readonly lastCooked?: Date; + /** + * + * @type {boolean} + * @memberof PatchedRecipe + */ + _private?: boolean; + /** + * + * @type {Array} + * @memberof PatchedRecipe + */ + shared?: Array; +} + +/** + * Check if a given object implements the PatchedRecipe interface. + */ +export function instanceOfPatchedRecipe(value: object): boolean { + return true; +} + +export function PatchedRecipeFromJSON(json: any): PatchedRecipe { + return PatchedRecipeFromJSONTyped(json, false); +} + +export function PatchedRecipeFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedRecipe { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'name': json['name'] == null ? undefined : json['name'], + 'description': json['description'] == null ? undefined : json['description'], + 'image': json['image'] == null ? undefined : json['image'], + 'keywords': json['keywords'] == null ? undefined : ((json['keywords'] as Array).map(KeywordFromJSON)), + 'steps': json['steps'] == null ? undefined : ((json['steps'] as Array).map(StepFromJSON)), + 'workingTime': json['working_time'] == null ? undefined : json['working_time'], + 'waitingTime': json['waiting_time'] == null ? undefined : json['waiting_time'], + 'createdBy': json['created_by'] == null ? undefined : json['created_by'], + 'createdAt': json['created_at'] == null ? undefined : (new Date(json['created_at'])), + 'updatedAt': json['updated_at'] == null ? undefined : (new Date(json['updated_at'])), + 'sourceUrl': json['source_url'] == null ? undefined : json['source_url'], + 'internal': json['internal'] == null ? undefined : json['internal'], + 'showIngredientOverview': json['show_ingredient_overview'] == null ? undefined : json['show_ingredient_overview'], + 'nutrition': json['nutrition'] == null ? undefined : NutritionInformationFromJSON(json['nutrition']), + 'properties': json['properties'] == null ? undefined : ((json['properties'] as Array).map(PropertyFromJSON)), + 'foodProperties': json['food_properties'] == null ? undefined : json['food_properties'], + 'servings': json['servings'] == null ? undefined : json['servings'], + 'filePath': json['file_path'] == null ? undefined : json['file_path'], + 'servingsText': json['servings_text'] == null ? undefined : json['servings_text'], + 'rating': json['rating'] == null ? undefined : json['rating'], + 'lastCooked': json['last_cooked'] == null ? undefined : (new Date(json['last_cooked'])), + '_private': json['private'] == null ? undefined : json['private'], + 'shared': json['shared'] == null ? undefined : ((json['shared'] as Array).map(UserFromJSON)), + }; +} + +export function PatchedRecipeToJSON(value?: PatchedRecipe | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'description': value['description'], + 'keywords': value['keywords'] == null ? undefined : ((value['keywords'] as Array).map(KeywordToJSON)), + 'steps': value['steps'] == null ? undefined : ((value['steps'] as Array).map(StepToJSON)), + 'working_time': value['workingTime'], + 'waiting_time': value['waitingTime'], + 'source_url': value['sourceUrl'], + 'internal': value['internal'], + 'show_ingredient_overview': value['showIngredientOverview'], + 'nutrition': NutritionInformationToJSON(value['nutrition']), + 'properties': value['properties'] == null ? undefined : ((value['properties'] as Array).map(PropertyToJSON)), + 'servings': value['servings'], + 'file_path': value['filePath'], + 'servings_text': value['servingsText'], + 'private': value['_private'], + 'shared': value['shared'] == null ? undefined : ((value['shared'] as Array).map(UserToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/PatchedRecipeBook.ts b/vue3/src/openapi/models/PatchedRecipeBook.ts new file mode 100644 index 000000000..c6dcce3ac --- /dev/null +++ b/vue3/src/openapi/models/PatchedRecipeBook.ts @@ -0,0 +1,119 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { CustomFilter } from './CustomFilter'; +import { + CustomFilterFromJSON, + CustomFilterFromJSONTyped, + CustomFilterToJSON, +} from './CustomFilter'; +import type { User } from './User'; +import { + UserFromJSON, + UserFromJSONTyped, + UserToJSON, +} from './User'; + +/** + * Adds nested create feature + * @export + * @interface PatchedRecipeBook + */ +export interface PatchedRecipeBook { + /** + * + * @type {number} + * @memberof PatchedRecipeBook + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedRecipeBook + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedRecipeBook + */ + description?: string; + /** + * + * @type {Array} + * @memberof PatchedRecipeBook + */ + shared?: Array; + /** + * + * @type {number} + * @memberof PatchedRecipeBook + */ + readonly createdBy?: number; + /** + * + * @type {CustomFilter} + * @memberof PatchedRecipeBook + */ + filter?: CustomFilter; + /** + * + * @type {number} + * @memberof PatchedRecipeBook + */ + order?: number; +} + +/** + * Check if a given object implements the PatchedRecipeBook interface. + */ +export function instanceOfPatchedRecipeBook(value: object): boolean { + return true; +} + +export function PatchedRecipeBookFromJSON(json: any): PatchedRecipeBook { + return PatchedRecipeBookFromJSONTyped(json, false); +} + +export function PatchedRecipeBookFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedRecipeBook { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'name': json['name'] == null ? undefined : json['name'], + 'description': json['description'] == null ? undefined : json['description'], + 'shared': json['shared'] == null ? undefined : ((json['shared'] as Array).map(UserFromJSON)), + 'createdBy': json['created_by'] == null ? undefined : json['created_by'], + 'filter': json['filter'] == null ? undefined : CustomFilterFromJSON(json['filter']), + 'order': json['order'] == null ? undefined : json['order'], + }; +} + +export function PatchedRecipeBookToJSON(value?: PatchedRecipeBook | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'description': value['description'], + 'shared': value['shared'] == null ? undefined : ((value['shared'] as Array).map(UserToJSON)), + 'filter': CustomFilterToJSON(value['filter']), + 'order': value['order'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedRecipeBookEntry.ts b/vue3/src/openapi/models/PatchedRecipeBookEntry.ts new file mode 100644 index 000000000..29b953bcd --- /dev/null +++ b/vue3/src/openapi/models/PatchedRecipeBookEntry.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface PatchedRecipeBookEntry + */ +export interface PatchedRecipeBookEntry { + /** + * + * @type {number} + * @memberof PatchedRecipeBookEntry + */ + readonly id?: number; + /** + * + * @type {number} + * @memberof PatchedRecipeBookEntry + */ + book?: number; + /** + * + * @type {string} + * @memberof PatchedRecipeBookEntry + */ + readonly bookContent?: string; + /** + * + * @type {number} + * @memberof PatchedRecipeBookEntry + */ + recipe?: number; + /** + * + * @type {string} + * @memberof PatchedRecipeBookEntry + */ + readonly recipeContent?: string; +} + +/** + * Check if a given object implements the PatchedRecipeBookEntry interface. + */ +export function instanceOfPatchedRecipeBookEntry(value: object): boolean { + return true; +} + +export function PatchedRecipeBookEntryFromJSON(json: any): PatchedRecipeBookEntry { + return PatchedRecipeBookEntryFromJSONTyped(json, false); +} + +export function PatchedRecipeBookEntryFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedRecipeBookEntry { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'book': json['book'] == null ? undefined : json['book'], + 'bookContent': json['book_content'] == null ? undefined : json['book_content'], + 'recipe': json['recipe'] == null ? undefined : json['recipe'], + 'recipeContent': json['recipe_content'] == null ? undefined : json['recipe_content'], + }; +} + +export function PatchedRecipeBookEntryToJSON(value?: PatchedRecipeBookEntry | null): any { + if (value == null) { + return value; + } + return { + + 'book': value['book'], + 'recipe': value['recipe'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedShoppingListEntry.ts b/vue3/src/openapi/models/PatchedShoppingListEntry.ts new file mode 100644 index 000000000..a00ef1048 --- /dev/null +++ b/vue3/src/openapi/models/PatchedShoppingListEntry.ts @@ -0,0 +1,176 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Food } from './Food'; +import { + FoodFromJSON, + FoodFromJSONTyped, + FoodToJSON, +} from './Food'; +import type { ShoppingListRecipe } from './ShoppingListRecipe'; +import { + ShoppingListRecipeFromJSON, + ShoppingListRecipeFromJSONTyped, + ShoppingListRecipeToJSON, +} from './ShoppingListRecipe'; +import type { Unit } from './Unit'; +import { + UnitFromJSON, + UnitFromJSONTyped, + UnitToJSON, +} from './Unit'; +import type { User } from './User'; +import { + UserFromJSON, + UserFromJSONTyped, + UserToJSON, +} from './User'; + +/** + * Adds nested create feature + * @export + * @interface PatchedShoppingListEntry + */ +export interface PatchedShoppingListEntry { + /** + * + * @type {number} + * @memberof PatchedShoppingListEntry + */ + readonly id?: number; + /** + * + * @type {number} + * @memberof PatchedShoppingListEntry + */ + listRecipe?: number; + /** + * + * @type {Food} + * @memberof PatchedShoppingListEntry + */ + food?: Food; + /** + * + * @type {Unit} + * @memberof PatchedShoppingListEntry + */ + unit?: Unit; + /** + * + * @type {string} + * @memberof PatchedShoppingListEntry + */ + amount?: string; + /** + * + * @type {number} + * @memberof PatchedShoppingListEntry + */ + order?: number; + /** + * + * @type {boolean} + * @memberof PatchedShoppingListEntry + */ + checked?: boolean; + /** + * + * @type {ShoppingListRecipe} + * @memberof PatchedShoppingListEntry + */ + readonly recipeMealplan?: ShoppingListRecipe; + /** + * + * @type {User} + * @memberof PatchedShoppingListEntry + */ + readonly createdBy?: User; + /** + * + * @type {Date} + * @memberof PatchedShoppingListEntry + */ + readonly createdAt?: Date; + /** + * + * @type {Date} + * @memberof PatchedShoppingListEntry + */ + readonly updatedAt?: Date; + /** + * + * @type {Date} + * @memberof PatchedShoppingListEntry + */ + completedAt?: Date; + /** + * + * @type {Date} + * @memberof PatchedShoppingListEntry + */ + delayUntil?: Date; +} + +/** + * Check if a given object implements the PatchedShoppingListEntry interface. + */ +export function instanceOfPatchedShoppingListEntry(value: object): boolean { + return true; +} + +export function PatchedShoppingListEntryFromJSON(json: any): PatchedShoppingListEntry { + return PatchedShoppingListEntryFromJSONTyped(json, false); +} + +export function PatchedShoppingListEntryFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedShoppingListEntry { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'listRecipe': json['list_recipe'] == null ? undefined : json['list_recipe'], + 'food': json['food'] == null ? undefined : FoodFromJSON(json['food']), + 'unit': json['unit'] == null ? undefined : UnitFromJSON(json['unit']), + 'amount': json['amount'] == null ? undefined : json['amount'], + 'order': json['order'] == null ? undefined : json['order'], + 'checked': json['checked'] == null ? undefined : json['checked'], + 'recipeMealplan': json['recipe_mealplan'] == null ? undefined : ShoppingListRecipeFromJSON(json['recipe_mealplan']), + 'createdBy': json['created_by'] == null ? undefined : UserFromJSON(json['created_by']), + 'createdAt': json['created_at'] == null ? undefined : (new Date(json['created_at'])), + 'updatedAt': json['updated_at'] == null ? undefined : (new Date(json['updated_at'])), + 'completedAt': json['completed_at'] == null ? undefined : (new Date(json['completed_at'])), + 'delayUntil': json['delay_until'] == null ? undefined : (new Date(json['delay_until'])), + }; +} + +export function PatchedShoppingListEntryToJSON(value?: PatchedShoppingListEntry | null): any { + if (value == null) { + return value; + } + return { + + 'list_recipe': value['listRecipe'], + 'food': FoodToJSON(value['food']), + 'unit': UnitToJSON(value['unit']), + 'amount': value['amount'], + 'order': value['order'], + 'checked': value['checked'], + 'completed_at': value['completedAt'] == null ? undefined : ((value['completedAt'] as any).toISOString()), + 'delay_until': value['delayUntil'] == null ? undefined : ((value['delayUntil'] as any).toISOString()), + }; +} + diff --git a/vue3/src/openapi/models/PatchedShoppingListRecipe.ts b/vue3/src/openapi/models/PatchedShoppingListRecipe.ts new file mode 100644 index 000000000..1241708c9 --- /dev/null +++ b/vue3/src/openapi/models/PatchedShoppingListRecipe.ts @@ -0,0 +1,118 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface PatchedShoppingListRecipe + */ +export interface PatchedShoppingListRecipe { + /** + * + * @type {number} + * @memberof PatchedShoppingListRecipe + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedShoppingListRecipe + */ + readonly recipeName?: string; + /** + * + * @type {string} + * @memberof PatchedShoppingListRecipe + */ + readonly name?: string; + /** + * + * @type {number} + * @memberof PatchedShoppingListRecipe + */ + recipe?: number; + /** + * + * @type {number} + * @memberof PatchedShoppingListRecipe + */ + mealplan?: number; + /** + * + * @type {string} + * @memberof PatchedShoppingListRecipe + */ + servings?: string; + /** + * + * @type {string} + * @memberof PatchedShoppingListRecipe + */ + readonly mealplanNote?: string; + /** + * + * @type {Date} + * @memberof PatchedShoppingListRecipe + */ + readonly mealplanFromDate?: Date; + /** + * + * @type {string} + * @memberof PatchedShoppingListRecipe + */ + readonly mealplanType?: string; +} + +/** + * Check if a given object implements the PatchedShoppingListRecipe interface. + */ +export function instanceOfPatchedShoppingListRecipe(value: object): boolean { + return true; +} + +export function PatchedShoppingListRecipeFromJSON(json: any): PatchedShoppingListRecipe { + return PatchedShoppingListRecipeFromJSONTyped(json, false); +} + +export function PatchedShoppingListRecipeFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedShoppingListRecipe { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'recipeName': json['recipe_name'] == null ? undefined : json['recipe_name'], + 'name': json['name'] == null ? undefined : json['name'], + 'recipe': json['recipe'] == null ? undefined : json['recipe'], + 'mealplan': json['mealplan'] == null ? undefined : json['mealplan'], + 'servings': json['servings'] == null ? undefined : json['servings'], + 'mealplanNote': json['mealplan_note'] == null ? undefined : json['mealplan_note'], + 'mealplanFromDate': json['mealplan_from_date'] == null ? undefined : (new Date(json['mealplan_from_date'])), + 'mealplanType': json['mealplan_type'] == null ? undefined : json['mealplan_type'], + }; +} + +export function PatchedShoppingListRecipeToJSON(value?: PatchedShoppingListRecipe | null): any { + if (value == null) { + return value; + } + return { + + 'recipe': value['recipe'], + 'mealplan': value['mealplan'], + 'servings': value['servings'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedSpace.ts b/vue3/src/openapi/models/PatchedSpace.ts new file mode 100644 index 000000000..8ec4842e3 --- /dev/null +++ b/vue3/src/openapi/models/PatchedSpace.ts @@ -0,0 +1,282 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { FoodInheritField } from './FoodInheritField'; +import { + FoodInheritFieldFromJSON, + FoodInheritFieldFromJSONTyped, + FoodInheritFieldToJSON, +} from './FoodInheritField'; +import type { SpaceNavTextColorEnum } from './SpaceNavTextColorEnum'; +import { + SpaceNavTextColorEnumFromJSON, + SpaceNavTextColorEnumFromJSONTyped, + SpaceNavTextColorEnumToJSON, +} from './SpaceNavTextColorEnum'; +import type { SpaceThemeEnum } from './SpaceThemeEnum'; +import { + SpaceThemeEnumFromJSON, + SpaceThemeEnumFromJSONTyped, + SpaceThemeEnumToJSON, +} from './SpaceThemeEnum'; +import type { UserFileView } from './UserFileView'; +import { + UserFileViewFromJSON, + UserFileViewFromJSONTyped, + UserFileViewToJSON, +} from './UserFileView'; + +/** + * Adds nested create feature + * @export + * @interface PatchedSpace + */ +export interface PatchedSpace { + /** + * + * @type {number} + * @memberof PatchedSpace + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedSpace + */ + name?: string; + /** + * + * @type {number} + * @memberof PatchedSpace + */ + readonly createdBy?: number; + /** + * + * @type {Date} + * @memberof PatchedSpace + */ + readonly createdAt?: Date; + /** + * + * @type {string} + * @memberof PatchedSpace + */ + message?: string; + /** + * + * @type {number} + * @memberof PatchedSpace + */ + readonly maxRecipes?: number; + /** + * Maximum file storage for space in MB. 0 for unlimited, -1 to disable file upload. + * @type {number} + * @memberof PatchedSpace + */ + readonly maxFileStorageMb?: number; + /** + * + * @type {number} + * @memberof PatchedSpace + */ + readonly maxUsers?: number; + /** + * + * @type {boolean} + * @memberof PatchedSpace + */ + readonly allowSharing?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedSpace + */ + readonly demo?: boolean; + /** + * + * @type {Array} + * @memberof PatchedSpace + */ + foodInherit?: Array; + /** + * + * @type {string} + * @memberof PatchedSpace + */ + readonly userCount?: string; + /** + * + * @type {string} + * @memberof PatchedSpace + */ + readonly recipeCount?: string; + /** + * + * @type {string} + * @memberof PatchedSpace + */ + readonly fileSizeMb?: string; + /** + * + * @type {UserFileView} + * @memberof PatchedSpace + */ + image?: UserFileView; + /** + * + * @type {UserFileView} + * @memberof PatchedSpace + */ + navLogo?: UserFileView; + /** + * + * @type {SpaceThemeEnum} + * @memberof PatchedSpace + */ + spaceTheme?: SpaceThemeEnum; + /** + * + * @type {UserFileView} + * @memberof PatchedSpace + */ + customSpaceTheme?: UserFileView; + /** + * + * @type {string} + * @memberof PatchedSpace + */ + navBgColor?: string; + /** + * + * @type {SpaceNavTextColorEnum} + * @memberof PatchedSpace + */ + navTextColor?: SpaceNavTextColorEnum; + /** + * + * @type {UserFileView} + * @memberof PatchedSpace + */ + logoColor32?: UserFileView; + /** + * + * @type {UserFileView} + * @memberof PatchedSpace + */ + logoColor128?: UserFileView; + /** + * + * @type {UserFileView} + * @memberof PatchedSpace + */ + logoColor144?: UserFileView; + /** + * + * @type {UserFileView} + * @memberof PatchedSpace + */ + logoColor180?: UserFileView; + /** + * + * @type {UserFileView} + * @memberof PatchedSpace + */ + logoColor192?: UserFileView; + /** + * + * @type {UserFileView} + * @memberof PatchedSpace + */ + logoColor512?: UserFileView; + /** + * + * @type {UserFileView} + * @memberof PatchedSpace + */ + logoColorSvg?: UserFileView; +} + +/** + * Check if a given object implements the PatchedSpace interface. + */ +export function instanceOfPatchedSpace(value: object): boolean { + return true; +} + +export function PatchedSpaceFromJSON(json: any): PatchedSpace { + return PatchedSpaceFromJSONTyped(json, false); +} + +export function PatchedSpaceFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedSpace { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'name': json['name'] == null ? undefined : json['name'], + 'createdBy': json['created_by'] == null ? undefined : json['created_by'], + 'createdAt': json['created_at'] == null ? undefined : (new Date(json['created_at'])), + 'message': json['message'] == null ? undefined : json['message'], + 'maxRecipes': json['max_recipes'] == null ? undefined : json['max_recipes'], + 'maxFileStorageMb': json['max_file_storage_mb'] == null ? undefined : json['max_file_storage_mb'], + 'maxUsers': json['max_users'] == null ? undefined : json['max_users'], + 'allowSharing': json['allow_sharing'] == null ? undefined : json['allow_sharing'], + 'demo': json['demo'] == null ? undefined : json['demo'], + 'foodInherit': json['food_inherit'] == null ? undefined : ((json['food_inherit'] as Array).map(FoodInheritFieldFromJSON)), + 'userCount': json['user_count'] == null ? undefined : json['user_count'], + 'recipeCount': json['recipe_count'] == null ? undefined : json['recipe_count'], + 'fileSizeMb': json['file_size_mb'] == null ? undefined : json['file_size_mb'], + 'image': json['image'] == null ? undefined : UserFileViewFromJSON(json['image']), + 'navLogo': json['nav_logo'] == null ? undefined : UserFileViewFromJSON(json['nav_logo']), + 'spaceTheme': json['space_theme'] == null ? undefined : SpaceThemeEnumFromJSON(json['space_theme']), + 'customSpaceTheme': json['custom_space_theme'] == null ? undefined : UserFileViewFromJSON(json['custom_space_theme']), + 'navBgColor': json['nav_bg_color'] == null ? undefined : json['nav_bg_color'], + 'navTextColor': json['nav_text_color'] == null ? undefined : SpaceNavTextColorEnumFromJSON(json['nav_text_color']), + 'logoColor32': json['logo_color_32'] == null ? undefined : UserFileViewFromJSON(json['logo_color_32']), + 'logoColor128': json['logo_color_128'] == null ? undefined : UserFileViewFromJSON(json['logo_color_128']), + 'logoColor144': json['logo_color_144'] == null ? undefined : UserFileViewFromJSON(json['logo_color_144']), + 'logoColor180': json['logo_color_180'] == null ? undefined : UserFileViewFromJSON(json['logo_color_180']), + 'logoColor192': json['logo_color_192'] == null ? undefined : UserFileViewFromJSON(json['logo_color_192']), + 'logoColor512': json['logo_color_512'] == null ? undefined : UserFileViewFromJSON(json['logo_color_512']), + 'logoColorSvg': json['logo_color_svg'] == null ? undefined : UserFileViewFromJSON(json['logo_color_svg']), + }; +} + +export function PatchedSpaceToJSON(value?: PatchedSpace | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'message': value['message'], + 'food_inherit': value['foodInherit'] == null ? undefined : ((value['foodInherit'] as Array).map(FoodInheritFieldToJSON)), + 'image': UserFileViewToJSON(value['image']), + 'nav_logo': UserFileViewToJSON(value['navLogo']), + 'space_theme': SpaceThemeEnumToJSON(value['spaceTheme']), + 'custom_space_theme': UserFileViewToJSON(value['customSpaceTheme']), + 'nav_bg_color': value['navBgColor'], + 'nav_text_color': SpaceNavTextColorEnumToJSON(value['navTextColor']), + 'logo_color_32': UserFileViewToJSON(value['logoColor32']), + 'logo_color_128': UserFileViewToJSON(value['logoColor128']), + 'logo_color_144': UserFileViewToJSON(value['logoColor144']), + 'logo_color_180': UserFileViewToJSON(value['logoColor180']), + 'logo_color_192': UserFileViewToJSON(value['logoColor192']), + 'logo_color_512': UserFileViewToJSON(value['logoColor512']), + 'logo_color_svg': UserFileViewToJSON(value['logoColorSvg']), + }; +} + diff --git a/vue3/src/openapi/models/PatchedStep.ts b/vue3/src/openapi/models/PatchedStep.ts new file mode 100644 index 000000000..60b726abe --- /dev/null +++ b/vue3/src/openapi/models/PatchedStep.ts @@ -0,0 +1,165 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Ingredient } from './Ingredient'; +import { + IngredientFromJSON, + IngredientFromJSONTyped, + IngredientToJSON, +} from './Ingredient'; +import type { UserFileView } from './UserFileView'; +import { + UserFileViewFromJSON, + UserFileViewFromJSONTyped, + UserFileViewToJSON, +} from './UserFileView'; + +/** + * Adds nested create feature + * @export + * @interface PatchedStep + */ +export interface PatchedStep { + /** + * + * @type {number} + * @memberof PatchedStep + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedStep + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedStep + */ + instruction?: string; + /** + * + * @type {Array} + * @memberof PatchedStep + */ + ingredients?: Array; + /** + * + * @type {string} + * @memberof PatchedStep + */ + readonly instructionsMarkdown?: string; + /** + * + * @type {number} + * @memberof PatchedStep + */ + time?: number; + /** + * + * @type {number} + * @memberof PatchedStep + */ + order?: number; + /** + * + * @type {boolean} + * @memberof PatchedStep + */ + showAsHeader?: boolean; + /** + * + * @type {UserFileView} + * @memberof PatchedStep + */ + file?: UserFileView; + /** + * + * @type {number} + * @memberof PatchedStep + */ + stepRecipe?: number; + /** + * + * @type {string} + * @memberof PatchedStep + */ + readonly stepRecipeData?: string; + /** + * + * @type {string} + * @memberof PatchedStep + */ + readonly numrecipe?: string; + /** + * + * @type {boolean} + * @memberof PatchedStep + */ + showIngredientsTable?: boolean; +} + +/** + * Check if a given object implements the PatchedStep interface. + */ +export function instanceOfPatchedStep(value: object): boolean { + return true; +} + +export function PatchedStepFromJSON(json: any): PatchedStep { + return PatchedStepFromJSONTyped(json, false); +} + +export function PatchedStepFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedStep { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'name': json['name'] == null ? undefined : json['name'], + 'instruction': json['instruction'] == null ? undefined : json['instruction'], + 'ingredients': json['ingredients'] == null ? undefined : ((json['ingredients'] as Array).map(IngredientFromJSON)), + 'instructionsMarkdown': json['instructions_markdown'] == null ? undefined : json['instructions_markdown'], + 'time': json['time'] == null ? undefined : json['time'], + 'order': json['order'] == null ? undefined : json['order'], + 'showAsHeader': json['show_as_header'] == null ? undefined : json['show_as_header'], + 'file': json['file'] == null ? undefined : UserFileViewFromJSON(json['file']), + 'stepRecipe': json['step_recipe'] == null ? undefined : json['step_recipe'], + 'stepRecipeData': json['step_recipe_data'] == null ? undefined : json['step_recipe_data'], + 'numrecipe': json['numrecipe'] == null ? undefined : json['numrecipe'], + 'showIngredientsTable': json['show_ingredients_table'] == null ? undefined : json['show_ingredients_table'], + }; +} + +export function PatchedStepToJSON(value?: PatchedStep | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'instruction': value['instruction'], + 'ingredients': value['ingredients'] == null ? undefined : ((value['ingredients'] as Array).map(IngredientToJSON)), + 'time': value['time'], + 'order': value['order'], + 'show_as_header': value['showAsHeader'], + 'file': UserFileViewToJSON(value['file']), + 'step_recipe': value['stepRecipe'], + 'show_ingredients_table': value['showIngredientsTable'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedStorage.ts b/vue3/src/openapi/models/PatchedStorage.ts new file mode 100644 index 000000000..23045c564 --- /dev/null +++ b/vue3/src/openapi/models/PatchedStorage.ts @@ -0,0 +1,113 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { MethodEnum } from './MethodEnum'; +import { + MethodEnumFromJSON, + MethodEnumFromJSONTyped, + MethodEnumToJSON, +} from './MethodEnum'; + +/** + * + * @export + * @interface PatchedStorage + */ +export interface PatchedStorage { + /** + * + * @type {number} + * @memberof PatchedStorage + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedStorage + */ + name?: string; + /** + * + * @type {MethodEnum} + * @memberof PatchedStorage + */ + method?: MethodEnum; + /** + * + * @type {string} + * @memberof PatchedStorage + */ + username?: string; + /** + * + * @type {string} + * @memberof PatchedStorage + */ + password?: string; + /** + * + * @type {string} + * @memberof PatchedStorage + */ + token?: string; + /** + * + * @type {number} + * @memberof PatchedStorage + */ + readonly createdBy?: number; +} + +/** + * Check if a given object implements the PatchedStorage interface. + */ +export function instanceOfPatchedStorage(value: object): boolean { + return true; +} + +export function PatchedStorageFromJSON(json: any): PatchedStorage { + return PatchedStorageFromJSONTyped(json, false); +} + +export function PatchedStorageFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedStorage { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'name': json['name'] == null ? undefined : json['name'], + 'method': json['method'] == null ? undefined : MethodEnumFromJSON(json['method']), + 'username': json['username'] == null ? undefined : json['username'], + 'password': json['password'] == null ? undefined : json['password'], + 'token': json['token'] == null ? undefined : json['token'], + 'createdBy': json['created_by'] == null ? undefined : json['created_by'], + }; +} + +export function PatchedStorageToJSON(value?: PatchedStorage | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'method': MethodEnumToJSON(value['method']), + 'username': value['username'], + 'password': value['password'], + 'token': value['token'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedSupermarket.ts b/vue3/src/openapi/models/PatchedSupermarket.ts new file mode 100644 index 000000000..aad1780a8 --- /dev/null +++ b/vue3/src/openapi/models/PatchedSupermarket.ts @@ -0,0 +1,131 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { SupermarketCategoryRelation } from './SupermarketCategoryRelation'; +import { + SupermarketCategoryRelationFromJSON, + SupermarketCategoryRelationFromJSONTyped, + SupermarketCategoryRelationToJSON, +} from './SupermarketCategoryRelation'; + +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface PatchedSupermarket + */ +export interface PatchedSupermarket { + /** + * + * @type {number} + * @memberof PatchedSupermarket + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedSupermarket + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedSupermarket + */ + description?: string; + /** + * + * @type {Array} + * @memberof PatchedSupermarket + */ + readonly categoryToSupermarket?: Array; + /** + * + * @type {string} + * @memberof PatchedSupermarket + */ + openDataSlug?: string; +} + +/** + * Check if a given object implements the PatchedSupermarket interface. + */ +export function instanceOfPatchedSupermarket(value: object): boolean { + return true; +} + +export function PatchedSupermarketFromJSON(json: any): PatchedSupermarket { + return PatchedSupermarketFromJSONTyped(json, false); +} + +export function PatchedSupermarketFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedSupermarket { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'name': json['name'] == null ? undefined : json['name'], + 'description': json['description'] == null ? undefined : json['description'], + 'categoryToSupermarket': json['category_to_supermarket'] == null ? undefined : ((json['category_to_supermarket'] as Array).map(SupermarketCategoryRelationFromJSON)), + 'openDataSlug': json['open_data_slug'] == null ? undefined : json['open_data_slug'], + }; +} + +export function PatchedSupermarketToJSON(value?: PatchedSupermarket | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'description': value['description'], + 'open_data_slug': value['openDataSlug'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedSupermarketCategory.ts b/vue3/src/openapi/models/PatchedSupermarketCategory.ts new file mode 100644 index 000000000..18d2695a7 --- /dev/null +++ b/vue3/src/openapi/models/PatchedSupermarketCategory.ts @@ -0,0 +1,109 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface PatchedSupermarketCategory + */ +export interface PatchedSupermarketCategory { + /** + * + * @type {number} + * @memberof PatchedSupermarketCategory + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedSupermarketCategory + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedSupermarketCategory + */ + description?: string; +} + +/** + * Check if a given object implements the PatchedSupermarketCategory interface. + */ +export function instanceOfPatchedSupermarketCategory(value: object): boolean { + return true; +} + +export function PatchedSupermarketCategoryFromJSON(json: any): PatchedSupermarketCategory { + return PatchedSupermarketCategoryFromJSONTyped(json, false); +} + +export function PatchedSupermarketCategoryFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedSupermarketCategory { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'name': json['name'] == null ? undefined : json['name'], + 'description': json['description'] == null ? undefined : json['description'], + }; +} + +export function PatchedSupermarketCategoryToJSON(value?: PatchedSupermarketCategory | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'description': value['description'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedSupermarketCategoryRelation.ts b/vue3/src/openapi/models/PatchedSupermarketCategoryRelation.ts new file mode 100644 index 000000000..2397990c6 --- /dev/null +++ b/vue3/src/openapi/models/PatchedSupermarketCategoryRelation.ts @@ -0,0 +1,90 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { SupermarketCategory } from './SupermarketCategory'; +import { + SupermarketCategoryFromJSON, + SupermarketCategoryFromJSONTyped, + SupermarketCategoryToJSON, +} from './SupermarketCategory'; + +/** + * Adds nested create feature + * @export + * @interface PatchedSupermarketCategoryRelation + */ +export interface PatchedSupermarketCategoryRelation { + /** + * + * @type {number} + * @memberof PatchedSupermarketCategoryRelation + */ + readonly id?: number; + /** + * + * @type {SupermarketCategory} + * @memberof PatchedSupermarketCategoryRelation + */ + category?: SupermarketCategory; + /** + * + * @type {number} + * @memberof PatchedSupermarketCategoryRelation + */ + supermarket?: number; + /** + * + * @type {number} + * @memberof PatchedSupermarketCategoryRelation + */ + order?: number; +} + +/** + * Check if a given object implements the PatchedSupermarketCategoryRelation interface. + */ +export function instanceOfPatchedSupermarketCategoryRelation(value: object): boolean { + return true; +} + +export function PatchedSupermarketCategoryRelationFromJSON(json: any): PatchedSupermarketCategoryRelation { + return PatchedSupermarketCategoryRelationFromJSONTyped(json, false); +} + +export function PatchedSupermarketCategoryRelationFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedSupermarketCategoryRelation { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'category': json['category'] == null ? undefined : SupermarketCategoryFromJSON(json['category']), + 'supermarket': json['supermarket'] == null ? undefined : json['supermarket'], + 'order': json['order'] == null ? undefined : json['order'], + }; +} + +export function PatchedSupermarketCategoryRelationToJSON(value?: PatchedSupermarketCategoryRelation | null): any { + if (value == null) { + return value; + } + return { + + 'category': SupermarketCategoryToJSON(value['category']), + 'supermarket': value['supermarket'], + 'order': value['order'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedSync.ts b/vue3/src/openapi/models/PatchedSync.ts new file mode 100644 index 000000000..36bb2a19d --- /dev/null +++ b/vue3/src/openapi/models/PatchedSync.ts @@ -0,0 +1,105 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface PatchedSync + */ +export interface PatchedSync { + /** + * + * @type {number} + * @memberof PatchedSync + */ + readonly id?: number; + /** + * + * @type {number} + * @memberof PatchedSync + */ + storage?: number; + /** + * + * @type {string} + * @memberof PatchedSync + */ + path?: string; + /** + * + * @type {boolean} + * @memberof PatchedSync + */ + active?: boolean; + /** + * + * @type {Date} + * @memberof PatchedSync + */ + lastChecked?: Date; + /** + * + * @type {Date} + * @memberof PatchedSync + */ + readonly createdAt?: Date; + /** + * + * @type {Date} + * @memberof PatchedSync + */ + readonly updatedAt?: Date; +} + +/** + * Check if a given object implements the PatchedSync interface. + */ +export function instanceOfPatchedSync(value: object): boolean { + return true; +} + +export function PatchedSyncFromJSON(json: any): PatchedSync { + return PatchedSyncFromJSONTyped(json, false); +} + +export function PatchedSyncFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedSync { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'storage': json['storage'] == null ? undefined : json['storage'], + 'path': json['path'] == null ? undefined : json['path'], + 'active': json['active'] == null ? undefined : json['active'], + 'lastChecked': json['last_checked'] == null ? undefined : (new Date(json['last_checked'])), + 'createdAt': json['created_at'] == null ? undefined : (new Date(json['created_at'])), + 'updatedAt': json['updated_at'] == null ? undefined : (new Date(json['updated_at'])), + }; +} + +export function PatchedSyncToJSON(value?: PatchedSync | null): any { + if (value == null) { + return value; + } + return { + + 'storage': value['storage'], + 'path': value['path'], + 'active': value['active'], + 'last_checked': value['lastChecked'] == null ? undefined : ((value['lastChecked'] as any).toISOString()), + }; +} + diff --git a/vue3/src/openapi/models/PatchedUnit.ts b/vue3/src/openapi/models/PatchedUnit.ts new file mode 100644 index 000000000..8acdf1b90 --- /dev/null +++ b/vue3/src/openapi/models/PatchedUnit.ts @@ -0,0 +1,133 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface PatchedUnit + */ +export interface PatchedUnit { + /** + * + * @type {number} + * @memberof PatchedUnit + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedUnit + */ + name?: string; + /** + * + * @type {string} + * @memberof PatchedUnit + */ + pluralName?: string; + /** + * + * @type {string} + * @memberof PatchedUnit + */ + description?: string; + /** + * + * @type {string} + * @memberof PatchedUnit + */ + baseUnit?: string; + /** + * + * @type {string} + * @memberof PatchedUnit + */ + openDataSlug?: string; +} + +/** + * Check if a given object implements the PatchedUnit interface. + */ +export function instanceOfPatchedUnit(value: object): boolean { + return true; +} + +export function PatchedUnitFromJSON(json: any): PatchedUnit { + return PatchedUnitFromJSONTyped(json, false); +} + +export function PatchedUnitFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedUnit { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'name': json['name'] == null ? undefined : json['name'], + 'pluralName': json['plural_name'] == null ? undefined : json['plural_name'], + 'description': json['description'] == null ? undefined : json['description'], + 'baseUnit': json['base_unit'] == null ? undefined : json['base_unit'], + 'openDataSlug': json['open_data_slug'] == null ? undefined : json['open_data_slug'], + }; +} + +export function PatchedUnitToJSON(value?: PatchedUnit | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'plural_name': value['pluralName'], + 'description': value['description'], + 'base_unit': value['baseUnit'], + 'open_data_slug': value['openDataSlug'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedUnitConversion.ts b/vue3/src/openapi/models/PatchedUnitConversion.ts new file mode 100644 index 000000000..a7cbb224d --- /dev/null +++ b/vue3/src/openapi/models/PatchedUnitConversion.ts @@ -0,0 +1,127 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Food } from './Food'; +import { + FoodFromJSON, + FoodFromJSONTyped, + FoodToJSON, +} from './Food'; +import type { Unit } from './Unit'; +import { + UnitFromJSON, + UnitFromJSONTyped, + UnitToJSON, +} from './Unit'; + +/** + * Adds nested create feature + * @export + * @interface PatchedUnitConversion + */ +export interface PatchedUnitConversion { + /** + * + * @type {number} + * @memberof PatchedUnitConversion + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof PatchedUnitConversion + */ + readonly name?: string; + /** + * + * @type {string} + * @memberof PatchedUnitConversion + */ + baseAmount?: string; + /** + * + * @type {Unit} + * @memberof PatchedUnitConversion + */ + baseUnit?: Unit; + /** + * + * @type {string} + * @memberof PatchedUnitConversion + */ + convertedAmount?: string; + /** + * + * @type {Unit} + * @memberof PatchedUnitConversion + */ + convertedUnit?: Unit; + /** + * + * @type {Food} + * @memberof PatchedUnitConversion + */ + food?: Food; + /** + * + * @type {string} + * @memberof PatchedUnitConversion + */ + openDataSlug?: string; +} + +/** + * Check if a given object implements the PatchedUnitConversion interface. + */ +export function instanceOfPatchedUnitConversion(value: object): boolean { + return true; +} + +export function PatchedUnitConversionFromJSON(json: any): PatchedUnitConversion { + return PatchedUnitConversionFromJSONTyped(json, false); +} + +export function PatchedUnitConversionFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedUnitConversion { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'name': json['name'] == null ? undefined : json['name'], + 'baseAmount': json['base_amount'] == null ? undefined : json['base_amount'], + 'baseUnit': json['base_unit'] == null ? undefined : UnitFromJSON(json['base_unit']), + 'convertedAmount': json['converted_amount'] == null ? undefined : json['converted_amount'], + 'convertedUnit': json['converted_unit'] == null ? undefined : UnitFromJSON(json['converted_unit']), + 'food': json['food'] == null ? undefined : FoodFromJSON(json['food']), + 'openDataSlug': json['open_data_slug'] == null ? undefined : json['open_data_slug'], + }; +} + +export function PatchedUnitConversionToJSON(value?: PatchedUnitConversion | null): any { + if (value == null) { + return value; + } + return { + + 'base_amount': value['baseAmount'], + 'base_unit': UnitToJSON(value['baseUnit']), + 'converted_amount': value['convertedAmount'], + 'converted_unit': UnitToJSON(value['convertedUnit']), + 'food': FoodToJSON(value['food']), + 'open_data_slug': value['openDataSlug'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedUser.ts b/vue3/src/openapi/models/PatchedUser.ts new file mode 100644 index 000000000..52ca18036 --- /dev/null +++ b/vue3/src/openapi/models/PatchedUser.ts @@ -0,0 +1,89 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * Adds nested create feature + * @export + * @interface PatchedUser + */ +export interface PatchedUser { + /** + * + * @type {number} + * @memberof PatchedUser + */ + readonly id?: number; + /** + * Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. + * @type {string} + * @memberof PatchedUser + */ + readonly username?: string; + /** + * + * @type {string} + * @memberof PatchedUser + */ + firstName?: string; + /** + * + * @type {string} + * @memberof PatchedUser + */ + lastName?: string; + /** + * + * @type {string} + * @memberof PatchedUser + */ + readonly displayName?: string; +} + +/** + * Check if a given object implements the PatchedUser interface. + */ +export function instanceOfPatchedUser(value: object): boolean { + return true; +} + +export function PatchedUserFromJSON(json: any): PatchedUser { + return PatchedUserFromJSONTyped(json, false); +} + +export function PatchedUserFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedUser { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'username': json['username'] == null ? undefined : json['username'], + 'firstName': json['first_name'] == null ? undefined : json['first_name'], + 'lastName': json['last_name'] == null ? undefined : json['last_name'], + 'displayName': json['display_name'] == null ? undefined : json['display_name'], + }; +} + +export function PatchedUserToJSON(value?: PatchedUser | null): any { + if (value == null) { + return value; + } + return { + + 'first_name': value['firstName'], + 'last_name': value['lastName'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedUserPreference.ts b/vue3/src/openapi/models/PatchedUserPreference.ts new file mode 100644 index 000000000..b855a8e55 --- /dev/null +++ b/vue3/src/openapi/models/PatchedUserPreference.ts @@ -0,0 +1,313 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { DefaultPageEnum } from './DefaultPageEnum'; +import { + DefaultPageEnumFromJSON, + DefaultPageEnumFromJSONTyped, + DefaultPageEnumToJSON, +} from './DefaultPageEnum'; +import type { ThemeEnum } from './ThemeEnum'; +import { + ThemeEnumFromJSON, + ThemeEnumFromJSONTyped, + ThemeEnumToJSON, +} from './ThemeEnum'; +import type { User } from './User'; +import { + UserFromJSON, + UserFromJSONTyped, + UserToJSON, +} from './User'; +import type { UserFileView } from './UserFileView'; +import { + UserFileViewFromJSON, + UserFileViewFromJSONTyped, + UserFileViewToJSON, +} from './UserFileView'; +import type { UserPreferenceNavTextColorEnum } from './UserPreferenceNavTextColorEnum'; +import { + UserPreferenceNavTextColorEnumFromJSON, + UserPreferenceNavTextColorEnumFromJSONTyped, + UserPreferenceNavTextColorEnumToJSON, +} from './UserPreferenceNavTextColorEnum'; + +/** + * Adds nested create feature + * @export + * @interface PatchedUserPreference + */ +export interface PatchedUserPreference { + /** + * + * @type {number} + * @memberof PatchedUserPreference + */ + user?: number; + /** + * + * @type {UserFileView} + * @memberof PatchedUserPreference + */ + image?: UserFileView; + /** + * + * @type {ThemeEnum} + * @memberof PatchedUserPreference + */ + theme?: ThemeEnum; + /** + * + * @type {string} + * @memberof PatchedUserPreference + */ + navBgColor?: string; + /** + * + * @type {UserPreferenceNavTextColorEnum} + * @memberof PatchedUserPreference + */ + navTextColor?: UserPreferenceNavTextColorEnum; + /** + * + * @type {boolean} + * @memberof PatchedUserPreference + */ + navShowLogo?: boolean; + /** + * + * @type {string} + * @memberof PatchedUserPreference + */ + defaultUnit?: string; + /** + * + * @type {DefaultPageEnum} + * @memberof PatchedUserPreference + */ + defaultPage?: DefaultPageEnum; + /** + * + * @type {boolean} + * @memberof PatchedUserPreference + */ + useFractions?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedUserPreference + */ + useKj?: boolean; + /** + * + * @type {Array} + * @memberof PatchedUserPreference + */ + planShare?: Array; + /** + * + * @type {boolean} + * @memberof PatchedUserPreference + */ + navSticky?: boolean; + /** + * + * @type {number} + * @memberof PatchedUserPreference + */ + ingredientDecimals?: number; + /** + * + * @type {boolean} + * @memberof PatchedUserPreference + */ + comments?: boolean; + /** + * + * @type {number} + * @memberof PatchedUserPreference + */ + shoppingAutoSync?: number; + /** + * + * @type {boolean} + * @memberof PatchedUserPreference + */ + mealplanAutoaddShopping?: boolean; + /** + * + * @type {string} + * @memberof PatchedUserPreference + */ + readonly foodInheritDefault?: string; + /** + * + * @type {number} + * @memberof PatchedUserPreference + */ + defaultDelay?: number; + /** + * + * @type {boolean} + * @memberof PatchedUserPreference + */ + mealplanAutoincludeRelated?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedUserPreference + */ + mealplanAutoexcludeOnhand?: boolean; + /** + * + * @type {Array} + * @memberof PatchedUserPreference + */ + shoppingShare?: Array; + /** + * + * @type {number} + * @memberof PatchedUserPreference + */ + shoppingRecentDays?: number; + /** + * + * @type {string} + * @memberof PatchedUserPreference + */ + csvDelim?: string; + /** + * + * @type {string} + * @memberof PatchedUserPreference + */ + csvPrefix?: string; + /** + * + * @type {boolean} + * @memberof PatchedUserPreference + */ + filterToSupermarket?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedUserPreference + */ + shoppingAddOnhand?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedUserPreference + */ + leftHanded?: boolean; + /** + * + * @type {boolean} + * @memberof PatchedUserPreference + */ + showStepIngredients?: boolean; + /** + * + * @type {string} + * @memberof PatchedUserPreference + */ + readonly foodChildrenExist?: string; +} + +/** + * Check if a given object implements the PatchedUserPreference interface. + */ +export function instanceOfPatchedUserPreference(value: object): boolean { + return true; +} + +export function PatchedUserPreferenceFromJSON(json: any): PatchedUserPreference { + return PatchedUserPreferenceFromJSONTyped(json, false); +} + +export function PatchedUserPreferenceFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedUserPreference { + if (json == null) { + return json; + } + return { + + 'user': json['user'] == null ? undefined : json['user'], + 'image': json['image'] == null ? undefined : UserFileViewFromJSON(json['image']), + 'theme': json['theme'] == null ? undefined : ThemeEnumFromJSON(json['theme']), + 'navBgColor': json['nav_bg_color'] == null ? undefined : json['nav_bg_color'], + 'navTextColor': json['nav_text_color'] == null ? undefined : UserPreferenceNavTextColorEnumFromJSON(json['nav_text_color']), + 'navShowLogo': json['nav_show_logo'] == null ? undefined : json['nav_show_logo'], + 'defaultUnit': json['default_unit'] == null ? undefined : json['default_unit'], + 'defaultPage': json['default_page'] == null ? undefined : DefaultPageEnumFromJSON(json['default_page']), + 'useFractions': json['use_fractions'] == null ? undefined : json['use_fractions'], + 'useKj': json['use_kj'] == null ? undefined : json['use_kj'], + 'planShare': json['plan_share'] == null ? undefined : ((json['plan_share'] as Array).map(UserFromJSON)), + 'navSticky': json['nav_sticky'] == null ? undefined : json['nav_sticky'], + 'ingredientDecimals': json['ingredient_decimals'] == null ? undefined : json['ingredient_decimals'], + 'comments': json['comments'] == null ? undefined : json['comments'], + 'shoppingAutoSync': json['shopping_auto_sync'] == null ? undefined : json['shopping_auto_sync'], + 'mealplanAutoaddShopping': json['mealplan_autoadd_shopping'] == null ? undefined : json['mealplan_autoadd_shopping'], + 'foodInheritDefault': json['food_inherit_default'] == null ? undefined : json['food_inherit_default'], + 'defaultDelay': json['default_delay'] == null ? undefined : json['default_delay'], + 'mealplanAutoincludeRelated': json['mealplan_autoinclude_related'] == null ? undefined : json['mealplan_autoinclude_related'], + 'mealplanAutoexcludeOnhand': json['mealplan_autoexclude_onhand'] == null ? undefined : json['mealplan_autoexclude_onhand'], + 'shoppingShare': json['shopping_share'] == null ? undefined : ((json['shopping_share'] as Array).map(UserFromJSON)), + 'shoppingRecentDays': json['shopping_recent_days'] == null ? undefined : json['shopping_recent_days'], + 'csvDelim': json['csv_delim'] == null ? undefined : json['csv_delim'], + 'csvPrefix': json['csv_prefix'] == null ? undefined : json['csv_prefix'], + 'filterToSupermarket': json['filter_to_supermarket'] == null ? undefined : json['filter_to_supermarket'], + 'shoppingAddOnhand': json['shopping_add_onhand'] == null ? undefined : json['shopping_add_onhand'], + 'leftHanded': json['left_handed'] == null ? undefined : json['left_handed'], + 'showStepIngredients': json['show_step_ingredients'] == null ? undefined : json['show_step_ingredients'], + 'foodChildrenExist': json['food_children_exist'] == null ? undefined : json['food_children_exist'], + }; +} + +export function PatchedUserPreferenceToJSON(value?: PatchedUserPreference | null): any { + if (value == null) { + return value; + } + return { + + 'user': value['user'], + 'image': UserFileViewToJSON(value['image']), + 'theme': ThemeEnumToJSON(value['theme']), + 'nav_bg_color': value['navBgColor'], + 'nav_text_color': UserPreferenceNavTextColorEnumToJSON(value['navTextColor']), + 'nav_show_logo': value['navShowLogo'], + 'default_unit': value['defaultUnit'], + 'default_page': DefaultPageEnumToJSON(value['defaultPage']), + 'use_fractions': value['useFractions'], + 'use_kj': value['useKj'], + 'plan_share': value['planShare'] == null ? undefined : ((value['planShare'] as Array).map(UserToJSON)), + 'nav_sticky': value['navSticky'], + 'ingredient_decimals': value['ingredientDecimals'], + 'comments': value['comments'], + 'shopping_auto_sync': value['shoppingAutoSync'], + 'mealplan_autoadd_shopping': value['mealplanAutoaddShopping'], + 'default_delay': value['defaultDelay'], + 'mealplan_autoinclude_related': value['mealplanAutoincludeRelated'], + 'mealplan_autoexclude_onhand': value['mealplanAutoexcludeOnhand'], + 'shopping_share': value['shoppingShare'] == null ? undefined : ((value['shoppingShare'] as Array).map(UserToJSON)), + 'shopping_recent_days': value['shoppingRecentDays'], + 'csv_delim': value['csvDelim'], + 'csv_prefix': value['csvPrefix'], + 'filter_to_supermarket': value['filterToSupermarket'], + 'shopping_add_onhand': value['shoppingAddOnhand'], + 'left_handed': value['leftHanded'], + 'show_step_ingredients': value['showStepIngredients'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedUserSpace.ts b/vue3/src/openapi/models/PatchedUserSpace.ts new file mode 100644 index 000000000..c1ab2851f --- /dev/null +++ b/vue3/src/openapi/models/PatchedUserSpace.ts @@ -0,0 +1,131 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Group } from './Group'; +import { + GroupFromJSON, + GroupFromJSONTyped, + GroupToJSON, +} from './Group'; +import type { User } from './User'; +import { + UserFromJSON, + UserFromJSONTyped, + UserToJSON, +} from './User'; + +/** + * Adds nested create feature + * @export + * @interface PatchedUserSpace + */ +export interface PatchedUserSpace { + /** + * + * @type {number} + * @memberof PatchedUserSpace + */ + readonly id?: number; + /** + * + * @type {User} + * @memberof PatchedUserSpace + */ + readonly user?: User; + /** + * + * @type {number} + * @memberof PatchedUserSpace + */ + readonly space?: number; + /** + * + * @type {Array} + * @memberof PatchedUserSpace + */ + groups?: Array; + /** + * + * @type {boolean} + * @memberof PatchedUserSpace + */ + active?: boolean; + /** + * + * @type {string} + * @memberof PatchedUserSpace + */ + internalNote?: string; + /** + * + * @type {number} + * @memberof PatchedUserSpace + */ + readonly inviteLink?: number; + /** + * + * @type {Date} + * @memberof PatchedUserSpace + */ + readonly createdAt?: Date; + /** + * + * @type {Date} + * @memberof PatchedUserSpace + */ + readonly updatedAt?: Date; +} + +/** + * Check if a given object implements the PatchedUserSpace interface. + */ +export function instanceOfPatchedUserSpace(value: object): boolean { + return true; +} + +export function PatchedUserSpaceFromJSON(json: any): PatchedUserSpace { + return PatchedUserSpaceFromJSONTyped(json, false); +} + +export function PatchedUserSpaceFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedUserSpace { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'user': json['user'] == null ? undefined : UserFromJSON(json['user']), + 'space': json['space'] == null ? undefined : json['space'], + 'groups': json['groups'] == null ? undefined : ((json['groups'] as Array).map(GroupFromJSON)), + 'active': json['active'] == null ? undefined : json['active'], + 'internalNote': json['internal_note'] == null ? undefined : json['internal_note'], + 'inviteLink': json['invite_link'] == null ? undefined : json['invite_link'], + 'createdAt': json['created_at'] == null ? undefined : (new Date(json['created_at'])), + 'updatedAt': json['updated_at'] == null ? undefined : (new Date(json['updated_at'])), + }; +} + +export function PatchedUserSpaceToJSON(value?: PatchedUserSpace | null): any { + if (value == null) { + return value; + } + return { + + 'groups': value['groups'] == null ? undefined : ((value['groups'] as Array).map(GroupToJSON)), + 'active': value['active'], + 'internal_note': value['internalNote'], + }; +} + diff --git a/vue3/src/openapi/models/PatchedViewLog.ts b/vue3/src/openapi/models/PatchedViewLog.ts new file mode 100644 index 000000000..4dcaef7a8 --- /dev/null +++ b/vue3/src/openapi/models/PatchedViewLog.ts @@ -0,0 +1,81 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface PatchedViewLog + */ +export interface PatchedViewLog { + /** + * + * @type {number} + * @memberof PatchedViewLog + */ + readonly id?: number; + /** + * + * @type {number} + * @memberof PatchedViewLog + */ + recipe?: number; + /** + * + * @type {number} + * @memberof PatchedViewLog + */ + readonly createdBy?: number; + /** + * + * @type {Date} + * @memberof PatchedViewLog + */ + readonly createdAt?: Date; +} + +/** + * Check if a given object implements the PatchedViewLog interface. + */ +export function instanceOfPatchedViewLog(value: object): boolean { + return true; +} + +export function PatchedViewLogFromJSON(json: any): PatchedViewLog { + return PatchedViewLogFromJSONTyped(json, false); +} + +export function PatchedViewLogFromJSONTyped(json: any, ignoreDiscriminator: boolean): PatchedViewLog { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'recipe': json['recipe'] == null ? undefined : json['recipe'], + 'createdBy': json['created_by'] == null ? undefined : json['created_by'], + 'createdAt': json['created_at'] == null ? undefined : (new Date(json['created_at'])), + }; +} + +export function PatchedViewLogToJSON(value?: PatchedViewLog | null): any { + if (value == null) { + return value; + } + return { + + 'recipe': value['recipe'], + }; +} + diff --git a/vue3/src/openapi/models/Property.ts b/vue3/src/openapi/models/Property.ts new file mode 100644 index 000000000..2dd050128 --- /dev/null +++ b/vue3/src/openapi/models/Property.ts @@ -0,0 +1,119 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { PropertyType } from './PropertyType'; +import { + PropertyTypeFromJSON, + PropertyTypeFromJSONTyped, + PropertyTypeToJSON, +} from './PropertyType'; + +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface Property + */ +export interface Property { + /** + * + * @type {number} + * @memberof Property + */ + readonly id: number; + /** + * + * @type {string} + * @memberof Property + */ + propertyAmount: string | null; + /** + * + * @type {PropertyType} + * @memberof Property + */ + propertyType: PropertyType; +} + +/** + * Check if a given object implements the Property interface. + */ +export function instanceOfProperty(value: object): boolean { + if (!('id' in value)) return false; + if (!('propertyAmount' in value)) return false; + if (!('propertyType' in value)) return false; + return true; +} + +export function PropertyFromJSON(json: any): Property { + return PropertyFromJSONTyped(json, false); +} + +export function PropertyFromJSONTyped(json: any, ignoreDiscriminator: boolean): Property { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'propertyAmount': json['property_amount'], + 'propertyType': PropertyTypeFromJSON(json['property_type']), + }; +} + +export function PropertyToJSON(value?: Property | null): any { + if (value == null) { + return value; + } + return { + + 'property_amount': value['propertyAmount'], + 'property_type': PropertyTypeToJSON(value['propertyType']), + }; +} + diff --git a/vue3/src/openapi/models/PropertyType.ts b/vue3/src/openapi/models/PropertyType.ts new file mode 100644 index 000000000..ee414c072 --- /dev/null +++ b/vue3/src/openapi/models/PropertyType.ts @@ -0,0 +1,109 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * Adds nested create feature + * @export + * @interface PropertyType + */ +export interface PropertyType { + /** + * + * @type {number} + * @memberof PropertyType + */ + id?: number; + /** + * + * @type {string} + * @memberof PropertyType + */ + name: string; + /** + * + * @type {string} + * @memberof PropertyType + */ + unit?: string; + /** + * + * @type {string} + * @memberof PropertyType + */ + description?: string; + /** + * + * @type {number} + * @memberof PropertyType + */ + order?: number; + /** + * + * @type {string} + * @memberof PropertyType + */ + openDataSlug?: string; + /** + * + * @type {number} + * @memberof PropertyType + */ + fdcId?: number; +} + +/** + * Check if a given object implements the PropertyType interface. + */ +export function instanceOfPropertyType(value: object): boolean { + if (!('name' in value)) return false; + return true; +} + +export function PropertyTypeFromJSON(json: any): PropertyType { + return PropertyTypeFromJSONTyped(json, false); +} + +export function PropertyTypeFromJSONTyped(json: any, ignoreDiscriminator: boolean): PropertyType { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + 'name': json['name'], + 'unit': json['unit'] == null ? undefined : json['unit'], + 'description': json['description'] == null ? undefined : json['description'], + 'order': json['order'] == null ? undefined : json['order'], + 'openDataSlug': json['open_data_slug'] == null ? undefined : json['open_data_slug'], + 'fdcId': json['fdc_id'] == null ? undefined : json['fdc_id'], + }; +} + +export function PropertyTypeToJSON(value?: PropertyType | null): any { + if (value == null) { + return value; + } + return { + + 'id': value['id'], + 'name': value['name'], + 'unit': value['unit'], + 'description': value['description'], + 'order': value['order'], + 'open_data_slug': value['openDataSlug'], + 'fdc_id': value['fdcId'], + }; +} + diff --git a/vue3/src/openapi/models/Recipe.ts b/vue3/src/openapi/models/Recipe.ts new file mode 100644 index 000000000..208b60654 --- /dev/null +++ b/vue3/src/openapi/models/Recipe.ts @@ -0,0 +1,277 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Keyword } from './Keyword'; +import { + KeywordFromJSON, + KeywordFromJSONTyped, + KeywordToJSON, +} from './Keyword'; +import type { NutritionInformation } from './NutritionInformation'; +import { + NutritionInformationFromJSON, + NutritionInformationFromJSONTyped, + NutritionInformationToJSON, +} from './NutritionInformation'; +import type { Property } from './Property'; +import { + PropertyFromJSON, + PropertyFromJSONTyped, + PropertyToJSON, +} from './Property'; +import type { Step } from './Step'; +import { + StepFromJSON, + StepFromJSONTyped, + StepToJSON, +} from './Step'; +import type { User } from './User'; +import { + UserFromJSON, + UserFromJSONTyped, + UserToJSON, +} from './User'; + +/** + * Adds nested create feature + * @export + * @interface Recipe + */ +export interface Recipe { + /** + * + * @type {number} + * @memberof Recipe + */ + readonly id: number; + /** + * + * @type {string} + * @memberof Recipe + */ + name: string; + /** + * + * @type {string} + * @memberof Recipe + */ + description?: string; + /** + * + * @type {string} + * @memberof Recipe + */ + readonly image: string | null; + /** + * + * @type {Array} + * @memberof Recipe + */ + keywords?: Array; + /** + * + * @type {Array} + * @memberof Recipe + */ + steps: Array; + /** + * + * @type {number} + * @memberof Recipe + */ + workingTime?: number; + /** + * + * @type {number} + * @memberof Recipe + */ + waitingTime?: number; + /** + * + * @type {number} + * @memberof Recipe + */ + readonly createdBy: number; + /** + * + * @type {Date} + * @memberof Recipe + */ + readonly createdAt: Date; + /** + * + * @type {Date} + * @memberof Recipe + */ + readonly updatedAt: Date; + /** + * + * @type {string} + * @memberof Recipe + */ + sourceUrl?: string; + /** + * + * @type {boolean} + * @memberof Recipe + */ + internal?: boolean; + /** + * + * @type {boolean} + * @memberof Recipe + */ + showIngredientOverview?: boolean; + /** + * + * @type {NutritionInformation} + * @memberof Recipe + */ + nutrition?: NutritionInformation; + /** + * + * @type {Array} + * @memberof Recipe + */ + properties?: Array; + /** + * + * @type {string} + * @memberof Recipe + */ + readonly foodProperties: string; + /** + * + * @type {number} + * @memberof Recipe + */ + servings?: number; + /** + * + * @type {string} + * @memberof Recipe + */ + filePath?: string; + /** + * + * @type {string} + * @memberof Recipe + */ + servingsText?: string; + /** + * + * @type {string} + * @memberof Recipe + */ + readonly rating: string | null; + /** + * + * @type {Date} + * @memberof Recipe + */ + readonly lastCooked: Date | null; + /** + * + * @type {boolean} + * @memberof Recipe + */ + _private?: boolean; + /** + * + * @type {Array} + * @memberof Recipe + */ + shared?: Array; +} + +/** + * Check if a given object implements the Recipe interface. + */ +export function instanceOfRecipe(value: object): boolean { + if (!('id' in value)) return false; + if (!('name' in value)) return false; + if (!('image' in value)) return false; + if (!('steps' in value)) return false; + if (!('createdBy' in value)) return false; + if (!('createdAt' in value)) return false; + if (!('updatedAt' in value)) return false; + if (!('foodProperties' in value)) return false; + if (!('rating' in value)) return false; + if (!('lastCooked' in value)) return false; + return true; +} + +export function RecipeFromJSON(json: any): Recipe { + return RecipeFromJSONTyped(json, false); +} + +export function RecipeFromJSONTyped(json: any, ignoreDiscriminator: boolean): Recipe { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'], + 'description': json['description'] == null ? undefined : json['description'], + 'image': json['image'], + 'keywords': json['keywords'] == null ? undefined : ((json['keywords'] as Array).map(KeywordFromJSON)), + 'steps': ((json['steps'] as Array).map(StepFromJSON)), + 'workingTime': json['working_time'] == null ? undefined : json['working_time'], + 'waitingTime': json['waiting_time'] == null ? undefined : json['waiting_time'], + 'createdBy': json['created_by'], + 'createdAt': (new Date(json['created_at'])), + 'updatedAt': (new Date(json['updated_at'])), + 'sourceUrl': json['source_url'] == null ? undefined : json['source_url'], + 'internal': json['internal'] == null ? undefined : json['internal'], + 'showIngredientOverview': json['show_ingredient_overview'] == null ? undefined : json['show_ingredient_overview'], + 'nutrition': json['nutrition'] == null ? undefined : NutritionInformationFromJSON(json['nutrition']), + 'properties': json['properties'] == null ? undefined : ((json['properties'] as Array).map(PropertyFromJSON)), + 'foodProperties': json['food_properties'], + 'servings': json['servings'] == null ? undefined : json['servings'], + 'filePath': json['file_path'] == null ? undefined : json['file_path'], + 'servingsText': json['servings_text'] == null ? undefined : json['servings_text'], + 'rating': json['rating'], + 'lastCooked': (json['last_cooked'] == null ? null : new Date(json['last_cooked'])), + '_private': json['private'] == null ? undefined : json['private'], + 'shared': json['shared'] == null ? undefined : ((json['shared'] as Array).map(UserFromJSON)), + }; +} + +export function RecipeToJSON(value?: Recipe | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'description': value['description'], + 'keywords': value['keywords'] == null ? undefined : ((value['keywords'] as Array).map(KeywordToJSON)), + 'steps': ((value['steps'] as Array).map(StepToJSON)), + 'working_time': value['workingTime'], + 'waiting_time': value['waitingTime'], + 'source_url': value['sourceUrl'], + 'internal': value['internal'], + 'show_ingredient_overview': value['showIngredientOverview'], + 'nutrition': NutritionInformationToJSON(value['nutrition']), + 'properties': value['properties'] == null ? undefined : ((value['properties'] as Array).map(PropertyToJSON)), + 'servings': value['servings'], + 'file_path': value['filePath'], + 'servings_text': value['servingsText'], + 'private': value['_private'], + 'shared': value['shared'] == null ? undefined : ((value['shared'] as Array).map(UserToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/RecipeBook.ts b/vue3/src/openapi/models/RecipeBook.ts new file mode 100644 index 000000000..ce33f841a --- /dev/null +++ b/vue3/src/openapi/models/RecipeBook.ts @@ -0,0 +1,123 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { CustomFilter } from './CustomFilter'; +import { + CustomFilterFromJSON, + CustomFilterFromJSONTyped, + CustomFilterToJSON, +} from './CustomFilter'; +import type { User } from './User'; +import { + UserFromJSON, + UserFromJSONTyped, + UserToJSON, +} from './User'; + +/** + * Adds nested create feature + * @export + * @interface RecipeBook + */ +export interface RecipeBook { + /** + * + * @type {number} + * @memberof RecipeBook + */ + readonly id: number; + /** + * + * @type {string} + * @memberof RecipeBook + */ + name: string; + /** + * + * @type {string} + * @memberof RecipeBook + */ + description?: string; + /** + * + * @type {Array} + * @memberof RecipeBook + */ + shared: Array; + /** + * + * @type {number} + * @memberof RecipeBook + */ + readonly createdBy: number; + /** + * + * @type {CustomFilter} + * @memberof RecipeBook + */ + filter?: CustomFilter; + /** + * + * @type {number} + * @memberof RecipeBook + */ + order?: number; +} + +/** + * Check if a given object implements the RecipeBook interface. + */ +export function instanceOfRecipeBook(value: object): boolean { + if (!('id' in value)) return false; + if (!('name' in value)) return false; + if (!('shared' in value)) return false; + if (!('createdBy' in value)) return false; + return true; +} + +export function RecipeBookFromJSON(json: any): RecipeBook { + return RecipeBookFromJSONTyped(json, false); +} + +export function RecipeBookFromJSONTyped(json: any, ignoreDiscriminator: boolean): RecipeBook { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'], + 'description': json['description'] == null ? undefined : json['description'], + 'shared': ((json['shared'] as Array).map(UserFromJSON)), + 'createdBy': json['created_by'], + 'filter': json['filter'] == null ? undefined : CustomFilterFromJSON(json['filter']), + 'order': json['order'] == null ? undefined : json['order'], + }; +} + +export function RecipeBookToJSON(value?: RecipeBook | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'description': value['description'], + 'shared': ((value['shared'] as Array).map(UserToJSON)), + 'filter': CustomFilterToJSON(value['filter']), + 'order': value['order'], + }; +} + diff --git a/vue3/src/openapi/models/RecipeBookEntry.ts b/vue3/src/openapi/models/RecipeBookEntry.ts new file mode 100644 index 000000000..adfe16150 --- /dev/null +++ b/vue3/src/openapi/models/RecipeBookEntry.ts @@ -0,0 +1,94 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface RecipeBookEntry + */ +export interface RecipeBookEntry { + /** + * + * @type {number} + * @memberof RecipeBookEntry + */ + readonly id: number; + /** + * + * @type {number} + * @memberof RecipeBookEntry + */ + book: number; + /** + * + * @type {string} + * @memberof RecipeBookEntry + */ + readonly bookContent: string; + /** + * + * @type {number} + * @memberof RecipeBookEntry + */ + recipe: number; + /** + * + * @type {string} + * @memberof RecipeBookEntry + */ + readonly recipeContent: string; +} + +/** + * Check if a given object implements the RecipeBookEntry interface. + */ +export function instanceOfRecipeBookEntry(value: object): boolean { + if (!('id' in value)) return false; + if (!('book' in value)) return false; + if (!('bookContent' in value)) return false; + if (!('recipe' in value)) return false; + if (!('recipeContent' in value)) return false; + return true; +} + +export function RecipeBookEntryFromJSON(json: any): RecipeBookEntry { + return RecipeBookEntryFromJSONTyped(json, false); +} + +export function RecipeBookEntryFromJSONTyped(json: any, ignoreDiscriminator: boolean): RecipeBookEntry { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'book': json['book'], + 'bookContent': json['book_content'], + 'recipe': json['recipe'], + 'recipeContent': json['recipe_content'], + }; +} + +export function RecipeBookEntryToJSON(value?: RecipeBookEntry | null): any { + if (value == null) { + return value; + } + return { + + 'book': value['book'], + 'recipe': value['recipe'], + }; +} + diff --git a/vue3/src/openapi/models/RecipeBookFilter.ts b/vue3/src/openapi/models/RecipeBookFilter.ts new file mode 100644 index 000000000..20f41f324 --- /dev/null +++ b/vue3/src/openapi/models/RecipeBookFilter.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { CustomFilterSharedInner } from './CustomFilterSharedInner'; +import { + CustomFilterSharedInnerFromJSON, + CustomFilterSharedInnerFromJSONTyped, + CustomFilterSharedInnerToJSON, +} from './CustomFilterSharedInner'; + +/** + * + * @export + * @interface RecipeBookFilter + */ +export interface RecipeBookFilter { + /** + * + * @type {number} + * @memberof RecipeBookFilter + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof RecipeBookFilter + */ + name: string; + /** + * + * @type {string} + * @memberof RecipeBookFilter + */ + search: string; + /** + * + * @type {Array} + * @memberof RecipeBookFilter + */ + shared?: Array; + /** + * + * @type {string} + * @memberof RecipeBookFilter + */ + readonly createdBy?: string; +} + +/** + * Check if a given object implements the RecipeBookFilter interface. + */ +export function instanceOfRecipeBookFilter(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "name" in value; + isInstance = isInstance && "search" in value; + + return isInstance; +} + +export function RecipeBookFilterFromJSON(json: any): RecipeBookFilter { + return RecipeBookFilterFromJSONTyped(json, false); +} + +export function RecipeBookFilterFromJSONTyped(json: any, ignoreDiscriminator: boolean): RecipeBookFilter { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': json['name'], + 'search': json['search'], + 'shared': !exists(json, 'shared') ? undefined : ((json['shared'] as Array).map(CustomFilterSharedInnerFromJSON)), + 'createdBy': !exists(json, 'created_by') ? undefined : json['created_by'], + }; +} + +export function RecipeBookFilterToJSON(value?: RecipeBookFilter | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'name': value.name, + 'search': value.search, + 'shared': value.shared === undefined ? undefined : ((value.shared as Array).map(CustomFilterSharedInnerToJSON)), + }; +} + diff --git a/vue3/src/openapi/models/RecipeFlat.ts b/vue3/src/openapi/models/RecipeFlat.ts new file mode 100644 index 000000000..1350a473a --- /dev/null +++ b/vue3/src/openapi/models/RecipeFlat.ts @@ -0,0 +1,77 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * Adds nested create feature + * @export + * @interface RecipeFlat + */ +export interface RecipeFlat { + /** + * + * @type {number} + * @memberof RecipeFlat + */ + readonly id: number; + /** + * + * @type {string} + * @memberof RecipeFlat + */ + name: string; + /** + * + * @type {string} + * @memberof RecipeFlat + */ + image?: string; +} + +/** + * Check if a given object implements the RecipeFlat interface. + */ +export function instanceOfRecipeFlat(value: object): boolean { + if (!('id' in value)) return false; + if (!('name' in value)) return false; + return true; +} + +export function RecipeFlatFromJSON(json: any): RecipeFlat { + return RecipeFlatFromJSONTyped(json, false); +} + +export function RecipeFlatFromJSONTyped(json: any, ignoreDiscriminator: boolean): RecipeFlat { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'], + 'image': json['image'] == null ? undefined : json['image'], + }; +} + +export function RecipeFlatToJSON(value?: RecipeFlat | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'image': value['image'], + }; +} + diff --git a/vue3/src/openapi/models/RecipeImage.ts b/vue3/src/openapi/models/RecipeImage.ts new file mode 100644 index 000000000..eb7483c2a --- /dev/null +++ b/vue3/src/openapi/models/RecipeImage.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * Adds nested create feature + * @export + * @interface RecipeImage + */ +export interface RecipeImage { + /** + * + * @type {string} + * @memberof RecipeImage + */ + image?: string; + /** + * + * @type {string} + * @memberof RecipeImage + */ + imageUrl?: string; +} + +/** + * Check if a given object implements the RecipeImage interface. + */ +export function instanceOfRecipeImage(value: object): boolean { + return true; +} + +export function RecipeImageFromJSON(json: any): RecipeImage { + return RecipeImageFromJSONTyped(json, false); +} + +export function RecipeImageFromJSONTyped(json: any, ignoreDiscriminator: boolean): RecipeImage { + if (json == null) { + return json; + } + return { + + 'image': json['image'] == null ? undefined : json['image'], + 'imageUrl': json['image_url'] == null ? undefined : json['image_url'], + }; +} + +export function RecipeImageToJSON(value?: RecipeImage | null): any { + if (value == null) { + return value; + } + return { + + 'image': value['image'], + 'image_url': value['imageUrl'], + }; +} + diff --git a/vue3/src/openapi/models/RecipeKeywordsInner.ts b/vue3/src/openapi/models/RecipeKeywordsInner.ts new file mode 100644 index 000000000..0030db2d3 --- /dev/null +++ b/vue3/src/openapi/models/RecipeKeywordsInner.ts @@ -0,0 +1,123 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface RecipeKeywordsInner + */ +export interface RecipeKeywordsInner { + /** + * + * @type {number} + * @memberof RecipeKeywordsInner + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof RecipeKeywordsInner + */ + name: string; + /** + * + * @type {string} + * @memberof RecipeKeywordsInner + */ + readonly label?: string; + /** + * + * @type {string} + * @memberof RecipeKeywordsInner + */ + description?: string; + /** + * + * @type {string} + * @memberof RecipeKeywordsInner + */ + readonly parent?: string; + /** + * + * @type {number} + * @memberof RecipeKeywordsInner + */ + readonly numchild?: number; + /** + * + * @type {Date} + * @memberof RecipeKeywordsInner + */ + readonly createdAt?: Date; + /** + * + * @type {Date} + * @memberof RecipeKeywordsInner + */ + readonly updatedAt?: Date; + /** + * + * @type {string} + * @memberof RecipeKeywordsInner + */ + readonly fullName?: string; +} + +/** + * Check if a given object implements the RecipeKeywordsInner interface. + */ +export function instanceOfRecipeKeywordsInner(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "name" in value; + + return isInstance; +} + +export function RecipeKeywordsInnerFromJSON(json: any): RecipeKeywordsInner { + return RecipeKeywordsInnerFromJSONTyped(json, false); +} + +export function RecipeKeywordsInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): RecipeKeywordsInner { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': json['name'], + 'label': !exists(json, 'label') ? undefined : json['label'], + 'description': !exists(json, 'description') ? undefined : json['description'], + 'parent': !exists(json, 'parent') ? undefined : json['parent'], + 'numchild': !exists(json, 'numchild') ? undefined : json['numchild'], + 'createdAt': !exists(json, 'created_at') ? undefined : (new Date(json['created_at'])), + 'updatedAt': !exists(json, 'updated_at') ? undefined : (new Date(json['updated_at'])), + 'fullName': !exists(json, 'full_name') ? undefined : json['full_name'], + }; +} + +export function RecipeKeywordsInnerToJSON(value?: RecipeKeywordsInner | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'name': value.name, + 'description': value.description, + }; +} + diff --git a/vue3/src/openapi/models/RecipeNutrition.ts b/vue3/src/openapi/models/RecipeNutrition.ts new file mode 100644 index 000000000..9be6397e2 --- /dev/null +++ b/vue3/src/openapi/models/RecipeNutrition.ts @@ -0,0 +1,108 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface RecipeNutrition + */ +export interface RecipeNutrition { + /** + * + * @type {number} + * @memberof RecipeNutrition + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof RecipeNutrition + */ + carbohydrates: string; + /** + * + * @type {string} + * @memberof RecipeNutrition + */ + fats: string; + /** + * + * @type {string} + * @memberof RecipeNutrition + */ + proteins: string; + /** + * + * @type {string} + * @memberof RecipeNutrition + */ + calories: string; + /** + * + * @type {string} + * @memberof RecipeNutrition + */ + source?: string | null; +} + +/** + * Check if a given object implements the RecipeNutrition interface. + */ +export function instanceOfRecipeNutrition(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "carbohydrates" in value; + isInstance = isInstance && "fats" in value; + isInstance = isInstance && "proteins" in value; + isInstance = isInstance && "calories" in value; + + return isInstance; +} + +export function RecipeNutritionFromJSON(json: any): RecipeNutrition { + return RecipeNutritionFromJSONTyped(json, false); +} + +export function RecipeNutritionFromJSONTyped(json: any, ignoreDiscriminator: boolean): RecipeNutrition { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'carbohydrates': json['carbohydrates'], + 'fats': json['fats'], + 'proteins': json['proteins'], + 'calories': json['calories'], + 'source': !exists(json, 'source') ? undefined : json['source'], + }; +} + +export function RecipeNutritionToJSON(value?: RecipeNutrition | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'carbohydrates': value.carbohydrates, + 'fats': value.fats, + 'proteins': value.proteins, + 'calories': value.calories, + 'source': value.source, + }; +} + diff --git a/vue3/src/openapi/models/RecipeOverview.ts b/vue3/src/openapi/models/RecipeOverview.ts new file mode 100644 index 000000000..b9cfcd393 --- /dev/null +++ b/vue3/src/openapi/models/RecipeOverview.ts @@ -0,0 +1,195 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { KeywordLabel } from './KeywordLabel'; +import { + KeywordLabelFromJSON, + KeywordLabelFromJSONTyped, + KeywordLabelToJSON, +} from './KeywordLabel'; + +/** + * Adds nested create feature + * @export + * @interface RecipeOverview + */ +export interface RecipeOverview { + /** + * + * @type {number} + * @memberof RecipeOverview + */ + readonly id: number; + /** + * + * @type {string} + * @memberof RecipeOverview + */ + readonly name: string; + /** + * + * @type {string} + * @memberof RecipeOverview + */ + readonly description: string | null; + /** + * + * @type {string} + * @memberof RecipeOverview + */ + readonly image: string | null; + /** + * + * @type {Array} + * @memberof RecipeOverview + */ + readonly keywords: Array; + /** + * + * @type {number} + * @memberof RecipeOverview + */ + readonly workingTime: number; + /** + * + * @type {number} + * @memberof RecipeOverview + */ + readonly waitingTime: number; + /** + * + * @type {number} + * @memberof RecipeOverview + */ + readonly createdBy: number; + /** + * + * @type {Date} + * @memberof RecipeOverview + */ + readonly createdAt: Date; + /** + * + * @type {Date} + * @memberof RecipeOverview + */ + readonly updatedAt: Date; + /** + * + * @type {boolean} + * @memberof RecipeOverview + */ + readonly internal: boolean; + /** + * + * @type {number} + * @memberof RecipeOverview + */ + readonly servings: number; + /** + * + * @type {string} + * @memberof RecipeOverview + */ + readonly servingsText: string; + /** + * + * @type {string} + * @memberof RecipeOverview + */ + readonly rating: string | null; + /** + * + * @type {Date} + * @memberof RecipeOverview + */ + readonly lastCooked: Date | null; + /** + * + * @type {string} + * @memberof RecipeOverview + */ + readonly _new: string; + /** + * + * @type {string} + * @memberof RecipeOverview + */ + readonly recent: string; +} + +/** + * Check if a given object implements the RecipeOverview interface. + */ +export function instanceOfRecipeOverview(value: object): boolean { + if (!('id' in value)) return false; + if (!('name' in value)) return false; + if (!('description' in value)) return false; + if (!('image' in value)) return false; + if (!('keywords' in value)) return false; + if (!('workingTime' in value)) return false; + if (!('waitingTime' in value)) return false; + if (!('createdBy' in value)) return false; + if (!('createdAt' in value)) return false; + if (!('updatedAt' in value)) return false; + if (!('internal' in value)) return false; + if (!('servings' in value)) return false; + if (!('servingsText' in value)) return false; + if (!('rating' in value)) return false; + if (!('lastCooked' in value)) return false; + if (!('_new' in value)) return false; + if (!('recent' in value)) return false; + return true; +} + +export function RecipeOverviewFromJSON(json: any): RecipeOverview { + return RecipeOverviewFromJSONTyped(json, false); +} + +export function RecipeOverviewFromJSONTyped(json: any, ignoreDiscriminator: boolean): RecipeOverview { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'], + 'description': json['description'], + 'image': json['image'], + 'keywords': ((json['keywords'] as Array).map(KeywordLabelFromJSON)), + 'workingTime': json['working_time'], + 'waitingTime': json['waiting_time'], + 'createdBy': json['created_by'], + 'createdAt': (new Date(json['created_at'])), + 'updatedAt': (new Date(json['updated_at'])), + 'internal': json['internal'], + 'servings': json['servings'], + 'servingsText': json['servings_text'], + 'rating': json['rating'], + 'lastCooked': (json['last_cooked'] == null ? null : new Date(json['last_cooked'])), + '_new': json['new'], + 'recent': json['recent'], + }; +} + +export function RecipeOverviewToJSON(value?: RecipeOverview | null): any { + if (value == null) { + return value; + } + return { + + }; +} + diff --git a/vue3/src/openapi/models/RecipeShoppingUpdate.ts b/vue3/src/openapi/models/RecipeShoppingUpdate.ts new file mode 100644 index 000000000..2ac5eda6b --- /dev/null +++ b/vue3/src/openapi/models/RecipeShoppingUpdate.ts @@ -0,0 +1,84 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface RecipeShoppingUpdate + */ +export interface RecipeShoppingUpdate { + /** + * + * @type {number} + * @memberof RecipeShoppingUpdate + */ + readonly id: number; + /** + * Existing shopping list to update + * @type {number} + * @memberof RecipeShoppingUpdate + */ + listRecipe?: number; + /** + * List of ingredient IDs from the recipe to add, if not provided all ingredients will be added. + * @type {number} + * @memberof RecipeShoppingUpdate + */ + ingredients?: number; + /** + * Providing a list_recipe ID and servings of 0 will delete that shopping list. + * @type {number} + * @memberof RecipeShoppingUpdate + */ + servings?: number; +} + +/** + * Check if a given object implements the RecipeShoppingUpdate interface. + */ +export function instanceOfRecipeShoppingUpdate(value: object): boolean { + if (!('id' in value)) return false; + return true; +} + +export function RecipeShoppingUpdateFromJSON(json: any): RecipeShoppingUpdate { + return RecipeShoppingUpdateFromJSONTyped(json, false); +} + +export function RecipeShoppingUpdateFromJSONTyped(json: any, ignoreDiscriminator: boolean): RecipeShoppingUpdate { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'listRecipe': json['list_recipe'] == null ? undefined : json['list_recipe'], + 'ingredients': json['ingredients'] == null ? undefined : json['ingredients'], + 'servings': json['servings'] == null ? undefined : json['servings'], + }; +} + +export function RecipeShoppingUpdateToJSON(value?: RecipeShoppingUpdate | null): any { + if (value == null) { + return value; + } + return { + + 'list_recipe': value['listRecipe'], + 'ingredients': value['ingredients'], + 'servings': value['servings'], + }; +} + diff --git a/vue3/src/openapi/models/RecipeSimple.ts b/vue3/src/openapi/models/RecipeSimple.ts new file mode 100644 index 000000000..df04ddf21 --- /dev/null +++ b/vue3/src/openapi/models/RecipeSimple.ts @@ -0,0 +1,77 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * Adds nested create feature + * @export + * @interface RecipeSimple + */ +export interface RecipeSimple { + /** + * + * @type {number} + * @memberof RecipeSimple + */ + readonly id: number; + /** + * + * @type {string} + * @memberof RecipeSimple + */ + name: string; + /** + * + * @type {string} + * @memberof RecipeSimple + */ + readonly url: string; +} + +/** + * Check if a given object implements the RecipeSimple interface. + */ +export function instanceOfRecipeSimple(value: object): boolean { + if (!('id' in value)) return false; + if (!('name' in value)) return false; + if (!('url' in value)) return false; + return true; +} + +export function RecipeSimpleFromJSON(json: any): RecipeSimple { + return RecipeSimpleFromJSONTyped(json, false); +} + +export function RecipeSimpleFromJSONTyped(json: any, ignoreDiscriminator: boolean): RecipeSimple { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'], + 'url': json['url'], + }; +} + +export function RecipeSimpleToJSON(value?: RecipeSimple | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + }; +} + diff --git a/vue3/src/openapi/models/RecipeStepsInner.ts b/vue3/src/openapi/models/RecipeStepsInner.ts new file mode 100644 index 000000000..f931c0382 --- /dev/null +++ b/vue3/src/openapi/models/RecipeStepsInner.ts @@ -0,0 +1,171 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { RecipeStepsInnerFile } from './RecipeStepsInnerFile'; +import { + RecipeStepsInnerFileFromJSON, + RecipeStepsInnerFileFromJSONTyped, + RecipeStepsInnerFileToJSON, +} from './RecipeStepsInnerFile'; +import type { RecipeStepsInnerIngredientsInner } from './RecipeStepsInnerIngredientsInner'; +import { + RecipeStepsInnerIngredientsInnerFromJSON, + RecipeStepsInnerIngredientsInnerFromJSONTyped, + RecipeStepsInnerIngredientsInnerToJSON, +} from './RecipeStepsInnerIngredientsInner'; + +/** + * + * @export + * @interface RecipeStepsInner + */ +export interface RecipeStepsInner { + /** + * + * @type {number} + * @memberof RecipeStepsInner + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof RecipeStepsInner + */ + name?: string; + /** + * + * @type {string} + * @memberof RecipeStepsInner + */ + instruction?: string; + /** + * + * @type {Array} + * @memberof RecipeStepsInner + */ + ingredients: Array; + /** + * + * @type {string} + * @memberof RecipeStepsInner + */ + readonly instructionsMarkdown?: string; + /** + * + * @type {number} + * @memberof RecipeStepsInner + */ + time?: number; + /** + * + * @type {number} + * @memberof RecipeStepsInner + */ + order?: number; + /** + * + * @type {boolean} + * @memberof RecipeStepsInner + */ + showAsHeader?: boolean; + /** + * + * @type {RecipeStepsInnerFile} + * @memberof RecipeStepsInner + */ + file?: RecipeStepsInnerFile | null; + /** + * + * @type {number} + * @memberof RecipeStepsInner + */ + stepRecipe?: number | null; + /** + * + * @type {string} + * @memberof RecipeStepsInner + */ + readonly stepRecipeData?: string; + /** + * + * @type {string} + * @memberof RecipeStepsInner + */ + readonly numrecipe?: string; + /** + * + * @type {boolean} + * @memberof RecipeStepsInner + */ + showIngredientsTable?: boolean; +} + +/** + * Check if a given object implements the RecipeStepsInner interface. + */ +export function instanceOfRecipeStepsInner(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "ingredients" in value; + + return isInstance; +} + +export function RecipeStepsInnerFromJSON(json: any): RecipeStepsInner { + return RecipeStepsInnerFromJSONTyped(json, false); +} + +export function RecipeStepsInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): RecipeStepsInner { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': !exists(json, 'name') ? undefined : json['name'], + 'instruction': !exists(json, 'instruction') ? undefined : json['instruction'], + 'ingredients': ((json['ingredients'] as Array).map(RecipeStepsInnerIngredientsInnerFromJSON)), + 'instructionsMarkdown': !exists(json, 'instructions_markdown') ? undefined : json['instructions_markdown'], + 'time': !exists(json, 'time') ? undefined : json['time'], + 'order': !exists(json, 'order') ? undefined : json['order'], + 'showAsHeader': !exists(json, 'show_as_header') ? undefined : json['show_as_header'], + 'file': !exists(json, 'file') ? undefined : RecipeStepsInnerFileFromJSON(json['file']), + 'stepRecipe': !exists(json, 'step_recipe') ? undefined : json['step_recipe'], + 'stepRecipeData': !exists(json, 'step_recipe_data') ? undefined : json['step_recipe_data'], + 'numrecipe': !exists(json, 'numrecipe') ? undefined : json['numrecipe'], + 'showIngredientsTable': !exists(json, 'show_ingredients_table') ? undefined : json['show_ingredients_table'], + }; +} + +export function RecipeStepsInnerToJSON(value?: RecipeStepsInner | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'name': value.name, + 'instruction': value.instruction, + 'ingredients': ((value.ingredients as Array).map(RecipeStepsInnerIngredientsInnerToJSON)), + 'time': value.time, + 'order': value.order, + 'show_as_header': value.showAsHeader, + 'file': RecipeStepsInnerFileToJSON(value.file), + 'step_recipe': value.stepRecipe, + 'show_ingredients_table': value.showIngredientsTable, + }; +} + diff --git a/vue3/src/openapi/models/RecipeStepsInnerFile.ts b/vue3/src/openapi/models/RecipeStepsInnerFile.ts new file mode 100644 index 000000000..d0f07d2fa --- /dev/null +++ b/vue3/src/openapi/models/RecipeStepsInnerFile.ts @@ -0,0 +1,87 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface RecipeStepsInnerFile + */ +export interface RecipeStepsInnerFile { + /** + * + * @type {number} + * @memberof RecipeStepsInnerFile + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof RecipeStepsInnerFile + */ + name: string; + /** + * + * @type {string} + * @memberof RecipeStepsInnerFile + */ + readonly fileDownload?: string; + /** + * + * @type {string} + * @memberof RecipeStepsInnerFile + */ + readonly preview?: string; +} + +/** + * Check if a given object implements the RecipeStepsInnerFile interface. + */ +export function instanceOfRecipeStepsInnerFile(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "name" in value; + + return isInstance; +} + +export function RecipeStepsInnerFileFromJSON(json: any): RecipeStepsInnerFile { + return RecipeStepsInnerFileFromJSONTyped(json, false); +} + +export function RecipeStepsInnerFileFromJSONTyped(json: any, ignoreDiscriminator: boolean): RecipeStepsInnerFile { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': json['name'], + 'fileDownload': !exists(json, 'file_download') ? undefined : json['file_download'], + 'preview': !exists(json, 'preview') ? undefined : json['preview'], + }; +} + +export function RecipeStepsInnerFileToJSON(value?: RecipeStepsInnerFile | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'name': value.name, + }; +} + diff --git a/vue3/src/openapi/models/RecipeStepsInnerIngredientsInner.ts b/vue3/src/openapi/models/RecipeStepsInnerIngredientsInner.ts new file mode 100644 index 000000000..b8488d062 --- /dev/null +++ b/vue3/src/openapi/models/RecipeStepsInnerIngredientsInner.ts @@ -0,0 +1,174 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { FoodPropertiesFoodUnit } from './FoodPropertiesFoodUnit'; +import { + FoodPropertiesFoodUnitFromJSON, + FoodPropertiesFoodUnitFromJSONTyped, + FoodPropertiesFoodUnitToJSON, +} from './FoodPropertiesFoodUnit'; +import type { IngredientFood } from './IngredientFood'; +import { + IngredientFoodFromJSON, + IngredientFoodFromJSONTyped, + IngredientFoodToJSON, +} from './IngredientFood'; + +/** + * + * @export + * @interface RecipeStepsInnerIngredientsInner + */ +export interface RecipeStepsInnerIngredientsInner { + /** + * + * @type {number} + * @memberof RecipeStepsInnerIngredientsInner + */ + readonly id?: number; + /** + * + * @type {IngredientFood} + * @memberof RecipeStepsInnerIngredientsInner + */ + food: IngredientFood | null; + /** + * + * @type {FoodPropertiesFoodUnit} + * @memberof RecipeStepsInnerIngredientsInner + */ + unit: FoodPropertiesFoodUnit | null; + /** + * + * @type {string} + * @memberof RecipeStepsInnerIngredientsInner + */ + amount: string; + /** + * + * @type {string} + * @memberof RecipeStepsInnerIngredientsInner + */ + readonly conversions?: string; + /** + * + * @type {string} + * @memberof RecipeStepsInnerIngredientsInner + */ + note?: string | null; + /** + * + * @type {number} + * @memberof RecipeStepsInnerIngredientsInner + */ + order?: number; + /** + * + * @type {boolean} + * @memberof RecipeStepsInnerIngredientsInner + */ + isHeader?: boolean; + /** + * + * @type {boolean} + * @memberof RecipeStepsInnerIngredientsInner + */ + noAmount?: boolean; + /** + * + * @type {string} + * @memberof RecipeStepsInnerIngredientsInner + */ + originalText?: string | null; + /** + * + * @type {string} + * @memberof RecipeStepsInnerIngredientsInner + */ + readonly usedInRecipes?: string; + /** + * + * @type {boolean} + * @memberof RecipeStepsInnerIngredientsInner + */ + alwaysUsePluralUnit?: boolean; + /** + * + * @type {boolean} + * @memberof RecipeStepsInnerIngredientsInner + */ + alwaysUsePluralFood?: boolean; +} + +/** + * Check if a given object implements the RecipeStepsInnerIngredientsInner interface. + */ +export function instanceOfRecipeStepsInnerIngredientsInner(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "food" in value; + isInstance = isInstance && "unit" in value; + isInstance = isInstance && "amount" in value; + + return isInstance; +} + +export function RecipeStepsInnerIngredientsInnerFromJSON(json: any): RecipeStepsInnerIngredientsInner { + return RecipeStepsInnerIngredientsInnerFromJSONTyped(json, false); +} + +export function RecipeStepsInnerIngredientsInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): RecipeStepsInnerIngredientsInner { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'food': IngredientFoodFromJSON(json['food']), + 'unit': FoodPropertiesFoodUnitFromJSON(json['unit']), + 'amount': json['amount'], + 'conversions': !exists(json, 'conversions') ? undefined : json['conversions'], + 'note': !exists(json, 'note') ? undefined : json['note'], + 'order': !exists(json, 'order') ? undefined : json['order'], + 'isHeader': !exists(json, 'is_header') ? undefined : json['is_header'], + 'noAmount': !exists(json, 'no_amount') ? undefined : json['no_amount'], + 'originalText': !exists(json, 'original_text') ? undefined : json['original_text'], + 'usedInRecipes': !exists(json, 'used_in_recipes') ? undefined : json['used_in_recipes'], + 'alwaysUsePluralUnit': !exists(json, 'always_use_plural_unit') ? undefined : json['always_use_plural_unit'], + 'alwaysUsePluralFood': !exists(json, 'always_use_plural_food') ? undefined : json['always_use_plural_food'], + }; +} + +export function RecipeStepsInnerIngredientsInnerToJSON(value?: RecipeStepsInnerIngredientsInner | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'food': IngredientFoodToJSON(value.food), + 'unit': FoodPropertiesFoodUnitToJSON(value.unit), + 'amount': value.amount, + 'note': value.note, + 'order': value.order, + 'is_header': value.isHeader, + 'no_amount': value.noAmount, + 'original_text': value.originalText, + 'always_use_plural_unit': value.alwaysUsePluralUnit, + 'always_use_plural_food': value.alwaysUsePluralFood, + }; +} + diff --git a/vue3/src/openapi/models/ShoppingList.ts b/vue3/src/openapi/models/ShoppingList.ts new file mode 100644 index 000000000..650da805f --- /dev/null +++ b/vue3/src/openapi/models/ShoppingList.ts @@ -0,0 +1,163 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { CustomFilterSharedInner } from './CustomFilterSharedInner'; +import { + CustomFilterSharedInnerFromJSON, + CustomFilterSharedInnerFromJSONTyped, + CustomFilterSharedInnerToJSON, +} from './CustomFilterSharedInner'; +import type { ShoppingListEntriesInner } from './ShoppingListEntriesInner'; +import { + ShoppingListEntriesInnerFromJSON, + ShoppingListEntriesInnerFromJSONTyped, + ShoppingListEntriesInnerToJSON, +} from './ShoppingListEntriesInner'; +import type { ShoppingListRecipesInner } from './ShoppingListRecipesInner'; +import { + ShoppingListRecipesInnerFromJSON, + ShoppingListRecipesInnerFromJSONTyped, + ShoppingListRecipesInnerToJSON, +} from './ShoppingListRecipesInner'; +import type { ShoppingListSupermarket } from './ShoppingListSupermarket'; +import { + ShoppingListSupermarketFromJSON, + ShoppingListSupermarketFromJSONTyped, + ShoppingListSupermarketToJSON, +} from './ShoppingListSupermarket'; + +/** + * + * @export + * @interface ShoppingList + */ +export interface ShoppingList { + /** + * + * @type {number} + * @memberof ShoppingList + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof ShoppingList + */ + uuid?: string; + /** + * + * @type {string} + * @memberof ShoppingList + */ + note?: string | null; + /** + * + * @type {Array} + * @memberof ShoppingList + */ + recipes: Array | null; + /** + * + * @type {Array} + * @memberof ShoppingList + */ + entries: Array | null; + /** + * + * @type {Array} + * @memberof ShoppingList + */ + shared: Array; + /** + * + * @type {boolean} + * @memberof ShoppingList + */ + finished?: boolean; + /** + * + * @type {ShoppingListSupermarket} + * @memberof ShoppingList + */ + supermarket: ShoppingListSupermarket | null; + /** + * + * @type {string} + * @memberof ShoppingList + */ + readonly createdBy?: string; + /** + * + * @type {Date} + * @memberof ShoppingList + */ + readonly createdAt?: Date; +} + +/** + * Check if a given object implements the ShoppingList interface. + */ +export function instanceOfShoppingList(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "recipes" in value; + isInstance = isInstance && "entries" in value; + isInstance = isInstance && "shared" in value; + isInstance = isInstance && "supermarket" in value; + + return isInstance; +} + +export function ShoppingListFromJSON(json: any): ShoppingList { + return ShoppingListFromJSONTyped(json, false); +} + +export function ShoppingListFromJSONTyped(json: any, ignoreDiscriminator: boolean): ShoppingList { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'uuid': !exists(json, 'uuid') ? undefined : json['uuid'], + 'note': !exists(json, 'note') ? undefined : json['note'], + 'recipes': (json['recipes'] === null ? null : (json['recipes'] as Array).map(ShoppingListRecipesInnerFromJSON)), + 'entries': (json['entries'] === null ? null : (json['entries'] as Array).map(ShoppingListEntriesInnerFromJSON)), + 'shared': ((json['shared'] as Array).map(CustomFilterSharedInnerFromJSON)), + 'finished': !exists(json, 'finished') ? undefined : json['finished'], + 'supermarket': ShoppingListSupermarketFromJSON(json['supermarket']), + 'createdBy': !exists(json, 'created_by') ? undefined : json['created_by'], + 'createdAt': !exists(json, 'created_at') ? undefined : (new Date(json['created_at'])), + }; +} + +export function ShoppingListToJSON(value?: ShoppingList | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'uuid': value.uuid, + 'note': value.note, + 'recipes': (value.recipes === null ? null : (value.recipes as Array).map(ShoppingListRecipesInnerToJSON)), + 'entries': (value.entries === null ? null : (value.entries as Array).map(ShoppingListEntriesInnerToJSON)), + 'shared': ((value.shared as Array).map(CustomFilterSharedInnerToJSON)), + 'finished': value.finished, + 'supermarket': ShoppingListSupermarketToJSON(value.supermarket), + }; +} + diff --git a/vue3/src/openapi/models/ShoppingListEntriesInner.ts b/vue3/src/openapi/models/ShoppingListEntriesInner.ts new file mode 100644 index 000000000..f785d6886 --- /dev/null +++ b/vue3/src/openapi/models/ShoppingListEntriesInner.ts @@ -0,0 +1,185 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { CookLogCreatedBy } from './CookLogCreatedBy'; +import { + CookLogCreatedByFromJSON, + CookLogCreatedByFromJSONTyped, + CookLogCreatedByToJSON, +} from './CookLogCreatedBy'; +import type { FoodPropertiesFoodUnit } from './FoodPropertiesFoodUnit'; +import { + FoodPropertiesFoodUnitFromJSON, + FoodPropertiesFoodUnitFromJSONTyped, + FoodPropertiesFoodUnitToJSON, +} from './FoodPropertiesFoodUnit'; +import type { IngredientFood } from './IngredientFood'; +import { + IngredientFoodFromJSON, + IngredientFoodFromJSONTyped, + IngredientFoodToJSON, +} from './IngredientFood'; +import type { ShoppingListEntriesInnerRecipeMealplan } from './ShoppingListEntriesInnerRecipeMealplan'; +import { + ShoppingListEntriesInnerRecipeMealplanFromJSON, + ShoppingListEntriesInnerRecipeMealplanFromJSONTyped, + ShoppingListEntriesInnerRecipeMealplanToJSON, +} from './ShoppingListEntriesInnerRecipeMealplan'; + +/** + * + * @export + * @interface ShoppingListEntriesInner + */ +export interface ShoppingListEntriesInner { + /** + * + * @type {number} + * @memberof ShoppingListEntriesInner + */ + readonly id?: number; + /** + * + * @type {number} + * @memberof ShoppingListEntriesInner + */ + listRecipe?: number | null; + /** + * + * @type {IngredientFood} + * @memberof ShoppingListEntriesInner + */ + food: IngredientFood | null; + /** + * + * @type {FoodPropertiesFoodUnit} + * @memberof ShoppingListEntriesInner + */ + unit?: FoodPropertiesFoodUnit | null; + /** + * + * @type {string} + * @memberof ShoppingListEntriesInner + */ + amount: string; + /** + * + * @type {number} + * @memberof ShoppingListEntriesInner + */ + order?: number; + /** + * + * @type {boolean} + * @memberof ShoppingListEntriesInner + */ + checked?: boolean; + /** + * + * @type {ShoppingListEntriesInnerRecipeMealplan} + * @memberof ShoppingListEntriesInner + */ + recipeMealplan?: ShoppingListEntriesInnerRecipeMealplan; + /** + * + * @type {CookLogCreatedBy} + * @memberof ShoppingListEntriesInner + */ + createdBy?: CookLogCreatedBy; + /** + * + * @type {Date} + * @memberof ShoppingListEntriesInner + */ + readonly createdAt?: Date; + /** + * + * @type {Date} + * @memberof ShoppingListEntriesInner + */ + readonly updatedAt?: Date; + /** + * + * @type {Date} + * @memberof ShoppingListEntriesInner + */ + completedAt?: Date | null; + /** + * + * @type {Date} + * @memberof ShoppingListEntriesInner + */ + delayUntil?: Date | null; +} + +/** + * Check if a given object implements the ShoppingListEntriesInner interface. + */ +export function instanceOfShoppingListEntriesInner(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "food" in value; + isInstance = isInstance && "amount" in value; + + return isInstance; +} + +export function ShoppingListEntriesInnerFromJSON(json: any): ShoppingListEntriesInner { + return ShoppingListEntriesInnerFromJSONTyped(json, false); +} + +export function ShoppingListEntriesInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): ShoppingListEntriesInner { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'listRecipe': !exists(json, 'list_recipe') ? undefined : json['list_recipe'], + 'food': IngredientFoodFromJSON(json['food']), + 'unit': !exists(json, 'unit') ? undefined : FoodPropertiesFoodUnitFromJSON(json['unit']), + 'amount': json['amount'], + 'order': !exists(json, 'order') ? undefined : json['order'], + 'checked': !exists(json, 'checked') ? undefined : json['checked'], + 'recipeMealplan': !exists(json, 'recipe_mealplan') ? undefined : ShoppingListEntriesInnerRecipeMealplanFromJSON(json['recipe_mealplan']), + 'createdBy': !exists(json, 'created_by') ? undefined : CookLogCreatedByFromJSON(json['created_by']), + 'createdAt': !exists(json, 'created_at') ? undefined : (new Date(json['created_at'])), + 'updatedAt': !exists(json, 'updated_at') ? undefined : (new Date(json['updated_at'])), + 'completedAt': !exists(json, 'completed_at') ? undefined : (json['completed_at'] === null ? null : new Date(json['completed_at'])), + 'delayUntil': !exists(json, 'delay_until') ? undefined : (json['delay_until'] === null ? null : new Date(json['delay_until'])), + }; +} + +export function ShoppingListEntriesInnerToJSON(value?: ShoppingListEntriesInner | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'list_recipe': value.listRecipe, + 'food': IngredientFoodToJSON(value.food), + 'unit': FoodPropertiesFoodUnitToJSON(value.unit), + 'amount': value.amount, + 'order': value.order, + 'checked': value.checked, + 'recipe_mealplan': ShoppingListEntriesInnerRecipeMealplanToJSON(value.recipeMealplan), + 'created_by': CookLogCreatedByToJSON(value.createdBy), + 'completed_at': value.completedAt === undefined ? undefined : (value.completedAt === null ? null : value.completedAt.toISOString()), + 'delay_until': value.delayUntil === undefined ? undefined : (value.delayUntil === null ? null : value.delayUntil.toISOString()), + }; +} + diff --git a/vue3/src/openapi/models/ShoppingListEntriesInnerCreatedBy.ts b/vue3/src/openapi/models/ShoppingListEntriesInnerCreatedBy.ts new file mode 100644 index 000000000..8d5b34ff5 --- /dev/null +++ b/vue3/src/openapi/models/ShoppingListEntriesInnerCreatedBy.ts @@ -0,0 +1,94 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface ShoppingListEntriesInnerCreatedBy + */ +export interface ShoppingListEntriesInnerCreatedBy { + /** + * + * @type {number} + * @memberof ShoppingListEntriesInnerCreatedBy + */ + readonly id?: number; + /** + * Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. + * @type {string} + * @memberof ShoppingListEntriesInnerCreatedBy + */ + readonly username?: string; + /** + * + * @type {string} + * @memberof ShoppingListEntriesInnerCreatedBy + */ + firstName?: string; + /** + * + * @type {string} + * @memberof ShoppingListEntriesInnerCreatedBy + */ + lastName?: string; + /** + * + * @type {string} + * @memberof ShoppingListEntriesInnerCreatedBy + */ + readonly displayName?: string; +} + +/** + * Check if a given object implements the ShoppingListEntriesInnerCreatedBy interface. + */ +export function instanceOfShoppingListEntriesInnerCreatedBy(value: object): boolean { + let isInstance = true; + + return isInstance; +} + +export function ShoppingListEntriesInnerCreatedByFromJSON(json: any): ShoppingListEntriesInnerCreatedBy { + return ShoppingListEntriesInnerCreatedByFromJSONTyped(json, false); +} + +export function ShoppingListEntriesInnerCreatedByFromJSONTyped(json: any, ignoreDiscriminator: boolean): ShoppingListEntriesInnerCreatedBy { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'username': !exists(json, 'username') ? undefined : json['username'], + 'firstName': !exists(json, 'first_name') ? undefined : json['first_name'], + 'lastName': !exists(json, 'last_name') ? undefined : json['last_name'], + 'displayName': !exists(json, 'display_name') ? undefined : json['display_name'], + }; +} + +export function ShoppingListEntriesInnerCreatedByToJSON(value?: ShoppingListEntriesInnerCreatedBy | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'first_name': value.firstName, + 'last_name': value.lastName, + }; +} + diff --git a/vue3/src/openapi/models/ShoppingListEntriesInnerRecipeMealplan.ts b/vue3/src/openapi/models/ShoppingListEntriesInnerRecipeMealplan.ts new file mode 100644 index 000000000..e09ddba47 --- /dev/null +++ b/vue3/src/openapi/models/ShoppingListEntriesInnerRecipeMealplan.ts @@ -0,0 +1,124 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface ShoppingListEntriesInnerRecipeMealplan + */ +export interface ShoppingListEntriesInnerRecipeMealplan { + /** + * + * @type {number} + * @memberof ShoppingListEntriesInnerRecipeMealplan + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof ShoppingListEntriesInnerRecipeMealplan + */ + readonly recipeName?: string; + /** + * + * @type {string} + * @memberof ShoppingListEntriesInnerRecipeMealplan + */ + readonly name?: string; + /** + * + * @type {number} + * @memberof ShoppingListEntriesInnerRecipeMealplan + */ + recipe?: number | null; + /** + * + * @type {number} + * @memberof ShoppingListEntriesInnerRecipeMealplan + */ + mealplan?: number | null; + /** + * + * @type {string} + * @memberof ShoppingListEntriesInnerRecipeMealplan + */ + servings: string; + /** + * + * @type {string} + * @memberof ShoppingListEntriesInnerRecipeMealplan + */ + readonly mealplanNote?: string; + /** + * + * @type {string} + * @memberof ShoppingListEntriesInnerRecipeMealplan + */ + readonly mealplanFromDate?: string; + /** + * + * @type {string} + * @memberof ShoppingListEntriesInnerRecipeMealplan + */ + readonly mealplanType?: string; +} + +/** + * Check if a given object implements the ShoppingListEntriesInnerRecipeMealplan interface. + */ +export function instanceOfShoppingListEntriesInnerRecipeMealplan(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "servings" in value; + + return isInstance; +} + +export function ShoppingListEntriesInnerRecipeMealplanFromJSON(json: any): ShoppingListEntriesInnerRecipeMealplan { + return ShoppingListEntriesInnerRecipeMealplanFromJSONTyped(json, false); +} + +export function ShoppingListEntriesInnerRecipeMealplanFromJSONTyped(json: any, ignoreDiscriminator: boolean): ShoppingListEntriesInnerRecipeMealplan { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'recipeName': !exists(json, 'recipe_name') ? undefined : json['recipe_name'], + 'name': !exists(json, 'name') ? undefined : json['name'], + 'recipe': !exists(json, 'recipe') ? undefined : json['recipe'], + 'mealplan': !exists(json, 'mealplan') ? undefined : json['mealplan'], + 'servings': json['servings'], + 'mealplanNote': !exists(json, 'mealplan_note') ? undefined : json['mealplan_note'], + 'mealplanFromDate': !exists(json, 'mealplan_from_date') ? undefined : json['mealplan_from_date'], + 'mealplanType': !exists(json, 'mealplan_type') ? undefined : json['mealplan_type'], + }; +} + +export function ShoppingListEntriesInnerRecipeMealplanToJSON(value?: ShoppingListEntriesInnerRecipeMealplan | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'recipe': value.recipe, + 'mealplan': value.mealplan, + 'servings': value.servings, + }; +} + diff --git a/vue3/src/openapi/models/ShoppingListEntry.ts b/vue3/src/openapi/models/ShoppingListEntry.ts new file mode 100644 index 000000000..30fd69eca --- /dev/null +++ b/vue3/src/openapi/models/ShoppingListEntry.ts @@ -0,0 +1,183 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Food } from './Food'; +import { + FoodFromJSON, + FoodFromJSONTyped, + FoodToJSON, +} from './Food'; +import type { ShoppingListRecipe } from './ShoppingListRecipe'; +import { + ShoppingListRecipeFromJSON, + ShoppingListRecipeFromJSONTyped, + ShoppingListRecipeToJSON, +} from './ShoppingListRecipe'; +import type { Unit } from './Unit'; +import { + UnitFromJSON, + UnitFromJSONTyped, + UnitToJSON, +} from './Unit'; +import type { User } from './User'; +import { + UserFromJSON, + UserFromJSONTyped, + UserToJSON, +} from './User'; + +/** + * Adds nested create feature + * @export + * @interface ShoppingListEntry + */ +export interface ShoppingListEntry { + /** + * + * @type {number} + * @memberof ShoppingListEntry + */ + readonly id: number; + /** + * + * @type {number} + * @memberof ShoppingListEntry + */ + listRecipe?: number; + /** + * + * @type {Food} + * @memberof ShoppingListEntry + */ + food: Food | null; + /** + * + * @type {Unit} + * @memberof ShoppingListEntry + */ + unit?: Unit; + /** + * + * @type {string} + * @memberof ShoppingListEntry + */ + amount: string; + /** + * + * @type {number} + * @memberof ShoppingListEntry + */ + order?: number; + /** + * + * @type {boolean} + * @memberof ShoppingListEntry + */ + checked?: boolean; + /** + * + * @type {ShoppingListRecipe} + * @memberof ShoppingListEntry + */ + readonly recipeMealplan: ShoppingListRecipe; + /** + * + * @type {User} + * @memberof ShoppingListEntry + */ + readonly createdBy: User; + /** + * + * @type {Date} + * @memberof ShoppingListEntry + */ + readonly createdAt: Date; + /** + * + * @type {Date} + * @memberof ShoppingListEntry + */ + readonly updatedAt: Date; + /** + * + * @type {Date} + * @memberof ShoppingListEntry + */ + completedAt?: Date; + /** + * + * @type {Date} + * @memberof ShoppingListEntry + */ + delayUntil?: Date; +} + +/** + * Check if a given object implements the ShoppingListEntry interface. + */ +export function instanceOfShoppingListEntry(value: object): boolean { + if (!('id' in value)) return false; + if (!('food' in value)) return false; + if (!('amount' in value)) return false; + if (!('recipeMealplan' in value)) return false; + if (!('createdBy' in value)) return false; + if (!('createdAt' in value)) return false; + if (!('updatedAt' in value)) return false; + return true; +} + +export function ShoppingListEntryFromJSON(json: any): ShoppingListEntry { + return ShoppingListEntryFromJSONTyped(json, false); +} + +export function ShoppingListEntryFromJSONTyped(json: any, ignoreDiscriminator: boolean): ShoppingListEntry { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'listRecipe': json['list_recipe'] == null ? undefined : json['list_recipe'], + 'food': FoodFromJSON(json['food']), + 'unit': json['unit'] == null ? undefined : UnitFromJSON(json['unit']), + 'amount': json['amount'], + 'order': json['order'] == null ? undefined : json['order'], + 'checked': json['checked'] == null ? undefined : json['checked'], + 'recipeMealplan': ShoppingListRecipeFromJSON(json['recipe_mealplan']), + 'createdBy': UserFromJSON(json['created_by']), + 'createdAt': (new Date(json['created_at'])), + 'updatedAt': (new Date(json['updated_at'])), + 'completedAt': json['completed_at'] == null ? undefined : (new Date(json['completed_at'])), + 'delayUntil': json['delay_until'] == null ? undefined : (new Date(json['delay_until'])), + }; +} + +export function ShoppingListEntryToJSON(value?: ShoppingListEntry | null): any { + if (value == null) { + return value; + } + return { + + 'list_recipe': value['listRecipe'], + 'food': FoodToJSON(value['food']), + 'unit': UnitToJSON(value['unit']), + 'amount': value['amount'], + 'order': value['order'], + 'checked': value['checked'], + 'completed_at': value['completedAt'] == null ? undefined : ((value['completedAt'] as any).toISOString()), + 'delay_until': value['delayUntil'] == null ? undefined : ((value['delayUntil'] as any).toISOString()), + }; +} + diff --git a/vue3/src/openapi/models/ShoppingListEntryBulk.ts b/vue3/src/openapi/models/ShoppingListEntryBulk.ts new file mode 100644 index 000000000..83a7e2fd8 --- /dev/null +++ b/vue3/src/openapi/models/ShoppingListEntryBulk.ts @@ -0,0 +1,70 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ShoppingListEntryBulk + */ +export interface ShoppingListEntryBulk { + /** + * + * @type {Array} + * @memberof ShoppingListEntryBulk + */ + ids: Array; + /** + * + * @type {boolean} + * @memberof ShoppingListEntryBulk + */ + checked: boolean; +} + +/** + * Check if a given object implements the ShoppingListEntryBulk interface. + */ +export function instanceOfShoppingListEntryBulk(value: object): boolean { + if (!('ids' in value)) return false; + if (!('checked' in value)) return false; + return true; +} + +export function ShoppingListEntryBulkFromJSON(json: any): ShoppingListEntryBulk { + return ShoppingListEntryBulkFromJSONTyped(json, false); +} + +export function ShoppingListEntryBulkFromJSONTyped(json: any, ignoreDiscriminator: boolean): ShoppingListEntryBulk { + if (json == null) { + return json; + } + return { + + 'ids': json['ids'], + 'checked': json['checked'], + }; +} + +export function ShoppingListEntryBulkToJSON(value?: ShoppingListEntryBulk | null): any { + if (value == null) { + return value; + } + return { + + 'ids': value['ids'], + 'checked': value['checked'], + }; +} + diff --git a/vue3/src/openapi/models/ShoppingListEntryRecipeMealplan.ts b/vue3/src/openapi/models/ShoppingListEntryRecipeMealplan.ts new file mode 100644 index 000000000..76f8991b1 --- /dev/null +++ b/vue3/src/openapi/models/ShoppingListEntryRecipeMealplan.ts @@ -0,0 +1,124 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface ShoppingListEntryRecipeMealplan + */ +export interface ShoppingListEntryRecipeMealplan { + /** + * + * @type {number} + * @memberof ShoppingListEntryRecipeMealplan + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof ShoppingListEntryRecipeMealplan + */ + readonly recipeName?: string; + /** + * + * @type {string} + * @memberof ShoppingListEntryRecipeMealplan + */ + readonly name?: string; + /** + * + * @type {number} + * @memberof ShoppingListEntryRecipeMealplan + */ + recipe?: number | null; + /** + * + * @type {number} + * @memberof ShoppingListEntryRecipeMealplan + */ + mealplan?: number | null; + /** + * + * @type {string} + * @memberof ShoppingListEntryRecipeMealplan + */ + servings: string; + /** + * + * @type {string} + * @memberof ShoppingListEntryRecipeMealplan + */ + readonly mealplanNote?: string; + /** + * + * @type {string} + * @memberof ShoppingListEntryRecipeMealplan + */ + readonly mealplanFromDate?: string; + /** + * + * @type {string} + * @memberof ShoppingListEntryRecipeMealplan + */ + readonly mealplanType?: string; +} + +/** + * Check if a given object implements the ShoppingListEntryRecipeMealplan interface. + */ +export function instanceOfShoppingListEntryRecipeMealplan(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "servings" in value; + + return isInstance; +} + +export function ShoppingListEntryRecipeMealplanFromJSON(json: any): ShoppingListEntryRecipeMealplan { + return ShoppingListEntryRecipeMealplanFromJSONTyped(json, false); +} + +export function ShoppingListEntryRecipeMealplanFromJSONTyped(json: any, ignoreDiscriminator: boolean): ShoppingListEntryRecipeMealplan { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'recipeName': !exists(json, 'recipe_name') ? undefined : json['recipe_name'], + 'name': !exists(json, 'name') ? undefined : json['name'], + 'recipe': !exists(json, 'recipe') ? undefined : json['recipe'], + 'mealplan': !exists(json, 'mealplan') ? undefined : json['mealplan'], + 'servings': json['servings'], + 'mealplanNote': !exists(json, 'mealplan_note') ? undefined : json['mealplan_note'], + 'mealplanFromDate': !exists(json, 'mealplan_from_date') ? undefined : json['mealplan_from_date'], + 'mealplanType': !exists(json, 'mealplan_type') ? undefined : json['mealplan_type'], + }; +} + +export function ShoppingListEntryRecipeMealplanToJSON(value?: ShoppingListEntryRecipeMealplan | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'recipe': value.recipe, + 'mealplan': value.mealplan, + 'servings': value.servings, + }; +} + diff --git a/vue3/src/openapi/models/ShoppingListRecipe.ts b/vue3/src/openapi/models/ShoppingListRecipe.ts new file mode 100644 index 000000000..b183421c2 --- /dev/null +++ b/vue3/src/openapi/models/ShoppingListRecipe.ts @@ -0,0 +1,125 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ShoppingListRecipe + */ +export interface ShoppingListRecipe { + /** + * + * @type {number} + * @memberof ShoppingListRecipe + */ + readonly id: number; + /** + * + * @type {string} + * @memberof ShoppingListRecipe + */ + readonly recipeName: string; + /** + * + * @type {string} + * @memberof ShoppingListRecipe + */ + readonly name: string; + /** + * + * @type {number} + * @memberof ShoppingListRecipe + */ + recipe?: number; + /** + * + * @type {number} + * @memberof ShoppingListRecipe + */ + mealplan?: number; + /** + * + * @type {string} + * @memberof ShoppingListRecipe + */ + servings: string; + /** + * + * @type {string} + * @memberof ShoppingListRecipe + */ + readonly mealplanNote: string; + /** + * + * @type {Date} + * @memberof ShoppingListRecipe + */ + readonly mealplanFromDate: Date; + /** + * + * @type {string} + * @memberof ShoppingListRecipe + */ + readonly mealplanType: string; +} + +/** + * Check if a given object implements the ShoppingListRecipe interface. + */ +export function instanceOfShoppingListRecipe(value: object): boolean { + if (!('id' in value)) return false; + if (!('recipeName' in value)) return false; + if (!('name' in value)) return false; + if (!('servings' in value)) return false; + if (!('mealplanNote' in value)) return false; + if (!('mealplanFromDate' in value)) return false; + if (!('mealplanType' in value)) return false; + return true; +} + +export function ShoppingListRecipeFromJSON(json: any): ShoppingListRecipe { + return ShoppingListRecipeFromJSONTyped(json, false); +} + +export function ShoppingListRecipeFromJSONTyped(json: any, ignoreDiscriminator: boolean): ShoppingListRecipe { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'recipeName': json['recipe_name'], + 'name': json['name'], + 'recipe': json['recipe'] == null ? undefined : json['recipe'], + 'mealplan': json['mealplan'] == null ? undefined : json['mealplan'], + 'servings': json['servings'], + 'mealplanNote': json['mealplan_note'], + 'mealplanFromDate': (new Date(json['mealplan_from_date'])), + 'mealplanType': json['mealplan_type'], + }; +} + +export function ShoppingListRecipeToJSON(value?: ShoppingListRecipe | null): any { + if (value == null) { + return value; + } + return { + + 'recipe': value['recipe'], + 'mealplan': value['mealplan'], + 'servings': value['servings'], + }; +} + diff --git a/vue3/src/openapi/models/ShoppingListRecipesInner.ts b/vue3/src/openapi/models/ShoppingListRecipesInner.ts new file mode 100644 index 000000000..134023744 --- /dev/null +++ b/vue3/src/openapi/models/ShoppingListRecipesInner.ts @@ -0,0 +1,124 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface ShoppingListRecipesInner + */ +export interface ShoppingListRecipesInner { + /** + * + * @type {number} + * @memberof ShoppingListRecipesInner + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof ShoppingListRecipesInner + */ + readonly recipeName?: string; + /** + * + * @type {string} + * @memberof ShoppingListRecipesInner + */ + readonly name?: string; + /** + * + * @type {number} + * @memberof ShoppingListRecipesInner + */ + recipe?: number | null; + /** + * + * @type {number} + * @memberof ShoppingListRecipesInner + */ + mealplan?: number | null; + /** + * + * @type {string} + * @memberof ShoppingListRecipesInner + */ + servings: string; + /** + * + * @type {string} + * @memberof ShoppingListRecipesInner + */ + readonly mealplanNote?: string; + /** + * + * @type {string} + * @memberof ShoppingListRecipesInner + */ + readonly mealplanFromDate?: string; + /** + * + * @type {string} + * @memberof ShoppingListRecipesInner + */ + readonly mealplanType?: string; +} + +/** + * Check if a given object implements the ShoppingListRecipesInner interface. + */ +export function instanceOfShoppingListRecipesInner(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "servings" in value; + + return isInstance; +} + +export function ShoppingListRecipesInnerFromJSON(json: any): ShoppingListRecipesInner { + return ShoppingListRecipesInnerFromJSONTyped(json, false); +} + +export function ShoppingListRecipesInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): ShoppingListRecipesInner { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'recipeName': !exists(json, 'recipe_name') ? undefined : json['recipe_name'], + 'name': !exists(json, 'name') ? undefined : json['name'], + 'recipe': !exists(json, 'recipe') ? undefined : json['recipe'], + 'mealplan': !exists(json, 'mealplan') ? undefined : json['mealplan'], + 'servings': json['servings'], + 'mealplanNote': !exists(json, 'mealplan_note') ? undefined : json['mealplan_note'], + 'mealplanFromDate': !exists(json, 'mealplan_from_date') ? undefined : json['mealplan_from_date'], + 'mealplanType': !exists(json, 'mealplan_type') ? undefined : json['mealplan_type'], + }; +} + +export function ShoppingListRecipesInnerToJSON(value?: ShoppingListRecipesInner | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'recipe': value.recipe, + 'mealplan': value.mealplan, + 'servings': value.servings, + }; +} + diff --git a/vue3/src/openapi/models/ShoppingListSupermarket.ts b/vue3/src/openapi/models/ShoppingListSupermarket.ts new file mode 100644 index 000000000..e7de683e8 --- /dev/null +++ b/vue3/src/openapi/models/ShoppingListSupermarket.ts @@ -0,0 +1,103 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { ShoppingListSupermarketCategoryToSupermarketInner } from './ShoppingListSupermarketCategoryToSupermarketInner'; +import { + ShoppingListSupermarketCategoryToSupermarketInnerFromJSON, + ShoppingListSupermarketCategoryToSupermarketInnerFromJSONTyped, + ShoppingListSupermarketCategoryToSupermarketInnerToJSON, +} from './ShoppingListSupermarketCategoryToSupermarketInner'; + +/** + * + * @export + * @interface ShoppingListSupermarket + */ +export interface ShoppingListSupermarket { + /** + * + * @type {number} + * @memberof ShoppingListSupermarket + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof ShoppingListSupermarket + */ + name: string; + /** + * + * @type {string} + * @memberof ShoppingListSupermarket + */ + description?: string | null; + /** + * + * @type {Array} + * @memberof ShoppingListSupermarket + */ + readonly categoryToSupermarket?: Array; + /** + * + * @type {string} + * @memberof ShoppingListSupermarket + */ + openDataSlug?: string | null; +} + +/** + * Check if a given object implements the ShoppingListSupermarket interface. + */ +export function instanceOfShoppingListSupermarket(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "name" in value; + + return isInstance; +} + +export function ShoppingListSupermarketFromJSON(json: any): ShoppingListSupermarket { + return ShoppingListSupermarketFromJSONTyped(json, false); +} + +export function ShoppingListSupermarketFromJSONTyped(json: any, ignoreDiscriminator: boolean): ShoppingListSupermarket { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': json['name'], + 'description': !exists(json, 'description') ? undefined : json['description'], + 'categoryToSupermarket': !exists(json, 'category_to_supermarket') ? undefined : ((json['category_to_supermarket'] as Array).map(ShoppingListSupermarketCategoryToSupermarketInnerFromJSON)), + 'openDataSlug': !exists(json, 'open_data_slug') ? undefined : json['open_data_slug'], + }; +} + +export function ShoppingListSupermarketToJSON(value?: ShoppingListSupermarket | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'name': value.name, + 'description': value.description, + 'open_data_slug': value.openDataSlug, + }; +} + diff --git a/vue3/src/openapi/models/ShoppingListSupermarketCategoryToSupermarketInner.ts b/vue3/src/openapi/models/ShoppingListSupermarketCategoryToSupermarketInner.ts new file mode 100644 index 000000000..40496445a --- /dev/null +++ b/vue3/src/openapi/models/ShoppingListSupermarketCategoryToSupermarketInner.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { ShoppingListSupermarketCategoryToSupermarketInnerCategory } from './ShoppingListSupermarketCategoryToSupermarketInnerCategory'; +import { + ShoppingListSupermarketCategoryToSupermarketInnerCategoryFromJSON, + ShoppingListSupermarketCategoryToSupermarketInnerCategoryFromJSONTyped, + ShoppingListSupermarketCategoryToSupermarketInnerCategoryToJSON, +} from './ShoppingListSupermarketCategoryToSupermarketInnerCategory'; + +/** + * + * @export + * @interface ShoppingListSupermarketCategoryToSupermarketInner + */ +export interface ShoppingListSupermarketCategoryToSupermarketInner { + /** + * + * @type {number} + * @memberof ShoppingListSupermarketCategoryToSupermarketInner + */ + readonly id?: number; + /** + * + * @type {ShoppingListSupermarketCategoryToSupermarketInnerCategory} + * @memberof ShoppingListSupermarketCategoryToSupermarketInner + */ + category: ShoppingListSupermarketCategoryToSupermarketInnerCategory; + /** + * + * @type {number} + * @memberof ShoppingListSupermarketCategoryToSupermarketInner + */ + supermarket: number; + /** + * + * @type {number} + * @memberof ShoppingListSupermarketCategoryToSupermarketInner + */ + order?: number; +} + +/** + * Check if a given object implements the ShoppingListSupermarketCategoryToSupermarketInner interface. + */ +export function instanceOfShoppingListSupermarketCategoryToSupermarketInner(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "category" in value; + isInstance = isInstance && "supermarket" in value; + + return isInstance; +} + +export function ShoppingListSupermarketCategoryToSupermarketInnerFromJSON(json: any): ShoppingListSupermarketCategoryToSupermarketInner { + return ShoppingListSupermarketCategoryToSupermarketInnerFromJSONTyped(json, false); +} + +export function ShoppingListSupermarketCategoryToSupermarketInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): ShoppingListSupermarketCategoryToSupermarketInner { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'category': ShoppingListSupermarketCategoryToSupermarketInnerCategoryFromJSON(json['category']), + 'supermarket': json['supermarket'], + 'order': !exists(json, 'order') ? undefined : json['order'], + }; +} + +export function ShoppingListSupermarketCategoryToSupermarketInnerToJSON(value?: ShoppingListSupermarketCategoryToSupermarketInner | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'category': ShoppingListSupermarketCategoryToSupermarketInnerCategoryToJSON(value.category), + 'supermarket': value.supermarket, + 'order': value.order, + }; +} + diff --git a/vue3/src/openapi/models/ShoppingListSupermarketCategoryToSupermarketInnerCategory.ts b/vue3/src/openapi/models/ShoppingListSupermarketCategoryToSupermarketInnerCategory.ts new file mode 100644 index 000000000..7712e575b --- /dev/null +++ b/vue3/src/openapi/models/ShoppingListSupermarketCategoryToSupermarketInnerCategory.ts @@ -0,0 +1,81 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface ShoppingListSupermarketCategoryToSupermarketInnerCategory + */ +export interface ShoppingListSupermarketCategoryToSupermarketInnerCategory { + /** + * + * @type {number} + * @memberof ShoppingListSupermarketCategoryToSupermarketInnerCategory + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof ShoppingListSupermarketCategoryToSupermarketInnerCategory + */ + name: string; + /** + * + * @type {string} + * @memberof ShoppingListSupermarketCategoryToSupermarketInnerCategory + */ + description?: string | null; +} + +/** + * Check if a given object implements the ShoppingListSupermarketCategoryToSupermarketInnerCategory interface. + */ +export function instanceOfShoppingListSupermarketCategoryToSupermarketInnerCategory(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "name" in value; + + return isInstance; +} + +export function ShoppingListSupermarketCategoryToSupermarketInnerCategoryFromJSON(json: any): ShoppingListSupermarketCategoryToSupermarketInnerCategory { + return ShoppingListSupermarketCategoryToSupermarketInnerCategoryFromJSONTyped(json, false); +} + +export function ShoppingListSupermarketCategoryToSupermarketInnerCategoryFromJSONTyped(json: any, ignoreDiscriminator: boolean): ShoppingListSupermarketCategoryToSupermarketInnerCategory { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': json['name'], + 'description': !exists(json, 'description') ? undefined : json['description'], + }; +} + +export function ShoppingListSupermarketCategoryToSupermarketInnerCategoryToJSON(value?: ShoppingListSupermarketCategoryToSupermarketInnerCategory | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'name': value.name, + 'description': value.description, + }; +} + diff --git a/vue3/src/openapi/models/Space.ts b/vue3/src/openapi/models/Space.ts new file mode 100644 index 000000000..3e3a52934 --- /dev/null +++ b/vue3/src/openapi/models/Space.ts @@ -0,0 +1,294 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { FoodInheritField } from './FoodInheritField'; +import { + FoodInheritFieldFromJSON, + FoodInheritFieldFromJSONTyped, + FoodInheritFieldToJSON, +} from './FoodInheritField'; +import type { SpaceNavTextColorEnum } from './SpaceNavTextColorEnum'; +import { + SpaceNavTextColorEnumFromJSON, + SpaceNavTextColorEnumFromJSONTyped, + SpaceNavTextColorEnumToJSON, +} from './SpaceNavTextColorEnum'; +import type { SpaceThemeEnum } from './SpaceThemeEnum'; +import { + SpaceThemeEnumFromJSON, + SpaceThemeEnumFromJSONTyped, + SpaceThemeEnumToJSON, +} from './SpaceThemeEnum'; +import type { UserFileView } from './UserFileView'; +import { + UserFileViewFromJSON, + UserFileViewFromJSONTyped, + UserFileViewToJSON, +} from './UserFileView'; + +/** + * Adds nested create feature + * @export + * @interface Space + */ +export interface Space { + /** + * + * @type {number} + * @memberof Space + */ + readonly id: number; + /** + * + * @type {string} + * @memberof Space + */ + name?: string; + /** + * + * @type {number} + * @memberof Space + */ + readonly createdBy: number | null; + /** + * + * @type {Date} + * @memberof Space + */ + readonly createdAt: Date; + /** + * + * @type {string} + * @memberof Space + */ + message?: string; + /** + * + * @type {number} + * @memberof Space + */ + readonly maxRecipes: number; + /** + * Maximum file storage for space in MB. 0 for unlimited, -1 to disable file upload. + * @type {number} + * @memberof Space + */ + readonly maxFileStorageMb: number; + /** + * + * @type {number} + * @memberof Space + */ + readonly maxUsers: number; + /** + * + * @type {boolean} + * @memberof Space + */ + readonly allowSharing: boolean; + /** + * + * @type {boolean} + * @memberof Space + */ + readonly demo: boolean; + /** + * + * @type {Array} + * @memberof Space + */ + foodInherit: Array; + /** + * + * @type {string} + * @memberof Space + */ + readonly userCount: string; + /** + * + * @type {string} + * @memberof Space + */ + readonly recipeCount: string; + /** + * + * @type {string} + * @memberof Space + */ + readonly fileSizeMb: string; + /** + * + * @type {UserFileView} + * @memberof Space + */ + image?: UserFileView; + /** + * + * @type {UserFileView} + * @memberof Space + */ + navLogo?: UserFileView; + /** + * + * @type {SpaceThemeEnum} + * @memberof Space + */ + spaceTheme?: SpaceThemeEnum; + /** + * + * @type {UserFileView} + * @memberof Space + */ + customSpaceTheme?: UserFileView; + /** + * + * @type {string} + * @memberof Space + */ + navBgColor?: string; + /** + * + * @type {SpaceNavTextColorEnum} + * @memberof Space + */ + navTextColor?: SpaceNavTextColorEnum; + /** + * + * @type {UserFileView} + * @memberof Space + */ + logoColor32?: UserFileView; + /** + * + * @type {UserFileView} + * @memberof Space + */ + logoColor128?: UserFileView; + /** + * + * @type {UserFileView} + * @memberof Space + */ + logoColor144?: UserFileView; + /** + * + * @type {UserFileView} + * @memberof Space + */ + logoColor180?: UserFileView; + /** + * + * @type {UserFileView} + * @memberof Space + */ + logoColor192?: UserFileView; + /** + * + * @type {UserFileView} + * @memberof Space + */ + logoColor512?: UserFileView; + /** + * + * @type {UserFileView} + * @memberof Space + */ + logoColorSvg?: UserFileView; +} + +/** + * Check if a given object implements the Space interface. + */ +export function instanceOfSpace(value: object): boolean { + if (!('id' in value)) return false; + if (!('createdBy' in value)) return false; + if (!('createdAt' in value)) return false; + if (!('maxRecipes' in value)) return false; + if (!('maxFileStorageMb' in value)) return false; + if (!('maxUsers' in value)) return false; + if (!('allowSharing' in value)) return false; + if (!('demo' in value)) return false; + if (!('foodInherit' in value)) return false; + if (!('userCount' in value)) return false; + if (!('recipeCount' in value)) return false; + if (!('fileSizeMb' in value)) return false; + return true; +} + +export function SpaceFromJSON(json: any): Space { + return SpaceFromJSONTyped(json, false); +} + +export function SpaceFromJSONTyped(json: any, ignoreDiscriminator: boolean): Space { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'] == null ? undefined : json['name'], + 'createdBy': json['created_by'], + 'createdAt': (new Date(json['created_at'])), + 'message': json['message'] == null ? undefined : json['message'], + 'maxRecipes': json['max_recipes'], + 'maxFileStorageMb': json['max_file_storage_mb'], + 'maxUsers': json['max_users'], + 'allowSharing': json['allow_sharing'], + 'demo': json['demo'], + 'foodInherit': ((json['food_inherit'] as Array).map(FoodInheritFieldFromJSON)), + 'userCount': json['user_count'], + 'recipeCount': json['recipe_count'], + 'fileSizeMb': json['file_size_mb'], + 'image': json['image'] == null ? undefined : UserFileViewFromJSON(json['image']), + 'navLogo': json['nav_logo'] == null ? undefined : UserFileViewFromJSON(json['nav_logo']), + 'spaceTheme': json['space_theme'] == null ? undefined : SpaceThemeEnumFromJSON(json['space_theme']), + 'customSpaceTheme': json['custom_space_theme'] == null ? undefined : UserFileViewFromJSON(json['custom_space_theme']), + 'navBgColor': json['nav_bg_color'] == null ? undefined : json['nav_bg_color'], + 'navTextColor': json['nav_text_color'] == null ? undefined : SpaceNavTextColorEnumFromJSON(json['nav_text_color']), + 'logoColor32': json['logo_color_32'] == null ? undefined : UserFileViewFromJSON(json['logo_color_32']), + 'logoColor128': json['logo_color_128'] == null ? undefined : UserFileViewFromJSON(json['logo_color_128']), + 'logoColor144': json['logo_color_144'] == null ? undefined : UserFileViewFromJSON(json['logo_color_144']), + 'logoColor180': json['logo_color_180'] == null ? undefined : UserFileViewFromJSON(json['logo_color_180']), + 'logoColor192': json['logo_color_192'] == null ? undefined : UserFileViewFromJSON(json['logo_color_192']), + 'logoColor512': json['logo_color_512'] == null ? undefined : UserFileViewFromJSON(json['logo_color_512']), + 'logoColorSvg': json['logo_color_svg'] == null ? undefined : UserFileViewFromJSON(json['logo_color_svg']), + }; +} + +export function SpaceToJSON(value?: Space | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'message': value['message'], + 'food_inherit': ((value['foodInherit'] as Array).map(FoodInheritFieldToJSON)), + 'image': UserFileViewToJSON(value['image']), + 'nav_logo': UserFileViewToJSON(value['navLogo']), + 'space_theme': SpaceThemeEnumToJSON(value['spaceTheme']), + 'custom_space_theme': UserFileViewToJSON(value['customSpaceTheme']), + 'nav_bg_color': value['navBgColor'], + 'nav_text_color': SpaceNavTextColorEnumToJSON(value['navTextColor']), + 'logo_color_32': UserFileViewToJSON(value['logoColor32']), + 'logo_color_128': UserFileViewToJSON(value['logoColor128']), + 'logo_color_144': UserFileViewToJSON(value['logoColor144']), + 'logo_color_180': UserFileViewToJSON(value['logoColor180']), + 'logo_color_192': UserFileViewToJSON(value['logoColor192']), + 'logo_color_512': UserFileViewToJSON(value['logoColor512']), + 'logo_color_svg': UserFileViewToJSON(value['logoColorSvg']), + }; +} + diff --git a/vue3/src/openapi/models/SpaceNavTextColorEnum.ts b/vue3/src/openapi/models/SpaceNavTextColorEnum.ts new file mode 100644 index 000000000..ea1a950b3 --- /dev/null +++ b/vue3/src/openapi/models/SpaceNavTextColorEnum.ts @@ -0,0 +1,41 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** + * * `BLANK` - ------- + * * `LIGHT` - Light + * * `DARK` - Dark + * @export + */ +export const SpaceNavTextColorEnum = { + Blank: 'BLANK', + Light: 'LIGHT', + Dark: 'DARK' +} as const; +export type SpaceNavTextColorEnum = typeof SpaceNavTextColorEnum[keyof typeof SpaceNavTextColorEnum]; + + +export function SpaceNavTextColorEnumFromJSON(json: any): SpaceNavTextColorEnum { + return SpaceNavTextColorEnumFromJSONTyped(json, false); +} + +export function SpaceNavTextColorEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): SpaceNavTextColorEnum { + return json as SpaceNavTextColorEnum; +} + +export function SpaceNavTextColorEnumToJSON(value?: SpaceNavTextColorEnum | null): any { + return value as any; +} + diff --git a/vue3/src/openapi/models/SpaceThemeEnum.ts b/vue3/src/openapi/models/SpaceThemeEnum.ts new file mode 100644 index 000000000..f8dde967e --- /dev/null +++ b/vue3/src/openapi/models/SpaceThemeEnum.ts @@ -0,0 +1,49 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** + * * `BLANK` - ------- + * * `TANDOOR` - Tandoor + * * `BOOTSTRAP` - Bootstrap + * * `DARKLY` - Darkly + * * `FLATLY` - Flatly + * * `SUPERHERO` - Superhero + * * `TANDOOR_DARK` - Tandoor Dark (INCOMPLETE) + * @export + */ +export const SpaceThemeEnum = { + Blank: 'BLANK', + Tandoor: 'TANDOOR', + Bootstrap: 'BOOTSTRAP', + Darkly: 'DARKLY', + Flatly: 'FLATLY', + Superhero: 'SUPERHERO', + TandoorDark: 'TANDOOR_DARK' +} as const; +export type SpaceThemeEnum = typeof SpaceThemeEnum[keyof typeof SpaceThemeEnum]; + + +export function SpaceThemeEnumFromJSON(json: any): SpaceThemeEnum { + return SpaceThemeEnumFromJSONTyped(json, false); +} + +export function SpaceThemeEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): SpaceThemeEnum { + return json as SpaceThemeEnum; +} + +export function SpaceThemeEnumToJSON(value?: SpaceThemeEnum | null): any { + return value as any; +} + diff --git a/vue3/src/openapi/models/Step.ts b/vue3/src/openapi/models/Step.ts new file mode 100644 index 000000000..dc220d91b --- /dev/null +++ b/vue3/src/openapi/models/Step.ts @@ -0,0 +1,170 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Ingredient } from './Ingredient'; +import { + IngredientFromJSON, + IngredientFromJSONTyped, + IngredientToJSON, +} from './Ingredient'; +import type { UserFileView } from './UserFileView'; +import { + UserFileViewFromJSON, + UserFileViewFromJSONTyped, + UserFileViewToJSON, +} from './UserFileView'; + +/** + * Adds nested create feature + * @export + * @interface Step + */ +export interface Step { + /** + * + * @type {number} + * @memberof Step + */ + readonly id: number; + /** + * + * @type {string} + * @memberof Step + */ + name?: string; + /** + * + * @type {string} + * @memberof Step + */ + instruction?: string; + /** + * + * @type {Array} + * @memberof Step + */ + ingredients: Array; + /** + * + * @type {string} + * @memberof Step + */ + readonly instructionsMarkdown: string; + /** + * + * @type {number} + * @memberof Step + */ + time?: number; + /** + * + * @type {number} + * @memberof Step + */ + order?: number; + /** + * + * @type {boolean} + * @memberof Step + */ + showAsHeader?: boolean; + /** + * + * @type {UserFileView} + * @memberof Step + */ + file?: UserFileView; + /** + * + * @type {number} + * @memberof Step + */ + stepRecipe?: number; + /** + * + * @type {string} + * @memberof Step + */ + readonly stepRecipeData: string; + /** + * + * @type {string} + * @memberof Step + */ + readonly numrecipe: string; + /** + * + * @type {boolean} + * @memberof Step + */ + showIngredientsTable?: boolean; +} + +/** + * Check if a given object implements the Step interface. + */ +export function instanceOfStep(value: object): boolean { + if (!('id' in value)) return false; + if (!('ingredients' in value)) return false; + if (!('instructionsMarkdown' in value)) return false; + if (!('stepRecipeData' in value)) return false; + if (!('numrecipe' in value)) return false; + return true; +} + +export function StepFromJSON(json: any): Step { + return StepFromJSONTyped(json, false); +} + +export function StepFromJSONTyped(json: any, ignoreDiscriminator: boolean): Step { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'] == null ? undefined : json['name'], + 'instruction': json['instruction'] == null ? undefined : json['instruction'], + 'ingredients': ((json['ingredients'] as Array).map(IngredientFromJSON)), + 'instructionsMarkdown': json['instructions_markdown'], + 'time': json['time'] == null ? undefined : json['time'], + 'order': json['order'] == null ? undefined : json['order'], + 'showAsHeader': json['show_as_header'] == null ? undefined : json['show_as_header'], + 'file': json['file'] == null ? undefined : UserFileViewFromJSON(json['file']), + 'stepRecipe': json['step_recipe'] == null ? undefined : json['step_recipe'], + 'stepRecipeData': json['step_recipe_data'], + 'numrecipe': json['numrecipe'], + 'showIngredientsTable': json['show_ingredients_table'] == null ? undefined : json['show_ingredients_table'], + }; +} + +export function StepToJSON(value?: Step | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'instruction': value['instruction'], + 'ingredients': ((value['ingredients'] as Array).map(IngredientToJSON)), + 'time': value['time'], + 'order': value['order'], + 'show_as_header': value['showAsHeader'], + 'file': UserFileViewToJSON(value['file']), + 'step_recipe': value['stepRecipe'], + 'show_ingredients_table': value['showIngredientsTable'], + }; +} + diff --git a/vue3/src/openapi/models/Storage.ts b/vue3/src/openapi/models/Storage.ts new file mode 100644 index 000000000..79cab54ed --- /dev/null +++ b/vue3/src/openapi/models/Storage.ts @@ -0,0 +1,116 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { MethodEnum } from './MethodEnum'; +import { + MethodEnumFromJSON, + MethodEnumFromJSONTyped, + MethodEnumToJSON, +} from './MethodEnum'; + +/** + * + * @export + * @interface Storage + */ +export interface Storage { + /** + * + * @type {number} + * @memberof Storage + */ + readonly id: number; + /** + * + * @type {string} + * @memberof Storage + */ + name: string; + /** + * + * @type {MethodEnum} + * @memberof Storage + */ + method?: MethodEnum; + /** + * + * @type {string} + * @memberof Storage + */ + username?: string; + /** + * + * @type {string} + * @memberof Storage + */ + password?: string; + /** + * + * @type {string} + * @memberof Storage + */ + token?: string; + /** + * + * @type {number} + * @memberof Storage + */ + readonly createdBy: number; +} + +/** + * Check if a given object implements the Storage interface. + */ +export function instanceOfStorage(value: object): boolean { + if (!('id' in value)) return false; + if (!('name' in value)) return false; + if (!('createdBy' in value)) return false; + return true; +} + +export function StorageFromJSON(json: any): Storage { + return StorageFromJSONTyped(json, false); +} + +export function StorageFromJSONTyped(json: any, ignoreDiscriminator: boolean): Storage { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'], + 'method': json['method'] == null ? undefined : MethodEnumFromJSON(json['method']), + 'username': json['username'] == null ? undefined : json['username'], + 'password': json['password'] == null ? undefined : json['password'], + 'token': json['token'] == null ? undefined : json['token'], + 'createdBy': json['created_by'], + }; +} + +export function StorageToJSON(value?: Storage | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'method': MethodEnumToJSON(value['method']), + 'username': value['username'], + 'password': value['password'], + 'token': value['token'], + }; +} + diff --git a/vue3/src/openapi/models/Supermarket.ts b/vue3/src/openapi/models/Supermarket.ts new file mode 100644 index 000000000..ffd645b35 --- /dev/null +++ b/vue3/src/openapi/models/Supermarket.ts @@ -0,0 +1,134 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { SupermarketCategoryRelation } from './SupermarketCategoryRelation'; +import { + SupermarketCategoryRelationFromJSON, + SupermarketCategoryRelationFromJSONTyped, + SupermarketCategoryRelationToJSON, +} from './SupermarketCategoryRelation'; + +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface Supermarket + */ +export interface Supermarket { + /** + * + * @type {number} + * @memberof Supermarket + */ + readonly id: number; + /** + * + * @type {string} + * @memberof Supermarket + */ + name: string; + /** + * + * @type {string} + * @memberof Supermarket + */ + description?: string; + /** + * + * @type {Array} + * @memberof Supermarket + */ + readonly categoryToSupermarket: Array; + /** + * + * @type {string} + * @memberof Supermarket + */ + openDataSlug?: string; +} + +/** + * Check if a given object implements the Supermarket interface. + */ +export function instanceOfSupermarket(value: object): boolean { + if (!('id' in value)) return false; + if (!('name' in value)) return false; + if (!('categoryToSupermarket' in value)) return false; + return true; +} + +export function SupermarketFromJSON(json: any): Supermarket { + return SupermarketFromJSONTyped(json, false); +} + +export function SupermarketFromJSONTyped(json: any, ignoreDiscriminator: boolean): Supermarket { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'], + 'description': json['description'] == null ? undefined : json['description'], + 'categoryToSupermarket': ((json['category_to_supermarket'] as Array).map(SupermarketCategoryRelationFromJSON)), + 'openDataSlug': json['open_data_slug'] == null ? undefined : json['open_data_slug'], + }; +} + +export function SupermarketToJSON(value?: Supermarket | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'description': value['description'], + 'open_data_slug': value['openDataSlug'], + }; +} + diff --git a/vue3/src/openapi/models/SupermarketCategory.ts b/vue3/src/openapi/models/SupermarketCategory.ts new file mode 100644 index 000000000..4f52afcf4 --- /dev/null +++ b/vue3/src/openapi/models/SupermarketCategory.ts @@ -0,0 +1,111 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface SupermarketCategory + */ +export interface SupermarketCategory { + /** + * + * @type {number} + * @memberof SupermarketCategory + */ + readonly id: number; + /** + * + * @type {string} + * @memberof SupermarketCategory + */ + name: string; + /** + * + * @type {string} + * @memberof SupermarketCategory + */ + description?: string; +} + +/** + * Check if a given object implements the SupermarketCategory interface. + */ +export function instanceOfSupermarketCategory(value: object): boolean { + if (!('id' in value)) return false; + if (!('name' in value)) return false; + return true; +} + +export function SupermarketCategoryFromJSON(json: any): SupermarketCategory { + return SupermarketCategoryFromJSONTyped(json, false); +} + +export function SupermarketCategoryFromJSONTyped(json: any, ignoreDiscriminator: boolean): SupermarketCategory { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'], + 'description': json['description'] == null ? undefined : json['description'], + }; +} + +export function SupermarketCategoryToJSON(value?: SupermarketCategory | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'description': value['description'], + }; +} + diff --git a/vue3/src/openapi/models/SupermarketCategoryRelation.ts b/vue3/src/openapi/models/SupermarketCategoryRelation.ts new file mode 100644 index 000000000..5d6fa22d3 --- /dev/null +++ b/vue3/src/openapi/models/SupermarketCategoryRelation.ts @@ -0,0 +1,93 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { SupermarketCategory } from './SupermarketCategory'; +import { + SupermarketCategoryFromJSON, + SupermarketCategoryFromJSONTyped, + SupermarketCategoryToJSON, +} from './SupermarketCategory'; + +/** + * Adds nested create feature + * @export + * @interface SupermarketCategoryRelation + */ +export interface SupermarketCategoryRelation { + /** + * + * @type {number} + * @memberof SupermarketCategoryRelation + */ + readonly id: number; + /** + * + * @type {SupermarketCategory} + * @memberof SupermarketCategoryRelation + */ + category: SupermarketCategory; + /** + * + * @type {number} + * @memberof SupermarketCategoryRelation + */ + supermarket: number; + /** + * + * @type {number} + * @memberof SupermarketCategoryRelation + */ + order?: number; +} + +/** + * Check if a given object implements the SupermarketCategoryRelation interface. + */ +export function instanceOfSupermarketCategoryRelation(value: object): boolean { + if (!('id' in value)) return false; + if (!('category' in value)) return false; + if (!('supermarket' in value)) return false; + return true; +} + +export function SupermarketCategoryRelationFromJSON(json: any): SupermarketCategoryRelation { + return SupermarketCategoryRelationFromJSONTyped(json, false); +} + +export function SupermarketCategoryRelationFromJSONTyped(json: any, ignoreDiscriminator: boolean): SupermarketCategoryRelation { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'category': SupermarketCategoryFromJSON(json['category']), + 'supermarket': json['supermarket'], + 'order': json['order'] == null ? undefined : json['order'], + }; +} + +export function SupermarketCategoryRelationToJSON(value?: SupermarketCategoryRelation | null): any { + if (value == null) { + return value; + } + return { + + 'category': SupermarketCategoryToJSON(value['category']), + 'supermarket': value['supermarket'], + 'order': value['order'], + }; +} + diff --git a/vue3/src/openapi/models/SupermarketCategoryToSupermarketInner.ts b/vue3/src/openapi/models/SupermarketCategoryToSupermarketInner.ts new file mode 100644 index 000000000..84bcc50b9 --- /dev/null +++ b/vue3/src/openapi/models/SupermarketCategoryToSupermarketInner.ts @@ -0,0 +1,97 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +import type { SupermarketCategoryToSupermarketInnerCategory } from './SupermarketCategoryToSupermarketInnerCategory'; +import { + SupermarketCategoryToSupermarketInnerCategoryFromJSON, + SupermarketCategoryToSupermarketInnerCategoryFromJSONTyped, + SupermarketCategoryToSupermarketInnerCategoryToJSON, +} from './SupermarketCategoryToSupermarketInnerCategory'; + +/** + * + * @export + * @interface SupermarketCategoryToSupermarketInner + */ +export interface SupermarketCategoryToSupermarketInner { + /** + * + * @type {number} + * @memberof SupermarketCategoryToSupermarketInner + */ + readonly id?: number; + /** + * + * @type {SupermarketCategoryToSupermarketInnerCategory} + * @memberof SupermarketCategoryToSupermarketInner + */ + category: SupermarketCategoryToSupermarketInnerCategory; + /** + * + * @type {number} + * @memberof SupermarketCategoryToSupermarketInner + */ + supermarket: number; + /** + * + * @type {number} + * @memberof SupermarketCategoryToSupermarketInner + */ + order?: number; +} + +/** + * Check if a given object implements the SupermarketCategoryToSupermarketInner interface. + */ +export function instanceOfSupermarketCategoryToSupermarketInner(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "category" in value; + isInstance = isInstance && "supermarket" in value; + + return isInstance; +} + +export function SupermarketCategoryToSupermarketInnerFromJSON(json: any): SupermarketCategoryToSupermarketInner { + return SupermarketCategoryToSupermarketInnerFromJSONTyped(json, false); +} + +export function SupermarketCategoryToSupermarketInnerFromJSONTyped(json: any, ignoreDiscriminator: boolean): SupermarketCategoryToSupermarketInner { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'category': SupermarketCategoryToSupermarketInnerCategoryFromJSON(json['category']), + 'supermarket': json['supermarket'], + 'order': !exists(json, 'order') ? undefined : json['order'], + }; +} + +export function SupermarketCategoryToSupermarketInnerToJSON(value?: SupermarketCategoryToSupermarketInner | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'category': SupermarketCategoryToSupermarketInnerCategoryToJSON(value.category), + 'supermarket': value.supermarket, + 'order': value.order, + }; +} + diff --git a/vue3/src/openapi/models/SupermarketCategoryToSupermarketInnerCategory.ts b/vue3/src/openapi/models/SupermarketCategoryToSupermarketInnerCategory.ts new file mode 100644 index 000000000..be4d70013 --- /dev/null +++ b/vue3/src/openapi/models/SupermarketCategoryToSupermarketInnerCategory.ts @@ -0,0 +1,81 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface SupermarketCategoryToSupermarketInnerCategory + */ +export interface SupermarketCategoryToSupermarketInnerCategory { + /** + * + * @type {number} + * @memberof SupermarketCategoryToSupermarketInnerCategory + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof SupermarketCategoryToSupermarketInnerCategory + */ + name: string; + /** + * + * @type {string} + * @memberof SupermarketCategoryToSupermarketInnerCategory + */ + description?: string | null; +} + +/** + * Check if a given object implements the SupermarketCategoryToSupermarketInnerCategory interface. + */ +export function instanceOfSupermarketCategoryToSupermarketInnerCategory(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "name" in value; + + return isInstance; +} + +export function SupermarketCategoryToSupermarketInnerCategoryFromJSON(json: any): SupermarketCategoryToSupermarketInnerCategory { + return SupermarketCategoryToSupermarketInnerCategoryFromJSONTyped(json, false); +} + +export function SupermarketCategoryToSupermarketInnerCategoryFromJSONTyped(json: any, ignoreDiscriminator: boolean): SupermarketCategoryToSupermarketInnerCategory { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': json['name'], + 'description': !exists(json, 'description') ? undefined : json['description'], + }; +} + +export function SupermarketCategoryToSupermarketInnerCategoryToJSON(value?: SupermarketCategoryToSupermarketInnerCategory | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'name': value.name, + 'description': value.description, + }; +} + diff --git a/vue3/src/openapi/models/Sync.ts b/vue3/src/openapi/models/Sync.ts new file mode 100644 index 000000000..cca9506b1 --- /dev/null +++ b/vue3/src/openapi/models/Sync.ts @@ -0,0 +1,109 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface Sync + */ +export interface Sync { + /** + * + * @type {number} + * @memberof Sync + */ + readonly id: number; + /** + * + * @type {number} + * @memberof Sync + */ + storage: number; + /** + * + * @type {string} + * @memberof Sync + */ + path?: string; + /** + * + * @type {boolean} + * @memberof Sync + */ + active?: boolean; + /** + * + * @type {Date} + * @memberof Sync + */ + lastChecked?: Date; + /** + * + * @type {Date} + * @memberof Sync + */ + readonly createdAt: Date; + /** + * + * @type {Date} + * @memberof Sync + */ + readonly updatedAt: Date; +} + +/** + * Check if a given object implements the Sync interface. + */ +export function instanceOfSync(value: object): boolean { + if (!('id' in value)) return false; + if (!('storage' in value)) return false; + if (!('createdAt' in value)) return false; + if (!('updatedAt' in value)) return false; + return true; +} + +export function SyncFromJSON(json: any): Sync { + return SyncFromJSONTyped(json, false); +} + +export function SyncFromJSONTyped(json: any, ignoreDiscriminator: boolean): Sync { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'storage': json['storage'], + 'path': json['path'] == null ? undefined : json['path'], + 'active': json['active'] == null ? undefined : json['active'], + 'lastChecked': json['last_checked'] == null ? undefined : (new Date(json['last_checked'])), + 'createdAt': (new Date(json['created_at'])), + 'updatedAt': (new Date(json['updated_at'])), + }; +} + +export function SyncToJSON(value?: Sync | null): any { + if (value == null) { + return value; + } + return { + + 'storage': value['storage'], + 'path': value['path'], + 'active': value['active'], + 'last_checked': value['lastChecked'] == null ? undefined : ((value['lastChecked'] as any).toISOString()), + }; +} + diff --git a/vue3/src/openapi/models/SyncLog.ts b/vue3/src/openapi/models/SyncLog.ts new file mode 100644 index 000000000..b31a3d5f7 --- /dev/null +++ b/vue3/src/openapi/models/SyncLog.ts @@ -0,0 +1,94 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface SyncLog + */ +export interface SyncLog { + /** + * + * @type {number} + * @memberof SyncLog + */ + readonly id: number; + /** + * + * @type {number} + * @memberof SyncLog + */ + sync: number; + /** + * + * @type {string} + * @memberof SyncLog + */ + status: string; + /** + * + * @type {string} + * @memberof SyncLog + */ + msg?: string; + /** + * + * @type {Date} + * @memberof SyncLog + */ + readonly createdAt: Date; +} + +/** + * Check if a given object implements the SyncLog interface. + */ +export function instanceOfSyncLog(value: object): boolean { + if (!('id' in value)) return false; + if (!('sync' in value)) return false; + if (!('status' in value)) return false; + if (!('createdAt' in value)) return false; + return true; +} + +export function SyncLogFromJSON(json: any): SyncLog { + return SyncLogFromJSONTyped(json, false); +} + +export function SyncLogFromJSONTyped(json: any, ignoreDiscriminator: boolean): SyncLog { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'sync': json['sync'], + 'status': json['status'], + 'msg': json['msg'] == null ? undefined : json['msg'], + 'createdAt': (new Date(json['created_at'])), + }; +} + +export function SyncLogToJSON(value?: SyncLog | null): any { + if (value == null) { + return value; + } + return { + + 'sync': value['sync'], + 'status': value['status'], + 'msg': value['msg'], + }; +} + diff --git a/vue3/src/openapi/models/ThemeEnum.ts b/vue3/src/openapi/models/ThemeEnum.ts new file mode 100644 index 000000000..f9c343f3f --- /dev/null +++ b/vue3/src/openapi/models/ThemeEnum.ts @@ -0,0 +1,47 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** + * * `TANDOOR` - Tandoor + * * `BOOTSTRAP` - Bootstrap + * * `DARKLY` - Darkly + * * `FLATLY` - Flatly + * * `SUPERHERO` - Superhero + * * `TANDOOR_DARK` - Tandoor Dark (INCOMPLETE) + * @export + */ +export const ThemeEnum = { + Tandoor: 'TANDOOR', + Bootstrap: 'BOOTSTRAP', + Darkly: 'DARKLY', + Flatly: 'FLATLY', + Superhero: 'SUPERHERO', + TandoorDark: 'TANDOOR_DARK' +} as const; +export type ThemeEnum = typeof ThemeEnum[keyof typeof ThemeEnum]; + + +export function ThemeEnumFromJSON(json: any): ThemeEnum { + return ThemeEnumFromJSONTyped(json, false); +} + +export function ThemeEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): ThemeEnum { + return json as ThemeEnum; +} + +export function ThemeEnumToJSON(value?: ThemeEnum | null): any { + return value as any; +} + diff --git a/vue3/src/openapi/models/TypeEnum.ts b/vue3/src/openapi/models/TypeEnum.ts new file mode 100644 index 000000000..858318ba5 --- /dev/null +++ b/vue3/src/openapi/models/TypeEnum.ts @@ -0,0 +1,55 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** + * * `FOOD_ALIAS` - Food Alias + * * `UNIT_ALIAS` - Unit Alias + * * `KEYWORD_ALIAS` - Keyword Alias + * * `DESCRIPTION_REPLACE` - Description Replace + * * `INSTRUCTION_REPLACE` - Instruction Replace + * * `NEVER_UNIT` - Never Unit + * * `TRANSPOSE_WORDS` - Transpose Words + * * `FOOD_REPLACE` - Food Replace + * * `UNIT_REPLACE` - Unit Replace + * * `NAME_REPLACE` - Name Replace + * @export + */ +export const TypeEnum = { + FoodAlias: 'FOOD_ALIAS', + UnitAlias: 'UNIT_ALIAS', + KeywordAlias: 'KEYWORD_ALIAS', + DescriptionReplace: 'DESCRIPTION_REPLACE', + InstructionReplace: 'INSTRUCTION_REPLACE', + NeverUnit: 'NEVER_UNIT', + TransposeWords: 'TRANSPOSE_WORDS', + FoodReplace: 'FOOD_REPLACE', + UnitReplace: 'UNIT_REPLACE', + NameReplace: 'NAME_REPLACE' +} as const; +export type TypeEnum = typeof TypeEnum[keyof typeof TypeEnum]; + + +export function TypeEnumFromJSON(json: any): TypeEnum { + return TypeEnumFromJSONTyped(json, false); +} + +export function TypeEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): TypeEnum { + return json as TypeEnum; +} + +export function TypeEnumToJSON(value?: TypeEnum | null): any { + return value as any; +} + diff --git a/vue3/src/openapi/models/Unit.ts b/vue3/src/openapi/models/Unit.ts new file mode 100644 index 000000000..b402af9df --- /dev/null +++ b/vue3/src/openapi/models/Unit.ts @@ -0,0 +1,135 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * Moves `UniqueValidator`'s from the validation stage to the save stage. + * It solves the problem with nested validation for unique fields on update. + * + * If you want more details, you can read related issues and articles: + * https://github.com/beda-software/drf-writable-nested/issues/1 + * http://www.django-rest-framework.org/api-guide/validators/#updating-nested-serializers + * + * Example of usage: + * ``` + * class Child(models.Model): + * field = models.CharField(unique=True) + * + * + * class Parent(models.Model): + * child = models.ForeignKey('Child') + * + * + * class ChildSerializer(UniqueFieldsMixin, serializers.ModelSerializer): + * class Meta: + * model = Child + * + * + * class ParentSerializer(NestedUpdateMixin, serializers.ModelSerializer): + * child = ChildSerializer() + * + * class Meta: + * model = Parent + * ``` + * + * Note: `UniqueFieldsMixin` must be applied only on the serializer + * which has unique fields. + * + * Note: When you are using both mixins + * (`UniqueFieldsMixin` and `NestedCreateMixin` or `NestedUpdateMixin`) + * you should put `UniqueFieldsMixin` ahead. + * @export + * @interface Unit + */ +export interface Unit { + /** + * + * @type {number} + * @memberof Unit + */ + readonly id: number; + /** + * + * @type {string} + * @memberof Unit + */ + name: string; + /** + * + * @type {string} + * @memberof Unit + */ + pluralName?: string; + /** + * + * @type {string} + * @memberof Unit + */ + description?: string; + /** + * + * @type {string} + * @memberof Unit + */ + baseUnit?: string; + /** + * + * @type {string} + * @memberof Unit + */ + openDataSlug?: string; +} + +/** + * Check if a given object implements the Unit interface. + */ +export function instanceOfUnit(value: object): boolean { + if (!('id' in value)) return false; + if (!('name' in value)) return false; + return true; +} + +export function UnitFromJSON(json: any): Unit { + return UnitFromJSONTyped(json, false); +} + +export function UnitFromJSONTyped(json: any, ignoreDiscriminator: boolean): Unit { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'], + 'pluralName': json['plural_name'] == null ? undefined : json['plural_name'], + 'description': json['description'] == null ? undefined : json['description'], + 'baseUnit': json['base_unit'] == null ? undefined : json['base_unit'], + 'openDataSlug': json['open_data_slug'] == null ? undefined : json['open_data_slug'], + }; +} + +export function UnitToJSON(value?: Unit | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'plural_name': value['pluralName'], + 'description': value['description'], + 'base_unit': value['baseUnit'], + 'open_data_slug': value['openDataSlug'], + }; +} + diff --git a/vue3/src/openapi/models/UnitConversion.ts b/vue3/src/openapi/models/UnitConversion.ts new file mode 100644 index 000000000..c2e369462 --- /dev/null +++ b/vue3/src/openapi/models/UnitConversion.ts @@ -0,0 +1,133 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Food } from './Food'; +import { + FoodFromJSON, + FoodFromJSONTyped, + FoodToJSON, +} from './Food'; +import type { Unit } from './Unit'; +import { + UnitFromJSON, + UnitFromJSONTyped, + UnitToJSON, +} from './Unit'; + +/** + * Adds nested create feature + * @export + * @interface UnitConversion + */ +export interface UnitConversion { + /** + * + * @type {number} + * @memberof UnitConversion + */ + readonly id: number; + /** + * + * @type {string} + * @memberof UnitConversion + */ + readonly name: string; + /** + * + * @type {string} + * @memberof UnitConversion + */ + baseAmount: string; + /** + * + * @type {Unit} + * @memberof UnitConversion + */ + baseUnit: Unit; + /** + * + * @type {string} + * @memberof UnitConversion + */ + convertedAmount: string; + /** + * + * @type {Unit} + * @memberof UnitConversion + */ + convertedUnit: Unit; + /** + * + * @type {Food} + * @memberof UnitConversion + */ + food?: Food; + /** + * + * @type {string} + * @memberof UnitConversion + */ + openDataSlug?: string; +} + +/** + * Check if a given object implements the UnitConversion interface. + */ +export function instanceOfUnitConversion(value: object): boolean { + if (!('id' in value)) return false; + if (!('name' in value)) return false; + if (!('baseAmount' in value)) return false; + if (!('baseUnit' in value)) return false; + if (!('convertedAmount' in value)) return false; + if (!('convertedUnit' in value)) return false; + return true; +} + +export function UnitConversionFromJSON(json: any): UnitConversion { + return UnitConversionFromJSONTyped(json, false); +} + +export function UnitConversionFromJSONTyped(json: any, ignoreDiscriminator: boolean): UnitConversion { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'], + 'baseAmount': json['base_amount'], + 'baseUnit': UnitFromJSON(json['base_unit']), + 'convertedAmount': json['converted_amount'], + 'convertedUnit': UnitFromJSON(json['converted_unit']), + 'food': json['food'] == null ? undefined : FoodFromJSON(json['food']), + 'openDataSlug': json['open_data_slug'] == null ? undefined : json['open_data_slug'], + }; +} + +export function UnitConversionToJSON(value?: UnitConversion | null): any { + if (value == null) { + return value; + } + return { + + 'base_amount': value['baseAmount'], + 'base_unit': UnitToJSON(value['baseUnit']), + 'converted_amount': value['convertedAmount'], + 'converted_unit': UnitToJSON(value['convertedUnit']), + 'food': FoodToJSON(value['food']), + 'open_data_slug': value['openDataSlug'], + }; +} + diff --git a/vue3/src/openapi/models/UnitConversionBaseUnit.ts b/vue3/src/openapi/models/UnitConversionBaseUnit.ts new file mode 100644 index 000000000..a4f6e1b7d --- /dev/null +++ b/vue3/src/openapi/models/UnitConversionBaseUnit.ts @@ -0,0 +1,105 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { exists, mapValues } from '../runtime'; +/** + * + * @export + * @interface UnitConversionBaseUnit + */ +export interface UnitConversionBaseUnit { + /** + * + * @type {number} + * @memberof UnitConversionBaseUnit + */ + readonly id?: number; + /** + * + * @type {string} + * @memberof UnitConversionBaseUnit + */ + name: string; + /** + * + * @type {string} + * @memberof UnitConversionBaseUnit + */ + pluralName?: string | null; + /** + * + * @type {string} + * @memberof UnitConversionBaseUnit + */ + description?: string | null; + /** + * + * @type {string} + * @memberof UnitConversionBaseUnit + */ + baseUnit?: string | null; + /** + * + * @type {string} + * @memberof UnitConversionBaseUnit + */ + openDataSlug?: string | null; +} + +/** + * Check if a given object implements the UnitConversionBaseUnit interface. + */ +export function instanceOfUnitConversionBaseUnit(value: object): boolean { + let isInstance = true; + isInstance = isInstance && "name" in value; + + return isInstance; +} + +export function UnitConversionBaseUnitFromJSON(json: any): UnitConversionBaseUnit { + return UnitConversionBaseUnitFromJSONTyped(json, false); +} + +export function UnitConversionBaseUnitFromJSONTyped(json: any, ignoreDiscriminator: boolean): UnitConversionBaseUnit { + if ((json === undefined) || (json === null)) { + return json; + } + return { + + 'id': !exists(json, 'id') ? undefined : json['id'], + 'name': json['name'], + 'pluralName': !exists(json, 'plural_name') ? undefined : json['plural_name'], + 'description': !exists(json, 'description') ? undefined : json['description'], + 'baseUnit': !exists(json, 'base_unit') ? undefined : json['base_unit'], + 'openDataSlug': !exists(json, 'open_data_slug') ? undefined : json['open_data_slug'], + }; +} + +export function UnitConversionBaseUnitToJSON(value?: UnitConversionBaseUnit | null): any { + if (value === undefined) { + return undefined; + } + if (value === null) { + return null; + } + return { + + 'name': value.name, + 'plural_name': value.pluralName, + 'description': value.description, + 'base_unit': value.baseUnit, + 'open_data_slug': value.openDataSlug, + }; +} + diff --git a/vue3/src/openapi/models/User.ts b/vue3/src/openapi/models/User.ts new file mode 100644 index 000000000..1929b4e64 --- /dev/null +++ b/vue3/src/openapi/models/User.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * Adds nested create feature + * @export + * @interface User + */ +export interface User { + /** + * + * @type {number} + * @memberof User + */ + readonly id: number; + /** + * Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only. + * @type {string} + * @memberof User + */ + readonly username: string; + /** + * + * @type {string} + * @memberof User + */ + firstName?: string; + /** + * + * @type {string} + * @memberof User + */ + lastName?: string; + /** + * + * @type {string} + * @memberof User + */ + readonly displayName: string; +} + +/** + * Check if a given object implements the User interface. + */ +export function instanceOfUser(value: object): boolean { + if (!('id' in value)) return false; + if (!('username' in value)) return false; + if (!('displayName' in value)) return false; + return true; +} + +export function UserFromJSON(json: any): User { + return UserFromJSONTyped(json, false); +} + +export function UserFromJSONTyped(json: any, ignoreDiscriminator: boolean): User { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'username': json['username'], + 'firstName': json['first_name'] == null ? undefined : json['first_name'], + 'lastName': json['last_name'] == null ? undefined : json['last_name'], + 'displayName': json['display_name'], + }; +} + +export function UserToJSON(value?: User | null): any { + if (value == null) { + return value; + } + return { + + 'first_name': value['firstName'], + 'last_name': value['lastName'], + }; +} + diff --git a/vue3/src/openapi/models/UserFile.ts b/vue3/src/openapi/models/UserFile.ts new file mode 100644 index 000000000..5923fb477 --- /dev/null +++ b/vue3/src/openapi/models/UserFile.ts @@ -0,0 +1,102 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface UserFile + */ +export interface UserFile { + /** + * + * @type {number} + * @memberof UserFile + */ + readonly id: number; + /** + * + * @type {string} + * @memberof UserFile + */ + name: string; + /** + * + * @type {string} + * @memberof UserFile + */ + file: string; + /** + * + * @type {string} + * @memberof UserFile + */ + readonly fileDownload: string; + /** + * + * @type {string} + * @memberof UserFile + */ + readonly preview: string; + /** + * + * @type {number} + * @memberof UserFile + */ + readonly fileSizeKb: number; +} + +/** + * Check if a given object implements the UserFile interface. + */ +export function instanceOfUserFile(value: object): boolean { + if (!('id' in value)) return false; + if (!('name' in value)) return false; + if (!('file' in value)) return false; + if (!('fileDownload' in value)) return false; + if (!('preview' in value)) return false; + if (!('fileSizeKb' in value)) return false; + return true; +} + +export function UserFileFromJSON(json: any): UserFile { + return UserFileFromJSONTyped(json, false); +} + +export function UserFileFromJSONTyped(json: any, ignoreDiscriminator: boolean): UserFile { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'], + 'file': json['file'], + 'fileDownload': json['file_download'], + 'preview': json['preview'], + 'fileSizeKb': json['file_size_kb'], + }; +} + +export function UserFileToJSON(value?: UserFile | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + 'file': value['file'], + }; +} + diff --git a/vue3/src/openapi/models/UserFileView.ts b/vue3/src/openapi/models/UserFileView.ts new file mode 100644 index 000000000..530a8e763 --- /dev/null +++ b/vue3/src/openapi/models/UserFileView.ts @@ -0,0 +1,85 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface UserFileView + */ +export interface UserFileView { + /** + * + * @type {number} + * @memberof UserFileView + */ + readonly id: number; + /** + * + * @type {string} + * @memberof UserFileView + */ + name: string; + /** + * + * @type {string} + * @memberof UserFileView + */ + readonly fileDownload: string; + /** + * + * @type {string} + * @memberof UserFileView + */ + readonly preview: string; +} + +/** + * Check if a given object implements the UserFileView interface. + */ +export function instanceOfUserFileView(value: object): boolean { + if (!('id' in value)) return false; + if (!('name' in value)) return false; + if (!('fileDownload' in value)) return false; + if (!('preview' in value)) return false; + return true; +} + +export function UserFileViewFromJSON(json: any): UserFileView { + return UserFileViewFromJSONTyped(json, false); +} + +export function UserFileViewFromJSONTyped(json: any, ignoreDiscriminator: boolean): UserFileView { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'name': json['name'], + 'fileDownload': json['file_download'], + 'preview': json['preview'], + }; +} + +export function UserFileViewToJSON(value?: UserFileView | null): any { + if (value == null) { + return value; + } + return { + + 'name': value['name'], + }; +} + diff --git a/vue3/src/openapi/models/UserPreference.ts b/vue3/src/openapi/models/UserPreference.ts new file mode 100644 index 000000000..41fae8290 --- /dev/null +++ b/vue3/src/openapi/models/UserPreference.ts @@ -0,0 +1,316 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { DefaultPageEnum } from './DefaultPageEnum'; +import { + DefaultPageEnumFromJSON, + DefaultPageEnumFromJSONTyped, + DefaultPageEnumToJSON, +} from './DefaultPageEnum'; +import type { ThemeEnum } from './ThemeEnum'; +import { + ThemeEnumFromJSON, + ThemeEnumFromJSONTyped, + ThemeEnumToJSON, +} from './ThemeEnum'; +import type { User } from './User'; +import { + UserFromJSON, + UserFromJSONTyped, + UserToJSON, +} from './User'; +import type { UserFileView } from './UserFileView'; +import { + UserFileViewFromJSON, + UserFileViewFromJSONTyped, + UserFileViewToJSON, +} from './UserFileView'; +import type { UserPreferenceNavTextColorEnum } from './UserPreferenceNavTextColorEnum'; +import { + UserPreferenceNavTextColorEnumFromJSON, + UserPreferenceNavTextColorEnumFromJSONTyped, + UserPreferenceNavTextColorEnumToJSON, +} from './UserPreferenceNavTextColorEnum'; + +/** + * Adds nested create feature + * @export + * @interface UserPreference + */ +export interface UserPreference { + /** + * + * @type {number} + * @memberof UserPreference + */ + user: number; + /** + * + * @type {UserFileView} + * @memberof UserPreference + */ + image?: UserFileView; + /** + * + * @type {ThemeEnum} + * @memberof UserPreference + */ + theme?: ThemeEnum; + /** + * + * @type {string} + * @memberof UserPreference + */ + navBgColor?: string; + /** + * + * @type {UserPreferenceNavTextColorEnum} + * @memberof UserPreference + */ + navTextColor?: UserPreferenceNavTextColorEnum; + /** + * + * @type {boolean} + * @memberof UserPreference + */ + navShowLogo?: boolean; + /** + * + * @type {string} + * @memberof UserPreference + */ + defaultUnit?: string; + /** + * + * @type {DefaultPageEnum} + * @memberof UserPreference + */ + defaultPage?: DefaultPageEnum; + /** + * + * @type {boolean} + * @memberof UserPreference + */ + useFractions?: boolean; + /** + * + * @type {boolean} + * @memberof UserPreference + */ + useKj?: boolean; + /** + * + * @type {Array} + * @memberof UserPreference + */ + planShare?: Array; + /** + * + * @type {boolean} + * @memberof UserPreference + */ + navSticky?: boolean; + /** + * + * @type {number} + * @memberof UserPreference + */ + ingredientDecimals?: number; + /** + * + * @type {boolean} + * @memberof UserPreference + */ + comments?: boolean; + /** + * + * @type {number} + * @memberof UserPreference + */ + shoppingAutoSync?: number; + /** + * + * @type {boolean} + * @memberof UserPreference + */ + mealplanAutoaddShopping?: boolean; + /** + * + * @type {string} + * @memberof UserPreference + */ + readonly foodInheritDefault: string; + /** + * + * @type {number} + * @memberof UserPreference + */ + defaultDelay?: number; + /** + * + * @type {boolean} + * @memberof UserPreference + */ + mealplanAutoincludeRelated?: boolean; + /** + * + * @type {boolean} + * @memberof UserPreference + */ + mealplanAutoexcludeOnhand?: boolean; + /** + * + * @type {Array} + * @memberof UserPreference + */ + shoppingShare?: Array; + /** + * + * @type {number} + * @memberof UserPreference + */ + shoppingRecentDays?: number; + /** + * + * @type {string} + * @memberof UserPreference + */ + csvDelim?: string; + /** + * + * @type {string} + * @memberof UserPreference + */ + csvPrefix?: string; + /** + * + * @type {boolean} + * @memberof UserPreference + */ + filterToSupermarket?: boolean; + /** + * + * @type {boolean} + * @memberof UserPreference + */ + shoppingAddOnhand?: boolean; + /** + * + * @type {boolean} + * @memberof UserPreference + */ + leftHanded?: boolean; + /** + * + * @type {boolean} + * @memberof UserPreference + */ + showStepIngredients?: boolean; + /** + * + * @type {string} + * @memberof UserPreference + */ + readonly foodChildrenExist: string; +} + +/** + * Check if a given object implements the UserPreference interface. + */ +export function instanceOfUserPreference(value: object): boolean { + if (!('user' in value)) return false; + if (!('foodInheritDefault' in value)) return false; + if (!('foodChildrenExist' in value)) return false; + return true; +} + +export function UserPreferenceFromJSON(json: any): UserPreference { + return UserPreferenceFromJSONTyped(json, false); +} + +export function UserPreferenceFromJSONTyped(json: any, ignoreDiscriminator: boolean): UserPreference { + if (json == null) { + return json; + } + return { + + 'user': json['user'], + 'image': json['image'] == null ? undefined : UserFileViewFromJSON(json['image']), + 'theme': json['theme'] == null ? undefined : ThemeEnumFromJSON(json['theme']), + 'navBgColor': json['nav_bg_color'] == null ? undefined : json['nav_bg_color'], + 'navTextColor': json['nav_text_color'] == null ? undefined : UserPreferenceNavTextColorEnumFromJSON(json['nav_text_color']), + 'navShowLogo': json['nav_show_logo'] == null ? undefined : json['nav_show_logo'], + 'defaultUnit': json['default_unit'] == null ? undefined : json['default_unit'], + 'defaultPage': json['default_page'] == null ? undefined : DefaultPageEnumFromJSON(json['default_page']), + 'useFractions': json['use_fractions'] == null ? undefined : json['use_fractions'], + 'useKj': json['use_kj'] == null ? undefined : json['use_kj'], + 'planShare': json['plan_share'] == null ? undefined : ((json['plan_share'] as Array).map(UserFromJSON)), + 'navSticky': json['nav_sticky'] == null ? undefined : json['nav_sticky'], + 'ingredientDecimals': json['ingredient_decimals'] == null ? undefined : json['ingredient_decimals'], + 'comments': json['comments'] == null ? undefined : json['comments'], + 'shoppingAutoSync': json['shopping_auto_sync'] == null ? undefined : json['shopping_auto_sync'], + 'mealplanAutoaddShopping': json['mealplan_autoadd_shopping'] == null ? undefined : json['mealplan_autoadd_shopping'], + 'foodInheritDefault': json['food_inherit_default'], + 'defaultDelay': json['default_delay'] == null ? undefined : json['default_delay'], + 'mealplanAutoincludeRelated': json['mealplan_autoinclude_related'] == null ? undefined : json['mealplan_autoinclude_related'], + 'mealplanAutoexcludeOnhand': json['mealplan_autoexclude_onhand'] == null ? undefined : json['mealplan_autoexclude_onhand'], + 'shoppingShare': json['shopping_share'] == null ? undefined : ((json['shopping_share'] as Array).map(UserFromJSON)), + 'shoppingRecentDays': json['shopping_recent_days'] == null ? undefined : json['shopping_recent_days'], + 'csvDelim': json['csv_delim'] == null ? undefined : json['csv_delim'], + 'csvPrefix': json['csv_prefix'] == null ? undefined : json['csv_prefix'], + 'filterToSupermarket': json['filter_to_supermarket'] == null ? undefined : json['filter_to_supermarket'], + 'shoppingAddOnhand': json['shopping_add_onhand'] == null ? undefined : json['shopping_add_onhand'], + 'leftHanded': json['left_handed'] == null ? undefined : json['left_handed'], + 'showStepIngredients': json['show_step_ingredients'] == null ? undefined : json['show_step_ingredients'], + 'foodChildrenExist': json['food_children_exist'], + }; +} + +export function UserPreferenceToJSON(value?: UserPreference | null): any { + if (value == null) { + return value; + } + return { + + 'user': value['user'], + 'image': UserFileViewToJSON(value['image']), + 'theme': ThemeEnumToJSON(value['theme']), + 'nav_bg_color': value['navBgColor'], + 'nav_text_color': UserPreferenceNavTextColorEnumToJSON(value['navTextColor']), + 'nav_show_logo': value['navShowLogo'], + 'default_unit': value['defaultUnit'], + 'default_page': DefaultPageEnumToJSON(value['defaultPage']), + 'use_fractions': value['useFractions'], + 'use_kj': value['useKj'], + 'plan_share': value['planShare'] == null ? undefined : ((value['planShare'] as Array).map(UserToJSON)), + 'nav_sticky': value['navSticky'], + 'ingredient_decimals': value['ingredientDecimals'], + 'comments': value['comments'], + 'shopping_auto_sync': value['shoppingAutoSync'], + 'mealplan_autoadd_shopping': value['mealplanAutoaddShopping'], + 'default_delay': value['defaultDelay'], + 'mealplan_autoinclude_related': value['mealplanAutoincludeRelated'], + 'mealplan_autoexclude_onhand': value['mealplanAutoexcludeOnhand'], + 'shopping_share': value['shoppingShare'] == null ? undefined : ((value['shoppingShare'] as Array).map(UserToJSON)), + 'shopping_recent_days': value['shoppingRecentDays'], + 'csv_delim': value['csvDelim'], + 'csv_prefix': value['csvPrefix'], + 'filter_to_supermarket': value['filterToSupermarket'], + 'shopping_add_onhand': value['shoppingAddOnhand'], + 'left_handed': value['leftHanded'], + 'show_step_ingredients': value['showStepIngredients'], + }; +} + diff --git a/vue3/src/openapi/models/UserPreferenceNavTextColorEnum.ts b/vue3/src/openapi/models/UserPreferenceNavTextColorEnum.ts new file mode 100644 index 000000000..b86aaf3b1 --- /dev/null +++ b/vue3/src/openapi/models/UserPreferenceNavTextColorEnum.ts @@ -0,0 +1,39 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** + * * `LIGHT` - Light + * * `DARK` - Dark + * @export + */ +export const UserPreferenceNavTextColorEnum = { + Light: 'LIGHT', + Dark: 'DARK' +} as const; +export type UserPreferenceNavTextColorEnum = typeof UserPreferenceNavTextColorEnum[keyof typeof UserPreferenceNavTextColorEnum]; + + +export function UserPreferenceNavTextColorEnumFromJSON(json: any): UserPreferenceNavTextColorEnum { + return UserPreferenceNavTextColorEnumFromJSONTyped(json, false); +} + +export function UserPreferenceNavTextColorEnumFromJSONTyped(json: any, ignoreDiscriminator: boolean): UserPreferenceNavTextColorEnum { + return json as UserPreferenceNavTextColorEnum; +} + +export function UserPreferenceNavTextColorEnumToJSON(value?: UserPreferenceNavTextColorEnum | null): any { + return value as any; +} + diff --git a/vue3/src/openapi/models/UserSpace.ts b/vue3/src/openapi/models/UserSpace.ts new file mode 100644 index 000000000..b6c627c8d --- /dev/null +++ b/vue3/src/openapi/models/UserSpace.ts @@ -0,0 +1,138 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Group } from './Group'; +import { + GroupFromJSON, + GroupFromJSONTyped, + GroupToJSON, +} from './Group'; +import type { User } from './User'; +import { + UserFromJSON, + UserFromJSONTyped, + UserToJSON, +} from './User'; + +/** + * Adds nested create feature + * @export + * @interface UserSpace + */ +export interface UserSpace { + /** + * + * @type {number} + * @memberof UserSpace + */ + readonly id: number; + /** + * + * @type {User} + * @memberof UserSpace + */ + readonly user: User; + /** + * + * @type {number} + * @memberof UserSpace + */ + readonly space: number; + /** + * + * @type {Array} + * @memberof UserSpace + */ + groups: Array; + /** + * + * @type {boolean} + * @memberof UserSpace + */ + active?: boolean; + /** + * + * @type {string} + * @memberof UserSpace + */ + internalNote?: string; + /** + * + * @type {number} + * @memberof UserSpace + */ + readonly inviteLink: number | null; + /** + * + * @type {Date} + * @memberof UserSpace + */ + readonly createdAt: Date; + /** + * + * @type {Date} + * @memberof UserSpace + */ + readonly updatedAt: Date; +} + +/** + * Check if a given object implements the UserSpace interface. + */ +export function instanceOfUserSpace(value: object): boolean { + if (!('id' in value)) return false; + if (!('user' in value)) return false; + if (!('space' in value)) return false; + if (!('groups' in value)) return false; + if (!('inviteLink' in value)) return false; + if (!('createdAt' in value)) return false; + if (!('updatedAt' in value)) return false; + return true; +} + +export function UserSpaceFromJSON(json: any): UserSpace { + return UserSpaceFromJSONTyped(json, false); +} + +export function UserSpaceFromJSONTyped(json: any, ignoreDiscriminator: boolean): UserSpace { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'user': UserFromJSON(json['user']), + 'space': json['space'], + 'groups': ((json['groups'] as Array).map(GroupFromJSON)), + 'active': json['active'] == null ? undefined : json['active'], + 'internalNote': json['internal_note'] == null ? undefined : json['internal_note'], + 'inviteLink': json['invite_link'], + 'createdAt': (new Date(json['created_at'])), + 'updatedAt': (new Date(json['updated_at'])), + }; +} + +export function UserSpaceToJSON(value?: UserSpace | null): any { + if (value == null) { + return value; + } + return { + + 'groups': ((value['groups'] as Array).map(GroupToJSON)), + 'active': value['active'], + 'internal_note': value['internalNote'], + }; +} + diff --git a/vue3/src/openapi/models/ViewLog.ts b/vue3/src/openapi/models/ViewLog.ts new file mode 100644 index 000000000..480063bda --- /dev/null +++ b/vue3/src/openapi/models/ViewLog.ts @@ -0,0 +1,85 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Tandoor + * Tandoor API Docs + * + * The version of the OpenAPI document: 0.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ViewLog + */ +export interface ViewLog { + /** + * + * @type {number} + * @memberof ViewLog + */ + readonly id: number; + /** + * + * @type {number} + * @memberof ViewLog + */ + recipe: number; + /** + * + * @type {number} + * @memberof ViewLog + */ + readonly createdBy: number; + /** + * + * @type {Date} + * @memberof ViewLog + */ + readonly createdAt: Date; +} + +/** + * Check if a given object implements the ViewLog interface. + */ +export function instanceOfViewLog(value: object): boolean { + if (!('id' in value)) return false; + if (!('recipe' in value)) return false; + if (!('createdBy' in value)) return false; + if (!('createdAt' in value)) return false; + return true; +} + +export function ViewLogFromJSON(json: any): ViewLog { + return ViewLogFromJSONTyped(json, false); +} + +export function ViewLogFromJSONTyped(json: any, ignoreDiscriminator: boolean): ViewLog { + if (json == null) { + return json; + } + return { + + 'id': json['id'], + 'recipe': json['recipe'], + 'createdBy': json['created_by'], + 'createdAt': (new Date(json['created_at'])), + }; +} + +export function ViewLogToJSON(value?: ViewLog | null): any { + if (value == null) { + return value; + } + return { + + 'recipe': value['recipe'], + }; +} + diff --git a/vue3/src/openapi/models/index.ts b/vue3/src/openapi/models/index.ts new file mode 100644 index 000000000..06c0242cb --- /dev/null +++ b/vue3/src/openapi/models/index.ts @@ -0,0 +1,126 @@ +/* tslint:disable */ +/* eslint-disable */ +export * from './AccessToken'; +export * from './AuthToken'; +export * from './Automation'; +export * from './AutomationTypeEnum'; +export * from './BaseUnitEnum'; +export * from './BookmarkletImport'; +export * from './BookmarkletImportList'; +export * from './ConnectorConfigConfig'; +export * from './CookLog'; +export * from './CustomFilter'; +export * from './DefaultPageEnum'; +export * from './ExportLog'; +export * from './Food'; +export * from './FoodInheritField'; +export * from './FoodSimple'; +export * from './Group'; +export * from './ImportLog'; +export * from './Ingredient'; +export * from './InviteLink'; +export * from './Keyword'; +export * from './KeywordLabel'; +export * from './MealPlan'; +export * from './MealType'; +export * from './MethodEnum'; +export * from './NutritionInformation'; +export * from './OpenDataCategory'; +export * from './OpenDataConversion'; +export * from './OpenDataFood'; +export * from './OpenDataFoodProperty'; +export * from './OpenDataProperty'; +export * from './OpenDataStore'; +export * from './OpenDataStoreCategory'; +export * from './OpenDataUnit'; +export * from './OpenDataUnitTypeEnum'; +export * from './OpenDataVersion'; +export * from './PaginatedAutomationList'; +export * from './PaginatedCookLogList'; +export * from './PaginatedCustomFilterList'; +export * from './PaginatedExportLogList'; +export * from './PaginatedFoodList'; +export * from './PaginatedImportLogList'; +export * from './PaginatedIngredientList'; +export * from './PaginatedKeywordList'; +export * from './PaginatedRecipeOverviewList'; +export * from './PaginatedStepList'; +export * from './PaginatedSupermarketCategoryRelationList'; +export * from './PaginatedSyncLogList'; +export * from './PaginatedUnitList'; +export * from './PaginatedUserSpaceList'; +export * from './PaginatedViewLogList'; +export * from './PatchedAccessToken'; +export * from './PatchedAutomation'; +export * from './PatchedBookmarkletImport'; +export * from './PatchedConnectorConfigConfig'; +export * from './PatchedCookLog'; +export * from './PatchedCustomFilter'; +export * from './PatchedExportLog'; +export * from './PatchedFood'; +export * from './PatchedImportLog'; +export * from './PatchedIngredient'; +export * from './PatchedInviteLink'; +export * from './PatchedKeyword'; +export * from './PatchedMealPlan'; +export * from './PatchedMealType'; +export * from './PatchedOpenDataCategory'; +export * from './PatchedOpenDataConversion'; +export * from './PatchedOpenDataFood'; +export * from './PatchedOpenDataProperty'; +export * from './PatchedOpenDataStore'; +export * from './PatchedOpenDataUnit'; +export * from './PatchedOpenDataVersion'; +export * from './PatchedProperty'; +export * from './PatchedPropertyType'; +export * from './PatchedRecipe'; +export * from './PatchedRecipeBook'; +export * from './PatchedRecipeBookEntry'; +export * from './PatchedShoppingListEntry'; +export * from './PatchedShoppingListRecipe'; +export * from './PatchedSpace'; +export * from './PatchedStep'; +export * from './PatchedStorage'; +export * from './PatchedSupermarket'; +export * from './PatchedSupermarketCategory'; +export * from './PatchedSupermarketCategoryRelation'; +export * from './PatchedSync'; +export * from './PatchedUnit'; +export * from './PatchedUnitConversion'; +export * from './PatchedUser'; +export * from './PatchedUserPreference'; +export * from './PatchedUserSpace'; +export * from './PatchedViewLog'; +export * from './Property'; +export * from './PropertyType'; +export * from './Recipe'; +export * from './RecipeBook'; +export * from './RecipeBookEntry'; +export * from './RecipeFlat'; +export * from './RecipeImage'; +export * from './RecipeOverview'; +export * from './RecipeShoppingUpdate'; +export * from './RecipeSimple'; +export * from './ShoppingListEntry'; +export * from './ShoppingListEntryBulk'; +export * from './ShoppingListRecipe'; +export * from './Space'; +export * from './SpaceNavTextColorEnum'; +export * from './SpaceThemeEnum'; +export * from './Step'; +export * from './Storage'; +export * from './Supermarket'; +export * from './SupermarketCategory'; +export * from './SupermarketCategoryRelation'; +export * from './Sync'; +export * from './SyncLog'; +export * from './ThemeEnum'; +export * from './Unit'; +export * from './UnitConversion'; +export * from './User'; +export * from './UserFile'; +export * from './UserFileView'; +export * from './UserPreference'; +export * from './UserPreferenceNavTextColorEnum'; +export * from './UserSpace'; +export * from './ViewLog'; diff --git a/vue3/src/openapi/openapitools.json b/vue3/src/openapi/openapitools.json new file mode 100644 index 000000000..557168821 --- /dev/null +++ b/vue3/src/openapi/openapitools.json @@ -0,0 +1,7 @@ +{ + "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json", + "spaces": 2, + "generator-cli": { + "version": "7.4.0" + } +} diff --git a/vue3/src/openapi/runtime.ts b/vue3/src/openapi/runtime.ts new file mode 100644 index 000000000..ed079edb5 --- /dev/null +++ b/vue3/src/openapi/runtime.ts @@ -0,0 +1,446 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Django Recipes + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export let BASE_PATH = typeof window !== 'undefined' ? localStorage.getItem('BASE_PATH') || '' : location.protocol + '//' + location.host; + +export interface ConfigurationParameters { + basePath?: string; // override base path + fetchApi?: FetchAPI; // override for fetch implementation + middleware?: Middleware[]; // middleware to apply before/after fetch requests + queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings + username?: string; // parameter for basic security + password?: string; // parameter for basic security + apiKey?: string | Promise | ((name: string) => string | Promise); // parameter for apiKey security + accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security + headers?: HTTPHeaders; //header params we want to use on every request + credentials?: RequestCredentials; //value for the credentials param we want to use on each request +} + +export class Configuration { + constructor(private configuration: ConfigurationParameters = {}) {} + + set config(configuration: Configuration) { + this.configuration = configuration; + } + + get basePath(): string { + return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH; + } + + get fetchApi(): FetchAPI | undefined { + return this.configuration.fetchApi; + } + + get middleware(): Middleware[] { + return this.configuration.middleware || []; + } + + get queryParamsStringify(): (params: HTTPQuery) => string { + return this.configuration.queryParamsStringify || querystring; + } + + get username(): string | undefined { + return this.configuration.username; + } + + get password(): string | undefined { + return this.configuration.password; + } + + get apiKey(): ((name: string) => string | Promise) | undefined { + const apiKey = this.configuration.apiKey; + if (apiKey) { + return typeof apiKey === 'function' ? apiKey : () => apiKey; + } + return undefined; + } + + get accessToken(): ((name?: string, scopes?: string[]) => string | Promise) | undefined { + const accessToken = this.configuration.accessToken; + if (accessToken) { + return typeof accessToken === 'function' ? accessToken : async () => accessToken; + } + return undefined; + } + + get headers(): HTTPHeaders | undefined { + return this.configuration.headers; + } + + get credentials(): RequestCredentials | undefined { + return this.configuration.credentials; + } +} + +export const DefaultConfig = new Configuration(); + +/** + * This is the base class for all generated API classes. + */ +export class BaseAPI { + + private static readonly jsonRegex = new RegExp('^(:?application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(:?;.*)?$', 'i'); + private middleware: Middleware[]; + + constructor(protected configuration = DefaultConfig) { + this.middleware = configuration.middleware; + } + + withMiddleware(this: T, ...middlewares: Middleware[]) { + const next = this.clone(); + next.middleware = next.middleware.concat(...middlewares); + return next; + } + + withPreMiddleware(this: T, ...preMiddlewares: Array) { + const middlewares = preMiddlewares.map((pre) => ({ pre })); + return this.withMiddleware(...middlewares); + } + + withPostMiddleware(this: T, ...postMiddlewares: Array) { + const middlewares = postMiddlewares.map((post) => ({ post })); + return this.withMiddleware(...middlewares); + } + + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * @param mime - MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + protected isJsonMime(mime: string | null | undefined): boolean { + if (!mime) { + return false; + } + return BaseAPI.jsonRegex.test(mime); + } + + protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise { + const { url, init } = await this.createFetchParams(context, initOverrides); + const response = await this.fetchApi(url, init); + if (response && (response.status >= 200 && response.status < 300)) { + return response; + } + throw new ResponseError(response, 'Response returned an error code'); + } + + private getCookie(name: string) { + let cookieValue = null; + if (document.cookie && document.cookie !== '') { + const cookies = document.cookie.split(';'); + for (let i = 0; i < cookies.length; i++) { + const cookie = cookies[i].trim(); + // Does this cookie string begin with the name we want? + if (cookie.substring(0, name.length + 1) === (name + '=')) { + cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); + break; + } + } + } + return cookieValue; + } + private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) { + let url = this.configuration.basePath + context.path; + if (context.query !== undefined && Object.keys(context.query).length !== 0) { + // only add the querystring to the URL if there are query parameters. + // this is done to avoid urls ending with a "?" character which buggy webservers + // do not handle correctly sometimes. + url += '?' + this.configuration.queryParamsStringify(context.query); + } + + const headers = Object.assign({}, this.configuration.headers, context.headers, { 'X-CSRFToken': this.getCookie('csrftoken'), }); + Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {}); + + const initOverrideFn = + typeof initOverrides === "function" + ? initOverrides + : async () => initOverrides; + + const initParams = { + method: context.method, + headers, + body: context.body, + credentials: this.configuration.credentials, + }; + + const overriddenInit: RequestInit = { + ...initParams, + ...(await initOverrideFn({ + init: initParams, + context, + })) + }; + + let body: any; + if (isFormData(overriddenInit.body) + || (overriddenInit.body instanceof URLSearchParams) + || isBlob(overriddenInit.body)) { + body = overriddenInit.body; + } else if (this.isJsonMime(headers['Content-Type'])) { + body = JSON.stringify(overriddenInit.body); + } else { + body = overriddenInit.body; + } + + const init: RequestInit = { + ...overriddenInit, + body + }; + + return { url, init }; + } + + private fetchApi = async (url: string, init: RequestInit) => { + let fetchParams = { url, init }; + for (const middleware of this.middleware) { + if (middleware.pre) { + fetchParams = await middleware.pre({ + fetch: this.fetchApi, + ...fetchParams, + }) || fetchParams; + } + } + let response: Response | undefined = undefined; + try { + response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init); + } catch (e) { + for (const middleware of this.middleware) { + if (middleware.onError) { + response = await middleware.onError({ + fetch: this.fetchApi, + url: fetchParams.url, + init: fetchParams.init, + error: e, + response: response ? response.clone() : undefined, + }) || response; + } + } + if (response === undefined) { + if (e instanceof Error) { + throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response'); + } else { + throw e; + } + } + } + for (const middleware of this.middleware) { + if (middleware.post) { + response = await middleware.post({ + fetch: this.fetchApi, + url: fetchParams.url, + init: fetchParams.init, + response: response.clone(), + }) || response; + } + } + return response; + } + + /** + * Create a shallow clone of `this` by constructing a new instance + * and then shallow cloning data members. + */ + private clone(this: T): T { + const constructor = this.constructor as any; + const next = new constructor(this.configuration); + next.middleware = this.middleware.slice(); + return next; + } +}; + +function isBlob(value: any): value is Blob { + return typeof Blob !== 'undefined' && value instanceof Blob; +} + +function isFormData(value: any): value is FormData { + return typeof FormData !== "undefined" && value instanceof FormData; +} + +export class ResponseError extends Error { + override name: "ResponseError" = "ResponseError"; + constructor(public response: Response, msg?: string) { + super(msg); + } +} + +export class FetchError extends Error { + override name: "FetchError" = "FetchError"; + constructor(public cause: Error, msg?: string) { + super(msg); + } +} + +export class RequiredError extends Error { + override name: "RequiredError" = "RequiredError"; + constructor(public field: string, msg?: string) { + super(msg); + } +} + +export const COLLECTION_FORMATS = { + csv: ",", + ssv: " ", + tsv: "\t", + pipes: "|", +}; + +export type FetchAPI = WindowOrWorkerGlobalScope['fetch']; + +export type Json = any; +export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD'; +export type HTTPHeaders = { [key: string]: string }; +export type HTTPQuery = { [key: string]: string | number | null | boolean | Array | Set | HTTPQuery }; +export type HTTPBody = Json | FormData | URLSearchParams; +export type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody }; +export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original'; + +export type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise + +export interface FetchParams { + url: string; + init: RequestInit; +} + +export interface RequestOpts { + path: string; + method: HTTPMethod; + headers: HTTPHeaders; + query?: HTTPQuery; + body?: HTTPBody; +} + +export function exists(json: any, key: string) { + const value = json[key]; + return value !== null && value !== undefined; +} + +export function querystring(params: HTTPQuery, prefix: string = ''): string { + return Object.keys(params) + .map(key => querystringSingleKey(key, params[key], prefix)) + .filter(part => part.length > 0) + .join('&'); +} + +function querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array | Set | HTTPQuery, keyPrefix: string = ''): string { + const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key); + if (value instanceof Array) { + const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue))) + .join(`&${encodeURIComponent(fullKey)}=`); + return `${encodeURIComponent(fullKey)}=${multiValue}`; + } + if (value instanceof Set) { + const valueAsArray = Array.from(value); + return querystringSingleKey(key, valueAsArray, keyPrefix); + } + if (value instanceof Date) { + return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`; + } + if (value instanceof Object) { + return querystring(value as HTTPQuery, fullKey); + } + return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`; +} + +export function mapValues(data: any, fn: (item: any) => any) { + return Object.keys(data).reduce( + (acc, key) => ({ ...acc, [key]: fn(data[key]) }), + {} + ); +} + +export function canConsumeForm(consumes: Consume[]): boolean { + for (const consume of consumes) { + if ('multipart/form-data' === consume.contentType) { + return true; + } + } + return false; +} + +export interface Consume { + contentType: string; +} + +export interface RequestContext { + fetch: FetchAPI; + url: string; + init: RequestInit; +} + +export interface ResponseContext { + fetch: FetchAPI; + url: string; + init: RequestInit; + response: Response; +} + +export interface ErrorContext { + fetch: FetchAPI; + url: string; + init: RequestInit; + error: unknown; + response?: Response; +} + +export interface Middleware { + pre?(context: RequestContext): Promise; + post?(context: ResponseContext): Promise; + onError?(context: ErrorContext): Promise; +} + +export interface ApiResponse { + raw: Response; + value(): Promise; +} + +export interface ResponseTransformer { + (json: any): T; +} + +export class JSONApiResponse { + constructor(public raw: Response, private transformer: ResponseTransformer = (jsonValue: any) => jsonValue) {} + + async value(): Promise { + return this.transformer(await this.raw.json()); + } +} + +export class VoidApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return undefined; + } +} + +export class BlobApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return await this.raw.blob(); + }; +} + +export class TextApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return await this.raw.text(); + }; +} diff --git a/vue3/src/openapi/update.bat b/vue3/src/openapi/update.bat new file mode 100644 index 000000000..4eb61fddc --- /dev/null +++ b/vue3/src/openapi/update.bat @@ -0,0 +1 @@ +openapi-generator-cli generate -g typescript-fetch -i http://127.0.0.1:8000/openapi/ \ No newline at end of file diff --git a/vue3/src/pages/MealPlanPage.vue b/vue3/src/pages/MealPlanPage.vue new file mode 100644 index 000000000..9bedb7a14 --- /dev/null +++ b/vue3/src/pages/MealPlanPage.vue @@ -0,0 +1,63 @@ + + + + + \ No newline at end of file diff --git a/vue3/src/pages/RecipeEditPage.vue b/vue3/src/pages/RecipeEditPage.vue new file mode 100644 index 000000000..63a1c24cb --- /dev/null +++ b/vue3/src/pages/RecipeEditPage.vue @@ -0,0 +1,140 @@ + + + + + + \ No newline at end of file diff --git a/vue3/src/pages/RecipeSearchPage.vue b/vue3/src/pages/RecipeSearchPage.vue new file mode 100644 index 000000000..3c5b67f05 --- /dev/null +++ b/vue3/src/pages/RecipeSearchPage.vue @@ -0,0 +1,97 @@ + + + + + \ No newline at end of file diff --git a/vue3/src/pages/RecipeViewPage.vue b/vue3/src/pages/RecipeViewPage.vue new file mode 100644 index 000000000..529adc3e4 --- /dev/null +++ b/vue3/src/pages/RecipeViewPage.vue @@ -0,0 +1,42 @@ + + + + + \ No newline at end of file diff --git a/vue3/src/pages/ShoppingListPage.vue b/vue3/src/pages/ShoppingListPage.vue new file mode 100644 index 000000000..6eecae904 --- /dev/null +++ b/vue3/src/pages/ShoppingListPage.vue @@ -0,0 +1,40 @@ + + + + + \ No newline at end of file diff --git a/vue3/src/plugins/luxonPlugin.ts b/vue3/src/plugins/luxonPlugin.ts new file mode 100644 index 000000000..7d4a36b64 --- /dev/null +++ b/vue3/src/plugins/luxonPlugin.ts @@ -0,0 +1,8 @@ +import {DateTime} from "luxon"; + +export default { + install: (app: any) => { + // inject a globally available luxon DateTime + app.config.globalProperties.$luxon = DateTime + } +} \ No newline at end of file diff --git a/vue3/src/stores/MealPlanStore.ts b/vue3/src/stores/MealPlanStore.ts new file mode 100644 index 000000000..05be9224d --- /dev/null +++ b/vue3/src/stores/MealPlanStore.ts @@ -0,0 +1,118 @@ +import {defineStore} from "pinia" +import {ApiApi, MealPlan} from "@/openapi"; +import {computed, ref} from "vue"; +import {DateTime} from "luxon"; + + +const _STORE_ID = "meal_plan_store" +const _LOCAL_STORAGE_KEY = "MEAL_PLAN_CLIENT_SETTINGS" +/* + * test store to play around with pinia and see if it can work for my usecases + * dont trust that all mealplans are in store as there is no cache validation logic, its just a shared data holder + * */ +export const useMealPlanStore = defineStore(_STORE_ID, () => { + + let plans = ref(new Map) + let currently_updating = ref([new Date(0), new Date(0)]) + let settings = ref({}) + + const plan_list = computed(() => { + let plan_list = [] as MealPlan[] + + plans.value.forEach((plan: MealPlan, key: number) => { + plan_list.push(plan) + }) + + return plan_list + }) + + const empty_meal_plan = computed(() => { + return { + from_date: null, + to_date: null, + id: -1, + meal_type: null, + note: "", + note_markdown: "", + recipe: null, + servings: 1, + shared: [], + title: "", + title_placeholder: "Title", // meal plan edit modal should be improved to not need this + } + }) + + // const client_settings = computed(() => { + // if (this.settings === null) { + // this.settings = this.loadClientSettings() + // } + // return this.settings + // }) + + + function refreshFromAPI(from_date: Date, to_date: Date) { + if (currently_updating.value[0] !== from_date || currently_updating.value[1] !== to_date) { + currently_updating.value = [from_date, to_date] // certainly no perfect check but better than nothing + + const api = new ApiApi() + return api.apiMealPlanList({fromDate: DateTime.fromJSDate(from_date).toISODate() as string, toDate: DateTime.fromJSDate(to_date).toISODate() as string}).then(r => { + r.forEach((p) => { + plans.value.set(p.id, p) + }) + currently_updating.value = [new Date(0), new Date(0)] + }) + } + return new Promise(() => {}) + } + + function createObject(object: MealPlan) { + const api = new ApiApi() + return api.apiMealPlanCreate({mealPlan: object}).then((r) => { + //StandardToasts.makeStandardToast(this, StandardToasts.SUCCESS_CREATE) + plans.value.set(r.id, r) + return r + }).catch((err) => { + //StandardToasts.makeStandardToast(this, StandardToasts.FAIL_CREATE, err) + }) + } + + function updateObject(object: MealPlan) { + const api = new ApiApi() + return api.apiMealPlanUpdate({id: object.id, mealPlan: object}).then((r) => { + //StandardToasts.makeStandardToast(this, StandardToasts.SUCCESS_UPDATE) + plans.value.set(r.id, r) + }).catch((err) => { + //StandardToasts.makeStandardToast(this, StandardToasts.FAIL_UPDATE, err) + }) + } + + function deleteObject(object: MealPlan) { + const api = new ApiApi() + return api.apiMealPlanDestroy({id: object.id}).then((r) => { + //StandardToasts.makeStandardToast(this, StandardToasts.SUCCESS_DELETE) + plans.value.delete(object.id) + }).catch((err) => { + //StandardToasts.makeStandardToast(this, StandardToasts.FAIL_DELETE, err) + }) + } + + // function updateClientSettings(settings) { + // this.settings = settings + // localStorage.setItem(_LOCAL_STORAGE_KEY, JSON.stringify(this.settings)) + // } + // + // function loadClientSettings() { + // let s = localStorage.getItem(_LOCAL_STORAGE_KEY) + // if (s === null) { + // return { + // displayPeriodUom: "week", + // displayPeriodCount: 3, + // startingDayOfWeek: 1, + // displayWeekNumbers: true, + // } + // } else { + // return JSON.parse(s) + // } + // } + return {plans, currently_updating, plan_list, refreshFromAPI, createObject, updateObject, deleteObject} +}) diff --git a/vue3/src/stores/ShoppingListStore.js b/vue3/src/stores/ShoppingListStore.js new file mode 100644 index 000000000..34af42fbf --- /dev/null +++ b/vue3/src/stores/ShoppingListStore.js @@ -0,0 +1,490 @@ +import {defineStore} from "pinia" +import Vue from "vue" +import _ from 'lodash'; +import {useUserPreferenceStore} from "@/stores/UserPreferenceStore"; +import {ApiApi} from "@/openapi/index.js"; +import {DateTime} from "luxon"; + + +const _STORE_ID = "shopping_list_store" +/* + * test store to play around with pinia and see if it can work for my use cases + * don't trust that all shopping list entries are in store as there is no cache validation logic, its just a shared data holder + * */ +export const useShoppingListStore = defineStore(_STORE_ID, { + state: () => ({ + // shopping data + entries: {}, + supermarket_categories: [], + supermarkets: [], + + total_unchecked: 0, + total_checked: 0, + total_unchecked_food: 0, + total_checked_food: 0, + + // internal + currently_updating: false, + last_autosync: null, + autosync_has_focus: true, + autosync_timeout_id: null, + undo_stack: [], + + queue_timeout_id: undefined, + item_check_sync_queue: {}, + + // constants + GROUP_CATEGORY: 'food.supermarket_category.name', + GROUP_CREATED_BY: 'created_by.display_name', + GROUP_RECIPE: 'recipe_mealplan.recipe_name', + + UNDEFINED_CATEGORY: 'shopping_undefined_category' + }), + getters: { + /** + * build a multi-level data structure ready for display from shopping list entries + * group by selected grouping key + * @return {{}} + */ + get_entries_by_group: function () { + let structure = {} + let ordered_structure = [] + + // build structure + for (let i in this.entries) { + structure = this.updateEntryInStructure(structure, this.entries[i], useUserPreferenceStore().device_settings.shopping_selected_grouping) + } + + // statistics for UI conditions and display + let total_unchecked = 0 + let total_checked = 0 + let total_unchecked_food = 0 + let total_checked_food = 0 + for (let i in structure) { + let count_unchecked = 0 + let count_checked = 0 + let count_unchecked_food = 0 + let count_checked_food = 0 + + for (let fi in structure[i]['foods']) { + let food_checked = true + for (let ei in structure[i]['foods'][fi]['entries']) { + if (structure[i]['foods'][fi]['entries'][ei].checked) { + count_checked++ + } else { + food_checked = false + count_unchecked++ + } + } + if (food_checked) { + count_checked_food++ + } else { + count_unchecked_food++ + } + } + + Vue.set(structure[i], 'count_unchecked', count_unchecked) + Vue.set(structure[i], 'count_checked', count_checked) + Vue.set(structure[i], 'count_unchecked_food', count_unchecked_food) + Vue.set(structure[i], 'count_checked_food', count_checked_food) + + total_unchecked += count_unchecked + total_checked += count_checked + total_unchecked_food += count_unchecked_food + total_checked_food += count_checked_food + } + + this.total_unchecked = total_unchecked + this.total_checked = total_checked + this.total_unchecked_food = total_unchecked_food + this.total_checked_food = total_checked_food + + // ordering + if (this.UNDEFINED_CATEGORY in structure) { + ordered_structure.push(structure[this.UNDEFINED_CATEGORY]) + Vue.delete(structure, this.UNDEFINED_CATEGORY) + } + + if (useUserPreferenceStore().device_settings.shopping_selected_grouping === this.GROUP_CATEGORY && useUserPreferenceStore().device_settings.shopping_selected_supermarket !== null) { + for (let c of useUserPreferenceStore().device_settings.shopping_selected_supermarket.category_to_supermarket) { + if (c.category.name in structure) { + ordered_structure.push(structure[c.category.name]) + Vue.delete(structure, c.category.name) + } + } + if (!useUserPreferenceStore().device_settings.shopping_show_selected_supermarket_only) { + for (let i in structure) { + ordered_structure.push(structure[i]) + } + } + } else { + for (let i in structure) { + ordered_structure.push(structure[i]) + } + } + + return ordered_structure + }, + /** + * flattened list of entries used for exporters + * kinda uncool but works for now + * @return {*[]} + */ + get_flat_entries: function () { + let items = [] + for (let i in this.get_entries_by_group) { + for (let f in this.get_entries_by_group[i]['foods']) { + for (let e in this.get_entries_by_group[i]['foods'][f]['entries']) { + items.push({ + amount: this.get_entries_by_group[i]['foods'][f]['entries'][e].amount, + unit: this.get_entries_by_group[i]['foods'][f]['entries'][e].unit?.name ?? '', + food: this.get_entries_by_group[i]['foods'][f]['entries'][e].food?.name ?? '', + }) + } + } + } + return items + }, + /** + * list of options available for grouping entry display + * @return {[{id: *, translatable_label: string},{id: *, translatable_label: string},{id: *, translatable_label: string}]} + */ + grouping_options: function () { + return [ + {'id': this.GROUP_CATEGORY, 'translatable_label': 'Category'}, + {'id': this.GROUP_CREATED_BY, 'translatable_label': 'created_by'}, + {'id': this.GROUP_RECIPE, 'translatable_label': 'Recipe'} + ] + }, + /** + * checks if failed items are contained in the sync queue + */ + has_failed_items: function () { + for (let i in this.item_check_sync_queue) { + if (this.item_check_sync_queue[i]['status'] === 'syncing_failed_before' || this.item_check_sync_queue[i]['status'] === 'waiting_failed_before') { + return true + } + } + return false + } + }, + actions: { + /** + * Retrieves all shopping related data (shopping list entries, supermarkets, supermarket categories and shopping list recipes) from API + */ + refreshFromAPI() { + if (!this.currently_updating) { + this.currently_updating = true + this.last_autosync = new Date().getTime(); + + let api = new ApiApi() + api.listShoppingListEntrys().then((r) => { + this.entries = {} + + r.forEach((e) => { + this.entries[e.id] = e + }) + this.currently_updating = false + }).catch((err) => { + this.currently_updating = false + //StandardToasts.makeStandardToast(this, StandardToasts.FAIL_FETCH, err) + }) + + api.listSupermarketCategorys().then(r => { + this.supermarket_categories = r + }).catch((err) => { + // StandardToasts.makeStandardToast(this, StandardToasts.FAIL_FETCH, err) + }) + + api.listSupermarkets().then(r => { + this.supermarkets = r + }).catch((err) => { + // StandardToasts.makeStandardToast(this, StandardToasts.FAIL_FETCH, err) + }) + } + }, + /** + * perform auto sync request to special endpoint returning only entries changed since last auto sync + * only updates local entries that are older than the server version + */ + autosync() { + if (!this.currently_updating && this.autosync_has_focus) { + console.log('running autosync') + + this.currently_updating = true + + let previous_autosync = this.last_autosync + this.last_autosync = new Date().getTime(); + + const api = new ApiApi() + // TODO query parameters + api.listShoppingListEntrys({last_autosync: previous_autosync}).then((r) => { + r.forEach((e) => { + // dont update stale client data + if (!(Object.keys(this.entries).includes(e.id.toString())) || Date.parse(this.entries[e.id].updated_at) < Date.parse(e.updated_at)) { + console.log('auto sync updating entry ', e) + this.entries[e.id] = e + } + }) + this.currently_updating = false + }).catch((err) => { + console.warn('auto sync failed') + this.currently_updating = false + }) + } + }, + /** + * Create a new shopping list entry + * adds new entry to store + * @param object entry object to create + * @return {Promise} promise of creation call to subscribe to + */ + createObject(object) { + const api = new ApiApi() + return api.createShoppingListEntry(object).then((r) => { + this.entries[r.id] = r + }).catch((err) => { + // StandardToasts.makeStandardToast(this, StandardToasts.FAIL_UPDATE, err) + }) + }, + /** + * update existing entry object and updated_at timestamp + * updates data in store + * IMPORTANT: always use this method to update objects to keep client state consistent + * @param object entry object to update + * @return {Promise} promise of updating call to subscribe to + */ + updateObject(object) { + const api = new ApiApi() + // sets the update_at timestamp on the client to prevent auto sync from overriding with older changes + // moment().format() yields locale aware datetime without ms 2024-01-04T13:39:08.607238+01:00 + //Vue.set(object, 'updated_at', moment().format()) + object['update_at'] = DateTime.toLocaleString() // TODO check formats + + return api.updateShoppingListEntry(object.id, object).then((r) => { + this.entries[r.id] = r + }).catch((err) => { + // StandardToasts.makeStandardToast(this, StandardToasts.FAIL_UPDATE, err) + }) + }, + /** + * delete shopping list entry object from DB and store + * @param object entry object to delete + * @return {Promise} promise of delete call to subscribe to + */ + deleteObject(object) { + const api = new ApiApi() + return api.destroyShoppingListEntry({id: object.id}).then((r) => { + delete this.entries[object.id] + }).catch((err) => { + // StandardToasts.makeStandardToast(this, StandardToasts.FAIL_DELETE, err) + }) + }, + /** + * returns a distinct list of recipes associated with unchecked shopping list entries + */ + getAssociatedRecipes: function () { + let recipes = {} // TODO this needs a type + + for (let i in this.entries) { + let e = this.entries[i] + if (e.recipe_mealplan !== null) { + recipes[e.recipe_mealplan.recipe] = { + 'shopping_list_recipe_id': e.list_recipe, + 'recipe_id': e.recipe_mealplan.recipe, + 'recipe_name': e.recipe_mealplan.recipe_name, + 'servings': e.recipe_mealplan.servings, + 'mealplan_from_date': e.recipe_mealplan.mealplan_from_date, + 'mealplan_type': e.recipe_mealplan.mealplan_type, + } + } + } + + return recipes + }, + // convenience methods + /** + * function to set entry to its proper place in the data structure to perform grouping + * @param {{}} structure datastructure + * @param {*} entry entry to place + * @param {*} group group to place entry into (must be of ShoppingListStore.GROUP_XXX/dot notation of entry property) + * @returns {{}} datastructure including entry + */ + updateEntryInStructure(structure, entry, group) { + let grouping_key = _.get(entry, group, this.UNDEFINED_CATEGORY) + + if (grouping_key === undefined || grouping_key === null) { + grouping_key = this.UNDEFINED_CATEGORY + } + + if (!(grouping_key in structure)) { + structure[grouping_key] = {'name': grouping_key, 'foods': {}} + } + if (!(entry.food.id in structure[grouping_key]['foods'])) { + structure[grouping_key]['foods'][entry.food.id] = { + 'id': entry.food.id, + 'name': entry.food.name, + 'entries': {} + } + } + structure[grouping_key]['foods'][entry.food.id]['entries'][entry.id] = entry + return structure + }, + /** + * function to handle user checking or unchecking a set of entries + * @param {{}} entries set of entries + * @param checked boolean to set checked state of entry to + * @param undo if the user should be able to undo the change or not + */ + setEntriesCheckedState(entries, checked, undo) { + if (undo) { + this.registerChange((checked ? 'CHECKED' : 'UNCHECKED'), entries) + } + + let entry_id_list = [] + for (let i in entries) { + this.entries[i]['checked'] = checked + this.entries[i]['updated_at'] = DateTime.now().toISOTime() // TODO was moment.format() (see above) + entry_id_list.push(i) + } + + this.item_check_sync_queue[Math.random()] = { + 'ids': entry_id_list, + 'checked': checked, + 'status': 'waiting' + } + this.runSyncQueue(5) + }, + /** + * go through the list of queued requests and try to run them + * add request back to queue if it fails due to offline or timeout + * Do NOT call this method directly, always call using runSyncQueue method to prevent simultaneous runs + * @private + */ + _replaySyncQueue() { + if (navigator.onLine || document.location.href.includes('localhost')) { + let api = new ApiApi() + let promises = [] + + for (let i in this.item_check_sync_queue) { + let entry = this.item_check_sync_queue[i] + entry['status'] = ((entry['status'] === 'waiting') ? 'syncing' : 'syncing_failed_before') + this.item_check_sync_queue[i] = entry + + // TODO request params + let p = api.bulkShoppingListEntry(entry, {timeout: 15000}).then((r) => { + delete this.item_check_sync_queue[i] + }).catch((err) => { + if (err.code === "ERR_NETWORK" || err.code === "ECONNABORTED") { + entry['status'] = 'waiting_failed_before' + this.item_check_sync_queue[i] = entry + } else { + delete this.item_check_sync_queue[i] + console.error('Failed API call for entry ', entry) + // StandardToasts.makeStandardToast(this, StandardToasts.FAIL_UPDATE, err) + } + }) + promises.push(p) + } + + Promise.allSettled(promises).finally(r => { + this.runSyncQueue(500) + }) + } else { + this.runSyncQueue(5000) + } + }, + /** + * manages running the replaySyncQueue function after the given timeout + * calling this function might cancel a previously created timeout + * @param timeout time in ms after which to run the replaySyncQueue function + */ + runSyncQueue(timeout) { + clearTimeout(this.queue_timeout_id) + + this.queue_timeout_id = setTimeout(() => { + this._replaySyncQueue() + }, timeout) + }, + /** + * function to handle user "delaying" and "undelaying" shopping entries + * @param {{}} entries set of entries + * @param delay if entries should be delayed or if delay should be removed + * @param undo if the user should be able to undo the change or not + */ + delayEntries(entries, delay, undo) { + let delay_hours = useUserPreferenceStore().user_settings.default_delay + let delay_date = new Date(Date.now() + delay_hours * (60 * 60 * 1000)) + + if (undo) { + this.registerChange((delay ? 'DELAY' : 'UNDELAY'), entries) + } + + for (let i in entries) { + this.entries[i].delay_until = (delay ? delay_date : null) + this.updateObject(this.entries[i]) + } + }, + /** + * delete list of entries + * @param {{}} entries set of entries + */ + deleteEntries(entries) { + for (let i in entries) { + this.deleteObject(this.entries[i]) + } + }, + deleteShoppingListRecipe(shopping_list_recipe_id) { + const api = new ApiApi() + + for (let i in this.entries) { + if (this.entries[i].list_recipe === shopping_list_recipe_id) { + delete this.entries[i] + } + } + + api.destroyShoppingListRecipe(shopping_list_recipe_id).then((x) => { + // no need to update anything, entries were already removed + }).catch((err) => { + // StandardToasts.makeStandardToast(this, StandardToasts.FAIL_DELETE, err) + }) + }, + /** + * register the change to a set of entries to allow undoing it + * throws an Error if the operation type is not known + * @param type the type of change to register. This determines what undoing the change does. (CREATE->delete object, + * CHECKED->uncheck entry, UNCHECKED->check entry, DELAY->remove delay) + * @param {{}} entries set of entries + */ + registerChange(type, entries) { + if (!['CREATED', 'CHECKED', 'UNCHECKED', 'DELAY', 'UNDELAY'].includes(type)) { + throw Error('Tried to register unknown change type') + } + this.undo_stack.push({'type': type, 'entries': entries}) + }, + /** + * takes the last item from the undo stack and reverts it + */ + undoChange() { + let last_item = this.undo_stack.pop() + if (last_item !== undefined) { + let type = last_item['type'] + let entries = last_item['entries'] + + if (type === 'CHECKED' || type === 'UNCHECKED') { + this.setEntriesCheckedState(entries, (type === 'UNCHECKED'), false) + } else if (type === 'DELAY' || type === 'UNDELAY') { + this.delayEntries(entries, (type === 'UNDELAY'), false) + } else if (type === 'CREATED') { + for (let i in entries) { + let e = entries[i] + this.deleteObject(e) + } + } + } else { + // can use localization in store + //StandardToasts.makeStandardToast(this, this.$t('NoMoreUndo')) + } + } + }, +}) diff --git a/vue3/src/stores/UserPreferenceStore.js b/vue3/src/stores/UserPreferenceStore.js new file mode 100644 index 000000000..b457cfa57 --- /dev/null +++ b/vue3/src/stores/UserPreferenceStore.js @@ -0,0 +1,205 @@ +import {defineStore} from 'pinia' + + +import {ApiApiFactory, UserPreference} from "@/utils/openapi/api"; +import Vue from "vue"; +import {StandardToasts} from "@/utils/utils"; + +const _STALE_TIME_IN_MS = 1000 * 30 +const _STORE_ID = 'user_preference_store' + +const _LS_DEVICE_SETTINGS = 'TANDOOR_LOCAL_SETTINGS' +const _LS_USER_SETTINGS = 'TANDOOR_USER_SETTINGS' +const _USER_ID = localStorage.getItem('USER_ID') + +export const useUserPreferenceStore = defineStore(_STORE_ID, { + state: () => ({ + data: null, + updated_at: null, + currently_updating: false, + + user_settings_loaded_at: new Date(0), + user_settings: { + image: null, + theme: "TANDOOR", + nav_bg_color: "#ddbf86", + nav_text_color: "DARK", + nav_show_logo: true, + default_unit: "g", + default_page: "SEARCH", + use_fractions: false, + use_kj: false, + plan_share: [], + nav_sticky: true, + ingredient_decimals: 2, + comments: true, + shopping_auto_sync: 5, + mealplan_autoadd_shopping: false, + food_inherit_default: [], + default_delay: "4.0000", + mealplan_autoinclude_related: true, + mealplan_autoexclude_onhand: true, + shopping_share: [], + shopping_recent_days: 7, + csv_delim: ",", + csv_prefix: "", + filter_to_supermarket: false, + shopping_add_onhand: false, + left_handed: false, + show_step_ingredients: true, + food_children_exist: false, + locally_updated_at: new Date(0), + }, + + device_settings_initialized: false, + device_settings_loaded_at: new Date(0), + device_settings: { + // shopping + shopping_show_checked_entries: false, + shopping_show_delayed_entries: false, + shopping_show_selected_supermarket_only: false, + shopping_selected_grouping: 'food.supermarket_category.name', + shopping_selected_supermarket: null, + shopping_item_info_created_by: false, + shopping_item_info_mealplan: false, + shopping_item_info_recipe: true, + }, + }), + getters: {}, + actions: { + // Device settings (on device settings stored in local storage) + /** + * Load device settings from local storage and update state device_settings + */ + loadDeviceSettings() { + let s = localStorage.getItem(_LS_DEVICE_SETTINGS) + if (s !== null) { + let settings = JSON.parse(s) + for (s in settings) { + Vue.set(this.device_settings, s, settings[s]) + } + } + this.device_settings_initialized = true + }, + /** + * persist changes to device settings into local storage + */ + updateDeviceSettings: function () { + localStorage.setItem(_LS_DEVICE_SETTINGS, JSON.stringify(this.device_settings)) + }, + // ---------------- new methods for user settings + loadUserSettings: function (allow_cached_results) { + let s = localStorage.getItem(_LS_USER_SETTINGS) + if (s !== null) { + let settings = JSON.parse(s) + for (s in settings) { + Vue.set(this.user_settings, s, settings[s]) + } + console.log(`loaded local user settings age ${((new Date().getTime()) - this.user_settings.locally_updated_at) / 1000} `) + } + if (((new Date().getTime()) - this.user_settings.locally_updated_at) > _STALE_TIME_IN_MS || !allow_cached_results) { + console.log('refreshing user settings from API') + let apiClient = new ApiApiFactory() + apiClient.retrieveUserPreference(localStorage.getItem('USER_ID')).then(r => { + for (s in r.data) { + if (!(s in this.user_settings) && s !== 'user') { + // dont load new keys if no default exists (to prevent forgetting to add defaults) + console.error(`API returned UserPreference key "${s}" which has no default in UserPreferenceStore.user_settings.`) + } else { + Vue.set(this.user_settings, s, r.data[s]) + } + } + Vue.set(this.user_settings, 'locally_updated_at', new Date().getTime()) + localStorage.setItem(_LS_USER_SETTINGS, JSON.stringify(this.user_settings)) + }).catch(err => { + this.currently_updating = false + }) + } + + }, + updateUserSettings: function () { + let apiClient = new ApiApiFactory() + apiClient.partialUpdateUserPreference(_USER_ID, this.user_settings).then(r => { + this.user_settings = r.data + Vue.set(this.user_settings, 'locally_updated_at', new Date().getTime()) + localStorage.setItem(_LS_USER_SETTINGS, JSON.stringify(this.user_settings)) + StandardToasts.makeStandardToast(this, StandardToasts.SUCCESS_UPDATE) + }).catch(err => { + this.currently_updating = false + StandardToasts.makeStandardToast(this, StandardToasts.FAIL_UPDATE, err) + }) + }, + // ---------------- + // User Preferences (database settings stored in user preference model) + /** + * gets data from the store either directly or refreshes from API if data is considered stale + * @returns {UserPreference|*|Promise>} + */ + getData: function () { + if (this.isStaleOrEmpty) { + return this.refreshFromAPI() + } else { + return this.data + } + }, + /** + * get data from store. Does not use API, if store is not initialized returns null. + * @returns {null|UserPreference|*} + */ + getStaleData: function () { + return this.data + }, + /** + * checks if update timestamp is older than configured stale time interval + * @returns {boolean} true if data is considered stale and should be updated + */ + isStale() { + return this.updated_at === null || ((new Date()) - this.updated_at) > _STALE_TIME_IN_MS; + }, + /** + * checks if data of store is empty/not initialized + * @returns {boolean} true if store is empty + */ + isEmpty() { + return this.data === null + }, + /** + * checks if store is empty or data is considered stale, see isStale() and isEmpty() + * @returns {boolean} + */ + isStaleOrEmpty() { + return this.isStale() || this.isEmpty() + }, + /** + * refreshes store data if isStaleOrEmpty() is true + * @returns {Promise>} returns promise with data + */ + updateIfStaleOrEmpty() { + if (this.isStaleOrEmpty) { + return this.refreshFromAPI() + } + }, + /** + * refreshes store data from API + * @returns {Promise>} returns promise with data + */ + refreshFromAPI() { + let apiClient = new ApiApiFactory() + if (!this.currently_updating) { + this.currently_updating = true + return apiClient.retrieveUserPreference(localStorage.getItem('USER_ID')).then(r => { + this.data = r.data + this.updated_at = new Date() + this.currently_updating = false + + this.user_settings = r.data + this.user_settings_loaded_at = new Date() + + return this.data + }).catch(err => { + this.currently_updating = false + }) + } + }, + }, +}) \ No newline at end of file diff --git a/vue3/src/types/Models.ts b/vue3/src/types/Models.ts new file mode 100644 index 000000000..6c54a1f56 --- /dev/null +++ b/vue3/src/types/Models.ts @@ -0,0 +1,102 @@ +import {ApiApi, Keyword as IKeyword, Food as IFood, RecipeOverview as IRecipeOverview, Recipe as IRecipe, Unit as IUnit} from "@/openapi"; + +export function getModelFromStr(model_name: String) { + switch (model_name.toLowerCase()) { + case 'food': { + return new Food + } + case 'unit': { + return new Unit + } + case 'keyword': { + return new Keyword + } + case 'recipe': { + return new Recipe + } + default: { + throw Error(`Invalid Model ${model_name}, did you forget to register it in Models.ts?`) + } + } +} + +export abstract class GenericModel { + abstract list(query: string): Promise> + + abstract create(name: string): Promise +} + +//TODO this can probably be achieved by manipulating the client generation https://openapi-generator.tech/docs/templating/#models +export class Keyword extends GenericModel { + create(name: string) { + const api = new ApiApi() + return api.apiKeywordCreate({keyword: {name: name} as IKeyword}) + } + + list(query: string) { + const api = new ApiApi() + return api.apiKeywordList({query: query}).then(r => { + if (r.results) { + return r.results + } else { + return [] + } + }) + } +} + +export class Food extends GenericModel { + create(name: string) { + const api = new ApiApi() + return api.apiFoodCreate({food: {name: name} as IFood}) + } + + list(query: string) { + const api = new ApiApi() + return api.apiFoodList({query: query}).then(r => { + if (r.results) { + return r.results + } else { + return [] + } + }) + } +} + +export class Unit extends GenericModel { + create(name: string) { + const api = new ApiApi() + return api.apiUnitCreate({unit: {name: name} as IUnit}) + } + + list(query: string) { + const api = new ApiApi() + return api.apiUnitList({query: query}).then(r => { + if (r.results) { + return r.results + } else { + return [] + } + }) + } +} + +export class Recipe extends GenericModel { + create(name: string) { + const api = new ApiApi() + return api.apiRecipeCreate({recipe: {name: name} as IRecipe}).then(r => { + return r as unknown as IRecipeOverview + }) + } + + list(query: string) { + const api = new ApiApi() + return api.apiRecipeList({query: query}).then(r => { + if (r.results) { + return r.results + } else { + return [] + } + }) + } +} \ No newline at end of file diff --git a/vue3/src/types/SearchTypes.ts b/vue3/src/types/SearchTypes.ts new file mode 100644 index 000000000..e6f65168f --- /dev/null +++ b/vue3/src/types/SearchTypes.ts @@ -0,0 +1,8 @@ +export interface SearchResult { + name: string, + recipe_id?: number, + suffix?: string, + description?: string, + icon?: string, + image?: string, +} diff --git a/vue3/src/utils/number_utils.ts b/vue3/src/utils/number_utils.ts new file mode 100644 index 000000000..a7521a1d0 --- /dev/null +++ b/vue3/src/utils/number_utils.ts @@ -0,0 +1,82 @@ +function getUserPreference(pref: string) { + return false // TODO only placeholder, add real function +} + + +/** + * round to the number of decimals specified in user preferences + * @param num number to round + */ +export function roundDecimals(num: number) { + let decimals = 2 //TODO get user preference + return Number(num.toFixed(decimals)) +} + +/** + * calculates the amount of food, based on the factor and converts it to a fraction if that is the users preference + * @param amount food amount to calculate based upon + * @param factor factor to scale food amount by + */ +export function calculateFoodAmount(amount: number, factor: number) { + if (getUserPreference("use_fractions")) { + let return_string = "" + let fraction = frac(amount * factor, 16, true) + + if (fraction[0] === 0 && fraction[1] === 0 && fraction[2] === 1) { + return roundDecimals(amount * factor) + } + + if (fraction[0] > 0) { + return_string += fraction[0] + } + + if (fraction[1] > 0) { + return_string += ` ${fraction[1]}${fraction[2]}` + } + + return return_string + } else { + return roundDecimals(amount * factor) + } +} + + +/* frac.js (C) 2012-present SheetJS -- http://sheetjs.com */ + +/* https://www.npmjs.com/package/frac Apache license*/ +/** + * calculates the closest approximation of a fraction for a given decimal number + * @param x decimal number to convert into fraction + * @param D the maximum denominator to return + * @param mixed true to return mixed fractions (e.g. 2 1/2) or false to return improper fractions (e.g. 5/2) + * @returns [quot, num, den] array of numbers, quot is either 0 for improper fractions or the whole number, num is the numerator of the fraction and den the denominator + */ +export function frac(x, D, mixed) { + let n1 = Math.floor(x), d1 = 1; + let n2 = n1 + 1, d2 = 1; + if (x !== n1) while (d1 <= D && d2 <= D) { + let m = (n1 + n2) / (d1 + d2); + if (x === m) { + if (d1 + d2 <= D) { + d1 += d2; + n1 += n2; + d2 = D + 1; + } else if (d1 > d2) d2 = D + 1; + else d1 = D + 1; + break; + } else if (x < m) { + n2 = n1 + n2; + d2 = d1 + d2; + } else { + n1 = n1 + n2; + d1 = d1 + d2; + } + } + if (d1 > D) { + d1 = d2; + n1 = n2; + } + if (!mixed) return [0, n1, d1]; + let q = Math.floor(n1 / d1); + return [q, n1 - q * d1, d1]; +} \ No newline at end of file diff --git a/vue3/src/vuetify.ts b/vue3/src/vuetify.ts new file mode 100644 index 000000000..916179b29 --- /dev/null +++ b/vue3/src/vuetify.ts @@ -0,0 +1,40 @@ +import '@fortawesome/fontawesome-free/css/all.css' +import 'vuetify/styles' +import {aliases, fa} from 'vuetify/iconsets/fa' + +// Composables +import {createVuetify} from 'vuetify' + +// https://vuetifyjs.com/en/introduction/why-vuetify/#feature-guides +export default createVuetify({ + defaults: { + VCard: { + class: 'overflow-visible' // this is needed so that vue-multiselect options show above a card, vuetify uses overlay container to avoid this + } + }, + theme: { + defaultTheme: 'light', + themes: { + light: { + colors: { + background: '#f5efea', + tandoor: '#ddbf86', + primary: '#b98766', + secondary: '#b55e4f', + success: '#82aa8b', + info: '#385f84', + warning: '#eaaa21', + error: '#a7240e', + }, + }, + }, + }, + icons: { + defaultSet: 'fa', + aliases, + sets: { + fa, + }, + }, +}) + diff --git a/vue3/tsconfig.app.json b/vue3/tsconfig.app.json new file mode 100644 index 000000000..283aac7f2 --- /dev/null +++ b/vue3/tsconfig.app.json @@ -0,0 +1,13 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "include": ["env.d.ts", "src/**/*", "src/**/*.vue","src/**/*.ts"], + "exclude": ["src/**/__tests__/*"], + "compilerOptions": { + "composite": true, + "verbatimModuleSyntax": false, + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/vue3/tsconfig.json b/vue3/tsconfig.json new file mode 100644 index 000000000..100cf6a8f --- /dev/null +++ b/vue3/tsconfig.json @@ -0,0 +1,14 @@ +{ + "files": [], + "references": [ + { + "path": "./tsconfig.node.json" + }, + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.vitest.json" + } + ] +} diff --git a/vue3/tsconfig.node.json b/vue3/tsconfig.node.json new file mode 100644 index 000000000..dee96bed4 --- /dev/null +++ b/vue3/tsconfig.node.json @@ -0,0 +1,16 @@ +{ + "extends": "@tsconfig/node18/tsconfig.json", + "include": [ + "vite.config.*", + "vitest.config.*", + "cypress.config.*", + "nightwatch.conf.*", + "playwright.config.*" + ], + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Bundler", + "types": ["node"] + } +} diff --git a/vue3/tsconfig.vitest.json b/vue3/tsconfig.vitest.json new file mode 100644 index 000000000..d080d611e --- /dev/null +++ b/vue3/tsconfig.vitest.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.app.json", + "exclude": [], + "compilerOptions": { + "composite": true, + "lib": [], + "types": ["node", "jsdom"] + } +} diff --git a/vue3/vite.config.ts b/vue3/vite.config.ts new file mode 100644 index 000000000..14e628bbd --- /dev/null +++ b/vue3/vite.config.ts @@ -0,0 +1,40 @@ +import {fileURLToPath, URL} from 'node:url' + +import {defineConfig} from 'vite' +import vue from '@vitejs/plugin-vue' +import vuetify, {transformAssetUrls} from 'vite-plugin-vuetify' + +// https://vitejs.dev/config/ +export default defineConfig({ + base: '/static/vue3/', + plugins: [ + vue({ + template: {transformAssetUrls} + }), + vuetify({ + autoImport: true, + }), + ], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + }, + extensions: ['.js', '.json', '.jsx', '.mjs', '.ts', '.tsx', '.vue',], + }, + clearScreen: false, + build: { + outDir: '../cookbook/static/vue3/', + // generate manifest.json in outDir + manifest: 'manifest.json', + rollupOptions: { + // overwrite default .html entry + input: [ + 'src/apps/tandoor/main.ts', + ], + }, + }, + server: { + host: '0.0.0.0', // only needed to expose dev server to network bound IPs + origin: 'http://localhost:5173', + } +}) diff --git a/vue3/yarn.lock b/vue3/yarn.lock new file mode 100644 index 000000000..6d4a414db --- /dev/null +++ b/vue3/yarn.lock @@ -0,0 +1,1002 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/parser@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" + integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== + +"@esbuild/aix-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" + integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA== + +"@esbuild/android-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4" + integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA== + +"@esbuild/android-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824" + integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w== + +"@esbuild/android-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d" + integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew== + +"@esbuild/darwin-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz#cbee41e988020d4b516e9d9e44dd29200996275e" + integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g== + +"@esbuild/darwin-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd" + integrity sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A== + +"@esbuild/freebsd-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487" + integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA== + +"@esbuild/freebsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c" + integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg== + +"@esbuild/linux-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b" + integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA== + +"@esbuild/linux-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef" + integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w== + +"@esbuild/linux-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601" + integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA== + +"@esbuild/linux-loong64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299" + integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA== + +"@esbuild/linux-mips64el@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec" + integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w== + +"@esbuild/linux-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8" + integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg== + +"@esbuild/linux-riscv64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf" + integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg== + +"@esbuild/linux-s390x@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8" + integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg== + +"@esbuild/linux-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78" + integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg== + +"@esbuild/netbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b" + integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA== + +"@esbuild/openbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0" + integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw== + +"@esbuild/sunos-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30" + integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA== + +"@esbuild/win32-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae" + integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A== + +"@esbuild/win32-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67" + integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ== + +"@esbuild/win32-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae" + integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== + +"@fortawesome/fontawesome-free@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-6.5.1.tgz#55cc8410abf1003b726324661ce5b0d1c10de258" + integrity sha512-CNy5vSwN3fsUStPRLX7fUYojyuzoEMSXPl7zSLJ8TgtRfjv24LOnOWKT2zYwaHZCJGkdyRnTmstR0P+Ah503Gw== + +"@jridgewell/sourcemap-codec@^1.4.15": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@mdi/font@7.2.96": + version "7.2.96" + resolved "https://registry.yarnpkg.com/@mdi/font/-/font-7.2.96.tgz#af800d9fe3b424f85ad45e9baa755bd003ab4986" + integrity sha512-e//lmkmpFUMZKhmCY9zdjRe4zNXfbOIJnn6xveHbaV2kSw5aJ5dLXUxcRt1Gxfi7ZYpFLUWlkG2MGSFAiqAu7w== + +"@rollup/rollup-android-arm-eabi@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz#38c3abd1955a3c21d492af6b1a1dca4bb1d894d6" + integrity sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w== + +"@rollup/rollup-android-arm64@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz#3822e929f415627609e53b11cec9a4be806de0e2" + integrity sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ== + +"@rollup/rollup-darwin-arm64@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz#6c082de71f481f57df6cfa3701ab2a7afde96f69" + integrity sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ== + +"@rollup/rollup-darwin-x64@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz#c34ca0d31f3c46a22c9afa0e944403eea0edcfd8" + integrity sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg== + +"@rollup/rollup-linux-arm-gnueabihf@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz#48e899c1e438629c072889b824a98787a7c2362d" + integrity sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA== + +"@rollup/rollup-linux-arm64-gnu@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz#788c2698a119dc229062d40da6ada8a090a73a68" + integrity sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA== + +"@rollup/rollup-linux-arm64-musl@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz#3882a4e3a564af9e55804beeb67076857b035ab7" + integrity sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ== + +"@rollup/rollup-linux-riscv64-gnu@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz#0c6ad792e1195c12bfae634425a3d2aa0fe93ab7" + integrity sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw== + +"@rollup/rollup-linux-x64-gnu@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz#9d62485ea0f18d8674033b57aa14fb758f6ec6e3" + integrity sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA== + +"@rollup/rollup-linux-x64-musl@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz#50e8167e28b33c977c1f813def2b2074d1435e05" + integrity sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw== + +"@rollup/rollup-win32-arm64-msvc@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz#68d233272a2004429124494121a42c4aebdc5b8e" + integrity sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw== + +"@rollup/rollup-win32-ia32-msvc@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz#366ca62221d1689e3b55a03f4ae12ae9ba595d40" + integrity sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA== + +"@rollup/rollup-win32-x64-msvc@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz#9ffdf9ed133a7464f4ae187eb9e1294413fab235" + integrity sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg== + +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + +"@tsconfig/node18@^18.2.0": + version "18.2.2" + resolved "https://registry.yarnpkg.com/@tsconfig/node18/-/node18-18.2.2.tgz#81fb16ecff0d400b1cbadbf76713b50f331029ce" + integrity sha512-d6McJeGsuoRlwWZmVIeE8CUA27lu6jLjvv1JzqmpsytOYYbVi1tHZEnwCNVOXnj4pyLvneZlFlpXUK+X9wBWyw== + +"@types/estree@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + +"@types/jsdom@^21.1.1": + version "21.1.6" + resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-21.1.6.tgz#bcbc7b245787ea863f3da1ef19aa1dcfb9271a1b" + integrity sha512-/7kkMsC+/kMs7gAYmmBR9P0vGTnOoLhQhyhQJSlXGI5bzTHp6xdo0TtKWQAsz6pmSAeVqKSbqeyP6hytqr9FDw== + dependencies: + "@types/node" "*" + "@types/tough-cookie" "*" + parse5 "^7.0.0" + +"@types/luxon@^3.4.2": + version "3.4.2" + resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-3.4.2.tgz#e4fc7214a420173cea47739c33cdf10874694db7" + integrity sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA== + +"@types/node@*": + version "20.11.19" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.19.tgz#b466de054e9cb5b3831bee38938de64ac7f81195" + integrity sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ== + dependencies: + undici-types "~5.26.4" + +"@types/node@^18.17.5": + version "18.19.17" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.17.tgz#a581a9fb4b2cfdbc61f008804f4436b2d5c40354" + integrity sha512-SzyGKgwPzuWp2SHhlpXKzCX0pIOfcI4V2eF37nNBJOhwlegQ83omtVQ1XxZpDE06V/d6AQvfQdPfnw0tRC//Ng== + dependencies: + undici-types "~5.26.4" + +"@types/tough-cookie@*": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" + integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== + +"@types/web-bluetooth@^0.0.20": + version "0.0.20" + resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz#f066abfcd1cbe66267cdbbf0de010d8a41b41597" + integrity sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow== + +"@vitejs/plugin-vue@^5.0.3": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz#508d6a0f2440f86945835d903fcc0d95d1bb8a37" + integrity sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ== + +"@volar/language-core@1.11.1", "@volar/language-core@~1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@volar/language-core/-/language-core-1.11.1.tgz#ecdf12ea8dc35fb8549e517991abcbf449a5ad4f" + integrity sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw== + dependencies: + "@volar/source-map" "1.11.1" + +"@volar/source-map@1.11.1", "@volar/source-map@~1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-1.11.1.tgz#535b0328d9e2b7a91dff846cab4058e191f4452f" + integrity sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg== + dependencies: + muggle-string "^0.3.1" + +"@volar/typescript@~1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@volar/typescript/-/typescript-1.11.1.tgz#ba86c6f326d88e249c7f5cfe4b765be3946fd627" + integrity sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ== + dependencies: + "@volar/language-core" "1.11.1" + path-browserify "^1.0.1" + +"@vue/compiler-core@3.4.19": + version "3.4.19" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.19.tgz#3161b1ede69da00f3ce8155dfab907a3eaa0515e" + integrity sha512-gj81785z0JNzRcU0Mq98E56e4ltO1yf8k5PQ+tV/7YHnbZkrM0fyFyuttnN8ngJZjbpofWE/m4qjKBiLl8Ju4w== + dependencies: + "@babel/parser" "^7.23.9" + "@vue/shared" "3.4.19" + entities "^4.5.0" + estree-walker "^2.0.2" + source-map-js "^1.0.2" + +"@vue/compiler-dom@3.4.19", "@vue/compiler-dom@^3.3.0": + version "3.4.19" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.19.tgz#2457e57e978f431e3b5fd11fc50a3e92d5816f9a" + integrity sha512-vm6+cogWrshjqEHTzIDCp72DKtea8Ry/QVpQRYoyTIg9k7QZDX6D8+HGURjtmatfgM8xgCFtJJaOlCaRYRK3QA== + dependencies: + "@vue/compiler-core" "3.4.19" + "@vue/shared" "3.4.19" + +"@vue/compiler-sfc@3.4.19": + version "3.4.19" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.19.tgz#33b238ded6d63e51f6a7048b742626f6007df129" + integrity sha512-LQ3U4SN0DlvV0xhr1lUsgLCYlwQfUfetyPxkKYu7dkfvx7g3ojrGAkw0AERLOKYXuAGnqFsEuytkdcComei3Yg== + dependencies: + "@babel/parser" "^7.23.9" + "@vue/compiler-core" "3.4.19" + "@vue/compiler-dom" "3.4.19" + "@vue/compiler-ssr" "3.4.19" + "@vue/shared" "3.4.19" + estree-walker "^2.0.2" + magic-string "^0.30.6" + postcss "^8.4.33" + source-map-js "^1.0.2" + +"@vue/compiler-ssr@3.4.19": + version "3.4.19" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.19.tgz#1f8ee06005ebbaa354f8783fad84e9f7ea4a69c2" + integrity sha512-P0PLKC4+u4OMJ8sinba/5Z/iDT84uMRRlrWzadgLA69opCpI1gG4N55qDSC+dedwq2fJtzmGald05LWR5TFfLw== + dependencies: + "@vue/compiler-dom" "3.4.19" + "@vue/shared" "3.4.19" + +"@vue/devtools-api@^6.5.0": + version "6.6.1" + resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.6.1.tgz#7c14346383751d9f6ad4bea0963245b30220ef83" + integrity sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA== + +"@vue/language-core@1.8.27": + version "1.8.27" + resolved "https://registry.yarnpkg.com/@vue/language-core/-/language-core-1.8.27.tgz#2ca6892cb524e024a44e554e4c55d7a23e72263f" + integrity sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA== + dependencies: + "@volar/language-core" "~1.11.1" + "@volar/source-map" "~1.11.1" + "@vue/compiler-dom" "^3.3.0" + "@vue/shared" "^3.3.0" + computeds "^0.0.1" + minimatch "^9.0.3" + muggle-string "^0.3.1" + path-browserify "^1.0.1" + vue-template-compiler "^2.7.14" + +"@vue/reactivity@3.4.19": + version "3.4.19" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.4.19.tgz#8cf335d97d07881d8184cb23289289dc18b03f60" + integrity sha512-+VcwrQvLZgEclGZRHx4O2XhyEEcKaBi50WbxdVItEezUf4fqRh838Ix6amWTdX0CNb/b6t3Gkz3eOebfcSt+UA== + dependencies: + "@vue/shared" "3.4.19" + +"@vue/runtime-core@3.4.19": + version "3.4.19" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.4.19.tgz#ef10357fdf3afdf68523b55424541000105e2aeb" + integrity sha512-/Z3tFwOrerJB/oyutmJGoYbuoadphDcJAd5jOuJE86THNZji9pYjZroQ2NFsZkTxOq0GJbb+s2kxTYToDiyZzw== + dependencies: + "@vue/reactivity" "3.4.19" + "@vue/shared" "3.4.19" + +"@vue/runtime-dom@3.4.19": + version "3.4.19" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.4.19.tgz#079141e31d9f47515b9595f29843d51011f88739" + integrity sha512-IyZzIDqfNCF0OyZOauL+F4yzjMPN2rPd8nhqPP2N1lBn3kYqJpPHHru+83Rkvo2lHz5mW+rEeIMEF9qY3PB94g== + dependencies: + "@vue/runtime-core" "3.4.19" + "@vue/shared" "3.4.19" + csstype "^3.1.3" + +"@vue/server-renderer@3.4.19": + version "3.4.19" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.4.19.tgz#e6f8ff5268d0758766ca9835375218924d5f0eb6" + integrity sha512-eAj2p0c429RZyyhtMRnttjcSToch+kTWxFPHlzGMkR28ZbF1PDlTcmGmlDxccBuqNd9iOQ7xPRPAGgPVj+YpQw== + dependencies: + "@vue/compiler-ssr" "3.4.19" + "@vue/shared" "3.4.19" + +"@vue/shared@3.4.19", "@vue/shared@^3.3.0": + version "3.4.19" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.19.tgz#28105147811bcf1e6612bf1c9ab0c6d91ada019c" + integrity sha512-/KliRRHMF6LoiThEy+4c1Z4KB/gbPrGjWwJR+crg2otgrf/egKzRaCPvJ51S5oetgsgXLfc4Rm5ZgrKHZrtMSw== + +"@vue/tsconfig@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@vue/tsconfig/-/tsconfig-0.4.0.tgz#f01e2f6089b5098136fb084a0dd0cdd4533b72b0" + integrity sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg== + +"@vuetify/loader-shared@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@vuetify/loader-shared/-/loader-shared-2.0.1.tgz#4bb50ce6455b1c37958a58a63cc32e4ae6829287" + integrity sha512-zy5/ohEO7RcJaWYu2Xiy8TBEOkTb42XvWvSAJwXAtY8OlwqyGhzzBp9OvMVjLGIuFXumBpXKlsaVIkeN0OWWSw== + dependencies: + upath "^2.0.1" + +"@vueuse/core@^10.9.0": + version "10.9.0" + resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.9.0.tgz#7d779a95cf0189de176fee63cee4ba44b3c85d64" + integrity sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg== + dependencies: + "@types/web-bluetooth" "^0.0.20" + "@vueuse/metadata" "10.9.0" + "@vueuse/shared" "10.9.0" + vue-demi ">=0.14.7" + +"@vueuse/metadata@10.9.0": + version "10.9.0" + resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-10.9.0.tgz#769a1a9db65daac15cf98084cbf7819ed3758620" + integrity sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA== + +"@vueuse/shared@10.9.0": + version "10.9.0" + resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-10.9.0.tgz#13af2a348de15d07b7be2fd0c7fc9853a69d8fe0" + integrity sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw== + dependencies: + vue-demi ">=0.14.7" + +abab@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +computeds@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/computeds/-/computeds-0.0.1.tgz#215b08a4ba3e08a11ff6eee5d6d8d7166a97ce2e" + integrity sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q== + +cssfilter@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" + integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw== + +cssstyle@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-3.0.0.tgz#17ca9c87d26eac764bb8cfd00583cff21ce0277a" + integrity sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg== + dependencies: + rrweb-cssom "^0.6.0" + +csstype@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +data-urls@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-4.0.0.tgz#333a454eca6f9a5b7b0f1013ff89074c3f522dd4" + integrity sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g== + dependencies: + abab "^2.0.6" + whatwg-mimetype "^3.0.0" + whatwg-url "^12.0.0" + +de-indent@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== + +debug@4, debug@^4.3.3: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decimal.js@^10.4.3: + version "10.4.3" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +domexception@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" + integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== + dependencies: + webidl-conversions "^7.0.0" + +entities@^4.4.0, entities@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +esbuild@^0.19.3: + version "0.19.12" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" + integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg== + optionalDependencies: + "@esbuild/aix-ppc64" "0.19.12" + "@esbuild/android-arm" "0.19.12" + "@esbuild/android-arm64" "0.19.12" + "@esbuild/android-x64" "0.19.12" + "@esbuild/darwin-arm64" "0.19.12" + "@esbuild/darwin-x64" "0.19.12" + "@esbuild/freebsd-arm64" "0.19.12" + "@esbuild/freebsd-x64" "0.19.12" + "@esbuild/linux-arm" "0.19.12" + "@esbuild/linux-arm64" "0.19.12" + "@esbuild/linux-ia32" "0.19.12" + "@esbuild/linux-loong64" "0.19.12" + "@esbuild/linux-mips64el" "0.19.12" + "@esbuild/linux-ppc64" "0.19.12" + "@esbuild/linux-riscv64" "0.19.12" + "@esbuild/linux-s390x" "0.19.12" + "@esbuild/linux-x64" "0.19.12" + "@esbuild/netbsd-x64" "0.19.12" + "@esbuild/openbsd-x64" "0.19.12" + "@esbuild/sunos-x64" "0.19.12" + "@esbuild/win32-arm64" "0.19.12" + "@esbuild/win32-ia32" "0.19.12" + "@esbuild/win32-x64" "0.19.12" + +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +html-encoding-sniffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== + dependencies: + whatwg-encoding "^2.0.0" + +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + +https-proxy-agent@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +iconv-lite@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +jsdom@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-22.1.0.tgz#0fca6d1a37fbeb7f4aac93d1090d782c56b611c8" + integrity sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw== + dependencies: + abab "^2.0.6" + cssstyle "^3.0.0" + data-urls "^4.0.0" + decimal.js "^10.4.3" + domexception "^4.0.0" + form-data "^4.0.0" + html-encoding-sniffer "^3.0.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.1" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.4" + parse5 "^7.1.2" + rrweb-cssom "^0.6.0" + saxes "^6.0.0" + symbol-tree "^3.2.4" + tough-cookie "^4.1.2" + w3c-xmlserializer "^4.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^2.0.0" + whatwg-mimetype "^3.0.0" + whatwg-url "^12.0.1" + ws "^8.13.0" + xml-name-validator "^4.0.0" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +luxon@^3.4.4: + version "3.4.4" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.4.4.tgz#cf20dc27dc532ba41a169c43fdcc0063601577af" + integrity sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA== + +magic-string@^0.30.6: + version "0.30.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.7.tgz#0cecd0527d473298679da95a2d7aeb8c64048505" + integrity sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + +mavon-editor@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mavon-editor/-/mavon-editor-3.0.1.tgz#0c2660569ded5b29e59d0e429af61eb618783a90" + integrity sha512-973cYCwv+AB+fcecsU6Ua6UXATxDMaY0Q7QzKQ/GmRW1sg+3DolZDnCGXth7XHDgrmqKTO57N42fVYujt0wfFw== + dependencies: + xss "^1.0.10" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +minimatch@^9.0.3: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +muggle-string@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/muggle-string/-/muggle-string-0.3.1.tgz#e524312eb1728c63dd0b2ac49e3282e6ed85963a" + integrity sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg== + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +nwsapi@^2.2.4: + version "2.2.7" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" + integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== + +parse5@^7.0.0, parse5@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + dependencies: + entities "^4.4.0" + +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +pinia@^2.1.7: + version "2.1.7" + resolved "https://registry.yarnpkg.com/pinia/-/pinia-2.1.7.tgz#4cf5420d9324ca00b7b4984d3fbf693222115bbc" + integrity sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ== + dependencies: + "@vue/devtools-api" "^6.5.0" + vue-demi ">=0.14.5" + +postcss@^8.4.33, postcss@^8.4.35: + version "8.4.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" + integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +psl@^1.1.33: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +punycode@^2.1.1, punycode@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +rollup@^4.2.0: + version "4.12.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.12.0.tgz#0b6d1e5f3d46bbcf244deec41a7421dc54cc45b5" + integrity sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q== + dependencies: + "@types/estree" "1.0.5" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.12.0" + "@rollup/rollup-android-arm64" "4.12.0" + "@rollup/rollup-darwin-arm64" "4.12.0" + "@rollup/rollup-darwin-x64" "4.12.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.12.0" + "@rollup/rollup-linux-arm64-gnu" "4.12.0" + "@rollup/rollup-linux-arm64-musl" "4.12.0" + "@rollup/rollup-linux-riscv64-gnu" "4.12.0" + "@rollup/rollup-linux-x64-gnu" "4.12.0" + "@rollup/rollup-linux-x64-musl" "4.12.0" + "@rollup/rollup-win32-arm64-msvc" "4.12.0" + "@rollup/rollup-win32-ia32-msvc" "4.12.0" + "@rollup/rollup-win32-x64-msvc" "4.12.0" + fsevents "~2.3.2" + +rrweb-cssom@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz#ed298055b97cbddcdeb278f904857629dec5e0e1" + integrity sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw== + +"safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +saxes@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" + integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== + dependencies: + xmlchars "^2.2.0" + +semver@^7.5.4: + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== + dependencies: + lru-cache "^6.0.0" + +sortablejs@1.14.0: + version "1.14.0" + resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.14.0.tgz#6d2e17ccbdb25f464734df621d4f35d4ab35b3d8" + integrity sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w== + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +tough-cookie@^4.1.2: + version "4.1.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" + integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + +tr46@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-4.1.1.tgz#281a758dcc82aeb4fe38c7dfe4d11a395aac8469" + integrity sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw== + dependencies: + punycode "^2.3.0" + +typescript@^5.2.2: + version "5.3.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" + integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + +upath@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" + integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== + +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +vite-plugin-vuetify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/vite-plugin-vuetify/-/vite-plugin-vuetify-2.0.1.tgz#172ffb6c46fec469fa96b3df03fd11b90d48f5d6" + integrity sha512-GlRVAruohE8b0FqmeYYh1cYg3n8THGOv066uMA44qLv9uhUxSLw55CS7fi2yU0wH363TJ2vq36zUsPTjRFrjGQ== + dependencies: + "@vuetify/loader-shared" "^2.0.1" + debug "^4.3.3" + upath "^2.0.1" + +vite@^5.1.0: + version "5.1.3" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.1.3.tgz#dd072653a80225702265550a4700561740dfde55" + integrity sha512-UfmUD36DKkqhi/F75RrxvPpry+9+tTkrXfMNZD+SboZqBCMsxKtO52XeGzzuh7ioz+Eo/SYDBbdb0Z7vgcDJew== + dependencies: + esbuild "^0.19.3" + postcss "^8.4.35" + rollup "^4.2.0" + optionalDependencies: + fsevents "~2.3.3" + +vue-demi@>=0.14.5, vue-demi@>=0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.7.tgz#8317536b3ef74c5b09f268f7782e70194567d8f2" + integrity sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA== + +vue-multiselect@^3.0.0-beta.3: + version "3.0.0-beta.3" + resolved "https://registry.yarnpkg.com/vue-multiselect/-/vue-multiselect-3.0.0-beta.3.tgz#b1348238a84c435582c3f46f2a9c045b29bb976c" + integrity sha512-P7Fx+ovVF7WMERSZ0lw6N3p4H4bnQ3NcaY3ORjzFPv0r/6lpIqvFWmK9Xnwze9mgAvmNV1foI1VWrBmjnfBTLQ== + +vue-router@4: + version "4.2.5" + resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.2.5.tgz#b9e3e08f1bd9ea363fdd173032620bc50cf0e98a" + integrity sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw== + dependencies: + "@vue/devtools-api" "^6.5.0" + +vue-template-compiler@^2.7.14: + version "2.7.16" + resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz#c81b2d47753264c77ac03b9966a46637482bb03b" + integrity sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ== + dependencies: + de-indent "^1.0.2" + he "^1.2.0" + +vue-tsc@^1.8.27: + version "1.8.27" + resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-1.8.27.tgz#feb2bb1eef9be28017bb9e95e2bbd1ebdd48481c" + integrity sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg== + dependencies: + "@volar/typescript" "~1.11.1" + "@vue/language-core" "1.8.27" + semver "^7.5.4" + +vue@^3.4.15: + version "3.4.19" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.4.19.tgz#f9ae0a44db86628548736ff04152830726a97263" + integrity sha512-W/7Fc9KUkajFU8dBeDluM4sRGc/aa4YJnOYck8dkjgZoXtVsn3OeTGni66FV1l3+nvPA7VBFYtPioaGKUmEADw== + dependencies: + "@vue/compiler-dom" "3.4.19" + "@vue/compiler-sfc" "3.4.19" + "@vue/runtime-dom" "3.4.19" + "@vue/server-renderer" "3.4.19" + "@vue/shared" "3.4.19" + +vuedraggable@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/vuedraggable/-/vuedraggable-4.1.0.tgz#edece68adb8a4d9e06accff9dfc9040e66852270" + integrity sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww== + dependencies: + sortablejs "1.14.0" + +vuetify@^3.5.8: + version "3.5.8" + resolved "https://registry.yarnpkg.com/vuetify/-/vuetify-3.5.8.tgz#bc8f08dfd3314640e7b5d43b50138a26d650cbbf" + integrity sha512-8nGS+lKejZkev55HFwIfsRt+9fOqbeDQNmXxfmLKAlnUT8FtynVwbjAwHMtX/OQAQ3ZwRaR1ptqQQmx3OgxzbQ== + +w3c-xmlserializer@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073" + integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== + dependencies: + xml-name-validator "^4.0.0" + +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + +whatwg-encoding@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== + dependencies: + iconv-lite "0.6.3" + +whatwg-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== + +whatwg-url@^12.0.0, whatwg-url@^12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-12.0.1.tgz#fd7bcc71192e7c3a2a97b9a8d6b094853ed8773c" + integrity sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ== + dependencies: + tr46 "^4.1.1" + webidl-conversions "^7.0.0" + +ws@^8.13.0: + version "8.16.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" + integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== + +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xss@^1.0.10: + version "1.0.14" + resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.14.tgz#4f3efbde75ad0d82e9921cc3c95e6590dd336694" + integrity sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw== + dependencies: + commander "^2.20.3" + cssfilter "0.0.10" + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== diff --git a/yarn.lock b/yarn.lock index fb57ccd13..5ffa6c830 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,3 +2,34 @@ # yarn lockfile v1 +"@types/web-bluetooth@^0.0.20": + version "0.0.20" + resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz#f066abfcd1cbe66267cdbbf0de010d8a41b41597" + integrity sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow== + +"@vueuse/core@^10.9.0": + version "10.9.0" + resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.9.0.tgz#7d779a95cf0189de176fee63cee4ba44b3c85d64" + integrity sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg== + dependencies: + "@types/web-bluetooth" "^0.0.20" + "@vueuse/metadata" "10.9.0" + "@vueuse/shared" "10.9.0" + vue-demi ">=0.14.7" + +"@vueuse/metadata@10.9.0": + version "10.9.0" + resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-10.9.0.tgz#769a1a9db65daac15cf98084cbf7819ed3758620" + integrity sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA== + +"@vueuse/shared@10.9.0": + version "10.9.0" + resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-10.9.0.tgz#13af2a348de15d07b7be2fd0c7fc9853a69d8fe0" + integrity sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw== + dependencies: + vue-demi ">=0.14.7" + +vue-demi@>=0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.7.tgz#8317536b3ef74c5b09f268f7782e70194567d8f2" + integrity sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==