buchi-stdesign commited on
Commit
08e6e45
1 Parent(s): 756d99b

Upload 221 files

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .dockerignore +18 -0
  2. .gitattributes +35 -35
  3. .gitignore +33 -0
  4. Dockerfile +23 -0
  5. README.md +10 -12
  6. bert/deberta-v2-large-japanese-char-wwm/.gitattributes +34 -0
  7. bert/deberta-v2-large-japanese-char-wwm/README.md +89 -0
  8. bert/deberta-v2-large-japanese-char-wwm/config.json +37 -0
  9. bert/deberta-v2-large-japanese-char-wwm/pytorch_model.bin +3 -0
  10. bert/deberta-v2-large-japanese-char-wwm/special_tokens_map.json +7 -0
  11. bert/deberta-v2-large-japanese-char-wwm/tokenizer_config.json +19 -0
  12. bert/deberta-v2-large-japanese-char-wwm/vocab.txt +0 -0
  13. config.py +307 -0
  14. configs/config.json +73 -0
  15. configs/config_jp_extra.json +80 -0
  16. configs/default_paths.yml +8 -0
  17. configs/paths.yml +8 -0
  18. default_config.yml +70 -0
  19. dict_data/default.csv +5 -0
  20. initialize.py +147 -0
  21. model_assets/.gitignore +2 -0
  22. model_assets/amitaro/amitaro.safetensors +3 -0
  23. model_assets/amitaro/config.json +91 -0
  24. model_assets/amitaro/style_vectors.npy +3 -0
  25. model_assets/jvnv-F1-jp/config.json +92 -0
  26. model_assets/jvnv-F1-jp/jvnv-F1-jp_e160_s14000.safetensors +3 -0
  27. model_assets/jvnv-F1-jp/style_vectors.npy +3 -0
  28. model_assets/jvnv-F2-jp/config.json +92 -0
  29. model_assets/jvnv-F2-jp/jvnv-F2_e166_s20000.safetensors +3 -0
  30. model_assets/jvnv-F2-jp/style_vectors.npy +3 -0
  31. model_assets/jvnv-M1-jp/config.json +92 -0
  32. model_assets/jvnv-M1-jp/jvnv-M1-jp_e158_s14000.safetensors +3 -0
  33. model_assets/jvnv-M1-jp/style_vectors.npy +3 -0
  34. model_assets/jvnv-M2-jp/config.json +92 -0
  35. model_assets/jvnv-M2-jp/jvnv-M2-jp_e159_s17000.safetensors +3 -0
  36. model_assets/jvnv-M2-jp/style_vectors.npy +3 -0
  37. model_assets/koharune-ami/config.json +92 -0
  38. model_assets/koharune-ami/koharune-ami.safetensors +3 -0
  39. model_assets/koharune-ami/style_vectors.npy +3 -0
  40. requirements.txt +24 -0
  41. server_editor.py +450 -0
  42. static/404.html +1 -0
  43. static/_next/static/7Ebwtq-c5RXrtRkbNZ_HI/_buildManifest.js +1 -0
  44. static/_next/static/7Ebwtq-c5RXrtRkbNZ_HI/_ssgManifest.js +1 -0
  45. static/_next/static/chunks/154-fb54c66a309416b5.js +14 -0
  46. static/_next/static/chunks/23-c6362522adba14e9.js +0 -0
  47. static/_next/static/chunks/257-eff74de43c26e044.js +0 -0
  48. static/_next/static/chunks/450-e98783cfbe10f77f.js +23 -0
  49. static/_next/static/chunks/app/_not-found/page-88e5ec60d72eb81e.js +1 -0
  50. static/_next/static/chunks/app/layout-003f3f0c2945f2e7.js +1 -0
.dockerignore ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Dockerfile.deploy用の.dockerignore
2
+ # 日本語のJP-Extraのエディター稼働のみに必要なファイルを指定する
3
+
4
+ *
5
+
6
+ !/style_bert_vits2/
7
+
8
+ !/bert/deberta-v2-large-japanese-char-wwm/
9
+ !/configs/
10
+ !/dict_data/default.csv
11
+ !/model_assets/
12
+ !/static/
13
+
14
+ !/config.py
15
+ !/default_config.yml
16
+ !/initialize.py
17
+ !/requirements.txt
18
+ !/server_editor.py
.gitattributes CHANGED
@@ -1,35 +1,35 @@
1
- *.7z filter=lfs diff=lfs merge=lfs -text
2
- *.arrow filter=lfs diff=lfs merge=lfs -text
3
- *.bin filter=lfs diff=lfs merge=lfs -text
4
- *.bz2 filter=lfs diff=lfs merge=lfs -text
5
- *.ckpt filter=lfs diff=lfs merge=lfs -text
6
- *.ftz filter=lfs diff=lfs merge=lfs -text
7
- *.gz filter=lfs diff=lfs merge=lfs -text
8
- *.h5 filter=lfs diff=lfs merge=lfs -text
9
- *.joblib filter=lfs diff=lfs merge=lfs -text
10
- *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
- *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
- *.model filter=lfs diff=lfs merge=lfs -text
13
- *.msgpack filter=lfs diff=lfs merge=lfs -text
14
- *.npy filter=lfs diff=lfs merge=lfs -text
15
- *.npz filter=lfs diff=lfs merge=lfs -text
16
- *.onnx filter=lfs diff=lfs merge=lfs -text
17
- *.ot filter=lfs diff=lfs merge=lfs -text
18
- *.parquet filter=lfs diff=lfs merge=lfs -text
19
- *.pb filter=lfs diff=lfs merge=lfs -text
20
- *.pickle filter=lfs diff=lfs merge=lfs -text
21
- *.pkl filter=lfs diff=lfs merge=lfs -text
22
- *.pt filter=lfs diff=lfs merge=lfs -text
23
- *.pth filter=lfs diff=lfs merge=lfs -text
24
- *.rar filter=lfs diff=lfs merge=lfs -text
25
- *.safetensors filter=lfs diff=lfs merge=lfs -text
26
- saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
- *.tar.* filter=lfs diff=lfs merge=lfs -text
28
- *.tar filter=lfs diff=lfs merge=lfs -text
29
- *.tflite filter=lfs diff=lfs merge=lfs -text
30
- *.tgz filter=lfs diff=lfs merge=lfs -text
31
- *.wasm filter=lfs diff=lfs merge=lfs -text
32
- *.xz filter=lfs diff=lfs merge=lfs -text
33
- *.zip filter=lfs diff=lfs merge=lfs -text
34
- *.zst filter=lfs diff=lfs merge=lfs -text
35
- *tfevents* filter=lfs diff=lfs merge=lfs -text
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
.gitignore ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .vscode/
2
+
3
+ __pycache__/
4
+ venv/
5
+ .ipynb_checkpoints/
6
+
7
+ /*.yml
8
+ !/default_config.yml
9
+ # /bert/*/*.bin
10
+ /bert/*/*.h5
11
+ /bert/*/*.model
12
+ /bert/*/*.safetensors
13
+ /bert/*/*.msgpack
14
+
15
+ /pretrained/*.safetensors
16
+ /pretrained/*.pth
17
+
18
+ /pretrained_jp_extra/*.safetensors
19
+ /pretrained_jp_extra/*.pth
20
+
21
+ /slm/*/*.bin
22
+
23
+ /scripts/test/
24
+ *.zip
25
+ *.csv
26
+ *.bak
27
+ /mos_results/
28
+
29
+ safetensors.ipynb
30
+ *.wav
31
+
32
+ # pyopenjtalk's dictionary
33
+ *.dic
Dockerfile ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Hugging face spaces (CPU) でエディタ (server_editor.py) のデプロイ用
2
+
3
+ # See https://huggingface.co/docs/hub/spaces-sdks-docker-first-demo
4
+
5
+ FROM python:3.10
6
+
7
+ RUN useradd -m -u 1000 user
8
+
9
+ USER user
10
+
11
+ ENV HOME=/home/user \
12
+ PATH=/home/user/.local/bin:$PATH
13
+
14
+ WORKDIR $HOME/app
15
+
16
+ RUN pip install --no-cache-dir --upgrade pip
17
+
18
+ COPY --chown=user . $HOME/app
19
+
20
+ RUN pip install --no-cache-dir -r $HOME/app/requirements.txt
21
+
22
+ # 必要に応じて制限を変更してください
23
+ CMD ["python", "server_editor.py", "--line_length", "50", "--line_count", "3", "--skip_static_files", "--skip_default_models", "--port", "7860"]
README.md CHANGED
@@ -1,12 +1,10 @@
1
- ---
2
- title: SBV2 Editor Demo
3
- emoji:
4
- colorFrom: pink
5
- colorTo: gray
6
- sdk: gradio
7
- sdk_version: 4.44.0
8
- app_file: app.py
9
- pinned: false
10
- ---
11
-
12
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
+ ---
2
+ title: Style Bert VITS2 Editor Demo
3
+ emoji: 😊🎙️📖
4
+ colorFrom: gray
5
+ colorTo: yellow
6
+ sdk: docker
7
+ pinned: false
8
+ ---
9
+
10
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
bert/deberta-v2-large-japanese-char-wwm/.gitattributes ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tflite filter=lfs diff=lfs merge=lfs -text
29
+ *.tgz filter=lfs diff=lfs merge=lfs -text
30
+ *.wasm filter=lfs diff=lfs merge=lfs -text
31
+ *.xz filter=lfs diff=lfs merge=lfs -text
32
+ *.zip filter=lfs diff=lfs merge=lfs -text
33
+ *.zst filter=lfs diff=lfs merge=lfs -text
34
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
bert/deberta-v2-large-japanese-char-wwm/README.md ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language: ja
3
+ license: cc-by-sa-4.0
4
+ library_name: transformers
5
+ tags:
6
+ - deberta
7
+ - deberta-v2
8
+ - fill-mask
9
+ - character
10
+ - wwm
11
+ datasets:
12
+ - wikipedia
13
+ - cc100
14
+ - oscar
15
+ metrics:
16
+ - accuracy
17
+ mask_token: "[MASK]"
18
+ widget:
19
+ - text: "京都大学で自然言語処理を[MASK][MASK]する。"
20
+ ---
21
+
22
+ # Model Card for Japanese character-level DeBERTa V2 large
23
+
24
+ ## Model description
25
+
26
+ This is a Japanese DeBERTa V2 large model pre-trained on Japanese Wikipedia, the Japanese portion of CC-100, and the Japanese portion of OSCAR.
27
+ This model is trained with character-level tokenization and whole word masking.
28
+
29
+ ## How to use
30
+
31
+ You can use this model for masked language modeling as follows:
32
+
33
+ ```python
34
+ from transformers import AutoTokenizer, AutoModelForMaskedLM
35
+ tokenizer = AutoTokenizer.from_pretrained('ku-nlp/deberta-v2-large-japanese-char-wwm')
36
+ model = AutoModelForMaskedLM.from_pretrained('ku-nlp/deberta-v2-large-japanese-char-wwm')
37
+
38
+ sentence = '京都大学で自然言語処理を[MASK][MASK]する。'
39
+ encoding = tokenizer(sentence, return_tensors='pt')
40
+ ...
41
+ ```
42
+
43
+ You can also fine-tune this model on downstream tasks.
44
+
45
+ ## Tokenization
46
+
47
+ There is no need to tokenize texts in advance, and you can give raw texts to the tokenizer.
48
+ The texts are tokenized into character-level tokens by [sentencepiece](https://github.com/google/sentencepiece).
49
+
50
+ ## Training data
51
+
52
+ We used the following corpora for pre-training:
53
+
54
+ - Japanese Wikipedia (as of 20221020, 3.2GB, 27M sentences, 1.3M documents)
55
+ - Japanese portion of CC-100 (85GB, 619M sentences, 66M documents)
56
+ - Japanese portion of OSCAR (54GB, 326M sentences, 25M documents)
57
+
58
+ Note that we filtered out documents annotated with "header", "footer", or "noisy" tags in OSCAR.
59
+ Also note that Japanese Wikipedia was duplicated 10 times to make the total size of the corpus comparable to that of CC-100 and OSCAR. As a result, the total size of the training data is 171GB.
60
+
61
+ ## Training procedure
62
+
63
+ We first segmented texts in the corpora into words using [Juman++ 2.0.0-rc3](https://github.com/ku-nlp/jumanpp/releases/tag/v2.0.0-rc3) for whole word masking.
64
+ Then, we built a sentencepiece model with 22,012 tokens including all characters that appear in the training corpus.
65
+
66
+ We tokenized raw corpora into character-level subwords using the sentencepiece model and trained the Japanese DeBERTa model using [transformers](https://github.com/huggingface/transformers) library.
67
+ The training took 26 days using 16 NVIDIA A100-SXM4-40GB GPUs.
68
+
69
+ The following hyperparameters were used during pre-training:
70
+
71
+ - learning_rate: 1e-4
72
+ - per_device_train_batch_size: 26
73
+ - distributed_type: multi-GPU
74
+ - num_devices: 16
75
+ - gradient_accumulation_steps: 8
76
+ - total_train_batch_size: 3,328
77
+ - max_seq_length: 512
78
+ - optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-06
79
+ - lr_scheduler_type: linear schedule with warmup (lr = 0 at 300k steps)
80
+ - training_steps: 260,000
81
+ - warmup_steps: 10,000
82
+
83
+ The accuracy of the trained model on the masked language modeling task was 0.795.
84
+ The evaluation set consists of 5,000 randomly sampled documents from each of the training corpora.
85
+
86
+ ## Acknowledgments
87
+
88
+ This work was supported by Joint Usage/Research Center for Interdisciplinary Large-scale Information Infrastructures (JHPCN) through General Collaboration Project no. jh221004, "Developing a Platform for Constructing and Sharing of Large-Scale Japanese Language Models".
89
+ For training models, we used the mdx: a platform for the data-driven future.
bert/deberta-v2-large-japanese-char-wwm/config.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "DebertaV2ForMaskedLM"
4
+ ],
5
+ "attention_head_size": 64,
6
+ "attention_probs_dropout_prob": 0.1,
7
+ "conv_act": "gelu",
8
+ "conv_kernel_size": 3,
9
+ "hidden_act": "gelu",
10
+ "hidden_dropout_prob": 0.1,
11
+ "hidden_size": 1024,
12
+ "initializer_range": 0.02,
13
+ "intermediate_size": 4096,
14
+ "layer_norm_eps": 1e-07,
15
+ "max_position_embeddings": 512,
16
+ "max_relative_positions": -1,
17
+ "model_type": "deberta-v2",
18
+ "norm_rel_ebd": "layer_norm",
19
+ "num_attention_heads": 16,
20
+ "num_hidden_layers": 24,
21
+ "pad_token_id": 0,
22
+ "pooler_dropout": 0,
23
+ "pooler_hidden_act": "gelu",
24
+ "pooler_hidden_size": 1024,
25
+ "pos_att_type": [
26
+ "p2c",
27
+ "c2p"
28
+ ],
29
+ "position_biased_input": false,
30
+ "position_buckets": 256,
31
+ "relative_attention": true,
32
+ "share_att_key": true,
33
+ "torch_dtype": "float16",
34
+ "transformers_version": "4.25.1",
35
+ "type_vocab_size": 0,
36
+ "vocab_size": 22012
37
+ }
bert/deberta-v2-large-japanese-char-wwm/pytorch_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bf0dab8ad87bd7c22e85ec71e04f2240804fda6d33196157d6b5923af6ea1201
3
+ size 1318456639
bert/deberta-v2-large-japanese-char-wwm/special_tokens_map.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "cls_token": "[CLS]",
3
+ "mask_token": "[MASK]",
4
+ "pad_token": "[PAD]",
5
+ "sep_token": "[SEP]",
6
+ "unk_token": "[UNK]"
7
+ }
bert/deberta-v2-large-japanese-char-wwm/tokenizer_config.json ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cls_token": "[CLS]",
3
+ "do_lower_case": false,
4
+ "do_subword_tokenize": true,
5
+ "do_word_tokenize": true,
6
+ "jumanpp_kwargs": null,
7
+ "mask_token": "[MASK]",
8
+ "mecab_kwargs": null,
9
+ "model_max_length": 1000000000000000019884624838656,
10
+ "never_split": null,
11
+ "pad_token": "[PAD]",
12
+ "sep_token": "[SEP]",
13
+ "special_tokens_map_file": null,
14
+ "subword_tokenizer_type": "character",
15
+ "sudachi_kwargs": null,
16
+ "tokenizer_class": "BertJapaneseTokenizer",
17
+ "unk_token": "[UNK]",
18
+ "word_tokenizer_type": "basic"
19
+ }
bert/deberta-v2-large-japanese-char-wwm/vocab.txt ADDED
The diff for this file is too large to render. See raw diff
 
config.py ADDED
@@ -0,0 +1,307 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ @Desc: 全局配置文件读取
3
+ """
4
+
5
+ import shutil
6
+ from pathlib import Path
7
+ from typing import Any
8
+
9
+ import torch
10
+ import yaml
11
+
12
+ from style_bert_vits2.logging import logger
13
+
14
+
15
+ class PathConfig:
16
+ def __init__(self, dataset_root: str, assets_root: str):
17
+ self.dataset_root = Path(dataset_root)
18
+ self.assets_root = Path(assets_root)
19
+
20
+
21
+ # If not cuda available, set possible devices to cpu
22
+ cuda_available = torch.cuda.is_available()
23
+
24
+
25
+ class Resample_config:
26
+ """重采样配置"""
27
+
28
+ def __init__(self, in_dir: str, out_dir: str, sampling_rate: int = 44100):
29
+ self.sampling_rate = sampling_rate # 目标采样率
30
+ self.in_dir = Path(in_dir) # 待处理音频目录路径
31
+ self.out_dir = Path(out_dir) # 重采样输出路径
32
+
33
+ @classmethod
34
+ def from_dict(cls, dataset_path: Path, data: dict[str, Any]):
35
+ """从字典中生成实例"""
36
+
37
+ # 不检查路径是否有效,此逻辑在resample.py中处理
38
+ data["in_dir"] = dataset_path / data["in_dir"]
39
+ data["out_dir"] = dataset_path / data["out_dir"]
40
+
41
+ return cls(**data)
42
+
43
+
44
+ class Preprocess_text_config:
45
+ """数据预处理配置"""
46
+
47
+ def __init__(
48
+ self,
49
+ transcription_path: str,
50
+ cleaned_path: str,
51
+ train_path: str,
52
+ val_path: str,
53
+ config_path: str,
54
+ val_per_lang: int = 5,
55
+ max_val_total: int = 10000,
56
+ clean: bool = True,
57
+ ):
58
+ self.transcription_path = Path(transcription_path)
59
+ self.train_path = Path(train_path)
60
+ if cleaned_path == "" or cleaned_path is None:
61
+ self.cleaned_path = self.transcription_path.with_name(
62
+ self.transcription_path.name + ".cleaned"
63
+ )
64
+ else:
65
+ self.cleaned_path = Path(cleaned_path)
66
+ self.val_path = Path(val_path)
67
+ self.config_path = Path(config_path)
68
+ self.val_per_lang = val_per_lang
69
+ self.max_val_total = max_val_total
70
+ self.clean = clean
71
+
72
+ @classmethod
73
+ def from_dict(cls, dataset_path: Path, data: dict[str, Any]):
74
+ """从字典中生成实例"""
75
+
76
+ data["transcription_path"] = dataset_path / data["transcription_path"]
77
+ if data["cleaned_path"] == "" or data["cleaned_path"] is None:
78
+ data["cleaned_path"] = ""
79
+ else:
80
+ data["cleaned_path"] = dataset_path / data["cleaned_path"]
81
+ data["train_path"] = dataset_path / data["train_path"]
82
+ data["val_path"] = dataset_path / data["val_path"]
83
+ data["config_path"] = dataset_path / data["config_path"]
84
+
85
+ return cls(**data)
86
+
87
+
88
+ class Bert_gen_config:
89
+ """bert_gen 配置"""
90
+
91
+ def __init__(
92
+ self,
93
+ config_path: str,
94
+ num_processes: int = 1,
95
+ device: str = "cuda",
96
+ use_multi_device: bool = False,
97
+ ):
98
+ self.config_path = Path(config_path)
99
+ self.num_processes = num_processes
100
+ if not cuda_available:
101
+ device = "cpu"
102
+ self.device = device
103
+ self.use_multi_device = use_multi_device
104
+
105
+ @classmethod
106
+ def from_dict(cls, dataset_path: Path, data: dict[str, Any]):
107
+ data["config_path"] = dataset_path / data["config_path"]
108
+
109
+ return cls(**data)
110
+
111
+
112
+ class Style_gen_config:
113
+ """style_gen 配置"""
114
+
115
+ def __init__(
116
+ self,
117
+ config_path: str,
118
+ num_processes: int = 4,
119
+ device: str = "cuda",
120
+ ):
121
+ self.config_path = Path(config_path)
122
+ self.num_processes = num_processes
123
+ if not cuda_available:
124
+ device = "cpu"
125
+ self.device = device
126
+
127
+ @classmethod
128
+ def from_dict(cls, dataset_path: Path, data: dict[str, Any]):
129
+ data["config_path"] = dataset_path / data["config_path"]
130
+
131
+ return cls(**data)
132
+
133
+
134
+ class Train_ms_config:
135
+ """训练配置"""
136
+
137
+ def __init__(
138
+ self,
139
+ config_path: str,
140
+ env: dict[str, Any],
141
+ # base: Dict[str, any],
142
+ model_dir: str,
143
+ num_workers: int,
144
+ spec_cache: bool,
145
+ keep_ckpts: int,
146
+ ):
147
+ self.env = env # 需要加载的环境变量
148
+ # self.base = base # 底模配置
149
+ self.model_dir = Path(
150
+ model_dir
151
+ ) # 训练模型存储目录,该路径为相对于dataset_path的路径,而非项目根目录
152
+ self.config_path = Path(config_path) # 配置文件路径
153
+ self.num_workers = num_workers # worker数量
154
+ self.spec_cache = spec_cache # 是否启用spec缓存
155
+ self.keep_ckpts = keep_ckpts # ckpt数量
156
+
157
+ @classmethod
158
+ def from_dict(cls, dataset_path: Path, data: dict[str, Any]):
159
+ # data["model"] = os.path.join(dataset_path, data["model"])
160
+ data["config_path"] = dataset_path / data["config_path"]
161
+
162
+ return cls(**data)
163
+
164
+
165
+ class Webui_config:
166
+ """webui 配置 (for webui.py, not supported now)"""
167
+
168
+ def __init__(
169
+ self,
170
+ device: str,
171
+ model: str,
172
+ config_path: str,
173
+ language_identification_library: str,
174
+ port: int = 7860,
175
+ share: bool = False,
176
+ debug: bool = False,
177
+ ):
178
+ if not cuda_available:
179
+ device = "cpu"
180
+ self.device = device
181
+ self.model = Path(model)
182
+ self.config_path = Path(config_path)
183
+ self.port: int = port
184
+ self.share: bool = share
185
+ self.debug: bool = debug
186
+ self.language_identification_library: str = language_identification_library
187
+
188
+ @classmethod
189
+ def from_dict(cls, dataset_path: Path, data: dict[str, Any]):
190
+ data["config_path"] = dataset_path / data["config_path"]
191
+ data["model"] = dataset_path / data["model"]
192
+ return cls(**data)
193
+
194
+
195
+ class Server_config:
196
+ def __init__(
197
+ self,
198
+ port: int = 5000,
199
+ device: str = "cuda",
200
+ limit: int = 100,
201
+ language: str = "JP",
202
+ origins: list[str] = ["*"],
203
+ ):
204
+ self.port: int = port
205
+ if not cuda_available:
206
+ device = "cpu"
207
+ self.device: str = device
208
+ self.language: str = language
209
+ self.limit: int = limit
210
+ self.origins: list[str] = origins
211
+
212
+ @classmethod
213
+ def from_dict(cls, data: dict[str, Any]):
214
+ return cls(**data)
215
+
216
+
217
+ class Translate_config:
218
+ """翻译api配置"""
219
+
220
+ def __init__(self, app_key: str, secret_key: str):
221
+ self.app_key = app_key
222
+ self.secret_key = secret_key
223
+
224
+ @classmethod
225
+ def from_dict(cls, data: dict[str, Any]):
226
+ return cls(**data)
227
+
228
+
229
+ class Config:
230
+ def __init__(self, config_path: str, path_config: PathConfig):
231
+ if not Path(config_path).exists():
232
+ shutil.copy(src="default_config.yml", dst=config_path)
233
+ logger.info(
234
+ f"A configuration file {config_path} has been generated based on the default configuration file default_config.yml."
235
+ )
236
+ logger.info(
237
+ "Please do not modify default_config.yml. Instead, modify config.yml."
238
+ )
239
+ # sys.exit(0)
240
+ with open(config_path, encoding="utf-8") as file:
241
+ yaml_config: dict[str, Any] = yaml.safe_load(file.read())
242
+ model_name: str = yaml_config["model_name"]
243
+ self.model_name: str = model_name
244
+ if "dataset_path" in yaml_config:
245
+ dataset_path = Path(yaml_config["dataset_path"])
246
+ else:
247
+ dataset_path = path_config.dataset_root / model_name
248
+ self.dataset_path = dataset_path
249
+ self.dataset_root = path_config.dataset_root
250
+ self.assets_root = path_config.assets_root
251
+ self.out_dir = self.assets_root / model_name
252
+ self.resample_config: Resample_config = Resample_config.from_dict(
253
+ dataset_path, yaml_config["resample"]
254
+ )
255
+ self.preprocess_text_config: Preprocess_text_config = (
256
+ Preprocess_text_config.from_dict(
257
+ dataset_path, yaml_config["preprocess_text"]
258
+ )
259
+ )
260
+ self.bert_gen_config: Bert_gen_config = Bert_gen_config.from_dict(
261
+ dataset_path, yaml_config["bert_gen"]
262
+ )
263
+ self.style_gen_config: Style_gen_config = Style_gen_config.from_dict(
264
+ dataset_path, yaml_config["style_gen"]
265
+ )
266
+ self.train_ms_config: Train_ms_config = Train_ms_config.from_dict(
267
+ dataset_path, yaml_config["train_ms"]
268
+ )
269
+ self.webui_config: Webui_config = Webui_config.from_dict(
270
+ dataset_path, yaml_config["webui"]
271
+ )
272
+ self.server_config: Server_config = Server_config.from_dict(
273
+ yaml_config["server"]
274
+ )
275
+ # self.translate_config: Translate_config = Translate_config.from_dict(
276
+ # yaml_config["translate"]
277
+ # )
278
+
279
+
280
+ # Load and initialize the configuration
281
+
282
+
283
+ def get_path_config() -> PathConfig:
284
+ path_config_path = Path("configs/paths.yml")
285
+ if not path_config_path.exists():
286
+ shutil.copy(src="configs/default_paths.yml", dst=path_config_path)
287
+ logger.info(
288
+ f"A configuration file {path_config_path} has been generated based on the default configuration file default_paths.yml."
289
+ )
290
+ logger.info(
291
+ "Please do not modify configs/default_paths.yml. Instead, modify configs/paths.yml."
292
+ )
293
+ with open(path_config_path, encoding="utf-8") as file:
294
+ path_config_dict: dict[str, str] = yaml.safe_load(file.read())
295
+ return PathConfig(**path_config_dict)
296
+
297
+
298
+ def get_config() -> Config:
299
+ path_config = get_path_config()
300
+ try:
301
+ config = Config("config.yml", path_config)
302
+ except (TypeError, KeyError):
303
+ logger.warning("Old config.yml found. Replace it with default_config.yml.")
304
+ shutil.copy(src="default_config.yml", dst="config.yml")
305
+ config = Config("config.yml", path_config)
306
+
307
+ return config
configs/config.json ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model_name": "Dummy",
3
+ "train": {
4
+ "log_interval": 200,
5
+ "eval_interval": 1000,
6
+ "seed": 42,
7
+ "epochs": 1000,
8
+ "learning_rate": 0.0002,
9
+ "betas": [0.8, 0.99],
10
+ "eps": 1e-9,
11
+ "batch_size": 2,
12
+ "bf16_run": false,
13
+ "lr_decay": 0.99995,
14
+ "segment_size": 16384,
15
+ "init_lr_ratio": 1,
16
+ "warmup_epochs": 0,
17
+ "c_mel": 45,
18
+ "c_kl": 1.0,
19
+ "skip_optimizer": false,
20
+ "freeze_ZH_bert": false,
21
+ "freeze_JP_bert": false,
22
+ "freeze_EN_bert": false,
23
+ "freeze_style": false,
24
+ "freeze_encoder": false
25
+ },
26
+ "data": {
27
+ "use_jp_extra": false,
28
+ "training_files": "Data/Dummy/train.list",
29
+ "validation_files": "Data/Dummy/val.list",
30
+ "max_wav_value": 32768.0,
31
+ "sampling_rate": 44100,
32
+ "filter_length": 2048,
33
+ "hop_length": 512,
34
+ "win_length": 2048,
35
+ "n_mel_channels": 128,
36
+ "mel_fmin": 0.0,
37
+ "mel_fmax": null,
38
+ "add_blank": true,
39
+ "n_speakers": 1,
40
+ "cleaned_text": true,
41
+ "num_styles": 1,
42
+ "style2id": {
43
+ "Neutral": 0
44
+ }
45
+ },
46
+ "model": {
47
+ "use_spk_conditioned_encoder": true,
48
+ "use_noise_scaled_mas": true,
49
+ "use_mel_posterior_encoder": false,
50
+ "use_duration_discriminator": true,
51
+ "inter_channels": 192,
52
+ "hidden_channels": 192,
53
+ "filter_channels": 768,
54
+ "n_heads": 2,
55
+ "n_layers": 6,
56
+ "kernel_size": 3,
57
+ "p_dropout": 0.1,
58
+ "resblock": "1",
59
+ "resblock_kernel_sizes": [3, 7, 11],
60
+ "resblock_dilation_sizes": [
61
+ [1, 3, 5],
62
+ [1, 3, 5],
63
+ [1, 3, 5]
64
+ ],
65
+ "upsample_rates": [8, 8, 2, 2, 2],
66
+ "upsample_initial_channel": 512,
67
+ "upsample_kernel_sizes": [16, 16, 8, 2, 2],
68
+ "n_layers_q": 3,
69
+ "use_spectral_norm": false,
70
+ "gin_channels": 256
71
+ },
72
+ "version": "2.5.0"
73
+ }
configs/config_jp_extra.json ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model_name": "Dummy",
3
+ "train": {
4
+ "log_interval": 200,
5
+ "eval_interval": 1000,
6
+ "seed": 42,
7
+ "epochs": 1000,
8
+ "learning_rate": 0.0001,
9
+ "betas": [0.8, 0.99],
10
+ "eps": 1e-9,
11
+ "batch_size": 2,
12
+ "bf16_run": false,
13
+ "fp16_run": false,
14
+ "lr_decay": 0.99996,
15
+ "segment_size": 16384,
16
+ "init_lr_ratio": 1,
17
+ "warmup_epochs": 0,
18
+ "c_mel": 45,
19
+ "c_kl": 1.0,
20
+ "c_commit": 100,
21
+ "skip_optimizer": false,
22
+ "freeze_ZH_bert": false,
23
+ "freeze_JP_bert": false,
24
+ "freeze_EN_bert": false,
25
+ "freeze_emo": false,
26
+ "freeze_style": false,
27
+ "freeze_decoder": false
28
+ },
29
+ "data": {
30
+ "use_jp_extra": true,
31
+ "training_files": "Data/Dummy/train.list",
32
+ "validation_files": "Data/Dummy/val.list",
33
+ "max_wav_value": 32768.0,
34
+ "sampling_rate": 44100,
35
+ "filter_length": 2048,
36
+ "hop_length": 512,
37
+ "win_length": 2048,
38
+ "n_mel_channels": 128,
39
+ "mel_fmin": 0.0,
40
+ "mel_fmax": null,
41
+ "add_blank": true,
42
+ "n_speakers": 512,
43
+ "cleaned_text": true
44
+ },
45
+ "model": {
46
+ "use_spk_conditioned_encoder": true,
47
+ "use_noise_scaled_mas": true,
48
+ "use_mel_posterior_encoder": false,
49
+ "use_duration_discriminator": false,
50
+ "use_wavlm_discriminator": true,
51
+ "inter_channels": 192,
52
+ "hidden_channels": 192,
53
+ "filter_channels": 768,
54
+ "n_heads": 2,
55
+ "n_layers": 6,
56
+ "kernel_size": 3,
57
+ "p_dropout": 0.1,
58
+ "resblock": "1",
59
+ "resblock_kernel_sizes": [3, 7, 11],
60
+ "resblock_dilation_sizes": [
61
+ [1, 3, 5],
62
+ [1, 3, 5],
63
+ [1, 3, 5]
64
+ ],
65
+ "upsample_rates": [8, 8, 2, 2, 2],
66
+ "upsample_initial_channel": 512,
67
+ "upsample_kernel_sizes": [16, 16, 8, 2, 2],
68
+ "n_layers_q": 3,
69
+ "use_spectral_norm": false,
70
+ "gin_channels": 512,
71
+ "slm": {
72
+ "model": "./slm/wavlm-base-plus",
73
+ "sr": 16000,
74
+ "hidden": 768,
75
+ "nlayers": 13,
76
+ "initial_channel": 64
77
+ }
78
+ },
79
+ "version": "2.5.0-JP-Extra"
80
+ }
configs/default_paths.yml ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ # Root directory of the training dataset.
2
+ # The training dataset of {model_name} should be placed in {dataset_root}/{model_name}.
3
+ dataset_root: Data
4
+
5
+ # Root directory of the model assets (for inference).
6
+ # In training, the model assets will be saved to {assets_root}/{model_name},
7
+ # and in inference, we load all the models from {assets_root}.
8
+ assets_root: model_assets
configs/paths.yml ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ # Root directory of the training dataset.
2
+ # The training dataset of {model_name} should be placed in {dataset_root}/{model_name}.
3
+ dataset_root: Data
4
+
5
+ # Root directory of the model assets (for inference).
6
+ # In training, the model assets will be saved to {assets_root}/{model_name},
7
+ # and in inference, we load all the models from {assets_root}.
8
+ assets_root: model_assets
default_config.yml ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ model_name: "model_name"
2
+
3
+ # If you want to use a specific dataset path, uncomment the following line.
4
+ # Otherwise, the dataset path is `{dataset_root}/{model_name}`.
5
+
6
+ # dataset_path: "your/dataset/path"
7
+
8
+ resample:
9
+ sampling_rate: 44100
10
+ in_dir: "raw"
11
+ out_dir: "wavs"
12
+
13
+ preprocess_text:
14
+ transcription_path: "esd.list"
15
+ cleaned_path: ""
16
+ train_path: "train.list"
17
+ val_path: "val.list"
18
+ config_path: "config.json"
19
+ val_per_lang: 0
20
+ max_val_total: 12
21
+ clean: true
22
+
23
+ bert_gen:
24
+ config_path: "config.json"
25
+ num_processes: 1
26
+ device: "cuda"
27
+ use_multi_device: false
28
+
29
+ style_gen:
30
+ config_path: "config.json"
31
+ num_processes: 4
32
+ device: "cuda"
33
+
34
+ train_ms:
35
+ env:
36
+ MASTER_ADDR: "localhost"
37
+ MASTER_PORT: 10086
38
+ WORLD_SIZE: 1
39
+ LOCAL_RANK: 0
40
+ RANK: 0
41
+ model_dir: "models" # The directory to save the model (for training), relative to `{dataset_root}/{model_name}`.
42
+ config_path: "config.json"
43
+ num_workers: 16
44
+ spec_cache: True
45
+ keep_ckpts: 1 # Set this to 0 to keep all checkpoints
46
+
47
+ webui: # For `webui.py`, which is not supported yet in Style-Bert-VITS2.
48
+ # 推理设备
49
+ device: "cuda"
50
+ # 模型路径
51
+ model: "models/G_8000.pth"
52
+ # 配置文件路径
53
+ config_path: "config.json"
54
+ # 端口号
55
+ port: 7860
56
+ # 是否公开部署,对外网开放
57
+ share: false
58
+ # 是否开启debug模式
59
+ debug: false
60
+ # 语种识别库,可选langid, fastlid
61
+ language_identification_library: "langid"
62
+
63
+ # server_fastapi's config
64
+ server:
65
+ port: 5000
66
+ device: "cuda"
67
+ language: "JP"
68
+ limit: 100
69
+ origins:
70
+ - "*"
dict_data/default.csv ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ Bert,,,8609,名詞,固有名詞,一般,*,*,*,Bert,バアト,バアト,0/3,*
2
+ VITS,,,8609,名詞,固有名詞,一般,*,*,*,VITS,ビッツ,ビッツ,0/3,*
3
+ VITS二,,,8609,名詞,固有名詞,一般,*,*,*,VITS二,ビッツツー,ビッツツー,4/5,*
4
+ BertVITS,,,8609,名詞,固有名詞,一般,*,*,*,BertVITS,バアトビッツ,バアトビッツ,4/6,*
5
+ 担々麺,,,8609,名詞,固有名詞,一般,*,*,*,担々麺,タンタンメン,タンタンメン,3/6,*
initialize.py ADDED
@@ -0,0 +1,147 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import argparse
2
+ import json
3
+ import shutil
4
+ from pathlib import Path
5
+
6
+ import yaml
7
+ from huggingface_hub import hf_hub_download
8
+
9
+ from style_bert_vits2.logging import logger
10
+
11
+
12
+ def download_bert_models():
13
+ with open("bert/bert_models.json", encoding="utf-8") as fp:
14
+ models = json.load(fp)
15
+ for k, v in models.items():
16
+ local_path = Path("bert").joinpath(k)
17
+ for file in v["files"]:
18
+ if not Path(local_path).joinpath(file).exists():
19
+ logger.info(f"Downloading {k} {file}")
20
+ hf_hub_download(v["repo_id"], file, local_dir=local_path)
21
+
22
+
23
+ def download_slm_model():
24
+ local_path = Path("slm/wavlm-base-plus/")
25
+ file = "pytorch_model.bin"
26
+ if not Path(local_path).joinpath(file).exists():
27
+ logger.info(f"Downloading wavlm-base-plus {file}")
28
+ hf_hub_download("microsoft/wavlm-base-plus", file, local_dir=local_path)
29
+
30
+
31
+ def download_pretrained_models():
32
+ files = ["G_0.safetensors", "D_0.safetensors", "DUR_0.safetensors"]
33
+ local_path = Path("pretrained")
34
+ for file in files:
35
+ if not Path(local_path).joinpath(file).exists():
36
+ logger.info(f"Downloading pretrained {file}")
37
+ hf_hub_download(
38
+ "litagin/Style-Bert-VITS2-1.0-base", file, local_dir=local_path
39
+ )
40
+
41
+
42
+ def download_jp_extra_pretrained_models():
43
+ files = ["G_0.safetensors", "D_0.safetensors", "WD_0.safetensors"]
44
+ local_path = Path("pretrained_jp_extra")
45
+ for file in files:
46
+ if not Path(local_path).joinpath(file).exists():
47
+ logger.info(f"Downloading JP-Extra pretrained {file}")
48
+ hf_hub_download(
49
+ "litagin/Style-Bert-VITS2-2.0-base-JP-Extra", file, local_dir=local_path
50
+ )
51
+
52
+
53
+ def download_default_models():
54
+ files = [
55
+ "jvnv-F1-jp/config.json",
56
+ "jvnv-F1-jp/jvnv-F1-jp_e160_s14000.safetensors",
57
+ "jvnv-F1-jp/style_vectors.npy",
58
+ "jvnv-F2-jp/config.json",
59
+ "jvnv-F2-jp/jvnv-F2_e166_s20000.safetensors",
60
+ "jvnv-F2-jp/style_vectors.npy",
61
+ "jvnv-M1-jp/config.json",
62
+ "jvnv-M1-jp/jvnv-M1-jp_e158_s14000.safetensors",
63
+ "jvnv-M1-jp/style_vectors.npy",
64
+ "jvnv-M2-jp/config.json",
65
+ "jvnv-M2-jp/jvnv-M2-jp_e159_s17000.safetensors",
66
+ "jvnv-M2-jp/style_vectors.npy",
67
+ ]
68
+ for file in files:
69
+ if not Path(f"model_assets/{file}").exists():
70
+ logger.info(f"Downloading {file}")
71
+ hf_hub_download(
72
+ "litagin/style_bert_vits2_jvnv",
73
+ file,
74
+ local_dir="model_assets",
75
+ )
76
+ additional_files = {
77
+ "litagin/sbv2_koharune_ami": [
78
+ "koharune-ami/config.json",
79
+ "koharune-ami/style_vectors.npy",
80
+ "koharune-ami/koharune-ami.safetensors",
81
+ ],
82
+ "litagin/sbv2_amitaro": [
83
+ "amitaro/config.json",
84
+ "amitaro/style_vectors.npy",
85
+ "amitaro/amitaro.safetensors",
86
+ ],
87
+ }
88
+ for repo_id, files in additional_files.items():
89
+ for file in files:
90
+ if not Path(f"model_assets/{file}").exists():
91
+ logger.info(f"Downloading {file}")
92
+ hf_hub_download(
93
+ repo_id,
94
+ file,
95
+ local_dir="model_assets",
96
+ )
97
+
98
+
99
+ def main():
100
+ parser = argparse.ArgumentParser()
101
+ parser.add_argument("--skip_default_models", action="store_true")
102
+ parser.add_argument("--only_infer", action="store_true")
103
+ parser.add_argument(
104
+ "--dataset_root",
105
+ type=str,
106
+ help="Dataset root path (default: Data)",
107
+ default=None,
108
+ )
109
+ parser.add_argument(
110
+ "--assets_root",
111
+ type=str,
112
+ help="Assets root path (default: model_assets)",
113
+ default=None,
114
+ )
115
+ args = parser.parse_args()
116
+
117
+ download_bert_models()
118
+
119
+ if not args.skip_default_models:
120
+ download_default_models()
121
+ if not args.only_infer:
122
+ download_slm_model()
123
+ download_pretrained_models()
124
+ download_jp_extra_pretrained_models()
125
+
126
+ # If configs/paths.yml not exists, create it
127
+ default_paths_yml = Path("configs/default_paths.yml")
128
+ paths_yml = Path("configs/paths.yml")
129
+ if not paths_yml.exists():
130
+ shutil.copy(default_paths_yml, paths_yml)
131
+
132
+ if args.dataset_root is None and args.assets_root is None:
133
+ return
134
+
135
+ # Change default paths if necessary
136
+ with open(paths_yml, encoding="utf-8") as f:
137
+ yml_data = yaml.safe_load(f)
138
+ if args.assets_root is not None:
139
+ yml_data["assets_root"] = args.assets_root
140
+ if args.dataset_root is not None:
141
+ yml_data["dataset_root"] = args.dataset_root
142
+ with open(paths_yml, "w", encoding="utf-8") as f:
143
+ yaml.dump(yml_data, f, allow_unicode=True)
144
+
145
+
146
+ if __name__ == "__main__":
147
+ main()
model_assets/.gitignore ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ # *
2
+ !.gitignore
model_assets/amitaro/amitaro.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:19725d9bfd9d4b4fb17072ed4d40e01f6cf89c22cd83c15e1cccbf3ddf6b81de
3
+ size 251150980
model_assets/amitaro/config.json ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model_name": "amitaro",
3
+ "train": {
4
+ "log_interval": 200,
5
+ "eval_interval": 1000,
6
+ "seed": 42,
7
+ "epochs": 100,
8
+ "learning_rate": 0.0001,
9
+ "betas": [0.8, 0.99],
10
+ "eps": 1e-9,
11
+ "batch_size": 4,
12
+ "bf16_run": false,
13
+ "fp16_run": false,
14
+ "lr_decay": 0.99996,
15
+ "segment_size": 16384,
16
+ "init_lr_ratio": 1,
17
+ "warmup_epochs": 0,
18
+ "c_mel": 45,
19
+ "c_kl": 1.0,
20
+ "c_commit": 100,
21
+ "skip_optimizer": false,
22
+ "freeze_ZH_bert": false,
23
+ "freeze_JP_bert": false,
24
+ "freeze_EN_bert": false,
25
+ "freeze_emo": false,
26
+ "freeze_style": false,
27
+ "freeze_decoder": false
28
+ },
29
+ "data": {
30
+ "use_jp_extra": true,
31
+ "training_files": "Data\\amitaro\\train.list",
32
+ "validation_files": "Data\\amitaro\\val.list",
33
+ "max_wav_value": 32768.0,
34
+ "sampling_rate": 44100,
35
+ "filter_length": 2048,
36
+ "hop_length": 512,
37
+ "win_length": 2048,
38
+ "n_mel_channels": 128,
39
+ "mel_fmin": 0.0,
40
+ "mel_fmax": null,
41
+ "add_blank": true,
42
+ "n_speakers": 1,
43
+ "cleaned_text": true,
44
+ "spk2id": {
45
+ "あみたろ": 0
46
+ },
47
+ "num_styles": 5,
48
+ "style2id": {
49
+ "Neutral": 0,
50
+ "01": 1,
51
+ "02": 2,
52
+ "03": 3,
53
+ "04": 4
54
+ }
55
+ },
56
+ "model": {
57
+ "use_spk_conditioned_encoder": true,
58
+ "use_noise_scaled_mas": true,
59
+ "use_mel_posterior_encoder": false,
60
+ "use_duration_discriminator": false,
61
+ "use_wavlm_discriminator": true,
62
+ "inter_channels": 192,
63
+ "hidden_channels": 192,
64
+ "filter_channels": 768,
65
+ "n_heads": 2,
66
+ "n_layers": 6,
67
+ "kernel_size": 3,
68
+ "p_dropout": 0.1,
69
+ "resblock": "1",
70
+ "resblock_kernel_sizes": [3, 7, 11],
71
+ "resblock_dilation_sizes": [
72
+ [1, 3, 5],
73
+ [1, 3, 5],
74
+ [1, 3, 5]
75
+ ],
76
+ "upsample_rates": [8, 8, 2, 2, 2],
77
+ "upsample_initial_channel": 512,
78
+ "upsample_kernel_sizes": [16, 16, 8, 2, 2],
79
+ "n_layers_q": 3,
80
+ "use_spectral_norm": false,
81
+ "gin_channels": 512,
82
+ "slm": {
83
+ "model": "./slm/wavlm-base-plus",
84
+ "sr": 16000,
85
+ "hidden": 768,
86
+ "nlayers": 13,
87
+ "initial_channel": 64
88
+ }
89
+ },
90
+ "version": "2.5.0-JP-Extra"
91
+ }
model_assets/amitaro/style_vectors.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f04b3d679982f11fd29da6ea27f93af86e5876b93aa4fbf910215ce145513cc9
3
+ size 5248
model_assets/jvnv-F1-jp/config.json ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "train": {
3
+ "log_interval": 200,
4
+ "eval_interval": 1000,
5
+ "seed": 42,
6
+ "epochs": 300,
7
+ "learning_rate": 0.0001,
8
+ "betas": [0.8, 0.99],
9
+ "eps": 1e-9,
10
+ "batch_size": 4,
11
+ "bf16_run": true,
12
+ "fp16_run": false,
13
+ "lr_decay": 0.99996,
14
+ "segment_size": 16384,
15
+ "init_lr_ratio": 1,
16
+ "warmup_epochs": 0,
17
+ "c_mel": 45,
18
+ "c_kl": 1.0,
19
+ "c_commit": 100,
20
+ "skip_optimizer": true,
21
+ "freeze_ZH_bert": false,
22
+ "freeze_JP_bert": false,
23
+ "freeze_EN_bert": false,
24
+ "freeze_emo": false,
25
+ "freeze_style": false
26
+ },
27
+ "data": {
28
+ "use_jp_extra": true,
29
+ "training_files": "Data/jvnv-F1-jp/train.list",
30
+ "validation_files": "Data/jvnv-F1-jp/val.list",
31
+ "max_wav_value": 32768.0,
32
+ "sampling_rate": 44100,
33
+ "filter_length": 2048,
34
+ "hop_length": 512,
35
+ "win_length": 2048,
36
+ "n_mel_channels": 128,
37
+ "mel_fmin": 0.0,
38
+ "mel_fmax": null,
39
+ "add_blank": true,
40
+ "n_speakers": 1,
41
+ "cleaned_text": true,
42
+ "spk2id": {
43
+ "jvnv-F1-jp": 0
44
+ },
45
+ "num_styles": 7,
46
+ "style2id": {
47
+ "Neutral": 0,
48
+ "Angry": 1,
49
+ "Disgust": 2,
50
+ "Fear": 3,
51
+ "Happy": 4,
52
+ "Sad": 5,
53
+ "Surprise": 6
54
+ }
55
+ },
56
+ "model": {
57
+ "use_spk_conditioned_encoder": true,
58
+ "use_noise_scaled_mas": true,
59
+ "use_mel_posterior_encoder": false,
60
+ "use_duration_discriminator": false,
61
+ "use_wavlm_discriminator": true,
62
+ "inter_channels": 192,
63
+ "hidden_channels": 192,
64
+ "filter_channels": 768,
65
+ "n_heads": 2,
66
+ "n_layers": 6,
67
+ "kernel_size": 3,
68
+ "p_dropout": 0.1,
69
+ "resblock": "1",
70
+ "resblock_kernel_sizes": [3, 7, 11],
71
+ "resblock_dilation_sizes": [
72
+ [1, 3, 5],
73
+ [1, 3, 5],
74
+ [1, 3, 5]
75
+ ],
76
+ "upsample_rates": [8, 8, 2, 2, 2],
77
+ "upsample_initial_channel": 512,
78
+ "upsample_kernel_sizes": [16, 16, 8, 2, 2],
79
+ "n_layers_q": 3,
80
+ "use_spectral_norm": false,
81
+ "gin_channels": 512,
82
+ "slm": {
83
+ "model": "./slm/wavlm-base-plus",
84
+ "sr": 16000,
85
+ "hidden": 768,
86
+ "nlayers": 13,
87
+ "initial_channel": 64
88
+ }
89
+ },
90
+ "version": "2.0-JP-Extra",
91
+ "model_name": "jvnv-F1-jp"
92
+ }
model_assets/jvnv-F1-jp/jvnv-F1-jp_e160_s14000.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a90fa6c9444d9235c9ec4db99daf7c5c6a21cc26ca141b4c48455d66a3257d01
3
+ size 251150980
model_assets/jvnv-F1-jp/style_vectors.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1f959bb45ed0922efc31ff24e9147253814f42cb1d2d1e2bb10391a9df368489
3
+ size 7296
model_assets/jvnv-F2-jp/config.json ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "train": {
3
+ "log_interval": 200,
4
+ "eval_interval": 1000,
5
+ "seed": 42,
6
+ "epochs": 300,
7
+ "learning_rate": 0.0001,
8
+ "betas": [0.8, 0.99],
9
+ "eps": 1e-9,
10
+ "batch_size": 4,
11
+ "bf16_run": false,
12
+ "fp16_run": false,
13
+ "lr_decay": 0.99996,
14
+ "segment_size": 16384,
15
+ "init_lr_ratio": 1,
16
+ "warmup_epochs": 0,
17
+ "c_mel": 45,
18
+ "c_kl": 1.0,
19
+ "c_commit": 100,
20
+ "skip_optimizer": true,
21
+ "freeze_ZH_bert": false,
22
+ "freeze_JP_bert": false,
23
+ "freeze_EN_bert": false,
24
+ "freeze_emo": false,
25
+ "freeze_style": false
26
+ },
27
+ "data": {
28
+ "use_jp_extra": true,
29
+ "training_files": "/content/drive/MyDrive/Style-Bert-VITS2/Data/jvnv-F2/train.list",
30
+ "validation_files": "/content/drive/MyDrive/Style-Bert-VITS2/Data/jvnv-F2/val.list",
31
+ "max_wav_value": 32768.0,
32
+ "sampling_rate": 44100,
33
+ "filter_length": 2048,
34
+ "hop_length": 512,
35
+ "win_length": 2048,
36
+ "n_mel_channels": 128,
37
+ "mel_fmin": 0.0,
38
+ "mel_fmax": null,
39
+ "add_blank": true,
40
+ "n_speakers": 1,
41
+ "cleaned_text": true,
42
+ "spk2id": {
43
+ "jvnv-F2-jp": 0
44
+ },
45
+ "num_styles": 7,
46
+ "style2id": {
47
+ "Neutral": 0,
48
+ "Angry": 1,
49
+ "Disgust": 2,
50
+ "Fear": 3,
51
+ "Happy": 4,
52
+ "Sad": 5,
53
+ "Surprise": 6
54
+ }
55
+ },
56
+ "model": {
57
+ "use_spk_conditioned_encoder": true,
58
+ "use_noise_scaled_mas": true,
59
+ "use_mel_posterior_encoder": false,
60
+ "use_duration_discriminator": false,
61
+ "use_wavlm_discriminator": true,
62
+ "inter_channels": 192,
63
+ "hidden_channels": 192,
64
+ "filter_channels": 768,
65
+ "n_heads": 2,
66
+ "n_layers": 6,
67
+ "kernel_size": 3,
68
+ "p_dropout": 0.1,
69
+ "resblock": "1",
70
+ "resblock_kernel_sizes": [3, 7, 11],
71
+ "resblock_dilation_sizes": [
72
+ [1, 3, 5],
73
+ [1, 3, 5],
74
+ [1, 3, 5]
75
+ ],
76
+ "upsample_rates": [8, 8, 2, 2, 2],
77
+ "upsample_initial_channel": 512,
78
+ "upsample_kernel_sizes": [16, 16, 8, 2, 2],
79
+ "n_layers_q": 3,
80
+ "use_spectral_norm": false,
81
+ "gin_channels": 512,
82
+ "slm": {
83
+ "model": "./slm/wavlm-base-plus",
84
+ "sr": 16000,
85
+ "hidden": 768,
86
+ "nlayers": 13,
87
+ "initial_channel": 64
88
+ }
89
+ },
90
+ "version": "2.0-JP-Extra",
91
+ "model_name": "jvnv-F2-jp"
92
+ }
model_assets/jvnv-F2-jp/jvnv-F2_e166_s20000.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f6289a6f30bb9795744815b9da764a3c8198b18652d9fddef82fff1e14f0e784
3
+ size 251150980
model_assets/jvnv-F2-jp/style_vectors.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:900f8cde3a336d12193fec7b7d8e6c5dc77b3a5d719a9be3f8598389cd88e643
3
+ size 7296
model_assets/jvnv-M1-jp/config.json ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "train": {
3
+ "log_interval": 200,
4
+ "eval_interval": 1000,
5
+ "seed": 42,
6
+ "epochs": 300,
7
+ "learning_rate": 0.0001,
8
+ "betas": [0.8, 0.99],
9
+ "eps": 1e-9,
10
+ "batch_size": 4,
11
+ "bf16_run": true,
12
+ "fp16_run": false,
13
+ "lr_decay": 0.99996,
14
+ "segment_size": 16384,
15
+ "init_lr_ratio": 1,
16
+ "warmup_epochs": 0,
17
+ "c_mel": 45,
18
+ "c_kl": 1.0,
19
+ "c_commit": 100,
20
+ "skip_optimizer": true,
21
+ "freeze_ZH_bert": false,
22
+ "freeze_JP_bert": false,
23
+ "freeze_EN_bert": false,
24
+ "freeze_emo": false,
25
+ "freeze_style": false
26
+ },
27
+ "data": {
28
+ "use_jp_extra": true,
29
+ "training_files": "Data/jvnv-M1-jp/train.list",
30
+ "validation_files": "Data/jvnv-M1-jp/val.list",
31
+ "max_wav_value": 32768.0,
32
+ "sampling_rate": 44100,
33
+ "filter_length": 2048,
34
+ "hop_length": 512,
35
+ "win_length": 2048,
36
+ "n_mel_channels": 128,
37
+ "mel_fmin": 0.0,
38
+ "mel_fmax": null,
39
+ "add_blank": true,
40
+ "n_speakers": 1,
41
+ "cleaned_text": true,
42
+ "spk2id": {
43
+ "jvnv-M1-jp": 0
44
+ },
45
+ "num_styles": 7,
46
+ "style2id": {
47
+ "Neutral": 0,
48
+ "Angry": 1,
49
+ "Disgust": 2,
50
+ "Fear": 3,
51
+ "Happy": 4,
52
+ "Sad": 5,
53
+ "Surprise": 6
54
+ }
55
+ },
56
+ "model": {
57
+ "use_spk_conditioned_encoder": true,
58
+ "use_noise_scaled_mas": true,
59
+ "use_mel_posterior_encoder": false,
60
+ "use_duration_discriminator": false,
61
+ "use_wavlm_discriminator": true,
62
+ "inter_channels": 192,
63
+ "hidden_channels": 192,
64
+ "filter_channels": 768,
65
+ "n_heads": 2,
66
+ "n_layers": 6,
67
+ "kernel_size": 3,
68
+ "p_dropout": 0.1,
69
+ "resblock": "1",
70
+ "resblock_kernel_sizes": [3, 7, 11],
71
+ "resblock_dilation_sizes": [
72
+ [1, 3, 5],
73
+ [1, 3, 5],
74
+ [1, 3, 5]
75
+ ],
76
+ "upsample_rates": [8, 8, 2, 2, 2],
77
+ "upsample_initial_channel": 512,
78
+ "upsample_kernel_sizes": [16, 16, 8, 2, 2],
79
+ "n_layers_q": 3,
80
+ "use_spectral_norm": false,
81
+ "gin_channels": 512,
82
+ "slm": {
83
+ "model": "./slm/wavlm-base-plus",
84
+ "sr": 16000,
85
+ "hidden": 768,
86
+ "nlayers": 13,
87
+ "initial_channel": 64
88
+ }
89
+ },
90
+ "version": "2.0-JP-Extra",
91
+ "model_name": "jvnv-M1-jp"
92
+ }
model_assets/jvnv-M1-jp/jvnv-M1-jp_e158_s14000.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0d86765f1fe08dbba74cd06283e96b6941b3f232329fabbba9c30e6edc27887a
3
+ size 251150980
model_assets/jvnv-M1-jp/style_vectors.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7a925435e8c1c9efc8fc8e90e690655ab9a7bae00a790892e13e936510d04f05
3
+ size 7296
model_assets/jvnv-M2-jp/config.json ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "train": {
3
+ "log_interval": 200,
4
+ "eval_interval": 1000,
5
+ "seed": 42,
6
+ "epochs": 300,
7
+ "learning_rate": 0.0001,
8
+ "betas": [0.8, 0.99],
9
+ "eps": 1e-9,
10
+ "batch_size": 4,
11
+ "bf16_run": true,
12
+ "fp16_run": false,
13
+ "lr_decay": 0.99996,
14
+ "segment_size": 16384,
15
+ "init_lr_ratio": 1,
16
+ "warmup_epochs": 0,
17
+ "c_mel": 45,
18
+ "c_kl": 1.0,
19
+ "c_commit": 100,
20
+ "skip_optimizer": true,
21
+ "freeze_ZH_bert": false,
22
+ "freeze_JP_bert": false,
23
+ "freeze_EN_bert": false,
24
+ "freeze_emo": false,
25
+ "freeze_style": false
26
+ },
27
+ "data": {
28
+ "use_jp_extra": true,
29
+ "training_files": "Data/jvnv-M2-jp/train.list",
30
+ "validation_files": "Data/jvnv-M2-jp/val.list",
31
+ "max_wav_value": 32768.0,
32
+ "sampling_rate": 44100,
33
+ "filter_length": 2048,
34
+ "hop_length": 512,
35
+ "win_length": 2048,
36
+ "n_mel_channels": 128,
37
+ "mel_fmin": 0.0,
38
+ "mel_fmax": null,
39
+ "add_blank": true,
40
+ "n_speakers": 1,
41
+ "cleaned_text": true,
42
+ "spk2id": {
43
+ "jvnv-M2-jp": 0
44
+ },
45
+ "num_styles": 7,
46
+ "style2id": {
47
+ "Neutral": 0,
48
+ "Angry": 1,
49
+ "Disgust": 2,
50
+ "Fear": 3,
51
+ "Happy": 4,
52
+ "Sad": 5,
53
+ "Surprise": 6
54
+ }
55
+ },
56
+ "model": {
57
+ "use_spk_conditioned_encoder": true,
58
+ "use_noise_scaled_mas": true,
59
+ "use_mel_posterior_encoder": false,
60
+ "use_duration_discriminator": false,
61
+ "use_wavlm_discriminator": true,
62
+ "inter_channels": 192,
63
+ "hidden_channels": 192,
64
+ "filter_channels": 768,
65
+ "n_heads": 2,
66
+ "n_layers": 6,
67
+ "kernel_size": 3,
68
+ "p_dropout": 0.1,
69
+ "resblock": "1",
70
+ "resblock_kernel_sizes": [3, 7, 11],
71
+ "resblock_dilation_sizes": [
72
+ [1, 3, 5],
73
+ [1, 3, 5],
74
+ [1, 3, 5]
75
+ ],
76
+ "upsample_rates": [8, 8, 2, 2, 2],
77
+ "upsample_initial_channel": 512,
78
+ "upsample_kernel_sizes": [16, 16, 8, 2, 2],
79
+ "n_layers_q": 3,
80
+ "use_spectral_norm": false,
81
+ "gin_channels": 512,
82
+ "slm": {
83
+ "model": "./slm/wavlm-base-plus",
84
+ "sr": 16000,
85
+ "hidden": 768,
86
+ "nlayers": 13,
87
+ "initial_channel": 64
88
+ }
89
+ },
90
+ "version": "2.0-JP-Extra",
91
+ "model_name": "jvnv-M2-jp"
92
+ }
model_assets/jvnv-M2-jp/jvnv-M2-jp_e159_s17000.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8245f39438076d36a3befd8aefb15c38830cef326c1f7c9d9c8e64b647645402
3
+ size 251150980
model_assets/jvnv-M2-jp/style_vectors.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c965bb63fa4a759d41a8a4a3649333125d6497ae8a705d81b7d5c5bd2854797c
3
+ size 7296
model_assets/koharune-ami/config.json ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model_name": "小春音アミ",
3
+ "train": {
4
+ "log_interval": 200,
5
+ "eval_interval": 1000,
6
+ "seed": 42,
7
+ "epochs": 300,
8
+ "learning_rate": 0.0001,
9
+ "betas": [0.8, 0.99],
10
+ "eps": 1e-9,
11
+ "batch_size": 4,
12
+ "bf16_run": false,
13
+ "fp16_run": false,
14
+ "lr_decay": 0.99996,
15
+ "segment_size": 16384,
16
+ "init_lr_ratio": 1,
17
+ "warmup_epochs": 0,
18
+ "c_mel": 45,
19
+ "c_kl": 1.0,
20
+ "c_commit": 100,
21
+ "skip_optimizer": false,
22
+ "freeze_ZH_bert": false,
23
+ "freeze_JP_bert": false,
24
+ "freeze_EN_bert": false,
25
+ "freeze_emo": false,
26
+ "freeze_style": false,
27
+ "freeze_decoder": false
28
+ },
29
+ "data": {
30
+ "use_jp_extra": true,
31
+ "training_files": "Data\\amitaro_combined\\train.list",
32
+ "validation_files": "Data\\amitaro_combined\\val.list",
33
+ "max_wav_value": 32768.0,
34
+ "sampling_rate": 44100,
35
+ "filter_length": 2048,
36
+ "hop_length": 512,
37
+ "win_length": 2048,
38
+ "n_mel_channels": 128,
39
+ "mel_fmin": 0.0,
40
+ "mel_fmax": null,
41
+ "add_blank": true,
42
+ "n_speakers": 1,
43
+ "cleaned_text": true,
44
+ "spk2id": {
45
+ "小春音アミ": 0
46
+ },
47
+ "num_styles": 6,
48
+ "style2id": {
49
+ "Neutral": 0,
50
+ "るんるん": 1,
51
+ "ささやきA(無声)": 2,
52
+ "ささやきB(有声)": 3,
53
+ "ノーマル": 4,
54
+ "よふかし": 5
55
+ }
56
+ },
57
+ "model": {
58
+ "use_spk_conditioned_encoder": true,
59
+ "use_noise_scaled_mas": true,
60
+ "use_mel_posterior_encoder": false,
61
+ "use_duration_discriminator": false,
62
+ "use_wavlm_discriminator": true,
63
+ "inter_channels": 192,
64
+ "hidden_channels": 192,
65
+ "filter_channels": 768,
66
+ "n_heads": 2,
67
+ "n_layers": 6,
68
+ "kernel_size": 3,
69
+ "p_dropout": 0.1,
70
+ "resblock": "1",
71
+ "resblock_kernel_sizes": [3, 7, 11],
72
+ "resblock_dilation_sizes": [
73
+ [1, 3, 5],
74
+ [1, 3, 5],
75
+ [1, 3, 5]
76
+ ],
77
+ "upsample_rates": [8, 8, 2, 2, 2],
78
+ "upsample_initial_channel": 512,
79
+ "upsample_kernel_sizes": [16, 16, 8, 2, 2],
80
+ "n_layers_q": 3,
81
+ "use_spectral_norm": false,
82
+ "gin_channels": 512,
83
+ "slm": {
84
+ "model": "./slm/wavlm-base-plus",
85
+ "sr": 16000,
86
+ "hidden": 768,
87
+ "nlayers": 13,
88
+ "initial_channel": 64
89
+ }
90
+ },
91
+ "version": "2.5.0-JP-Extra"
92
+ }
model_assets/koharune-ami/koharune-ami.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:980119e6660fc241b1c297016933f43240b3fc6203a9f511dd2f2dac74042991
3
+ size 251150980
model_assets/koharune-ami/style_vectors.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:867527952ff45b6621fe18b8b51728c29abe3aeb80b74e06f235df71aa82ae5d
3
+ size 6272
requirements.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # cmudict
2
+ # cn2an
3
+ # faster-whisper==0.10.1
4
+ fastapi[standard]
5
+ # g2p_en
6
+ # GPUtil
7
+ # gradio
8
+ # jieba
9
+ # librosa==0.9.2
10
+ loguru
11
+ num2words
12
+ # protobuf==4.25
13
+ # psutil
14
+ # punctuators
15
+ pyannote.audio>=3.1.0
16
+ # pyloudnorm
17
+ pyopenjtalk-dict
18
+ # pypinyin
19
+ pyworld-prebuilt
20
+ # stable_ts
21
+ # tensorboard
22
+ torch
23
+ transformers
24
+ # umap-learn
server_editor.py ADDED
@@ -0,0 +1,450 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Style-Bert-VITS2-Editor用のサーバー。
3
+ 次のリポジトリ
4
+ https://github.com/litagin02/Style-Bert-VITS2-Editor
5
+ をビルドしてできあがったファイルをWebフォルダに入れて実行する。
6
+
7
+ TODO: リファクタリングやドキュメンテーションやAPI整理、辞書周りの改善などが必要。
8
+ """
9
+
10
+ import argparse
11
+ import io
12
+ import shutil
13
+ import sys
14
+ import webbrowser
15
+ import zipfile
16
+ from datetime import datetime
17
+ from io import BytesIO
18
+ from pathlib import Path
19
+ from typing import Optional
20
+
21
+ import numpy as np
22
+ import requests
23
+ import torch
24
+ import uvicorn
25
+ from fastapi import APIRouter, FastAPI, HTTPException, status
26
+ from fastapi.middleware.cors import CORSMiddleware
27
+ from fastapi.responses import JSONResponse, Response
28
+ from fastapi.staticfiles import StaticFiles
29
+ from pydantic import BaseModel
30
+ from scipy.io import wavfile
31
+
32
+ from config import get_path_config
33
+ from initialize import download_default_models
34
+ from style_bert_vits2.constants import (
35
+ DEFAULT_ASSIST_TEXT_WEIGHT,
36
+ DEFAULT_NOISE,
37
+ DEFAULT_NOISEW,
38
+ DEFAULT_SDP_RATIO,
39
+ DEFAULT_STYLE,
40
+ DEFAULT_STYLE_WEIGHT,
41
+ VERSION,
42
+ Languages,
43
+ )
44
+ from style_bert_vits2.logging import logger
45
+ from style_bert_vits2.nlp import bert_models
46
+ from style_bert_vits2.nlp.japanese import pyopenjtalk_worker as pyopenjtalk
47
+ from style_bert_vits2.nlp.japanese.g2p_utils import g2kata_tone, kata_tone2phone_tone
48
+ from style_bert_vits2.nlp.japanese.normalizer import normalize_text
49
+ from style_bert_vits2.nlp.japanese.user_dict import (
50
+ apply_word,
51
+ delete_word,
52
+ read_dict,
53
+ rewrite_word,
54
+ update_dict,
55
+ )
56
+ from style_bert_vits2.tts_model import TTSModelHolder, TTSModelInfo
57
+
58
+
59
+ # ---フロントエンド部分に関する処理---
60
+
61
+ # エディターのビルドファイルを配置するディレクトリ
62
+ STATIC_DIR = Path("static")
63
+ # エディターの最新のビルドファイルのダウンロード日時を記録するファイル
64
+ LAST_DOWNLOAD_FILE = STATIC_DIR / "last_download.txt"
65
+
66
+
67
+ def download_static_files(user, repo, asset_name):
68
+ """Style-Bert-VITS2エディターの最新のビルドzipをダウンロードして展開する。"""
69
+
70
+ logger.info("Checking for new release...")
71
+ latest_release = get_latest_release(user, repo)
72
+ if latest_release is None:
73
+ logger.warning(
74
+ "Failed to fetch the latest release. Proceeding without static files."
75
+ )
76
+ return
77
+
78
+ if not new_release_available(latest_release):
79
+ logger.info("No new release available. Proceeding with existing static files.")
80
+ return
81
+
82
+ logger.info("New release available. Downloading static files...")
83
+ asset_url = get_asset_url(latest_release, asset_name)
84
+ if asset_url:
85
+ if STATIC_DIR.exists():
86
+ shutil.rmtree(STATIC_DIR)
87
+ STATIC_DIR.mkdir(parents=True, exist_ok=True)
88
+ download_and_extract(asset_url, STATIC_DIR)
89
+ save_last_download(latest_release)
90
+ else:
91
+ logger.warning("Asset not found. Proceeding without static files.")
92
+
93
+
94
+ def get_latest_release(user, repo):
95
+ url = f"https://api.github.com/repos/{user}/{repo}/releases/latest"
96
+ try:
97
+ response = requests.get(url)
98
+ response.raise_for_status()
99
+ return response.json()
100
+ except requests.RequestException:
101
+ return None
102
+
103
+
104
+ def get_asset_url(release, asset_name):
105
+ for asset in release["assets"]:
106
+ if asset["name"] == asset_name:
107
+ return asset["browser_download_url"]
108
+ return None
109
+
110
+
111
+ def download_and_extract(url, extract_to: Path):
112
+ response = requests.get(url)
113
+ response.raise_for_status()
114
+ with zipfile.ZipFile(io.BytesIO(response.content)) as zip_ref:
115
+ zip_ref.extractall(extract_to)
116
+
117
+ # 展開先が1つのディレクトリだけの場合、その中身を直下に移動する
118
+ extracted_dirs = list(extract_to.iterdir())
119
+ if len(extracted_dirs) == 1 and extracted_dirs[0].is_dir():
120
+ for file in extracted_dirs[0].iterdir():
121
+ file.rename(extract_to / file.name)
122
+ extracted_dirs[0].rmdir()
123
+
124
+ # index.htmlが存在するかチェック
125
+ if not (extract_to / "index.html").exists():
126
+ logger.warning("index.html not found in the extracted files.")
127
+
128
+
129
+ def new_release_available(latest_release):
130
+ if LAST_DOWNLOAD_FILE.exists():
131
+ with open(LAST_DOWNLOAD_FILE) as file:
132
+ last_download_str = file.read().strip()
133
+ # 'Z'を除去して日時オブジェクトに変換
134
+ last_download_str = last_download_str.replace("Z", "+00:00")
135
+ last_download = datetime.fromisoformat(last_download_str)
136
+ return (
137
+ datetime.fromisoformat(
138
+ latest_release["published_at"].replace("Z", "+00:00")
139
+ )
140
+ > last_download
141
+ )
142
+ return True
143
+
144
+
145
+ def save_last_download(latest_release):
146
+ with open(LAST_DOWNLOAD_FILE, "w") as file:
147
+ file.write(latest_release["published_at"])
148
+
149
+
150
+ # ---フロントエンド部分に関する処理ここまで---
151
+ # 以降はAPIの設定
152
+
153
+ # pyopenjtalk_worker を起動
154
+ ## pyopenjtalk_worker は TCP ソケットサーバーのため、ここで起動する
155
+ pyopenjtalk.initialize_worker()
156
+
157
+ # pyopenjtalk の辞書を更新
158
+ update_dict()
159
+
160
+ # 事前に BERT モデル/トークナイザーをロードしておく
161
+ ## ここでロードしなくても必要になった際に自動ロードされるが、時間がかかるため事前にロードしておいた方が体験が良い
162
+ ## server_editor.py は日本語にしか対応していないため、日本語の BERT モデル/トークナイザーのみロードする
163
+ bert_models.load_model(Languages.JP)
164
+ bert_models.load_tokenizer(Languages.JP)
165
+
166
+
167
+ class AudioResponse(Response):
168
+ media_type = "audio/wav"
169
+
170
+
171
+ origins = [
172
+ "http://localhost:3000",
173
+ "http://localhost:8000",
174
+ "http://127.0.0.1:3000",
175
+ "http://127.0.0.1:8000",
176
+ ]
177
+
178
+ path_config = get_path_config()
179
+ parser = argparse.ArgumentParser()
180
+ parser.add_argument("--model_dir", type=str, default=path_config.assets_root)
181
+ parser.add_argument("--device", type=str, default="cuda")
182
+ parser.add_argument("--port", type=int, default=8000)
183
+ parser.add_argument("--inbrowser", action="store_true")
184
+ parser.add_argument("--line_length", type=int, default=None)
185
+ parser.add_argument("--line_count", type=int, default=None)
186
+ parser.add_argument("--skip_default_models", action="store_true")
187
+ parser.add_argument("--skip_static_files", action="store_true")
188
+ args = parser.parse_args()
189
+ device = args.device
190
+ if device == "cuda" and not torch.cuda.is_available():
191
+ device = "cpu"
192
+ model_dir = Path(args.model_dir)
193
+ port = int(args.port)
194
+ if not args.skip_default_models:
195
+ download_default_models()
196
+ skip_static_files = bool(args.skip_static_files)
197
+
198
+ model_holder = TTSModelHolder(model_dir, device)
199
+ if len(model_holder.model_names) == 0:
200
+ logger.error(f"Models not found in {model_dir}.")
201
+ sys.exit(1)
202
+
203
+
204
+ app = FastAPI()
205
+
206
+
207
+ app.add_middleware(
208
+ CORSMiddleware,
209
+ allow_origins=origins,
210
+ allow_credentials=True,
211
+ allow_methods=["*"],
212
+ allow_headers=["*"],
213
+ )
214
+
215
+ router = APIRouter()
216
+
217
+
218
+ @router.get("/version")
219
+ def version() -> str:
220
+ return VERSION
221
+
222
+
223
+ class MoraTone(BaseModel):
224
+ mora: str
225
+ tone: int
226
+
227
+
228
+ class TextRequest(BaseModel):
229
+ text: str
230
+
231
+
232
+ @router.post("/g2p")
233
+ async def read_item(item: TextRequest):
234
+ try:
235
+ # 最初に正規化しないと整合性がとれない
236
+ text = normalize_text(item.text)
237
+ kata_tone_list = g2kata_tone(text)
238
+ except Exception as e:
239
+ raise HTTPException(
240
+ status_code=400,
241
+ detail=f"Failed to convert {item.text} to katakana and tone, {e}",
242
+ )
243
+ return [MoraTone(mora=kata, tone=tone) for kata, tone in kata_tone_list]
244
+
245
+
246
+ @router.post("/normalize")
247
+ async def normalize(item: TextRequest):
248
+ return normalize_text(item.text)
249
+
250
+
251
+ @router.get("/models_info", response_model=list[TTSModelInfo])
252
+ def models_info():
253
+ return model_holder.models_info
254
+
255
+
256
+ class SynthesisRequest(BaseModel):
257
+ model: str
258
+ modelFile: str
259
+ text: str
260
+ moraToneList: list[MoraTone]
261
+ style: str = DEFAULT_STYLE
262
+ styleWeight: float = DEFAULT_STYLE_WEIGHT
263
+ assistText: str = ""
264
+ assistTextWeight: float = DEFAULT_ASSIST_TEXT_WEIGHT
265
+ speed: float = 1.0
266
+ noise: float = DEFAULT_NOISE
267
+ noisew: float = DEFAULT_NOISEW
268
+ sdpRatio: float = DEFAULT_SDP_RATIO
269
+ language: Languages = Languages.JP
270
+ silenceAfter: float = 0.5
271
+ pitchScale: float = 1.0
272
+ intonationScale: float = 1.0
273
+ speaker: Optional[str] = None
274
+
275
+
276
+ @router.post("/synthesis", response_class=AudioResponse)
277
+ def synthesis(request: SynthesisRequest):
278
+ if args.line_length is not None and len(request.text) > args.line_length:
279
+ raise HTTPException(
280
+ status_code=400,
281
+ detail=f"1行の文字数は{args.line_length}文字以下にしてください。",
282
+ )
283
+ try:
284
+ model = model_holder.get_model(
285
+ model_name=request.model, model_path_str=request.modelFile
286
+ )
287
+ except Exception as e:
288
+ logger.error(e)
289
+ raise HTTPException(
290
+ status_code=500,
291
+ detail=f"Failed to load model {request.model} from {request.modelFile}, {e}",
292
+ )
293
+ text = request.text
294
+ kata_tone_list = [
295
+ (mora_tone.mora, mora_tone.tone) for mora_tone in request.moraToneList
296
+ ]
297
+ phone_tone = kata_tone2phone_tone(kata_tone_list)
298
+ tone = [t for _, t in phone_tone]
299
+ try:
300
+ sid = 0 if request.speaker is None else model.spk2id[request.speaker]
301
+ except KeyError:
302
+ raise HTTPException(
303
+ status_code=400,
304
+ detail=f"Speaker {request.speaker} not found in {model.spk2id}",
305
+ )
306
+ sr, audio = model.infer(
307
+ text=text,
308
+ language=request.language,
309
+ sdp_ratio=request.sdpRatio,
310
+ noise=request.noise,
311
+ noise_w=request.noisew,
312
+ length=1 / request.speed,
313
+ given_tone=tone,
314
+ style=request.style,
315
+ style_weight=request.styleWeight,
316
+ assist_text=request.assistText,
317
+ assist_text_weight=request.assistTextWeight,
318
+ use_assist_text=bool(request.assistText),
319
+ line_split=False,
320
+ pitch_scale=request.pitchScale,
321
+ intonation_scale=request.intonationScale,
322
+ speaker_id=sid,
323
+ )
324
+
325
+ with BytesIO() as wavContent:
326
+ wavfile.write(wavContent, sr, audio)
327
+ return Response(content=wavContent.getvalue(), media_type="audio/wav")
328
+
329
+
330
+ class MultiSynthesisRequest(BaseModel):
331
+ lines: list[SynthesisRequest]
332
+
333
+
334
+ @router.post("/multi_synthesis", response_class=AudioResponse)
335
+ def multi_synthesis(request: MultiSynthesisRequest):
336
+ lines = request.lines
337
+ if args.line_count is not None and len(lines) > args.line_count:
338
+ raise HTTPException(
339
+ status_code=400,
340
+ detail=f"行数は{args.line_count}行以下にしてください。",
341
+ )
342
+ audios = []
343
+ sr = None
344
+ for i, req in enumerate(lines):
345
+ if args.line_length is not None and len(req.text) > args.line_length:
346
+ raise HTTPException(
347
+ status_code=400,
348
+ detail=f"1行の文字数は{args.line_length}文字以下にしてください。",
349
+ )
350
+ try:
351
+ model = model_holder.get_model(
352
+ model_name=req.model, model_path_str=req.modelFile
353
+ )
354
+ except Exception as e:
355
+ logger.error(e)
356
+ raise HTTPException(
357
+ status_code=500,
358
+ detail=f"Failed to load model {req.model} from {req.modelFile}, {e}",
359
+ )
360
+ text = req.text
361
+ kata_tone_list = [
362
+ (mora_tone.mora, mora_tone.tone) for mora_tone in req.moraToneList
363
+ ]
364
+ phone_tone = kata_tone2phone_tone(kata_tone_list)
365
+ tone = [t for _, t in phone_tone]
366
+ sr, audio = model.infer(
367
+ text=text,
368
+ language=req.language,
369
+ sdp_ratio=req.sdpRatio,
370
+ noise=req.noise,
371
+ noise_w=req.noisew,
372
+ length=1 / req.speed,
373
+ given_tone=tone,
374
+ style=req.style,
375
+ style_weight=req.styleWeight,
376
+ assist_text=req.assistText,
377
+ assist_text_weight=req.assistTextWeight,
378
+ use_assist_text=bool(req.assistText),
379
+ line_split=False,
380
+ pitch_scale=req.pitchScale,
381
+ intonation_scale=req.intonationScale,
382
+ )
383
+ audios.append(audio)
384
+ if i < len(lines) - 1:
385
+ silence = int(sr * req.silenceAfter)
386
+ audios.append(np.zeros(silence, dtype=np.int16))
387
+ audio = np.concatenate(audios)
388
+
389
+ with BytesIO() as wavContent:
390
+ wavfile.write(wavContent, sr, audio)
391
+ return Response(content=wavContent.getvalue(), media_type="audio/wav")
392
+
393
+
394
+ class UserDictWordRequest(BaseModel):
395
+ surface: str
396
+ pronunciation: str
397
+ accent_type: int # アクセント核位置(存在しない場合は0、1文字目は1)
398
+ priority: int = 5
399
+
400
+
401
+ @router.get("/user_dict")
402
+ def get_user_dict():
403
+ return read_dict()
404
+
405
+
406
+ @router.post("/user_dict_word")
407
+ def add_user_dict_word(request: UserDictWordRequest):
408
+ uuid = apply_word(
409
+ surface=request.surface,
410
+ pronunciation=request.pronunciation,
411
+ accent_type=request.accent_type,
412
+ priority=request.priority,
413
+ )
414
+ update_dict()
415
+
416
+ return JSONResponse(
417
+ status_code=status.HTTP_201_CREATED,
418
+ content={"uuid": uuid},
419
+ )
420
+
421
+
422
+ @router.put("/user_dict_word/{uuid}")
423
+ def update_user_dict_word(uuid: str, request: UserDictWordRequest):
424
+ rewrite_word(
425
+ word_uuid=uuid,
426
+ surface=request.surface,
427
+ pronunciation=request.pronunciation,
428
+ accent_type=request.accent_type,
429
+ priority=request.priority,
430
+ )
431
+ update_dict()
432
+ return JSONResponse(status_code=status.HTTP_200_OK, content={"uuid": uuid})
433
+
434
+
435
+ @router.delete("/user_dict_word/{uuid}")
436
+ def delete_user_dict_word(uuid: str):
437
+ delete_word(uuid)
438
+ update_dict()
439
+ return JSONResponse(status_code=status.HTTP_200_OK, content={"uuid": uuid})
440
+
441
+
442
+ app.include_router(router, prefix="/api")
443
+
444
+ if __name__ == "__main__":
445
+ if not skip_static_files:
446
+ download_static_files("litagin02", "Style-Bert-VITS2-Editor", "out.zip")
447
+ app.mount("/", StaticFiles(directory=STATIC_DIR, html=True), name="static")
448
+ if args.inbrowser:
449
+ webbrowser.open(f"http://localhost:{port}")
450
+ uvicorn.run(app, host="0.0.0.0", port=port)
static/404.html ADDED
@@ -0,0 +1 @@
 
 
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/5436164e6b2d4e5d-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/c745b8e5e8f4c069.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/caddefc280ca628b.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-ef267f3d2baed886.js"/><script src="/_next/static/chunks/fd9d1056-90960e0a7e77703c.js" async=""></script><script src="/_next/static/chunks/23-c6362522adba14e9.js" async=""></script><script src="/_next/static/chunks/main-app-af2733a7da866e1d.js" async=""></script><script src="/_next/static/chunks/154-fb54c66a309416b5.js" async=""></script><script src="/_next/static/chunks/450-e98783cfbe10f77f.js" async=""></script><script src="/_next/static/chunks/app/layout-003f3f0c2945f2e7.js" async=""></script><title>404: This page could not be found.</title><title>Style-Bert-VITS2 エディター</title><meta name="description" content="Style-Bert-VITS2の音声合成エディターです。"/><meta name="next-size-adjust"/><script src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js" noModule=""></script></head><body class="__className_aaf875"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="/_next/static/chunks/webpack-ef267f3d2baed886.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/media/5436164e6b2d4e5d-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n2:HL[\"/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n3:HL[\"/_next/static/css/c745b8e5e8f4c069.css\",\"style\"]\n4:HL[\"/_next/static/css/caddefc280ca628b.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"5:I[5751,[],\"\"]\n7:I[9275,[],\"\"]\n8:I[1343,[],\"\"]\n9:I[9237,[\"154\",\"static/chunks/154-fb54c66a309416b5.js\",\"450\",\"static/chunks/450-e98783cfbe10f77f.js\",\"185\",\"static/chunks/app/layout-003f3f0c2945f2e7.js\"],\"default\"]\na:I[6324,[\"154\",\"static/chunks/154-fb54c66a309416b5.js\",\"450\",\"static/chunks/450-e98783cfbe10f77f.js\",\"185\",\"static/chunks/app/layout-003f3f0c2945f2e7.js\"],\"ThemeProvider\"]\nb:I[4016,[\"154\",\"static/chunks/154-fb54c66a309416b5.js\",\"450\",\"static/chunks/450-e98783cfbe10f77f.js\",\"185\",\"static/chunks/app/layout-003f3f0c2945f2e7.js\"],\"default\"]\n11:I[6130,[],\"\"]\nc:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\nd:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\ne:{\"display\":\"inline-block\"}\nf:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\n12:[]\n"])</script><script>self.__next_f.push([1,"0:[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/c745b8e5e8f4c069.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/caddefc280ca628b.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"$L5\",null,{\"buildId\":\"7Ebwtq-c5RXrtRkbNZ_HI\",\"assetPrefix\":\"\",\"initialCanonicalUrl\":\"/_not-found\",\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$L6\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]]],null],null]},[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\",\"styles\":null}],null]},[[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"__className_aaf875\",\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$La\",null,{\"theme\":\"$b\",\"children\":[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$c\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$d\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$e\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$f\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[],\"styles\":null}]}]}]}]}],null],null],\"couldBeIntercepted\":false,\"initialHead\":[false,\"$L10\"],\"globalErrorComponent\":\"$11\",\"missingSlots\":\"$W12\"}]]\n"])</script><script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Style-Bert-VITS2 エディター\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Style-Bert-VITS2の音声合成エディターです。\"}],[\"$\",\"meta\",\"4\",{\"name\":\"next-size-adjust\"}]]\n6:null\n"])</script></body></html>
static/_next/static/7Ebwtq-c5RXrtRkbNZ_HI/_buildManifest.js ADDED
@@ -0,0 +1 @@
 
 
1
+ self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/_error":["static/chunks/pages/_error-1be831200e60c5c0.js"],sortedPages:["/_app","/_error"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
static/_next/static/7Ebwtq-c5RXrtRkbNZ_HI/_ssgManifest.js ADDED
@@ -0,0 +1 @@
 
 
1
+ self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()
static/_next/static/chunks/154-fb54c66a309416b5.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[154],{6309:function(e,t,r){r.d(t,{Z:function(){return G}});var n=function(){function e(e){var t=this;this._insertTag=function(e){var r;r=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,r),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){if(this.ctr%(this.isSpeedy?65e3:1)==0){var t;this._insertTag(((t=document.createElement("style")).setAttribute("data-emotion",this.key),void 0!==this.nonce&&t.setAttribute("nonce",this.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t))}var r=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}(r);try{n.insertRule(e,n.cssRules.length)}catch(e){}}else r.appendChild(document.createTextNode(e));this.ctr++},t.flush=function(){this.tags.forEach(function(e){return e.parentNode&&e.parentNode.removeChild(e)}),this.tags=[],this.ctr=0},e}(),o=Math.abs,i=String.fromCharCode,a=Object.assign;function s(e,t,r){return e.replace(t,r)}function l(e,t){return e.indexOf(t)}function c(e,t){return 0|e.charCodeAt(t)}function u(e,t,r){return e.slice(t,r)}function f(e){return e.length}function p(e,t){return t.push(e),e}var d=1,m=1,h=0,y=0,g=0,b="";function v(e,t,r,n,o,i,a){return{value:e,root:t,parent:r,type:n,props:o,children:i,line:d,column:m,length:a,return:""}}function x(e,t){return a(v("",null,null,"",null,null,0),e,{length:-e.length},t)}function k(){return g=y<h?c(b,y++):0,m++,10===g&&(m=1,d++),g}function w(){return c(b,y)}function Z(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function A(e){return d=m=1,h=f(b=e),y=0,[]}function S(e){var t,r;return(t=y-1,r=function e(t){for(;k();)switch(g){case t:return y;case 34:case 39:34!==t&&39!==t&&e(g);break;case 40:41===t&&e(t);break;case 92:k()}return y}(91===e?e+2:40===e?e+1:e),u(b,t,r)).trim()}var O="-ms-",P="-moz-",C="-webkit-",$="comm",_="rule",T="decl",j="@keyframes";function R(e,t){for(var r="",n=e.length,o=0;o<n;o++)r+=t(e[o],o,e,t)||"";return r}function E(e,t,r,n){switch(e.type){case"@layer":if(e.children.length)break;case"@import":case T:return e.return=e.return||e.value;case $:return"";case j:return e.return=e.value+"{"+R(e.children,n)+"}";case _:e.value=e.props.join(",")}return f(r=R(e.children,n))?e.return=e.value+"{"+r+"}":""}function M(e,t,r,n,i,a,l,c,f,p,d){for(var m=i-1,h=0===i?a:[""],y=h.length,g=0,b=0,x=0;g<n;++g)for(var k=0,w=u(e,m+1,m=o(b=l[g])),Z=e;k<y;++k)(Z=(b>0?h[k]+" "+w:s(w,/&\f/g,h[k])).trim())&&(f[x++]=Z);return v(e,t,r,0===i?_:c,f,p,d)}function I(e,t,r,n){return v(e,t,r,T,u(e,0,n),u(e,n+1,-1),n)}var z=function(e,t,r){for(var n=0,o=0;n=o,o=w(),38===n&&12===o&&(t[r]=1),!Z(o);)k();return u(b,e,y)},B=function(e,t){var r=-1,n=44;do switch(Z(n)){case 0:38===n&&12===w()&&(t[r]=1),e[r]+=z(y-1,t,r);break;case 2:e[r]+=S(n);break;case 4:if(44===n){e[++r]=58===w()?"&\f":"",t[r]=e[r].length;break}default:e[r]+=i(n)}while(n=k());return e},N=function(e,t){var r;return r=B(A(e),t),b="",r},L=new WeakMap,F=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,r=e.parent,n=e.column===r.column&&e.line===r.line;"rule"!==r.type;)if(!(r=r.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||L.get(r))&&!n){L.set(e,!0);for(var o=[],i=N(t,o),a=r.props,s=0,l=0;s<i.length;s++)for(var c=0;c<a.length;c++,l++)e.props[l]=o[s]?i[s].replace(/&\f/g,a[c]):a[c]+" "+i[s]}}},W=function(e){if("decl"===e.type){var t=e.value;108===t.charCodeAt(0)&&98===t.charCodeAt(2)&&(e.return="",e.value="")}},K=[function(e,t,r,n){if(e.length>-1&&!e.return)switch(e.type){case T:e.return=function e(t,r){switch(45^c(t,0)?(((r<<2^c(t,0))<<2^c(t,1))<<2^c(t,2))<<2^c(t,3):0){case 5103:return C+"print-"+t+t;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return C+t+t;case 5349:case 4246:case 4810:case 6968:case 2756:return C+t+P+t+O+t+t;case 6828:case 4268:return C+t+O+t+t;case 6165:return C+t+O+"flex-"+t+t;case 5187:return C+t+s(t,/(\w+).+(:[^]+)/,C+"box-$1$2"+O+"flex-$1$2")+t;case 5443:return C+t+O+"flex-item-"+s(t,/flex-|-self/,"")+t;case 4675:return C+t+O+"flex-line-pack"+s(t,/align-content|flex-|-self/,"")+t;case 5548:return C+t+O+s(t,"shrink","negative")+t;case 5292:return C+t+O+s(t,"basis","preferred-size")+t;case 6060:return C+"box-"+s(t,"-grow","")+C+t+O+s(t,"grow","positive")+t;case 4554:return C+s(t,/([^-])(transform)/g,"$1"+C+"$2")+t;case 6187:return s(s(s(t,/(zoom-|grab)/,C+"$1"),/(image-set)/,C+"$1"),t,"")+t;case 5495:case 3959:return s(t,/(image-set\([^]*)/,C+"$1$`$1");case 4968:return s(s(t,/(.+:)(flex-)?(.*)/,C+"box-pack:$3"+O+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+C+t+t;case 4095:case 3583:case 4068:case 2532:return s(t,/(.+)-inline(.+)/,C+"$1$2")+t;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(f(t)-1-r>6)switch(c(t,r+1)){case 109:if(45!==c(t,r+4))break;case 102:return s(t,/(.+:)(.+)-([^]+)/,"$1"+C+"$2-$3$1"+P+(108==c(t,r+3)?"$3":"$2-$3"))+t;case 115:return~l(t,"stretch")?e(s(t,"stretch","fill-available"),r)+t:t}break;case 4949:if(115!==c(t,r+1))break;case 6444:switch(c(t,f(t)-3-(~l(t,"!important")&&10))){case 107:return s(t,":",":"+C)+t;case 101:return s(t,/(.+:)([^;!]+)(;|!.+)?/,"$1"+C+(45===c(t,14)?"inline-":"")+"box$3$1"+C+"$2$3$1"+O+"$2box$3")+t}break;case 5936:switch(c(t,r+11)){case 114:return C+t+O+s(t,/[svh]\w+-[tblr]{2}/,"tb")+t;case 108:return C+t+O+s(t,/[svh]\w+-[tblr]{2}/,"tb-rl")+t;case 45:return C+t+O+s(t,/[svh]\w+-[tblr]{2}/,"lr")+t}return C+t+O+t+t}return t}(e.value,e.length);break;case j:return R([x(e,{value:s(e.value,"@","@"+C)})],n);case _:if(e.length){var o,i;return o=e.props,i=function(t){var r;switch(r=t,(r=/(::plac\w+|:read-\w+)/.exec(r))?r[0]:r){case":read-only":case":read-write":return R([x(e,{props:[s(t,/:(read-\w+)/,":"+P+"$1")]})],n);case"::placeholder":return R([x(e,{props:[s(t,/:(plac\w+)/,":"+C+"input-$1")]}),x(e,{props:[s(t,/:(plac\w+)/,":"+P+"$1")]}),x(e,{props:[s(t,/:(plac\w+)/,O+"input-$1")]})],n)}return""},o.map(i).join("")}}}],G=function(e){var t,r,o,a,h,x,O=e.key;if("css"===O){var P=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(P,function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))})}var C=e.stylisPlugins||K,_={},T=[];a=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+O+' "]'),function(e){for(var t=e.getAttribute("data-emotion").split(" "),r=1;r<t.length;r++)_[t[r]]=!0;T.push(e)});var j=(r=(t=[F,W].concat(C,[E,(o=function(e){x.insert(e)},function(e){!e.root&&(e=e.return)&&o(e)})])).length,function(e,n,o,i){for(var a="",s=0;s<r;s++)a+=t[s](e,n,o,i)||"";return a}),z=function(e){var t,r;return R((r=function e(t,r,n,o,a,h,x,A,O){for(var P,C=0,_=0,T=x,j=0,R=0,E=0,z=1,B=1,N=1,L=0,F="",W=a,K=h,G=o,H=F;B;)switch(E=L,L=k()){case 40:if(108!=E&&58==c(H,T-1)){-1!=l(H+=s(S(L),"&","&\f"),"&\f")&&(N=-1);break}case 34:case 39:case 91:H+=S(L);break;case 9:case 10:case 13:case 32:H+=function(e){for(;g=w();)if(g<33)k();else break;return Z(e)>2||Z(g)>3?"":" "}(E);break;case 92:H+=function(e,t){for(var r;--t&&k()&&!(g<48)&&!(g>102)&&(!(g>57)||!(g<65))&&(!(g>70)||!(g<97)););return r=y+(t<6&&32==w()&&32==k()),u(b,e,r)}(y-1,7);continue;case 47:switch(w()){case 42:case 47:p(v(P=function(e,t){for(;k();)if(e+g===57)break;else if(e+g===84&&47===w())break;return"/*"+u(b,t,y-1)+"*"+i(47===e?e:k())}(k(),y),r,n,$,i(g),u(P,2,-2),0),O);break;default:H+="/"}break;case 123*z:A[C++]=f(H)*N;case 125*z:case 59:case 0:switch(L){case 0:case 125:B=0;case 59+_:-1==N&&(H=s(H,/\f/g,"")),R>0&&f(H)-T&&p(R>32?I(H+";",o,n,T-1):I(s(H," ","")+";",o,n,T-2),O);break;case 59:H+=";";default:if(p(G=M(H,r,n,C,_,a,A,F,W=[],K=[],T),h),123===L){if(0===_)e(H,r,G,G,W,h,T,A,K);else switch(99===j&&110===c(H,3)?100:j){case 100:case 108:case 109:case 115:e(t,G,G,o&&p(M(t,G,G,0,0,a,A,F,a,W=[],T),K),a,K,T,A,o?W:K);break;default:e(H,G,G,G,[""],K,0,A,K)}}}C=_=R=0,z=N=1,F=H="",T=x;break;case 58:T=1+f(H),R=E;default:if(z<1){if(123==L)--z;else if(125==L&&0==z++&&125==(g=y>0?c(b,--y):0,m--,10===g&&(m=1,d--),g))continue}switch(H+=i(L),L*z){case 38:N=_>0?1:(H+="\f",-1);break;case 44:A[C++]=(f(H)-1)*N,N=1;break;case 64:45===w()&&(H+=S(k())),j=w(),_=T=f(F=H+=function(e){for(;!Z(w());)k();return u(b,e,y)}(y)),L++;break;case 45:45===E&&2==f(H)&&(z=0)}}return h}("",null,null,null,[""],t=A(t=e),0,[0],t),b="",r),j)};h=function(e,t,r,n){x=r,z(e?e+"{"+t.styles+"}":t.styles),n&&(B.inserted[t.name]=!0)};var B={key:O,sheet:new n({key:O,container:a,nonce:e.nonce,speedy:e.speedy,prepend:e.prepend,insertionPoint:e.insertionPoint}),nonce:e.nonce,inserted:_,registered:{},insert:h};return B.sheet.hydrate(T),B}},5206:function(e,t,r){r.d(t,{Z:function(){return n}});function n(e){var t=Object.create(null);return function(r){return void 0===t[r]&&(t[r]=e(r)),t[r]}}},2606:function(e,t,r){r.d(t,{C:function(){return s},T:function(){return c},i:function(){return i},w:function(){return l}});var n=r(2265),o=r(6309);r(7595),r(1073);var i=!0,a=n.createContext("undefined"!=typeof HTMLElement?(0,o.Z)({key:"css"}):null),s=a.Provider,l=function(e){return(0,n.forwardRef)(function(t,r){return e(t,(0,n.useContext)(a),r)})};i||(l=function(e){return function(t){var r=(0,n.useContext)(a);return null===r?(r=(0,o.Z)({key:"css"}),n.createElement(a.Provider,{value:r},e(t,r))):e(t,r)}});var c=n.createContext({})},3098:function(e,t,r){r.d(t,{F4:function(){return u},iv:function(){return c},xB:function(){return l}});var n=r(2606),o=r(2265),i=r(9926),a=r(1073),s=r(7595);r(6309),r(6451);var l=(0,n.w)(function(e,t){var r=e.styles,l=(0,s.O)([r],void 0,o.useContext(n.T));if(!n.i){for(var c,u=l.name,f=l.styles,p=l.next;void 0!==p;)u+=" "+p.name,f+=p.styles,p=p.next;var d=!0===t.compat,m=t.insert("",{name:u,styles:f},t.sheet,d);return d?null:o.createElement("style",((c={})["data-emotion"]=t.key+"-global "+u,c.dangerouslySetInnerHTML={__html:m},c.nonce=t.sheet.nonce,c))}var h=o.useRef();return(0,a.j)(function(){var e=t.key+"-global",r=new t.sheet.constructor({key:e,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy}),n=!1,o=document.querySelector('style[data-emotion="'+e+" "+l.name+'"]');return t.sheet.tags.length&&(r.before=t.sheet.tags[0]),null!==o&&(n=!0,o.setAttribute("data-emotion",e),r.hydrate([o])),h.current=[r,n],function(){r.flush()}},[t]),(0,a.j)(function(){var e=h.current,r=e[0];if(e[1]){e[1]=!1;return}if(void 0!==l.next&&(0,i.My)(t,l.next,!0),r.tags.length){var n=r.tags[r.tags.length-1].nextElementSibling;r.before=n,r.flush()}t.insert("",l,r,!1)},[t,l.name]),null});function c(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,s.O)(t)}var u=function(){var e=c.apply(void 0,arguments),t="animation-"+e.name;return{name:t,styles:"@keyframes "+t+"{"+e.styles+"}",anim:1,toString:function(){return"_EMO_"+this.name+"_"+this.styles+"_EMO_"}}}},7595:function(e,t,r){r.d(t,{O:function(){return m}});var n,o={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},i=r(5206),a=/[A-Z]|^ms/g,s=/_EMO_([^_]+?)_([^]*?)_EMO_/g,l=function(e){return 45===e.charCodeAt(1)},c=function(e){return null!=e&&"boolean"!=typeof e},u=(0,i.Z)(function(e){return l(e)?e:e.replace(a,"-$&").toLowerCase()}),f=function(e,t){switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace(s,function(e,t,r){return n={name:t,styles:r,next:n},t})}return 1===o[e]||l(e)||"number"!=typeof t||0===t?t:t+"px"};function p(e,t,r){if(null==r)return"";if(void 0!==r.__emotion_styles)return r;switch(typeof r){case"boolean":return"";case"object":if(1===r.anim)return n={name:r.name,styles:r.styles,next:n},r.name;if(void 0!==r.styles){var o=r.next;if(void 0!==o)for(;void 0!==o;)n={name:o.name,styles:o.styles,next:n},o=o.next;return r.styles+";"}return function(e,t,r){var n="";if(Array.isArray(r))for(var o=0;o<r.length;o++)n+=p(e,t,r[o])+";";else for(var i in r){var a=r[i];if("object"!=typeof a)null!=t&&void 0!==t[a]?n+=i+"{"+t[a]+"}":c(a)&&(n+=u(i)+":"+f(i,a)+";");else if(Array.isArray(a)&&"string"==typeof a[0]&&(null==t||void 0===t[a[0]]))for(var s=0;s<a.length;s++)c(a[s])&&(n+=u(i)+":"+f(i,a[s])+";");else{var l=p(e,t,a);switch(i){case"animation":case"animationName":n+=u(i)+":"+l+";";break;default:n+=i+"{"+l+"}"}}}return n}(e,t,r);case"function":if(void 0!==e){var i=n,a=r(e);return n=i,p(e,t,a)}}if(null==t)return r;var s=t[r];return void 0!==s?s:r}var d=/label:\s*([^\s;\n{]+)\s*(;|$)/g,m=function(e,t,r){if(1===e.length&&"object"==typeof e[0]&&null!==e[0]&&void 0!==e[0].styles)return e[0];var o,i=!0,a="";n=void 0;var s=e[0];null==s||void 0===s.raw?(i=!1,a+=p(r,t,s)):a+=s[0];for(var l=1;l<e.length;l++)a+=p(r,t,e[l]),i&&(a+=s[l]);d.lastIndex=0;for(var c="";null!==(o=d.exec(a));)c+="-"+o[1];return{name:function(e){for(var t,r=0,n=0,o=e.length;o>=4;++n,o-=4)t=(65535&(t=255&e.charCodeAt(n)|(255&e.charCodeAt(++n))<<8|(255&e.charCodeAt(++n))<<16|(255&e.charCodeAt(++n))<<24))*1540483477+((t>>>16)*59797<<16),t^=t>>>24,r=(65535&t)*1540483477+((t>>>16)*59797<<16)^(65535&r)*1540483477+((r>>>16)*59797<<16);switch(o){case 3:r^=(255&e.charCodeAt(n+2))<<16;case 2:r^=(255&e.charCodeAt(n+1))<<8;case 1:r^=255&e.charCodeAt(n),r=(65535&r)*1540483477+((r>>>16)*59797<<16)}return r^=r>>>13,(((r=(65535&r)*1540483477+((r>>>16)*59797<<16))^r>>>15)>>>0).toString(36)}(a)+c,styles:a,next:n}}},1073:function(e,t,r){r.d(t,{L:function(){return a},j:function(){return s}});var n,o=r(2265),i=!!(n||(n=r.t(o,2))).useInsertionEffect&&(n||(n=r.t(o,2))).useInsertionEffect,a=i||function(e){return e()},s=i||o.useLayoutEffect},9926:function(e,t,r){function n(e,t,r){var n="";return r.split(" ").forEach(function(r){void 0!==e[r]?t.push(e[r]+";"):n+=r+" "}),n}r.d(t,{My:function(){return i},fp:function(){return n},hC:function(){return o}});var o=function(e,t,r){var n=e.key+"-"+t.name;!1===r&&void 0===e.registered[n]&&(e.registered[n]=t.styles)},i=function(e,t,r){o(e,t,r);var n=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var i=t;do e.insert(t===i?"."+n:"",i,e.sheet,!0),i=i.next;while(void 0!==i)}}},1523:function(e,t,r){r.d(t,{Z:function(){return o}});var n=r(2988);function o(e,t){return(0,n.Z)({toolbar:{minHeight:56,[e.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[e.up("sm")]:{minHeight:64}}},t)}},8285:function(e,t,r){r.d(t,{A:function(){return T},Z:function(){return j}});var n=r(2988),o=r(3950),i=r(2414),a=r(6529),s=r(2501),l=r(9626),c=r(7267),u=r(1523),f=r(2305),p={black:"#000",white:"#fff"},d={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"},m={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"},h={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},y={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},g={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},b={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"},v={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"};let x=["mode","contrastThreshold","tonalOffset"],k={text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:p.white,default:p.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}},w={text:{primary:p.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:p.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}};function Z(e,t,r,n){let o=n.light||n,i=n.dark||1.5*n;e[t]||(e.hasOwnProperty(r)?e[t]=e[r]:"light"===t?e.light=(0,f.$n)(e.main,o):"dark"===t&&(e.dark=(0,f._j)(e.main,i)))}var A=r(5032);function S(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return["".concat(t[0],"px ").concat(t[1],"px ").concat(t[2],"px ").concat(t[3],"px rgba(0,0,0,").concat(.2,")"),"".concat(t[4],"px ").concat(t[5],"px ").concat(t[6],"px ").concat(t[7],"px rgba(0,0,0,").concat(.14,")"),"".concat(t[8],"px ").concat(t[9],"px ").concat(t[10],"px ").concat(t[11],"px rgba(0,0,0,").concat(.12,")")].join(",")}let O=["none",S(0,2,1,-1,0,1,1,0,0,1,3,0),S(0,3,1,-2,0,2,2,0,0,1,5,0),S(0,3,3,-2,0,3,4,0,0,1,8,0),S(0,2,4,-1,0,4,5,0,0,1,10,0),S(0,3,5,-1,0,5,8,0,0,1,14,0),S(0,3,5,-1,0,6,10,0,0,1,18,0),S(0,4,5,-2,0,7,10,1,0,2,16,1),S(0,5,5,-3,0,8,10,1,0,3,14,2),S(0,5,6,-3,0,9,12,1,0,3,16,2),S(0,6,6,-3,0,10,14,1,0,4,18,3),S(0,6,7,-4,0,11,15,1,0,4,20,3),S(0,7,8,-4,0,12,17,2,0,5,22,4),S(0,7,8,-4,0,13,19,2,0,5,24,4),S(0,7,9,-4,0,14,21,2,0,5,26,4),S(0,8,9,-5,0,15,22,2,0,6,28,5),S(0,8,10,-5,0,16,24,2,0,6,30,5),S(0,8,11,-5,0,17,26,2,0,6,32,5),S(0,9,11,-5,0,18,28,2,0,7,34,6),S(0,9,12,-6,0,19,29,2,0,7,36,6),S(0,10,13,-6,0,20,31,3,0,8,38,7),S(0,10,13,-6,0,21,33,3,0,8,40,7),S(0,10,14,-6,0,22,35,3,0,8,42,7),S(0,11,14,-7,0,23,36,3,0,9,44,8),S(0,11,15,-7,0,24,38,3,0,9,46,8)];var P=r(1355),C={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};let $=["breakpoints","mixins","spacing","palette","transitions","typography","shape"];function _(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};for(var t=arguments.length,r=Array(t>1?t-1:0),S=1;S<t;S++)r[S-1]=arguments[S];let{mixins:_={},palette:T={},transitions:j={},typography:R={}}=e,E=(0,o.Z)(e,$);if(e.vars)throw Error((0,i.Z)(18));let M=function(e){let{mode:t="light",contrastThreshold:r=3,tonalOffset:s=.2}=e,l=(0,o.Z)(e,x),c=e.primary||function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light";return"dark"===e?{main:g[200],light:g[50],dark:g[400]}:{main:g[700],light:g[400],dark:g[800]}}(t),u=e.secondary||function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light";return"dark"===e?{main:m[200],light:m[50],dark:m[400]}:{main:m[500],light:m[300],dark:m[700]}}(t),A=e.error||function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light";return"dark"===e?{main:h[500],light:h[300],dark:h[700]}:{main:h[700],light:h[400],dark:h[800]}}(t),S=e.info||function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light";return"dark"===e?{main:b[400],light:b[300],dark:b[700]}:{main:b[700],light:b[500],dark:b[900]}}(t),O=e.success||function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light";return"dark"===e?{main:v[400],light:v[300],dark:v[700]}:{main:v[800],light:v[500],dark:v[900]}}(t),P=e.warning||function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light";return"dark"===e?{main:y[400],light:y[300],dark:y[700]}:{main:"#ed6c02",light:y[500],dark:y[900]}}(t);function C(e){return(0,f.mi)(e,w.text.primary)>=r?w.text.primary:k.text.primary}let $=e=>{let{color:t,name:r,mainShade:o=500,lightShade:a=300,darkShade:l=700}=e;if(!(t=(0,n.Z)({},t)).main&&t[o]&&(t.main=t[o]),!t.hasOwnProperty("main"))throw Error((0,i.Z)(11,r?" (".concat(r,")"):"",o));if("string"!=typeof t.main)throw Error((0,i.Z)(12,r?" (".concat(r,")"):"",JSON.stringify(t.main)));return Z(t,"light",a,s),Z(t,"dark",l,s),t.contrastText||(t.contrastText=C(t.main)),t};return(0,a.Z)((0,n.Z)({common:(0,n.Z)({},p),mode:t,primary:$({color:c,name:"primary"}),secondary:$({color:u,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:$({color:A,name:"error"}),warning:$({color:P,name:"warning"}),info:$({color:S,name:"info"}),success:$({color:O,name:"success"}),grey:d,contrastThreshold:r,getContrastText:C,augmentColor:$,tonalOffset:s},{dark:w,light:k}[t]),l)}(T),I=(0,s.Z)(e),z=(0,a.Z)(I,{mixins:(0,u.Z)(I.breakpoints,_),palette:M,shadows:O.slice(),typography:(0,A.Z)(M,R),transitions:(0,P.ZP)(j),zIndex:(0,n.Z)({},C)});return z=(0,a.Z)(z,E),(z=r.reduce((e,t)=>(0,a.Z)(e,t),z)).unstable_sxConfig=(0,n.Z)({},l.Z,null==E?void 0:E.unstable_sxConfig),z.unstable_sx=function(e){return(0,c.Z)({sx:e,theme:this})},z}function T(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return _(...t)}var j=_},1355:function(e,t,r){r.d(t,{Ui:function(){return a},ZP:function(){return u},x9:function(){return s}});var n=r(3950),o=r(2988);let i=["duration","easing","delay"],a={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},s={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function l(e){return"".concat(Math.round(e),"ms")}function c(e){if(!e)return 0;let t=e/36;return Math.round((4+15*t**.25+t/5)*10)}function u(e){let t=(0,o.Z)({},a,e.easing),r=(0,o.Z)({},s,e.duration);return(0,o.Z)({getAutoHeightDuration:c,create:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["all"],o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{duration:a=r.standard,easing:s=t.easeInOut,delay:c=0}=o;return(0,n.Z)(o,i),(Array.isArray(e)?e:[e]).map(e=>"".concat(e," ").concat("string"==typeof a?a:l(a)," ").concat(s," ").concat("string"==typeof c?c:l(c))).join(",")}},e,{easing:t,duration:r})}},5032:function(e,t,r){r.d(t,{Z:function(){return c}});var n=r(2988),o=r(3950),i=r(6529);let a=["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"],s={textTransform:"uppercase"},l='"Roboto", "Helvetica", "Arial", sans-serif';function c(e,t){let r="function"==typeof t?t(e):t,{fontFamily:c=l,fontSize:u=14,fontWeightLight:f=300,fontWeightRegular:p=400,fontWeightMedium:d=500,fontWeightBold:m=700,htmlFontSize:h=16,allVariants:y,pxToRem:g}=r,b=(0,o.Z)(r,a),v=u/14,x=g||(e=>"".concat(e/h*v,"rem")),k=(e,t,r,o,i)=>(0,n.Z)({fontFamily:c,fontWeight:e,fontSize:x(t),lineHeight:r},c===l?{letterSpacing:"".concat(Math.round(o/t*1e5)/1e5,"em")}:{},i,y),w={h1:k(f,96,1.167,-1.5),h2:k(f,60,1.2,-.5),h3:k(p,48,1.167,0),h4:k(p,34,1.235,.25),h5:k(p,24,1.334,0),h6:k(d,20,1.6,.15),subtitle1:k(p,16,1.75,.15),subtitle2:k(d,14,1.57,.1),body1:k(p,16,1.5,.15),body2:k(p,14,1.43,.15),button:k(d,14,1.75,.4,s),caption:k(p,12,1.66,.4),overline:k(p,12,2.66,1,s),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return(0,i.Z)((0,n.Z)({htmlFontSize:h,pxToRem:x,fontFamily:c,fontSize:u,fontWeightLight:f,fontWeightRegular:p,fontWeightMedium:d,fontWeightBold:m},w),b,{clone:!1})}},7547:function(e,t,r){let n=(0,r(8285).Z)();t.Z=n},1931:function(e,t){t.Z=e=>((e<1?5.11916*e**2:4.5*Math.log(e+1)+2)/100).toFixed(2)},2737:function(e,t){t.Z="$$material"},8024:function(e,t,r){r.d(t,{Dz:function(){return s},FO:function(){return a}});var n=r(7906),o=r(7547),i=r(2737);let a=e=>(0,n.x9)(e)&&"classes"!==e,s=n.x9,l=(0,n.ZP)({themeId:i.Z,defaultTheme:o.Z,rootShouldForwardProp:a});t.ZP=l},2960:function(e,t,r){r.d(t,{Z:function(){return a}}),r(2265);var n=r(4874),o=r(7547),i=r(2737);function a(){let e=(0,n.Z)(o.Z);return e[i.Z]||e}},9281:function(e,t,r){r.d(t,{Z:function(){return a}});var n=r(4999),o=r(7547),i=r(2737);function a(e){let{props:t,name:r}=e;return(0,n.Z)({props:t,name:r,defaultTheme:o.Z,themeId:i.Z})}},6003:function(e,t,r){r.d(t,{Z:function(){return i}}),r(2265);var n=r(3098),o=r(7437);function i(e){let{styles:t,defaultTheme:r={}}=e,i="function"==typeof t?e=>t(null==e||0===Object.keys(e).length?r:e):t;return(0,o.jsx)(n.xB,{styles:i})}},3992:function(e,t,r){r.d(t,{ZP:function(){return g},Co:function(){return b}});var n=r(2988),o=r(2265),i=r(5206),a=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,s=(0,i.Z)(function(e){return a.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&91>e.charCodeAt(2)}),l=r(2606),c=r(9926),u=r(7595),f=r(1073),p=function(e){return"theme"!==e},d=function(e){return"string"==typeof e&&e.charCodeAt(0)>96?s:p},m=function(e,t,r){var n;if(t){var o=t.shouldForwardProp;n=e.__emotion_forwardProp&&o?function(t){return e.__emotion_forwardProp(t)&&o(t)}:o}return"function"!=typeof n&&r&&(n=e.__emotion_forwardProp),n},h=function(e){var t=e.cache,r=e.serialized,n=e.isStringTag;return(0,c.hC)(t,r,n),(0,f.L)(function(){return(0,c.My)(t,r,n)}),null},y=(function e(t,r){var i,a,s=t.__emotion_real===t,f=s&&t.__emotion_base||t;void 0!==r&&(i=r.label,a=r.target);var p=m(t,r,s),y=p||d(f),g=!y("as");return function(){var b=arguments,v=s&&void 0!==t.__emotion_styles?t.__emotion_styles.slice(0):[];if(void 0!==i&&v.push("label:"+i+";"),null==b[0]||void 0===b[0].raw)v.push.apply(v,b);else{v.push(b[0][0]);for(var x=b.length,k=1;k<x;k++)v.push(b[k],b[0][k])}var w=(0,l.w)(function(e,t,r){var n=g&&e.as||f,i="",s=[],m=e;if(null==e.theme){for(var b in m={},e)m[b]=e[b];m.theme=o.useContext(l.T)}"string"==typeof e.className?i=(0,c.fp)(t.registered,s,e.className):null!=e.className&&(i=e.className+" ");var x=(0,u.O)(v.concat(s),t.registered,m);i+=t.key+"-"+x.name,void 0!==a&&(i+=" "+a);var k=g&&void 0===p?d(n):y,w={};for(var Z in e)(!g||"as"!==Z)&&k(Z)&&(w[Z]=e[Z]);return w.className=i,w.ref=r,o.createElement(o.Fragment,null,o.createElement(h,{cache:t,serialized:x,isStringTag:"string"==typeof n}),o.createElement(n,w))});return w.displayName=void 0!==i?i:"Styled("+("string"==typeof f?f:f.displayName||f.name||"Component")+")",w.defaultProps=t.defaultProps,w.__emotion_real=w,w.__emotion_base=f,w.__emotion_styles=v,w.__emotion_forwardProp=p,Object.defineProperty(w,"toString",{value:function(){return"."+a}}),w.withComponent=function(t,o){return e(t,(0,n.Z)({},r,o,{shouldForwardProp:m(w,o,!0)})).apply(void 0,v)},w}}).bind();/**
2
+ * @mui/styled-engine v5.15.9
3
+ *
4
+ * @license MIT
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */function g(e,t){return y(e,t)}["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"].forEach(function(e){y[e]=y(e)});let b=(e,t)=>{Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))}},6575:function(e,t,r){r.d(t,{L7:function(){return l},P$:function(){return u},VO:function(){return o},W8:function(){return s},dt:function(){return c},k9:function(){return a}});var n=r(6529);let o={xs:0,sm:600,md:900,lg:1200,xl:1536},i={keys:["xs","sm","md","lg","xl"],up:e=>`@media (min-width:${o[e]}px)`};function a(e,t,r){let n=e.theme||{};if(Array.isArray(t)){let e=n.breakpoints||i;return t.reduce((n,o,i)=>(n[e.up(e.keys[i])]=r(t[i]),n),{})}if("object"==typeof t){let e=n.breakpoints||i;return Object.keys(t).reduce((n,i)=>(-1!==Object.keys(e.values||o).indexOf(i)?n[e.up(i)]=r(t[i],i):n[i]=t[i],n),{})}return r(t)}function s(e={}){var t;return(null==(t=e.keys)?void 0:t.reduce((t,r)=>(t[e.up(r)]={},t),{}))||{}}function l(e,t){return e.reduce((e,t)=>{let r=e[t];return r&&0!==Object.keys(r).length||delete e[t],e},t)}function c(e,...t){let r=s(e),o=[r,...t].reduce((e,t)=>(0,n.Z)(e,t),{});return l(Object.keys(r),o)}function u({values:e,breakpoints:t,base:r}){let n;let o=Object.keys(r||function(e,t){if("object"!=typeof e)return{};let r={},n=Object.keys(t);return Array.isArray(e)?n.forEach((t,n)=>{n<e.length&&(r[t]=!0)}):n.forEach(t=>{null!=e[t]&&(r[t]=!0)}),r}(e,t));return 0===o.length?e:o.reduce((t,r,o)=>(Array.isArray(e)?(t[r]=null!=e[o]?e[o]:e[n],n=o):"object"==typeof e?(t[r]=null!=e[r]?e[r]:e[n],n=r):t[r]=e,t),{})}},2305:function(e,t,r){r.d(t,{$n:function(){return v},Fq:function(){return h},H3:function(){return d},LR:function(){return c},_4:function(){return k},_j:function(){return g},fk:function(){return function e(t,r,n){try{return e(t,r)}catch(e){return t}}},mi:function(){return m},oo:function(){return a},q8:function(){return b},tB:function(){return s},ux:function(){return x},ve:function(){return p},vq:function(){return f},wy:function(){return u},zp:function(){return y}});var n=r(2414),o=r(7609);function i(e,t=0,r=1){return(0,o.Z)(e,t,r)}function a(e){e=e.slice(1);let t=RegExp(`.{1,${e.length>=6?2:1}}`,"g"),r=e.match(t);return r&&1===r[0].length&&(r=r.map(e=>e+e)),r?`rgb${4===r.length?"a":""}(${r.map((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3).join(", ")})`:""}function s(e){let t;if(e.type)return e;if("#"===e.charAt(0))return s(a(e));let r=e.indexOf("("),o=e.substring(0,r);if(-1===["rgb","rgba","hsl","hsla","color"].indexOf(o))throw Error((0,n.Z)(9,e));let i=e.substring(r+1,e.length-1);if("color"===o){if(t=(i=i.split(" ")).shift(),4===i.length&&"/"===i[3].charAt(0)&&(i[3]=i[3].slice(1)),-1===["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].indexOf(t))throw Error((0,n.Z)(10,t))}else i=i.split(",");return{type:o,values:i=i.map(e=>parseFloat(e)),colorSpace:t}}let l=e=>{let t=s(e);return t.values.slice(0,3).map((e,r)=>-1!==t.type.indexOf("hsl")&&0!==r?`${e}%`:e).join(" ")},c=(e,t)=>{try{return l(e)}catch(t){return e}};function u(e){let{type:t,colorSpace:r}=e,{values:n}=e;return -1!==t.indexOf("rgb")?n=n.map((e,t)=>t<3?parseInt(e,10):e):-1!==t.indexOf("hsl")&&(n[1]=`${n[1]}%`,n[2]=`${n[2]}%`),n=-1!==t.indexOf("color")?`${r} ${n.join(" ")}`:`${n.join(", ")}`,`${t}(${n})`}function f(e){if(0===e.indexOf("#"))return e;let{values:t}=s(e);return`#${t.map((e,t)=>(function(e){let t=e.toString(16);return 1===t.length?`0${t}`:t})(3===t?Math.round(255*e):e)).join("")}`}function p(e){let{values:t}=e=s(e),r=t[0],n=t[1]/100,o=t[2]/100,i=n*Math.min(o,1-o),a=(e,t=(e+r/30)%12)=>o-i*Math.max(Math.min(t-3,9-t,1),-1),l="rgb",c=[Math.round(255*a(0)),Math.round(255*a(8)),Math.round(255*a(4))];return"hsla"===e.type&&(l+="a",c.push(t[3])),u({type:l,values:c})}function d(e){let t="hsl"===(e=s(e)).type||"hsla"===e.type?s(p(e)).values:e.values;return Number((.2126*(t=t.map(t=>("color"!==e.type&&(t/=255),t<=.03928?t/12.92:((t+.055)/1.055)**2.4)))[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function m(e,t){let r=d(e),n=d(t);return(Math.max(r,n)+.05)/(Math.min(r,n)+.05)}function h(e,t){return e=s(e),t=i(t),("rgb"===e.type||"hsl"===e.type)&&(e.type+="a"),"color"===e.type?e.values[3]=`/${t}`:e.values[3]=t,u(e)}function y(e,t,r){try{return h(e,t)}catch(t){return e}}function g(e,t){if(e=s(e),t=i(t),-1!==e.type.indexOf("hsl"))e.values[2]*=1-t;else if(-1!==e.type.indexOf("rgb")||-1!==e.type.indexOf("color"))for(let r=0;r<3;r+=1)e.values[r]*=1-t;return u(e)}function b(e,t,r){try{return g(e,t)}catch(t){return e}}function v(e,t){if(e=s(e),t=i(t),-1!==e.type.indexOf("hsl"))e.values[2]+=(100-e.values[2])*t;else if(-1!==e.type.indexOf("rgb"))for(let r=0;r<3;r+=1)e.values[r]+=(255-e.values[r])*t;else if(-1!==e.type.indexOf("color"))for(let r=0;r<3;r+=1)e.values[r]+=(1-e.values[r])*t;return u(e)}function x(e,t,r){try{return v(e,t)}catch(t){return e}}function k(e,t=.15){return d(e)>.5?g(e,t):v(e,t)}},7906:function(e,t,r){r.d(t,{ZP:function(){return g},x9:function(){return p}});var n=r(2988),o=r(3950),i=r(3992),a=r(6529),s=r(2501),l=r(7267);let c=["ownerState"],u=["variants"],f=["name","slot","skipVariantsResolver","skipSx","overridesResolver"];function p(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}let d=(0,s.Z)(),m=e=>e?e.charAt(0).toLowerCase()+e.slice(1):e;function h({defaultTheme:e,theme:t,themeId:r}){return 0===Object.keys(t).length?e:t[r]||t}function y(e,t){let{ownerState:r}=t,i=(0,o.Z)(t,c),a="function"==typeof e?e((0,n.Z)({ownerState:r},i)):e;if(Array.isArray(a))return a.flatMap(e=>y(e,(0,n.Z)({ownerState:r},i)));if(a&&"object"==typeof a&&Array.isArray(a.variants)){let{variants:e=[]}=a,t=(0,o.Z)(a,u);return e.forEach(e=>{let o=!0;"function"==typeof e.props?o=e.props((0,n.Z)({ownerState:r},i)):Object.keys(e.props).forEach(t=>{(null==r?void 0:r[t])!==e.props[t]&&i[t]!==e.props[t]&&(o=!1)}),o&&(Array.isArray(t)||(t=[t]),t.push("function"==typeof e.style?e.style((0,n.Z)({ownerState:r},i)):e.style))}),t}return a}function g(e={}){let{themeId:t,defaultTheme:r=d,rootShouldForwardProp:s=p,slotShouldForwardProp:c=p}=e,u=e=>(0,l.Z)((0,n.Z)({},e,{theme:h((0,n.Z)({},e,{defaultTheme:r,themeId:t}))}));return u.__mui_systemSx=!0,(e,l={})=>{var d;let g;(0,i.Co)(e,e=>e.filter(e=>!(null!=e&&e.__mui_systemSx)));let{name:b,slot:v,skipVariantsResolver:x,skipSx:k,overridesResolver:w=(d=m(v))?(e,t)=>t[d]:null}=l,Z=(0,o.Z)(l,f),A=void 0!==x?x:v&&"Root"!==v&&"root"!==v||!1,S=k||!1,O=p;"Root"===v||"root"===v?O=s:v?O=c:"string"==typeof e&&e.charCodeAt(0)>96&&(O=void 0);let P=(0,i.ZP)(e,(0,n.Z)({shouldForwardProp:O,label:g},Z)),C=e=>"function"==typeof e&&e.__emotion_real!==e||(0,a.P)(e)?o=>y(e,(0,n.Z)({},o,{theme:h({theme:o.theme,defaultTheme:r,themeId:t})})):e,$=(o,...i)=>{let a=C(o),s=i?i.map(C):[];b&&w&&s.push(e=>{let o=h((0,n.Z)({},e,{defaultTheme:r,themeId:t}));if(!o.components||!o.components[b]||!o.components[b].styleOverrides)return null;let i=o.components[b].styleOverrides,a={};return Object.entries(i).forEach(([t,r])=>{a[t]=y(r,(0,n.Z)({},e,{theme:o}))}),w(e,a)}),b&&!A&&s.push(e=>{var o;let i=h((0,n.Z)({},e,{defaultTheme:r,themeId:t}));return y({variants:null==i||null==(o=i.components)||null==(o=o[b])?void 0:o.variants},(0,n.Z)({},e,{theme:i}))}),S||s.push(u);let l=s.length-i.length;if(Array.isArray(o)&&l>0){let e=Array(l).fill("");(a=[...o,...e]).raw=[...o.raw,...e]}let c=P(a,...s);return e.muiName&&(c.muiName=e.muiName),c};return P.withConfig&&($.withConfig=P.withConfig),$}}},9329:function(e,t,r){r.d(t,{Z:function(){return s}});var n=r(3950),o=r(2988);let i=["values","unit","step"],a=e=>{let t=Object.keys(e).map(t=>({key:t,val:e[t]}))||[];return t.sort((e,t)=>e.val-t.val),t.reduce((e,t)=>(0,o.Z)({},e,{[t.key]:t.val}),{})};function s(e){let{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:r="px",step:s=5}=e,l=(0,n.Z)(e,i),c=a(t),u=Object.keys(c);function f(e){let n="number"==typeof t[e]?t[e]:e;return`@media (min-width:${n}${r})`}function p(e){let n="number"==typeof t[e]?t[e]:e;return`@media (max-width:${n-s/100}${r})`}function d(e,n){let o=u.indexOf(n);return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${r}) and (max-width:${(-1!==o&&"number"==typeof t[u[o]]?t[u[o]]:n)-s/100}${r})`}return(0,o.Z)({keys:u,values:c,up:f,down:p,between:d,only:function(e){return u.indexOf(e)+1<u.length?d(e,u[u.indexOf(e)+1]):f(e)},not:function(e){let t=u.indexOf(e);return 0===t?f(u[1]):t===u.length-1?p(u[t]):d(e,u[u.indexOf(e)+1]).replace("@media","@media not all and")},unit:r},l)}},6669:function(e,t,r){r.d(t,{Z:function(){return o}});var n=r(3351);function o(e=8){if(e.mui)return e;let t=(0,n.hB)({spacing:e}),r=(...e)=>(0===e.length?[1]:e).map(e=>{let r=t(e);return"number"==typeof r?`${r}px`:r}).join(" ");return r.mui=!0,r}},2501:function(e,t,r){r.d(t,{Z:function(){return d}});var n=r(2988),o=r(3950),i=r(6529),a=r(9329),s={borderRadius:4},l=r(6669),c=r(7267),u=r(9626);function f(e,t){return this.vars&&"function"==typeof this.getColorSchemeSelector?{[this.getColorSchemeSelector(e).replace(/(\[[^\]]+\])/,"*:where($1)")]:t}:this.palette.mode===e?t:{}}let p=["breakpoints","palette","spacing","shape"];var d=function(e={},...t){let{breakpoints:r={},palette:d={},spacing:m,shape:h={}}=e,y=(0,o.Z)(e,p),g=(0,a.Z)(r),b=(0,l.Z)(m),v=(0,i.Z)({breakpoints:g,direction:"ltr",components:{},palette:(0,n.Z)({mode:"light"},d),spacing:b,shape:(0,n.Z)({},s,h)},y);return v.applyStyles=f,(v=t.reduce((e,t)=>(0,i.Z)(e,t),v)).unstable_sxConfig=(0,n.Z)({},u.Z,null==y?void 0:y.unstable_sxConfig),v.unstable_sx=function(e){return(0,c.Z)({sx:e,theme:this})},v}},7682:function(e,t,r){var n=r(6529);t.Z=function(e,t){return t?(0,n.Z)(e,t,{clone:!1}):e}},3351:function(e,t,r){r.d(t,{hB:function(){return m},eI:function(){return d},NA:function(){return h},e6:function(){return g},o3:function(){return b}});var n=r(6575),o=r(5166),i=r(7682);let a={m:"margin",p:"padding"},s={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},l={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},c=function(e){let t={};return r=>(void 0===t[r]&&(t[r]=e(r)),t[r])}(e=>{if(e.length>2){if(!l[e])return[e];e=l[e]}let[t,r]=e.split(""),n=a[t],o=s[r]||"";return Array.isArray(o)?o.map(e=>n+e):[n+o]}),u=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],f=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"],p=[...u,...f];function d(e,t,r,n){var i;let a=null!=(i=(0,o.DW)(e,t,!1))?i:r;return"number"==typeof a?e=>"string"==typeof e?e:a*e:Array.isArray(a)?e=>"string"==typeof e?e:a[e]:"function"==typeof a?a:()=>void 0}function m(e){return d(e,"spacing",8,"spacing")}function h(e,t){if("string"==typeof t||null==t)return t;let r=e(Math.abs(t));return t>=0?r:"number"==typeof r?-r:`-${r}`}function y(e,t){let r=m(e.theme);return Object.keys(e).map(o=>(function(e,t,r,o){var i;if(-1===t.indexOf(r))return null;let a=(i=c(r),e=>i.reduce((t,r)=>(t[r]=h(o,e),t),{})),s=e[r];return(0,n.k9)(e,s,a)})(e,t,o,r)).reduce(i.Z,{})}function g(e){return y(e,u)}function b(e){return y(e,f)}function v(e){return y(e,p)}g.propTypes={},g.filterProps=u,b.propTypes={},b.filterProps=f,v.propTypes={},v.filterProps=p},5166:function(e,t,r){r.d(t,{DW:function(){return i},Jq:function(){return a}});var n=r(1259),o=r(6575);function i(e,t,r=!0){if(!t||"string"!=typeof t)return null;if(e&&e.vars&&r){let r=`vars.${t}`.split(".").reduce((e,t)=>e&&e[t]?e[t]:null,e);if(null!=r)return r}return t.split(".").reduce((e,t)=>e&&null!=e[t]?e[t]:null,e)}function a(e,t,r,n=r){let o;return o="function"==typeof e?e(r):Array.isArray(e)?e[r]||n:i(e,r)||n,t&&(o=t(o,n,e)),o}t.ZP=function(e){let{prop:t,cssProperty:r=e.prop,themeKey:s,transform:l}=e,c=e=>{if(null==e[t])return null;let c=e[t],u=i(e.theme,s)||{};return(0,o.k9)(e,c,e=>{let o=a(u,l,e);return(e===o&&"string"==typeof e&&(o=a(u,l,`${t}${"default"===e?"":(0,n.Z)(e)}`,e)),!1===r)?o:{[r]:o}})};return c.propTypes={},c.filterProps=[t],c}},9626:function(e,t,r){r.d(t,{Z:function(){return L}});var n=r(3351),o=r(5166),i=r(7682),a=function(...e){let t=e.reduce((e,t)=>(t.filterProps.forEach(r=>{e[r]=t}),e),{}),r=e=>Object.keys(e).reduce((r,n)=>t[n]?(0,i.Z)(r,t[n](e)):r,{});return r.propTypes={},r.filterProps=e.reduce((e,t)=>e.concat(t.filterProps),[]),r},s=r(6575);function l(e){return"number"!=typeof e?e:`${e}px solid`}function c(e,t){return(0,o.ZP)({prop:e,themeKey:"borders",transform:t})}let u=c("border",l),f=c("borderTop",l),p=c("borderRight",l),d=c("borderBottom",l),m=c("borderLeft",l),h=c("borderColor"),y=c("borderTopColor"),g=c("borderRightColor"),b=c("borderBottomColor"),v=c("borderLeftColor"),x=c("outline",l),k=c("outlineColor"),w=e=>{if(void 0!==e.borderRadius&&null!==e.borderRadius){let t=(0,n.eI)(e.theme,"shape.borderRadius",4,"borderRadius");return(0,s.k9)(e,e.borderRadius,e=>({borderRadius:(0,n.NA)(t,e)}))}return null};w.propTypes={},w.filterProps=["borderRadius"],a(u,f,p,d,m,h,y,g,b,v,w,x,k);let Z=e=>{if(void 0!==e.gap&&null!==e.gap){let t=(0,n.eI)(e.theme,"spacing",8,"gap");return(0,s.k9)(e,e.gap,e=>({gap:(0,n.NA)(t,e)}))}return null};Z.propTypes={},Z.filterProps=["gap"];let A=e=>{if(void 0!==e.columnGap&&null!==e.columnGap){let t=(0,n.eI)(e.theme,"spacing",8,"columnGap");return(0,s.k9)(e,e.columnGap,e=>({columnGap:(0,n.NA)(t,e)}))}return null};A.propTypes={},A.filterProps=["columnGap"];let S=e=>{if(void 0!==e.rowGap&&null!==e.rowGap){let t=(0,n.eI)(e.theme,"spacing",8,"rowGap");return(0,s.k9)(e,e.rowGap,e=>({rowGap:(0,n.NA)(t,e)}))}return null};S.propTypes={},S.filterProps=["rowGap"];let O=(0,o.ZP)({prop:"gridColumn"}),P=(0,o.ZP)({prop:"gridRow"}),C=(0,o.ZP)({prop:"gridAutoFlow"}),$=(0,o.ZP)({prop:"gridAutoColumns"}),_=(0,o.ZP)({prop:"gridAutoRows"}),T=(0,o.ZP)({prop:"gridTemplateColumns"});function j(e,t){return"grey"===t?t:e}function R(e){return e<=1&&0!==e?`${100*e}%`:e}a(Z,A,S,O,P,C,$,_,T,(0,o.ZP)({prop:"gridTemplateRows"}),(0,o.ZP)({prop:"gridTemplateAreas"}),(0,o.ZP)({prop:"gridArea"})),a((0,o.ZP)({prop:"color",themeKey:"palette",transform:j}),(0,o.ZP)({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:j}),(0,o.ZP)({prop:"backgroundColor",themeKey:"palette",transform:j}));let E=(0,o.ZP)({prop:"width",transform:R}),M=e=>void 0!==e.maxWidth&&null!==e.maxWidth?(0,s.k9)(e,e.maxWidth,t=>{var r,n;let o=(null==(r=e.theme)||null==(r=r.breakpoints)||null==(r=r.values)?void 0:r[t])||s.VO[t];return o?(null==(n=e.theme)||null==(n=n.breakpoints)?void 0:n.unit)!=="px"?{maxWidth:`${o}${e.theme.breakpoints.unit}`}:{maxWidth:o}:{maxWidth:R(t)}}):null;M.filterProps=["maxWidth"];let I=(0,o.ZP)({prop:"minWidth",transform:R}),z=(0,o.ZP)({prop:"height",transform:R}),B=(0,o.ZP)({prop:"maxHeight",transform:R}),N=(0,o.ZP)({prop:"minHeight",transform:R});(0,o.ZP)({prop:"size",cssProperty:"width",transform:R}),(0,o.ZP)({prop:"size",cssProperty:"height",transform:R}),a(E,M,I,z,B,N,(0,o.ZP)({prop:"boxSizing"}));var L={border:{themeKey:"borders",transform:l},borderTop:{themeKey:"borders",transform:l},borderRight:{themeKey:"borders",transform:l},borderBottom:{themeKey:"borders",transform:l},borderLeft:{themeKey:"borders",transform:l},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},outline:{themeKey:"borders",transform:l},outlineColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:w},color:{themeKey:"palette",transform:j},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:j},backgroundColor:{themeKey:"palette",transform:j},p:{style:n.o3},pt:{style:n.o3},pr:{style:n.o3},pb:{style:n.o3},pl:{style:n.o3},px:{style:n.o3},py:{style:n.o3},padding:{style:n.o3},paddingTop:{style:n.o3},paddingRight:{style:n.o3},paddingBottom:{style:n.o3},paddingLeft:{style:n.o3},paddingX:{style:n.o3},paddingY:{style:n.o3},paddingInline:{style:n.o3},paddingInlineStart:{style:n.o3},paddingInlineEnd:{style:n.o3},paddingBlock:{style:n.o3},paddingBlockStart:{style:n.o3},paddingBlockEnd:{style:n.o3},m:{style:n.e6},mt:{style:n.e6},mr:{style:n.e6},mb:{style:n.e6},ml:{style:n.e6},mx:{style:n.e6},my:{style:n.e6},margin:{style:n.e6},marginTop:{style:n.e6},marginRight:{style:n.e6},marginBottom:{style:n.e6},marginLeft:{style:n.e6},marginX:{style:n.e6},marginY:{style:n.e6},marginInline:{style:n.e6},marginInlineStart:{style:n.e6},marginInlineEnd:{style:n.e6},marginBlock:{style:n.e6},marginBlockStart:{style:n.e6},marginBlockEnd:{style:n.e6},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:Z},rowGap:{style:S},columnGap:{style:A},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:R},maxWidth:{style:M},minWidth:{transform:R},height:{transform:R},maxHeight:{transform:R},minHeight:{transform:R},boxSizing:{},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}}},7267:function(e,t,r){var n=r(1259),o=r(7682),i=r(5166),a=r(6575),s=r(9626);let l=function(){function e(e,t,r,o){let s={[e]:t,theme:r},l=o[e];if(!l)return{[e]:t};let{cssProperty:c=e,themeKey:u,transform:f,style:p}=l;if(null==t)return null;if("typography"===u&&"inherit"===t)return{[e]:t};let d=(0,i.DW)(r,u)||{};return p?p(s):(0,a.k9)(s,t,t=>{let r=(0,i.Jq)(d,f,t);return(t===r&&"string"==typeof t&&(r=(0,i.Jq)(d,f,`${e}${"default"===t?"":(0,n.Z)(t)}`,t)),!1===c)?r:{[c]:r}})}return function t(r){var n;let{sx:i,theme:l={}}=r||{};if(!i)return null;let c=null!=(n=l.unstable_sxConfig)?n:s.Z;function u(r){let n=r;if("function"==typeof r)n=r(l);else if("object"!=typeof r)return r;if(!n)return null;let i=(0,a.W8)(l.breakpoints),s=Object.keys(i),u=i;return Object.keys(n).forEach(r=>{var i;let s="function"==typeof(i=n[r])?i(l):i;if(null!=s){if("object"==typeof s){if(c[r])u=(0,o.Z)(u,e(r,s,l,c));else{let e=(0,a.k9)({theme:l},s,e=>({[r]:e}));(function(...e){let t=new Set(e.reduce((e,t)=>e.concat(Object.keys(t)),[]));return e.every(e=>t.size===Object.keys(e).length)})(e,s)?u[r]=t({sx:s,theme:l}):u=(0,o.Z)(u,e)}}else u=(0,o.Z)(u,e(r,s,l,c))}}),(0,a.L7)(s,u)}return Array.isArray(i)?i.map(u):u(i)}}();l.filterProps=["sx"],t.Z=l},4874:function(e,t,r){var n=r(2501),o=r(4828);let i=(0,n.Z)();t.Z=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i;return(0,o.Z)(e)}},4999:function(e,t,r){r.d(t,{Z:function(){return i}});var n=r(9481),o=r(4874);function i(e){let{props:t,name:r,defaultTheme:i,themeId:a}=e,s=(0,o.Z)(i);return a&&(s=s[a]||s),function(e){let{theme:t,name:r,props:o}=e;return t&&t.components&&t.components[r]&&t.components[r].defaultProps?(0,n.Z)(t.components[r].defaultProps,o):o}({theme:s,name:r,props:t})}},4828:function(e,t,r){var n=r(2265),o=r(2606);t.Z=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=n.useContext(o.T);return t&&0!==Object.keys(t).length?t:e}},1259:function(e,t,r){r.d(t,{Z:function(){return o}});var n=r(2414);function o(e){if("string"!=typeof e)throw Error((0,n.Z)(7));return e.charAt(0).toUpperCase()+e.slice(1)}},7609:function(e,t){t.Z=function(e,t=Number.MIN_SAFE_INTEGER,r=Number.MAX_SAFE_INTEGER){return Math.max(t,Math.min(e,r))}},6529:function(e,t,r){r.d(t,{P:function(){return o},Z:function(){return function e(t,r,i={clone:!0}){let a=i.clone?(0,n.Z)({},t):t;return o(t)&&o(r)&&Object.keys(r).forEach(n=>{"__proto__"!==n&&(o(r[n])&&n in t&&o(t[n])?a[n]=e(t[n],r[n],i):i.clone?a[n]=o(r[n])?function e(t){if(!o(t))return t;let r={};return Object.keys(t).forEach(n=>{r[n]=e(t[n])}),r}(r[n]):r[n]:a[n]=r[n])}),a}}});var n=r(2988);function o(e){if("object"!=typeof e||null===e)return!1;let t=Object.getPrototypeOf(e);return(null===t||t===Object.prototype||null===Object.getPrototypeOf(t))&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}},2414:function(e,t,r){r.d(t,{Z:function(){return n}});function n(e){let t="https://mui.com/production-error/?code="+e;for(let e=1;e<arguments.length;e+=1)t+="&args[]="+encodeURIComponent(arguments[e]);return"Minified MUI error #"+e+"; visit "+t+" for the full message."}},9481:function(e,t,r){r.d(t,{Z:function(){return function e(t,r){let o=(0,n.Z)({},r);return Object.keys(t).forEach(i=>{if(i.toString().match(/^(components|slots)$/))o[i]=(0,n.Z)({},t[i],o[i]);else if(i.toString().match(/^(componentsProps|slotProps)$/)){let a=t[i]||{},s=r[i];o[i]={},s&&Object.keys(s)?a&&Object.keys(a)?(o[i]=(0,n.Z)({},s),Object.keys(a).forEach(t=>{o[i][t]=e(a[t],s[t])})):o[i]=s:o[i]=a}else void 0===o[i]&&(o[i]=t[i])}),o}}});var n=r(2988)},6451:function(e,t,r){var n=r(1189),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},i={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return n.isMemo(e)?a:s[e.$$typeof]||o}s[n.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[n.Memo]=a;var c=Object.defineProperty,u=Object.getOwnPropertyNames,f=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,d=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,r,n){if("string"!=typeof r){if(m){var o=d(r);o&&o!==m&&e(t,o,n)}var a=u(r);f&&(a=a.concat(f(r)));for(var s=l(t),h=l(r),y=0;y<a.length;++y){var g=a[y];if(!i[g]&&!(n&&n[g])&&!(h&&h[g])&&!(s&&s[g])){var b=p(r,g);try{c(t,g,b)}catch(e){}}}}return t}},3775:function(e,t){/** @license React v16.13.1
8
+ * react-is.production.min.js
9
+ *
10
+ * Copyright (c) Facebook, Inc. and its affiliates.
11
+ *
12
+ * This source code is licensed under the MIT license found in the
13
+ * LICENSE file in the root directory of this source tree.
14
+ */var r="function"==typeof Symbol&&Symbol.for,n=r?Symbol.for("react.element"):60103,o=r?Symbol.for("react.portal"):60106,i=r?Symbol.for("react.fragment"):60107,a=r?Symbol.for("react.strict_mode"):60108,s=r?Symbol.for("react.profiler"):60114,l=r?Symbol.for("react.provider"):60109,c=r?Symbol.for("react.context"):60110,u=r?Symbol.for("react.async_mode"):60111,f=r?Symbol.for("react.concurrent_mode"):60111,p=r?Symbol.for("react.forward_ref"):60112,d=r?Symbol.for("react.suspense"):60113,m=r?Symbol.for("react.suspense_list"):60120,h=r?Symbol.for("react.memo"):60115,y=r?Symbol.for("react.lazy"):60116,g=r?Symbol.for("react.block"):60121,b=r?Symbol.for("react.fundamental"):60117,v=r?Symbol.for("react.responder"):60118,x=r?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case n:switch(e=e.type){case u:case f:case i:case s:case a:case d:return e;default:switch(e=e&&e.$$typeof){case c:case p:case y:case h:case l:return e;default:return t}}case o:return t}}}function w(e){return k(e)===f}t.AsyncMode=u,t.ConcurrentMode=f,t.ContextConsumer=c,t.ContextProvider=l,t.Element=n,t.ForwardRef=p,t.Fragment=i,t.Lazy=y,t.Memo=h,t.Portal=o,t.Profiler=s,t.StrictMode=a,t.Suspense=d,t.isAsyncMode=function(e){return w(e)||k(e)===u},t.isConcurrentMode=w,t.isContextConsumer=function(e){return k(e)===c},t.isContextProvider=function(e){return k(e)===l},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===n},t.isForwardRef=function(e){return k(e)===p},t.isFragment=function(e){return k(e)===i},t.isLazy=function(e){return k(e)===y},t.isMemo=function(e){return k(e)===h},t.isPortal=function(e){return k(e)===o},t.isProfiler=function(e){return k(e)===s},t.isStrictMode=function(e){return k(e)===a},t.isSuspense=function(e){return k(e)===d},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===i||e===f||e===s||e===a||e===d||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===y||e.$$typeof===h||e.$$typeof===l||e.$$typeof===c||e.$$typeof===p||e.$$typeof===b||e.$$typeof===v||e.$$typeof===x||e.$$typeof===g)},t.typeOf=k},1189:function(e,t,r){e.exports=r(3775)},2988:function(e,t,r){r.d(t,{Z:function(){return n}});function n(){return(n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}},3950:function(e,t,r){r.d(t,{Z:function(){return n}});function n(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}}}]);
static/_next/static/chunks/23-c6362522adba14e9.js ADDED
The diff for this file is too large to render. See raw diff
 
static/_next/static/chunks/257-eff74de43c26e044.js ADDED
The diff for this file is too large to render. See raw diff
 
static/_next/static/chunks/450-e98783cfbe10f77f.js ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[450],{9237:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return s}});var n=r(2988),o=r(2265),a=r(6309),l=r(2606),i=r(1169),c=r(7437);function s(e){let{options:t,CacheProvider:r=l.C,children:s}=e,[u]=o.useState(()=>{var e;let r=(0,a.Z)((0,n.Z)({},t,{key:null!=(e=null==t?void 0:t.key)?e:"mui"}));r.compat=!0;let o=r.insert,l=[];return r.insert=function(){for(var e=arguments.length,n=Array(e),a=0;a<e;a++)n[a]=arguments[a];null!=t&&t.enableCssLayer&&(n[1].styles="@layer mui {".concat(n[1].styles,"}"));let[i,c]=n;return void 0===r.inserted[c.name]&&l.push({name:c.name,isGlobal:!i}),o(...n)},{cache:r,flush:()=>{let e=l;return l=[],e}}});return(0,i.useServerInsertedHTML)(()=>{let e=u.flush();if(0===e.length)return null;let r="",n=u.cache.key,a=[];return e.forEach(e=>{let{name:t,isGlobal:o}=e,l=u.cache.inserted[t];"boolean"!=typeof l&&(o?a.push({name:t,style:l}):(r+=l,n+=" ".concat(t)))}),(0,c.jsxs)(o.Fragment,{children:[a.map(e=>{let{name:r,style:n}=e;return(0,c.jsx)("style",{nonce:null==t?void 0:t.nonce,"data-emotion":"".concat(u.cache.key,"-global ").concat(r),dangerouslySetInnerHTML:{__html:n}},r)}),r&&(0,c.jsx)("style",{nonce:null==t?void 0:t.nonce,"data-emotion":n,dangerouslySetInnerHTML:{__html:r}})]})}),(0,c.jsx)(r,{value:u.cache,children:s})}},6324:function(e,t,r){"use strict";let n;r.r(t),r.d(t,{Experimental_CssVarsProvider:function(){return ex},StyledEngineProvider:function(){return z},THEME_ID:function(){return a.Z},ThemeProvider:function(){return O},adaptV4Theme:function(){return m},alpha:function(){return g.Fq},createMuiTheme:function(){return f.A},createStyles:function(){return b},createTheme:function(){return f.Z},css:function(){return h.iv},darken:function(){return g._j},decomposeColor:function(){return g.tB},duration:function(){return w.x9},easing:function(){return w.Ui},emphasize:function(){return g._4},experimentalStyled:function(){return T.ZP},experimental_extendTheme:function(){return eb},experimental_sx:function(){return eT},getContrastRatio:function(){return g.mi},getInitColorSchemeScript:function(){return eZ},getLuminance:function(){return g.H3},getOverlayAlpha:function(){return eu.Z},hexToRgb:function(){return g.oo},hslToRgb:function(){return g.ve},keyframes:function(){return h.F4},lighten:function(){return g.$n},makeStyles:function(){return R},private_createMixins:function(){return eA.Z},private_createTypography:function(){return eC.Z},private_excludeVariablesFromRoot:function(){return ek},recomposeColor:function(){return g.wy},responsiveFontSizes:function(){return x},rgbToHex:function(){return g.vq},shouldSkipGeneratingVar:function(){return es},styled:function(){return T.ZP},unstable_createMuiStrictModeTheme:function(){return y},unstable_getUnit:function(){return k},unstable_toUnitless:function(){return v},useColorScheme:function(){return ew},useTheme:function(){return Z.Z},useThemeProps:function(){return A.Z},withStyles:function(){return H},withTheme:function(){return N}});var o=r(2414),a=r(2737),l=r(2988),i=r(3950),c=r(6669),s=r(9329);let u=["defaultProps","mixins","overrides","palette","props","styleOverrides"],d=["type","mode"];function m(e){let{defaultProps:t={},mixins:r={},overrides:n={},palette:o={},props:a={},styleOverrides:m={}}=e,g=(0,i.Z)(e,u),h=(0,l.Z)({},g,{components:{}});Object.keys(t).forEach(e=>{let r=h.components[e]||{};r.defaultProps=t[e],h.components[e]=r}),Object.keys(a).forEach(e=>{let t=h.components[e]||{};t.defaultProps=a[e],h.components[e]=t}),Object.keys(m).forEach(e=>{let t=h.components[e]||{};t.styleOverrides=m[e],h.components[e]=t}),Object.keys(n).forEach(e=>{let t=h.components[e]||{};t.styleOverrides=n[e],h.components[e]=t}),h.spacing=(0,c.Z)(e.spacing);let f=(0,s.Z)(e.breakpoints||{}),p=h.spacing;h.mixins=(0,l.Z)({gutters:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,l.Z)({paddingLeft:p(2),paddingRight:p(2)},e,{[f.up("sm")]:(0,l.Z)({paddingLeft:p(3),paddingRight:p(3)},e[f.up("sm")])})}},r);let{type:y,mode:S}=o,b=(0,i.Z)(o,d),C=S||y||"light";return h.palette=(0,l.Z)({text:{hint:"dark"===C?"rgba(255, 255, 255, 0.5)":"rgba(0, 0, 0, 0.38)"},mode:C,type:C},b),h}var g=r(2305),h=r(3098),f=r(8285),p=r(6529);function y(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return(0,f.Z)((0,p.Z)({unstable_strictMode:!0},e),...r)}let S=!1;function b(e){return S||(console.warn("MUI: createStyles from @mui/material/styles is deprecated.\nPlease use @mui/styles/createStyles"),S=!0),e}function C(e){return String(parseFloat(e)).length===String(e).length}function k(e){return String(e).match(/[\d.\-+]*\s*(.*)/)[1]||""}function v(e){return parseFloat(e)}function x(e){var t;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{breakpoints:n=["sm","md","lg"],disableAlign:a=!1,factor:i=2,variants:c=["h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","caption","button","overline"]}=r,s=(0,l.Z)({},e);s.typography=(0,l.Z)({},s.typography);let u=s.typography,d=(t=u.htmlFontSize,(e,r)=>{let n=k(e);if(n===r)return e;let o=v(e);"px"!==n&&("em"===n?o=v(e)*v(t):"rem"===n&&(o=v(e)*v(t)));let a=o;if("px"!==r){if("em"===r)a=o/v(t);else{if("rem"!==r)return e;a=o/v(t)}}return parseFloat(a.toFixed(5))+r}),m=n.map(e=>s.breakpoints.values[e]);return c.forEach(e=>{let t=u[e],r=parseFloat(d(t.fontSize,"rem"));if(r<=1)return;let{lineHeight:n}=t;if(!C(n)&&!a)throw Error((0,o.Z)(6));C(n)||(n=parseFloat(d(n,"rem"))/parseFloat(r));let c=null;a||(c=e=>(function(e){let{size:t,grid:r}=e,n=t-t%r,o=n+r;return t-n<o-t?n:o})({size:e,grid:function(e){let{lineHeight:t,pixels:r,htmlFontSize:n}=e;return r/(t*n)}({pixels:4,lineHeight:n,htmlFontSize:u.htmlFontSize})})),u[e]=(0,l.Z)({},t,function(e){let{cssProperty:t,min:r,max:n,unit:o="rem",breakpoints:a=[600,900,1200],transform:l=null}=e,i={[t]:"".concat(r).concat(o)},c=(n-r)/a[a.length-1];return a.forEach(e=>{let n=r+c*e;null!==l&&(n=l(n)),i["@media (min-width:".concat(e,"px)")]={[t]:"".concat(Math.round(1e4*n)/1e4).concat(o)}}),i}({cssProperty:"fontSize",min:1+(r-1)/i,max:r,unit:"rem",breakpoints:m,transform:c}))}),s}var w=r(1355),Z=r(2960),A=r(9281),T=r(8024),B=r(2265);let _=B.createContext(null);function I(){return B.useContext(_)}var F="function"==typeof Symbol&&Symbol.for?Symbol.for("mui.nested"):"__THEME_NESTED__",E=r(7437),$=function(e){let{children:t,theme:r}=e,n=I(),o=B.useMemo(()=>{let e=null===n?r:"function"==typeof r?r(n):(0,l.Z)({},n,r);return null!=e&&(e[F]=null!==n),e},[r,n]);return(0,E.jsx)(_.Provider,{value:o,children:t})},j=r(2606),P=r(4828);let q={};function L(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return B.useMemo(()=>{let o=e&&t[e]||t;if("function"==typeof r){let a=r(o),i=e?(0,l.Z)({},t,{[e]:a}):a;return n?()=>i:i}return e?(0,l.Z)({},t,{[e]:r}):(0,l.Z)({},t,r)},[e,t,r,n])}var M=function(e){let{children:t,theme:r,themeId:n}=e,o=(0,P.Z)(q),a=I()||q,l=L(n,o,r),i=L(n,a,r,!0);return(0,E.jsx)($,{theme:i,children:(0,E.jsx)(j.T.Provider,{value:l,children:t})})};let D=["theme"];function O(e){let{theme:t}=e,r=(0,i.Z)(e,D),n=t[a.Z];return(0,E.jsx)(M,(0,l.Z)({},r,{themeId:n?a.Z:void 0,theme:n||t}))}var V=r(6309);function z(e){let{injectFirst:t,children:r}=e;return t&&n?(0,E.jsx)(j.C,{value:n,children:r}):r}function R(){throw Error((0,o.Z)(14))}function H(){throw Error((0,o.Z)(15))}function N(){throw Error((0,o.Z)(16))}"object"==typeof document&&(n=(0,V.Z)({key:"css",prepend:!0}));var U=r(6003);let K="mode",W="color-scheme",G="data-color-scheme";function J(e){if("undefined"!=typeof window&&"system"===e)return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function Q(e,t){return"light"===e.mode||"system"===e.mode&&"light"===e.systemMode?t("light"):"dark"===e.mode||"system"===e.mode&&"dark"===e.systemMode?t("dark"):void 0}function X(e,t){let r;if("undefined"!=typeof window){try{(r=localStorage.getItem(e)||void 0)||localStorage.setItem(e,t)}catch(e){}return r||t}}let Y=["colorSchemes","components","generateCssVars","cssVarPrefix"];var ee=r(7267);let et=(e,t,r,n=[])=>{let o=e;t.forEach((e,a)=>{a===t.length-1?Array.isArray(o)?o[Number(e)]=r:o&&"object"==typeof o&&(o[e]=r):o&&"object"==typeof o&&(o[e]||(o[e]=n.includes(e)?[]:{}),o=o[e])})},er=(e,t,r)=>{!function e(n,o=[],a=[]){Object.entries(n).forEach(([n,l])=>{r&&(!r||r([...o,n]))||null==l||("object"==typeof l&&Object.keys(l).length>0?e(l,[...o,n],Array.isArray(l)?[...a,n]:a):t([...o,n],l,a))})}(e)},en=(e,t)=>"number"==typeof t?["lineHeight","fontWeight","opacity","zIndex"].some(t=>e.includes(t))||e[e.length-1].toLowerCase().indexOf("opacity")>=0?t:`${t}px`:t;function eo(e,t){let{prefix:r,shouldSkipGeneratingVar:n}=t||{},o={},a={},l={};return er(e,(e,t,i)=>{if(("string"==typeof t||"number"==typeof t)&&(!n||!n(e,t))){let n=`--${r?`${r}-`:""}${e.join("-")}`;Object.assign(o,{[n]:en(e,t)}),et(a,e,`var(${n})`,i),et(l,e,`var(${n}, ${t})`,i)}},e=>"vars"===e[0]),{css:o,vars:a,varsWithDefaults:l}}let ea=["colorSchemes","components"],el=["light"];var ei=function(e,t){let{colorSchemes:r={}}=e,{vars:n,css:o,varsWithDefaults:a}=eo((0,i.Z)(e,ea),t),c=a,s={},{light:u}=r;if(Object.entries((0,i.Z)(r,el)||{}).forEach(([e,r])=>{let{vars:n,css:o,varsWithDefaults:a}=eo(r,t);c=(0,p.Z)(c,a),s[e]={css:o,vars:n}}),u){let{css:e,vars:r,varsWithDefaults:n}=eo(u,t);c=(0,p.Z)(c,n),s.light={css:e,vars:r}}return{vars:c,generateCssVars:e=>e?{css:(0,l.Z)({},s[e].css),vars:s[e].vars}:{css:(0,l.Z)({},o),vars:n}}},ec=r(9626);function es(e){var t;return!!e[0].match(/(cssVarPrefix|typography|mixins|breakpoints|direction|transitions)/)||!!e[0].match(/sxConfig$/)||"palette"===e[0]&&!!(null!=(t=e[1])&&t.match(/(mode|contrastThreshold|tonalOffset)/))}var eu=r(1931);let ed=["colorSchemes","cssVarPrefix","shouldSkipGeneratingVar"],em=["palette"],eg=[...Array(25)].map((e,t)=>{if(0===t)return;let r=(0,eu.Z)(t);return"linear-gradient(rgba(255 255 255 / ".concat(r,"), rgba(255 255 255 / ").concat(r,"))")});function eh(e,t,r){!e[t]&&r&&(e[t]=r)}function ef(e){return e&&e.startsWith("hsl")?(0,g.ve)(e):e}function ep(e,t){"".concat(t,"Channel") in e||(e["".concat(t,"Channel")]=(0,g.LR)(ef(e[t]),"MUI: Can't create `palette.".concat(t,"Channel` because `palette.").concat(t,"` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().")+"\n"+"To suppress this warning, you need to explicitly provide the `palette.".concat(t,'Channel` as a string (in rgb format, e.g. "12 12 12") or undefined if you want to remove the channel token.')))}let ey=e=>{try{return e()}catch(e){}},eS=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"mui";return function(e=""){return(t,...r)=>`var(--${e?`${e}-`:""}${t}${function t(...r){if(!r.length)return"";let n=r[0];return"string"!=typeof n||n.match(/(#|\(|\)|(-?(\d*\.)?\d+)(px|em|%|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc))|^(-?(\d*\.)?\d+)$|(\d+ \d+ \d+)/)?`, ${n}`:`, var(--${e?`${e}-`:""}${n}${t(...r.slice(1))})`}(...r)})`}(e)};function eb(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};for(var t,r,n,o,a,c,s=arguments.length,u=Array(s>1?s-1:0),d=1;d<s;d++)u[d-1]=arguments[d];let{colorSchemes:m={},cssVarPrefix:h="mui",shouldSkipGeneratingVar:y=es}=e,S=(0,i.Z)(e,ed),b=eS(h),C=(0,f.Z)((0,l.Z)({},S,m.light&&{palette:null==(t=m.light)?void 0:t.palette})),{palette:k}=C,v=(0,i.Z)(C,em),{palette:x}=(0,f.Z)({palette:(0,l.Z)({mode:"dark"},null==(r=m.dark)?void 0:r.palette)}),w=(0,l.Z)({},v,{cssVarPrefix:h,getCssVar:b,colorSchemes:(0,l.Z)({},m,{light:(0,l.Z)({},m.light,{palette:k,opacity:(0,l.Z)({inputPlaceholder:.42,inputUnderline:.42,switchTrackDisabled:.12,switchTrack:.38},null==(n=m.light)?void 0:n.opacity),overlays:(null==(o=m.light)?void 0:o.overlays)||[]}),dark:(0,l.Z)({},m.dark,{palette:x,opacity:(0,l.Z)({inputPlaceholder:.5,inputUnderline:.7,switchTrackDisabled:.2,switchTrack:.3},null==(a=m.dark)?void 0:a.opacity),overlays:(null==(c=m.dark)?void 0:c.overlays)||eg})})});Object.keys(w.colorSchemes).forEach(e=>{let t=w.colorSchemes[e].palette,r=e=>{let r=e.split("-"),n=r[1],o=r[2];return b(e,t[n][o])};if("light"===e?(eh(t.common,"background","#fff"),eh(t.common,"onBackground","#000")):(eh(t.common,"background","#000"),eh(t.common,"onBackground","#fff")),function(e,t){t.forEach(t=>{e[t]||(e[t]={})})}(t,["Alert","AppBar","Avatar","Button","Chip","FilledInput","LinearProgress","Skeleton","Slider","SnackbarContent","SpeedDialAction","StepConnector","StepContent","Switch","TableCell","Tooltip"]),"light"===e){eh(t.Alert,"errorColor",(0,g.q8)(t.error.light,.6)),eh(t.Alert,"infoColor",(0,g.q8)(t.info.light,.6)),eh(t.Alert,"successColor",(0,g.q8)(t.success.light,.6)),eh(t.Alert,"warningColor",(0,g.q8)(t.warning.light,.6)),eh(t.Alert,"errorFilledBg",r("palette-error-main")),eh(t.Alert,"infoFilledBg",r("palette-info-main")),eh(t.Alert,"successFilledBg",r("palette-success-main")),eh(t.Alert,"warningFilledBg",r("palette-warning-main")),eh(t.Alert,"errorFilledColor",ey(()=>k.getContrastText(t.error.main))),eh(t.Alert,"infoFilledColor",ey(()=>k.getContrastText(t.info.main))),eh(t.Alert,"successFilledColor",ey(()=>k.getContrastText(t.success.main))),eh(t.Alert,"warningFilledColor",ey(()=>k.getContrastText(t.warning.main))),eh(t.Alert,"errorStandardBg",(0,g.ux)(t.error.light,.9)),eh(t.Alert,"infoStandardBg",(0,g.ux)(t.info.light,.9)),eh(t.Alert,"successStandardBg",(0,g.ux)(t.success.light,.9)),eh(t.Alert,"warningStandardBg",(0,g.ux)(t.warning.light,.9)),eh(t.Alert,"errorIconColor",r("palette-error-main")),eh(t.Alert,"infoIconColor",r("palette-info-main")),eh(t.Alert,"successIconColor",r("palette-success-main")),eh(t.Alert,"warningIconColor",r("palette-warning-main")),eh(t.AppBar,"defaultBg",r("palette-grey-100")),eh(t.Avatar,"defaultBg",r("palette-grey-400")),eh(t.Button,"inheritContainedBg",r("palette-grey-300")),eh(t.Button,"inheritContainedHoverBg",r("palette-grey-A100")),eh(t.Chip,"defaultBorder",r("palette-grey-400")),eh(t.Chip,"defaultAvatarColor",r("palette-grey-700")),eh(t.Chip,"defaultIconColor",r("palette-grey-700")),eh(t.FilledInput,"bg","rgba(0, 0, 0, 0.06)"),eh(t.FilledInput,"hoverBg","rgba(0, 0, 0, 0.09)"),eh(t.FilledInput,"disabledBg","rgba(0, 0, 0, 0.12)"),eh(t.LinearProgress,"primaryBg",(0,g.ux)(t.primary.main,.62)),eh(t.LinearProgress,"secondaryBg",(0,g.ux)(t.secondary.main,.62)),eh(t.LinearProgress,"errorBg",(0,g.ux)(t.error.main,.62)),eh(t.LinearProgress,"infoBg",(0,g.ux)(t.info.main,.62)),eh(t.LinearProgress,"successBg",(0,g.ux)(t.success.main,.62)),eh(t.LinearProgress,"warningBg",(0,g.ux)(t.warning.main,.62)),eh(t.Skeleton,"bg","rgba(".concat(r("palette-text-primaryChannel")," / 0.11)")),eh(t.Slider,"primaryTrack",(0,g.ux)(t.primary.main,.62)),eh(t.Slider,"secondaryTrack",(0,g.ux)(t.secondary.main,.62)),eh(t.Slider,"errorTrack",(0,g.ux)(t.error.main,.62)),eh(t.Slider,"infoTrack",(0,g.ux)(t.info.main,.62)),eh(t.Slider,"successTrack",(0,g.ux)(t.success.main,.62)),eh(t.Slider,"warningTrack",(0,g.ux)(t.warning.main,.62));let e=(0,g.fk)(t.background.default,.8);eh(t.SnackbarContent,"bg",e),eh(t.SnackbarContent,"color",ey(()=>k.getContrastText(e))),eh(t.SpeedDialAction,"fabHoverBg",(0,g.fk)(t.background.paper,.15)),eh(t.StepConnector,"border",r("palette-grey-400")),eh(t.StepContent,"border",r("palette-grey-400")),eh(t.Switch,"defaultColor",r("palette-common-white")),eh(t.Switch,"defaultDisabledColor",r("palette-grey-100")),eh(t.Switch,"primaryDisabledColor",(0,g.ux)(t.primary.main,.62)),eh(t.Switch,"secondaryDisabledColor",(0,g.ux)(t.secondary.main,.62)),eh(t.Switch,"errorDisabledColor",(0,g.ux)(t.error.main,.62)),eh(t.Switch,"infoDisabledColor",(0,g.ux)(t.info.main,.62)),eh(t.Switch,"successDisabledColor",(0,g.ux)(t.success.main,.62)),eh(t.Switch,"warningDisabledColor",(0,g.ux)(t.warning.main,.62)),eh(t.TableCell,"border",(0,g.ux)((0,g.zp)(t.divider,1),.88)),eh(t.Tooltip,"bg",(0,g.zp)(t.grey[700],.92))}else{eh(t.Alert,"errorColor",(0,g.ux)(t.error.light,.6)),eh(t.Alert,"infoColor",(0,g.ux)(t.info.light,.6)),eh(t.Alert,"successColor",(0,g.ux)(t.success.light,.6)),eh(t.Alert,"warningColor",(0,g.ux)(t.warning.light,.6)),eh(t.Alert,"errorFilledBg",r("palette-error-dark")),eh(t.Alert,"infoFilledBg",r("palette-info-dark")),eh(t.Alert,"successFilledBg",r("palette-success-dark")),eh(t.Alert,"warningFilledBg",r("palette-warning-dark")),eh(t.Alert,"errorFilledColor",ey(()=>x.getContrastText(t.error.dark))),eh(t.Alert,"infoFilledColor",ey(()=>x.getContrastText(t.info.dark))),eh(t.Alert,"successFilledColor",ey(()=>x.getContrastText(t.success.dark))),eh(t.Alert,"warningFilledColor",ey(()=>x.getContrastText(t.warning.dark))),eh(t.Alert,"errorStandardBg",(0,g.q8)(t.error.light,.9)),eh(t.Alert,"infoStandardBg",(0,g.q8)(t.info.light,.9)),eh(t.Alert,"successStandardBg",(0,g.q8)(t.success.light,.9)),eh(t.Alert,"warningStandardBg",(0,g.q8)(t.warning.light,.9)),eh(t.Alert,"errorIconColor",r("palette-error-main")),eh(t.Alert,"infoIconColor",r("palette-info-main")),eh(t.Alert,"successIconColor",r("palette-success-main")),eh(t.Alert,"warningIconColor",r("palette-warning-main")),eh(t.AppBar,"defaultBg",r("palette-grey-900")),eh(t.AppBar,"darkBg",r("palette-background-paper")),eh(t.AppBar,"darkColor",r("palette-text-primary")),eh(t.Avatar,"defaultBg",r("palette-grey-600")),eh(t.Button,"inheritContainedBg",r("palette-grey-800")),eh(t.Button,"inheritContainedHoverBg",r("palette-grey-700")),eh(t.Chip,"defaultBorder",r("palette-grey-700")),eh(t.Chip,"defaultAvatarColor",r("palette-grey-300")),eh(t.Chip,"defaultIconColor",r("palette-grey-300")),eh(t.FilledInput,"bg","rgba(255, 255, 255, 0.09)"),eh(t.FilledInput,"hoverBg","rgba(255, 255, 255, 0.13)"),eh(t.FilledInput,"disabledBg","rgba(255, 255, 255, 0.12)"),eh(t.LinearProgress,"primaryBg",(0,g.q8)(t.primary.main,.5)),eh(t.LinearProgress,"secondaryBg",(0,g.q8)(t.secondary.main,.5)),eh(t.LinearProgress,"errorBg",(0,g.q8)(t.error.main,.5)),eh(t.LinearProgress,"infoBg",(0,g.q8)(t.info.main,.5)),eh(t.LinearProgress,"successBg",(0,g.q8)(t.success.main,.5)),eh(t.LinearProgress,"warningBg",(0,g.q8)(t.warning.main,.5)),eh(t.Skeleton,"bg","rgba(".concat(r("palette-text-primaryChannel")," / 0.13)")),eh(t.Slider,"primaryTrack",(0,g.q8)(t.primary.main,.5)),eh(t.Slider,"secondaryTrack",(0,g.q8)(t.secondary.main,.5)),eh(t.Slider,"errorTrack",(0,g.q8)(t.error.main,.5)),eh(t.Slider,"infoTrack",(0,g.q8)(t.info.main,.5)),eh(t.Slider,"successTrack",(0,g.q8)(t.success.main,.5)),eh(t.Slider,"warningTrack",(0,g.q8)(t.warning.main,.5));let e=(0,g.fk)(t.background.default,.98);eh(t.SnackbarContent,"bg",e),eh(t.SnackbarContent,"color",ey(()=>x.getContrastText(e))),eh(t.SpeedDialAction,"fabHoverBg",(0,g.fk)(t.background.paper,.15)),eh(t.StepConnector,"border",r("palette-grey-600")),eh(t.StepContent,"border",r("palette-grey-600")),eh(t.Switch,"defaultColor",r("palette-grey-300")),eh(t.Switch,"defaultDisabledColor",r("palette-grey-600")),eh(t.Switch,"primaryDisabledColor",(0,g.q8)(t.primary.main,.55)),eh(t.Switch,"secondaryDisabledColor",(0,g.q8)(t.secondary.main,.55)),eh(t.Switch,"errorDisabledColor",(0,g.q8)(t.error.main,.55)),eh(t.Switch,"infoDisabledColor",(0,g.q8)(t.info.main,.55)),eh(t.Switch,"successDisabledColor",(0,g.q8)(t.success.main,.55)),eh(t.Switch,"warningDisabledColor",(0,g.q8)(t.warning.main,.55)),eh(t.TableCell,"border",(0,g.q8)((0,g.zp)(t.divider,1),.68)),eh(t.Tooltip,"bg",(0,g.zp)(t.grey[700],.92))}ep(t.background,"default"),ep(t.common,"background"),ep(t.common,"onBackground"),ep(t,"divider"),Object.keys(t).forEach(e=>{let r=t[e];r&&"object"==typeof r&&(r.main&&eh(t[e],"mainChannel",(0,g.LR)(ef(r.main))),r.light&&eh(t[e],"lightChannel",(0,g.LR)(ef(r.light))),r.dark&&eh(t[e],"darkChannel",(0,g.LR)(ef(r.dark))),r.contrastText&&eh(t[e],"contrastTextChannel",(0,g.LR)(ef(r.contrastText))),"text"===e&&(ep(t[e],"primary"),ep(t[e],"secondary")),"action"===e&&(r.active&&ep(t[e],"active"),r.selected&&ep(t[e],"selected")))})});let{vars:Z,generateCssVars:A}=ei(w=u.reduce((e,t)=>(0,p.Z)(e,t),w),{prefix:h,shouldSkipGeneratingVar:y});return w.vars=Z,w.generateCssVars=A,w.shouldSkipGeneratingVar=y,w.unstable_sxConfig=(0,l.Z)({},ec.Z,null==S?void 0:S.unstable_sxConfig),w.unstable_sx=function(e){return(0,ee.Z)({sx:e,theme:this})},w}var eC=r(5032),ek=e=>[...[...Array(24)].map((t,r)=>"--".concat(e?"".concat(e,"-"):"","overlays-").concat(r+1)),"--".concat(e?"".concat(e,"-"):"","palette-AppBar-darkBg"),"--".concat(e?"".concat(e,"-"):"","palette-AppBar-darkColor")];let ev=eb(),{CssVarsProvider:ex,useColorScheme:ew,getInitColorSchemeScript:eZ}=function(e){let{themeId:t,theme:r={},attribute:n=G,modeStorageKey:a=K,colorSchemeStorageKey:c=W,defaultMode:s="light",defaultColorScheme:u,disableTransitionOnChange:d=!1,resolveTheme:m,excludeVariablesFromRoot:g}=e;r.colorSchemes&&("string"!=typeof u||r.colorSchemes[u])&&("object"!=typeof u||r.colorSchemes[null==u?void 0:u.light])&&("object"!=typeof u||r.colorSchemes[null==u?void 0:u.dark])||console.error(`MUI: \`${u}\` does not exist in \`theme.colorSchemes\`.`);let h=B.createContext(void 0),f="string"==typeof u?u:u.light,y="string"==typeof u?u:u.dark;return{CssVarsProvider:function({children:e,theme:o=r,modeStorageKey:f=a,colorSchemeStorageKey:y=c,attribute:S=n,defaultMode:b=s,defaultColorScheme:C=u,disableTransitionOnChange:k=d,storageWindow:v="undefined"==typeof window?void 0:window,documentNode:x="undefined"==typeof document?void 0:document,colorSchemeNode:w="undefined"==typeof document?void 0:document.documentElement,colorSchemeSelector:Z=":root",disableNestedContext:A=!1,disableStyleSheetGeneration:T=!1}){let _=B.useRef(!1),F=I(),$=B.useContext(h),j=!!$&&!A,P=o[t],q=P||o,{colorSchemes:L={},components:D={},generateCssVars:O=()=>({vars:{},css:{}}),cssVarPrefix:V}=q,z=(0,i.Z)(q,Y),R=Object.keys(L),H="string"==typeof C?C:C.light,N="string"==typeof C?C:C.dark,{mode:G,setMode:ee,systemMode:et,lightColorScheme:er,darkColorScheme:en,colorScheme:eo,setColorScheme:ea}=function(e){let{defaultMode:t="light",defaultLightColorScheme:r,defaultDarkColorScheme:n,supportedColorSchemes:o=[],modeStorageKey:a=K,colorSchemeStorageKey:i=W,storageWindow:c="undefined"==typeof window?void 0:window}=e,s=o.join(","),[u,d]=B.useState(()=>{let e=X(a,t),o=X("".concat(i,"-light"),r),l=X("".concat(i,"-dark"),n);return{mode:e,systemMode:J(e),lightColorScheme:o,darkColorScheme:l}}),m=Q(u,e=>"light"===e?u.lightColorScheme:"dark"===e?u.darkColorScheme:void 0),g=B.useCallback(e=>{d(r=>{if(e===r.mode)return r;let n=e||t;try{localStorage.setItem(a,n)}catch(e){}return(0,l.Z)({},r,{mode:n,systemMode:J(n)})})},[a,t]),h=B.useCallback(e=>{e?"string"==typeof e?e&&!s.includes(e)?console.error("`".concat(e,"` does not exist in `theme.colorSchemes`.")):d(t=>{let r=(0,l.Z)({},t);return Q(t,t=>{try{localStorage.setItem("".concat(i,"-").concat(t),e)}catch(e){}"light"===t&&(r.lightColorScheme=e),"dark"===t&&(r.darkColorScheme=e)}),r}):d(t=>{let o=(0,l.Z)({},t),a=null===e.light?r:e.light,c=null===e.dark?n:e.dark;if(a){if(s.includes(a)){o.lightColorScheme=a;try{localStorage.setItem("".concat(i,"-light"),a)}catch(e){}}else console.error("`".concat(a,"` does not exist in `theme.colorSchemes`."))}if(c){if(s.includes(c)){o.darkColorScheme=c;try{localStorage.setItem("".concat(i,"-dark"),c)}catch(e){}}else console.error("`".concat(c,"` does not exist in `theme.colorSchemes`."))}return o}):d(e=>{try{localStorage.setItem("".concat(i,"-light"),r),localStorage.setItem("".concat(i,"-dark"),n)}catch(e){}return(0,l.Z)({},e,{lightColorScheme:r,darkColorScheme:n})})},[s,i,r,n]),f=B.useCallback(e=>{"system"===u.mode&&d(t=>(0,l.Z)({},t,{systemMode:null!=e&&e.matches?"dark":"light"}))},[u.mode]),p=B.useRef(f);return p.current=f,B.useEffect(()=>{let e=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return p.current(...t)},t=window.matchMedia("(prefers-color-scheme: dark)");return t.addListener(e),e(t),()=>t.removeListener(e)},[]),B.useEffect(()=>{let e=e=>{let r=e.newValue;"string"==typeof e.key&&e.key.startsWith(i)&&(!r||s.match(r))&&(e.key.endsWith("light")&&h({light:r}),e.key.endsWith("dark")&&h({dark:r})),e.key===a&&(!r||["light","dark","system"].includes(r))&&g(r||t)};if(c)return c.addEventListener("storage",e),()=>c.removeEventListener("storage",e)},[h,g,a,i,s,t,c]),(0,l.Z)({},u,{colorScheme:m,setMode:g,setColorScheme:h})}({supportedColorSchemes:R,defaultLightColorScheme:H,defaultDarkColorScheme:N,modeStorageKey:f,colorSchemeStorageKey:y,defaultMode:b,storageWindow:v}),el=G,ei=eo;j&&(el=$.mode,ei=$.colorScheme);let ec=el||("system"===b?s:b),es=ei||("dark"===ec?N:H),{css:eu,vars:ed}=O(),em=(0,l.Z)({},z,{components:D,colorSchemes:L,cssVarPrefix:V,vars:ed,getColorSchemeSelector:e=>`[${S}="${e}"] &`}),eg={},eh={};Object.entries(L).forEach(([e,t])=>{let{css:r,vars:n}=O(e);if(em.vars=(0,p.Z)(em.vars,n),e===es&&(Object.keys(t).forEach(e=>{t[e]&&"object"==typeof t[e]?em[e]=(0,l.Z)({},em[e],t[e]):em[e]=t[e]}),em.palette&&(em.palette.colorScheme=e)),e===("string"==typeof C?C:"dark"===b?C.dark:C.light)){if(g){let t={};g(V).forEach(e=>{t[e]=r[e],delete r[e]}),eg[`[${S}="${e}"]`]=t}eg[`${Z}, [${S}="${e}"]`]=r}else eh[`${":root"===Z?"":Z}[${S}="${e}"]`]=r}),em.vars=(0,p.Z)(em.vars,ed),B.useEffect(()=>{ei&&w&&w.setAttribute(S,ei)},[ei,S,w]),B.useEffect(()=>{let e;if(k&&_.current&&x){let t=x.createElement("style");t.appendChild(x.createTextNode("*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),x.head.appendChild(t),window.getComputedStyle(x.body),e=setTimeout(()=>{x.head.removeChild(t)},1)}return()=>{clearTimeout(e)}},[ei,k,x]),B.useEffect(()=>(_.current=!0,()=>{_.current=!1}),[]);let ef=B.useMemo(()=>({mode:el,systemMode:et,setMode:ee,lightColorScheme:er,darkColorScheme:en,colorScheme:ei,setColorScheme:ea,allColorSchemes:R}),[R,ei,en,er,el,ea,ee,et]),ep=!0;(T||j&&(null==F?void 0:F.cssVarPrefix)===V)&&(ep=!1);let ey=(0,E.jsxs)(B.Fragment,{children:[ep&&(0,E.jsxs)(B.Fragment,{children:[(0,E.jsx)(U.Z,{styles:{[Z]:eu}}),(0,E.jsx)(U.Z,{styles:eg}),(0,E.jsx)(U.Z,{styles:eh})]}),(0,E.jsx)(M,{themeId:P?t:void 0,theme:m?m(em):em,children:e})]});return j?ey:(0,E.jsx)(h.Provider,{value:ef,children:ey})},useColorScheme:()=>{let e=B.useContext(h);if(!e)throw Error((0,o.Z)(19));return e},getInitColorSchemeScript:e=>(function(e){let{defaultMode:t="light",defaultLightColorScheme:r="light",defaultDarkColorScheme:n="dark",modeStorageKey:o=K,colorSchemeStorageKey:a=W,attribute:l=G,colorSchemeNode:i="document.documentElement"}=e||{};return(0,E.jsx)("script",{dangerouslySetInnerHTML:{__html:`(function() {
2
+ try {
3
+ var mode = localStorage.getItem('${o}') || '${t}';
4
+ var colorScheme = '';
5
+ if (mode === 'system') {
6
+ // handle system mode
7
+ var mql = window.matchMedia('(prefers-color-scheme: dark)');
8
+ if (mql.matches) {
9
+ colorScheme = localStorage.getItem('${a}-dark') || '${n}';
10
+ } else {
11
+ colorScheme = localStorage.getItem('${a}-light') || '${r}';
12
+ }
13
+ }
14
+ if (mode === 'light') {
15
+ colorScheme = localStorage.getItem('${a}-light') || '${r}';
16
+ }
17
+ if (mode === 'dark') {
18
+ colorScheme = localStorage.getItem('${a}-dark') || '${n}';
19
+ }
20
+ if (colorScheme) {
21
+ ${i}.setAttribute('${l}', colorScheme);
22
+ }
23
+ } catch(e){}})();`}},"mui-color-scheme-init")})((0,l.Z)({attribute:n,colorSchemeStorageKey:c,defaultMode:s,defaultLightColorScheme:f,defaultDarkColorScheme:y,modeStorageKey:a},e))}}({themeId:a.Z,theme:ev,attribute:"data-mui-color-scheme",modeStorageKey:"mui-mode",colorSchemeStorageKey:"mui-color-scheme",defaultColorScheme:{light:"light",dark:"dark"},resolveTheme:e=>{let t=(0,l.Z)({},e,{typography:(0,eC.Z)(e.palette,e.typography)});return t.unstable_sx=function(e){return(0,ee.Z)({sx:e,theme:this})},t},excludeVariablesFromRoot:ek});var eA=r(1523);function eT(){throw Error((0,o.Z)(20))}},4671:function(e){e.exports={style:{fontFamily:"'__Inter_aaf875', '__Inter_Fallback_aaf875'",fontStyle:"normal"},className:"__className_aaf875"}},8833:function(e){e.exports={style:{fontFamily:"'__Noto_Sans_JP_18a8ba', '__Noto_Sans_JP_Fallback_18a8ba'",fontStyle:"normal"},className:"__className_18a8ba"}}}]);
static/_next/static/chunks/app/_not-found/page-88e5ec60d72eb81e.js ADDED
@@ -0,0 +1 @@
 
 
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[409],{7589:function(e,t,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/_not-found/page",function(){return n(5457)}])},5457:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}}),n(9920);let i=n(7437);n(2265);let o={fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},l={display:"inline-block"},r={display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},d={fontSize:14,fontWeight:400,lineHeight:"49px",margin:0};function s(){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("title",{children:"404: This page could not be found."}),(0,i.jsx)("div",{style:o,children:(0,i.jsxs)("div",{children:[(0,i.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}),(0,i.jsx)("h1",{className:"next-error-h1",style:r,children:"404"}),(0,i.jsx)("div",{style:l,children:(0,i.jsx)("h2",{style:d,children:"This page could not be found."})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},function(e){e.O(0,[971,23,744],function(){return e(e.s=7589)}),_N_E=e.O()}]);
static/_next/static/chunks/app/layout-003f3f0c2945f2e7.js ADDED
@@ -0,0 +1 @@
 
 
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{8183:function(e,n,t){Promise.resolve().then(t.bind(t,9237)),Promise.resolve().then(t.bind(t,6324)),Promise.resolve().then(t.t.bind(t,4671,23)),Promise.resolve().then(t.t.bind(t,3054,23)),Promise.resolve().then(t.bind(t,4016))},4016:function(e,n,t){"use strict";var i=t(8833),o=t.n(i);let s=(0,t(8285).Z)({typography:{fontFamily:o().style.fontFamily}});n.default=s},3054:function(){}},function(e){e.O(0,[93,731,154,450,971,23,744],function(){return e(e.s=8183)}),_N_E=e.O()}]);